From 7347bac4ab7e136157fc94777e6cf87ef9e08599 Mon Sep 17 00:00:00 2001 From: Zhineng Li Date: Fri, 13 Feb 2026 10:54:11 +0800 Subject: first commit --- data/en_us/ecs/2014-05-26/api-docs.php | 111891 ++++++++++++++++++++++++++++++ 1 file changed, 111891 insertions(+) create mode 100644 data/en_us/ecs/2014-05-26/api-docs.php (limited to 'data/en_us/ecs') diff --git a/data/en_us/ecs/2014-05-26/api-docs.php b/data/en_us/ecs/2014-05-26/api-docs.php new file mode 100644 index 0000000..6bb8af6 --- /dev/null +++ b/data/en_us/ecs/2014-05-26/api-docs.php @@ -0,0 +1,111891 @@ + '1.0', + 'info' => [ + 'style' => 'RPC', + 'product' => 'Ecs', + 'version' => '2014-05-26', + ], + 'directories' => [ + [ + 'id' => 86352, + 'title' => 'Regions', + 'type' => 'directory', + 'children' => [ + 'DescribeRegions', + 'DescribeZones', + 'DescribeAvailableResource', + 'DescribeAccountAttributes', + 'DescribeResourcesModification', + 'DescribeRecommendInstanceType', + ], + ], + [ + 'id' => 86384, + 'title' => 'Inquiry', + 'type' => 'directory', + 'children' => [ + 'DescribePrice', + 'DescribeRenewalPrice', + 'DescribeInstanceModificationPrice', + ], + ], + [ + 'id' => 86036, + 'title' => 'Instances', + 'type' => 'directory', + 'children' => [ + 'RunInstances', + 'CreateInstance', + 'StartInstance', + 'StartInstances', + 'StopInstance', + 'StopInstances', + 'RebootInstance', + 'RebootInstances', + 'DeleteInstance', + 'DeleteInstances', + 'DescribeInstanceStatus', + 'DescribeInstances', + 'DescribeInstanceTypeFamilies', + 'DescribeInstanceTypes', + 'DescribeInstanceAttribute', + 'ModifyInstanceAttribute', + 'ModifyInstanceClockOptions', + 'ModifyInstanceNetworkOptions', + 'ModifyInstanceChargeType', + 'ModifyInstanceSpec', + 'ModifyPrepayInstanceSpec', + 'ModifyInstanceAutoReleaseTime', + 'AttachInstanceRamRole', + 'DescribeInstanceRamRole', + 'DetachInstanceRamRole', + 'DescribeInstanceVncUrl', + 'ModifyInstanceVncPasswd', + 'ModifyInstanceMetadataOptions', + 'DescribeUserData', + 'RenewInstance', + 'DescribeInstanceAutoRenewAttribute', + 'ModifyInstanceAutoRenewAttribute', + 'ReActivateInstances', + 'DescribeSpotPriceHistory', + 'DescribeSpotAdvice', + ], + ], + [ + 'id' => 86358, + 'title' => 'Images', + 'type' => 'directory', + 'children' => [ + 'CreateImage', + 'DescribeImages', + 'ModifyImageAttribute', + 'DeleteImage', + 'DescribeImageFromFamily', + 'DescribeImageSupportInstanceTypes', + 'DescribeImageSharePermission', + 'ModifyImageSharePermission', + 'ModifyImageShareGroupPermission', + 'ImportImage', + 'ExportImage', + 'CopyImage', + 'CancelCopyImage', + 'CreateImageComponent', + 'DescribeImageComponents', + 'DeleteImageComponent', + 'CreateImagePipeline', + 'DescribeImagePipelines', + 'DeleteImagePipeline', + 'StartImagePipelineExecution', + 'DescribeImagePipelineExecutions', + 'CancelImagePipelineExecution', + ], + ], + [ + 'id' => 86099, + 'title' => 'Elastic Block Storage (EBS) devices', + 'type' => 'directory', + 'children' => [ + 'CreateDisk', + 'DescribeDisks', + 'AttachDisk', + 'DetachDisk', + 'ResizeDisk', + 'ModifyDiskAttribute', + 'ModifyDiskChargeType', + 'ModifyDiskSpec', + 'ReplaceSystemDisk', + 'ResetDisk', + 'ResetDisks', + 'ReInitDisk', + 'ModifyDiskDeployment', + 'DeleteDisk', + 'EnableDiskEncryptionByDefault', + 'DescribeDiskEncryptionByDefaultStatus', + 'DescribeDiskDefaultKMSKeyId', + 'ModifyDiskDefaultKMSKeyId', + 'ResetDiskDefaultKMSKeyId', + 'DisableDiskEncryptionByDefault', + ], + ], + [ + 'id' => 86254, + 'title' => 'Snapshots', + 'type' => 'directory', + 'children' => [ + 'OpenSnapshotService', + 'CreateSnapshot', + 'DescribeSnapshots', + 'DescribeSnapshotsUsage', + 'ModifySnapshotAttribute', + 'ModifySnapshotCategory', + 'CopySnapshot', + 'DeleteSnapshot', + 'DescribeSnapshotLinks', + 'CreateSnapshotGroup', + 'DescribeSnapshotGroups', + 'ModifySnapshotGroup', + 'DeleteSnapshotGroup', + 'CreateAutoSnapshotPolicy', + 'DescribeAutoSnapshotPolicyEx', + 'DescribeAutoSnapshotPolicyAssociations', + 'ModifyAutoSnapshotPolicyEx', + 'ApplyAutoSnapshotPolicy', + 'CancelAutoSnapshotPolicy', + 'DeleteAutoSnapshotPolicy', + 'DescribeSnapshotPackage', + 'LockSnapshot', + 'DescribeLockedSnapshots', + 'UnlockSnapshot', + ], + ], + [ + 'id' => 86129, + 'title' => 'Networks', + 'type' => 'directory', + 'children' => [ + 'DescribeBandwidthLimitation', + 'ModifyInstanceNetworkSpec', + 'AllocatePublicIpAddress', + 'ConvertNatPublicIpToEip', + 'ModifyInstanceVpcAttribute', + 'DescribeClassicLinkInstances', + 'AttachClassicLinkVpc', + 'DetachClassicLinkVpc', + ], + ], + [ + 'id' => 86145, + 'title' => 'Elastic network interfaces (ENIs)', + 'type' => 'directory', + 'children' => [ + 'CreateNetworkInterface', + 'DescribeNetworkInterfaces', + 'DescribeNetworkInterfaceAttribute', + 'ModifyNetworkInterfaceAttribute', + 'DeleteNetworkInterface', + 'AttachNetworkInterface', + 'DetachNetworkInterface', + 'AssignPrivateIpAddresses', + 'UnassignPrivateIpAddresses', + 'AssignIpv6Addresses', + 'UnassignIpv6Addresses', + 'CreateNetworkInterfacePermission', + 'DescribeNetworkInterfacePermissions', + ], + ], + [ + 'id' => 86410, + 'title' => 'PrefixList', + 'type' => 'directory', + 'children' => [ + 'CreatePrefixList', + 'DescribePrefixLists', + 'DescribePrefixListAttributes', + 'DescribePrefixListAssociations', + 'ModifyPrefixList', + 'DeletePrefixList', + ], + ], + [ + 'id' => 204543, + 'title' => 'PortList', + 'type' => 'directory', + 'children' => [ + 'CreatePortRangeList', + 'DescribePortRangeLists', + 'DescribePortRangeListEntries', + 'DescribePortRangeListAssociations', + 'ModifyPortRangeList', + 'DeletePortRangeList', + ], + ], + [ + 'id' => 86278, + 'title' => 'Security groups', + 'type' => 'directory', + 'children' => [ + 'CreateSecurityGroup', + 'DescribeSecurityGroups', + 'DescribeSecurityGroupAttribute', + 'ModifySecurityGroupPolicy', + 'ModifySecurityGroupAttribute', + 'DeleteSecurityGroup', + 'AuthorizeSecurityGroup', + 'ModifySecurityGroupRule', + 'RevokeSecurityGroup', + 'AuthorizeSecurityGroupEgress', + 'ModifySecurityGroupEgressRule', + 'RevokeSecurityGroupEgress', + 'DescribeSecurityGroupReferences', + 'JoinSecurityGroup', + 'LeaveSecurityGroup', + ], + ], + [ + 'id' => 86301, + 'title' => 'SSH key pairs', + 'type' => 'directory', + 'children' => [ + 'CreateKeyPair', + 'ImportKeyPair', + 'DescribeKeyPairs', + 'AttachKeyPair', + 'DetachKeyPair', + 'DeleteKeyPairs', + ], + ], + [ + 'id' => 86213, + 'title' => 'Launch templates', + 'type' => 'directory', + 'children' => [ + 'CreateLaunchTemplate', + 'DescribeLaunchTemplates', + 'DeleteLaunchTemplate', + 'CreateLaunchTemplateVersion', + 'DescribeLaunchTemplateVersions', + 'ModifyLaunchTemplateDefaultVersion', + 'DeleteLaunchTemplateVersion', + ], + ], + [ + 'id' => 86247, + 'title' => 'Auto provisioning groups', + 'type' => 'directory', + 'children' => [ + 'CreateAutoProvisioningGroup', + 'DescribeAutoProvisioningGroups', + 'DescribeAutoProvisioningGroupInstances', + 'ModifyAutoProvisioningGroup', + 'DescribeAutoProvisioningGroupHistory', + 'DeleteAutoProvisioningGroup', + ], + ], + [ + 'id' => 86294, + 'title' => 'Deployment sets', + 'type' => 'directory', + 'children' => [ + 'CreateDeploymentSet', + 'DescribeDeploymentSetSupportedInstanceTypeFamily', + 'DescribeDeploymentSets', + 'ModifyInstanceDeployment', + 'ModifyDeploymentSetAttribute', + 'DeleteDeploymentSet', + ], + ], + [ + 'id' => 86228, + 'title' => 'Elasticity assurances', + 'type' => 'directory', + 'children' => [ + 'CreateElasticityAssurance', + 'DescribeElasticityAssurances', + 'DescribeElasticityAssuranceInstances', + 'ModifyElasticityAssurance', + 'RenewElasticityAssurances', + 'ModifyElasticityAssuranceAutoRenewAttribute', + 'DescribeElasticityAssuranceAutoRenewAttribute', + 'PurchaseElasticityAssurance', + 'CreateCapacityReservation', + 'DescribeCapacityReservations', + 'DescribeCapacityReservationInstances', + 'ModifyCapacityReservation', + 'DescribeInstanceAttachmentAttributes', + 'ModifyInstanceAttachmentAttributes', + 'ReleaseCapacityReservation', + ], + ], + [ + 'id' => 86239, + 'title' => 'Reserved instances', + 'type' => 'directory', + 'children' => [ + 'PurchaseReservedInstancesOffering', + 'DescribeReservedInstances', + 'ModifyReservedInstances', + 'ModifyReservedInstanceAttribute', + 'RenewReservedInstances', + 'DescribeReservedInstanceAutoRenewAttribute', + 'ModifyReservedInstanceAutoRenewAttribute', + ], + ], + [ + 'id' => 86119, + 'title' => 'Storage capacity units (SCUs)', + 'type' => 'directory', + 'children' => [ + 'PurchaseStorageCapacityUnit', + 'DescribeStorageCapacityUnits', + 'ModifyStorageCapacityUnitAttribute', + ], + ], + [ + 'id' => 86326, + 'title' => 'Cloud Assistant', + 'type' => 'directory', + 'children' => [ + 'RunCommand', + 'CreateCommand', + 'InvokeCommand', + 'DescribeInvocations', + 'DescribeInvocationResults', + 'ModifyInvocationAttribute', + 'StopInvocation', + 'DescribeCommands', + 'ModifyCommand', + 'DeleteCommand', + 'SendFile', + 'DescribeSendFileResults', + 'DescribeCloudAssistantStatus', + 'InstallCloudAssistant', + 'StartTerminalSession', + 'EndTerminalSession', + 'DescribeTerminalSessions', + 'ModifyCloudAssistantSettings', + 'DescribeCloudAssistantSettings', + 'CreateActivation', + 'DescribeActivations', + 'DisableActivation', + 'DeleteActivation', + 'DescribeManagedInstances', + 'ModifyManagedInstance', + 'DeregisterManagedInstance', + 'ListPluginStatus', + ], + ], + [ + 'id' => 86308, + 'title' => 'System events', + 'type' => 'directory', + 'children' => [ + 'DescribeInstancesFullStatus', + 'DescribeDisksFullStatus', + 'DescribeInstanceHistoryEvents', + 'CreateSimulatedSystemEvents', + 'CancelSimulatedSystemEvents', + 'AcceptInquiredSystemEvent', + ], + ], + [ + 'id' => 178259, + 'title' => 'Resource diagnostic', + 'type' => 'directory', + 'children' => [ + 'DescribeDiagnosticMetrics', + 'CreateDiagnosticMetricSet', + 'DescribeDiagnosticMetricSets', + 'ModifyDiagnosticMetricSet', + 'DeleteDiagnosticMetricSets', + 'CreateDiagnosticReport', + 'DescribeDiagnosticReports', + 'DescribeDiagnosticReportAttributes', + 'DeleteDiagnosticReports', + ], + ], + [ + 'id' => 86315, + 'title' => 'OM and monitoring', + 'type' => 'directory', + 'children' => [ + 'GetInstanceScreenshot', + 'GetInstanceConsoleOutput', + 'DescribeDiskMonitorData', + 'DescribeInstanceMonitorData', + 'DescribeEniMonitorData', + 'DescribeSnapshotMonitorData', + 'DescribeInstanceMaintenanceAttributes', + 'ModifyInstanceMaintenanceAttributes', + 'RedeployInstance', + 'ReportInstancesStatus', + ], + ], + [ + 'id' => 86344, + 'title' => 'Tags and ResourceGroup', + 'type' => 'directory', + 'children' => [ + 'TagResources', + 'ListTagResources', + 'UntagResources', + 'JoinResourceGroup', + ], + ], + [ + 'id' => 86076, + 'title' => 'Dedicated hosts', + 'type' => 'directory', + 'children' => [ + 'AllocateDedicatedHosts', + 'DescribeDedicatedHosts', + 'DescribeDedicatedHostTypes', + 'ModifyDedicatedHostAttribute', + 'ModifyDedicatedHostsChargeType', + 'DescribeDedicatedHostAutoRenew', + 'ModifyDedicatedHostAutoRenewAttribute', + 'RenewDedicatedHosts', + 'ModifyDedicatedHostAutoReleaseTime', + 'RedeployDedicatedHost', + 'ReleaseDedicatedHost', + 'CreateDedicatedHostCluster', + 'ModifyDedicatedHostClusterAttribute', + 'DescribeDedicatedHostClusters', + 'DeleteDedicatedHostCluster', + ], + ], + [ + 'id' => 86093, + 'title' => 'HPC clusters', + 'type' => 'directory', + 'children' => [ + 'CreateHpcCluster', + 'DescribeHpcClusters', + 'ModifyHpcClusterAttribute', + 'DeleteHpcCluster', + ], + ], + [ + 'id' => 178292, + 'title' => 'Tasks', + 'type' => 'directory', + 'children' => [ + 'DescribeTasks', + 'DescribeTaskAttribute', + 'CancelTask', + ], + ], + [ + 'id' => 178261, + 'title' => 'Deprecated', + 'type' => 'directory', + 'children' => [ + 'DescribeUserBusinessBehavior', + 'ModifyUserBusinessBehavior', + 'DescribeLimitation', + 'DescribeClusters', + 'DeleteNetworkInterfacePermission', + 'DeleteBandwidthPackage', + 'ModifyBandwidthPackageSpec', + 'DescribeBandwidthPackages', + 'CreateVSwitch', + 'DeleteVSwitch', + 'ModifyVSwitchAttribute', + 'DescribeVSwitches', + 'CreatePhysicalConnection', + 'DeletePhysicalConnection', + 'ModifyPhysicalConnectionAttribute', + 'EnablePhysicalConnection', + 'DescribePhysicalConnections', + 'CancelPhysicalConnection', + 'TerminatePhysicalConnection', + 'CreateVpc', + 'DeleteVpc', + 'DescribeVpcs', + 'ModifyVpcAttribute', + 'RemoveBandwidthPackageIps', + 'CreateHaVip', + 'DeleteHaVip', + 'AssociateHaVip', + 'ModifyHaVipAttribute', + 'DescribeHaVips', + 'UnassociateHaVip', + 'CreateVirtualBorderRouter', + 'DeleteVirtualBorderRouter', + 'ModifyVirtualBorderRouterAttribute', + 'RecoverVirtualBorderRouter', + 'TerminateVirtualBorderRouter', + 'DescribeVirtualBorderRouters', + 'DescribeVirtualBorderRoutersForPhysicalConnection', + 'CreateRouterInterface', + 'DeleteRouterInterface', + 'ActivateRouterInterface', + 'DeactivateRouterInterface', + 'ModifyRouterInterfaceAttribute', + 'ModifyRouterInterfaceSpec', + 'ModifyVRouterAttribute', + 'DescribeRouterInterfaces', + 'UnassociateEipAddress', + 'AllocateEipAddress', + 'ModifyEipAddressAttribute', + 'ReleaseEipAddress', + 'AssociateEipAddress', + 'DescribeEipAddresses', + 'DescribeEipMonitorData', + 'CreateNatGateway', + 'DeleteNatGateway', + 'DescribeNatGateways', + 'DescribeNewProjectEipMonitorData', + 'DeleteRouteEntry', + 'DeleteForwardEntry', + 'CreateForwardEntry', + 'AddBandwidthPackageIps', + 'DescribeVRouters', + 'CreateRouteEntry', + 'DescribeForwardTableEntries', + 'ModifyForwardEntry', + 'DescribeAccessPoints', + 'DescribeRouteTables', + 'ConnectRouterInterface', + 'ExportSnapshot', + 'ReleasePublicIpAddress', + 'AddTags', + 'DescribeResourceByTags', + 'DescribeTags', + 'RemoveTags', + ], + ], + [ + 'id' => 362367, + 'title' => 'Other', + 'type' => 'directory', + 'children' => [ + 'EnableNetworkInterfaceQoS', + 'DisableNetworkInterfaceQoS', + ], + ], + [ + 'id' => 0, + 'title' => '其它', + 'type' => 'directory', + 'children' => [ + 'DescribePlanMaintenanceWindows', + 'CreatePlanMaintenanceWindow', + 'ModifyPlanMaintenanceWindow', + 'DeletePlanMaintenanceWindow', + ], + ], + ], + 'components' => [ + 'schemas' => [], + ], + 'apis' => [ + 'DescribeRegions' => [ + 'summary' => 'Queries Alibaba Cloud regions. When you call this operation, you can specify parameters, such as InstanceChargeType and ResourceType, in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28984', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. For more information, see [Billing overview](~~25398~~).'."\n" + .' Valid values:'."\n" + ."\n" + .'- PrePaid: subscription. If you set this parameter to PrePaid, make sure that you have sufficient balance or credits in your account. Otherwise, the InvalidPayMethod error code is returned.'."\n" + .'- PostPaid: pay-as-you-go.'."\n" + .'SpotWithPriceLimit: spot instance for which a maximum hourly price is specified.'."\n" + .'- SpotAsPriceGo: spot instance for which the market price at the time of purchase is automatically used as the bid price. The market price can be up to the pay-as-you-go price.'."\n" + ."\n" + .'Default value: PostPaid.', + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of resource. Valid values:'."\n" + ."\n" + .'- instance: Elastic Compute Service (ECS) instance'."\n" + .'- disk: disk'."\n" + .'- reservedinstance: reserved instance'."\n" + .'- scu: storage capacity unit (SCU)'."\n" + ."\n" + .'Default value: instance.', + 'type' => 'string', + 'required' => false, + 'example' => 'instance', + ], + ], + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The natural language that is used to filter responses. For more information, see [RFC 7231](https://tools.ietf.org/html/rfc7231). Valid values:'."\n" + ."\n" + .'* zh-CN: Simplified Chinese'."\n" + .'* zh_TW: Traditional Chinese'."\n" + .'* en-US: English'."\n" + .'* ja: Japanese'."\n" + .'* fr: French'."\n" + .'* de: German'."\n" + .'* ko: Korean'."\n" + ."\n" + .'Default value: zh-CN.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'de' => 'German', + 'en-US' => 'English', + 'ko' => 'Korean', + 'zh-TW' => 'Traditional Chinese', + 'ja' => 'Japanese', + 'fr' => 'French', + 'zh-CN' => 'Simplified Chinese', + ], + 'example' => 'zh-CN', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'Regions' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Region' => [ + 'description' => 'The information of the regions.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'Indicates whether clusters are sold out. '."\n" + .'Valid values:'."\n" + .'- available'."\n" + .'- soldOut', + 'type' => 'string', + 'example' => 'available', + ], + 'RegionEndpoint' => [ + 'description' => 'The endpoint of the region.', + 'type' => 'string', + 'example' => 'ecs.cn-qingdao.aliyuncs.com', + ], + 'LocalName' => [ + 'description' => 'The name of the region.', + 'type' => 'string', + 'example' => 'China (Qingdao)', + ], + 'RegionId' => [ + 'description' => 'The ID of the region.', + 'type' => 'string', + 'example' => 'cn-qingdao', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Unauthorized.EmptyRegion', + 'errorMessage' => 'The specified account has no access authority to any region.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The specified instanceChargeType is not valid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidAcceptLanguage.NotFound', + 'errorMessage' => 'Only Chinese (zh-CN), English (en-US), and Japanese (ja) are allowed.', + ], + [ + 'errorCode' => 'InvalidResourceType.NotFound', + 'errorMessage' => 'The ResourceType provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"Regions\\": {\\n \\"Region\\": [\\n {\\n \\"Status\\": \\"available\\",\\n \\"RegionEndpoint\\": \\"ecs.cn-qingdao.aliyuncs.com\\",\\n \\"LocalName\\": \\"华北1(青岛)\\",\\n \\"RegionId\\": \\"cn-qingdao\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 38EC7366-F5A9-46B1-BDB1-0FDC2E296397\\n \\n \\n cn-qingdao-et2-b01\\n ecs.aliyuncs.com\\n 华北1(青岛)\\n \\n \\n cn-qingdao-nebula\\n ecs.cn-qingdao-nebula.aliyuncs.com\\n cn-qingdao-nebula\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeRegions', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeZones' => [ + 'summary' => 'Queries Alibaba Cloud regions. You can specify parameters, such as InstanceChargeType and ResourceType, in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29018', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Verbose', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to display detailed information.'."\n" + ."\n" + .'* true: displays detailed information.'."\n" + .'* false: does not display detailed information.'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'true', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of resources. For more information, see [Billing overview](~~25398~~). Valid values:'."\n" + ."\n" + .'* Prepaid: subscription'."\n" + .'* PostPaid: pay-as-you-go'."\n" + ."\n" + .'Default value: PostPaid.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. You can specify this parameter when you set `InstanceChargeType` to PostPaid. For more information, see [Spot instances](~~52088~~). Valid values:'."\n" + ."\n" + .'* NoSpot: The instances are regular pay-as-you-go instances.'."\n" + .'* SpotWithPriceLimit: The instance is a spot instance that has a user-defined maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is a spot instance for which the market price is automatically used as the bid price. The market price can be up to the pay-as-you-go price.'."\n" + ."\n" + .'Default value: NoSpot.', + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + ], + ], + [ + 'name' => 'AcceptLanguage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The natural language that is used to filter responses. For more information, see [RFC 7231](https://tools.ietf.org/html/rfc7231). Valid values:'."\n" + ."\n" + .'* zh-CN: Simplified Chinese'."\n" + .'* zh_TW: Traditional Chinese'."\n" + .'* en-US: English'."\n" + .'* ja: Japanese'."\n" + .'* fr: French'."\n" + .'* de: German'."\n" + .'* ko: Korean'."\n" + ."\n" + .'Default value: zh-CN.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'de' => 'German', + 'en-US' => 'English', + 'ko' => 'Korean', + 'zh-TW' => 'Traditional Chinese', + 'ja' => 'Japanese', + 'fr' => 'French', + 'zh-CN' => 'Simplified Chinese', + ], + 'example' => 'zh-CN', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'Zones' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Zone' => [ + 'description' => 'Details about the zones and their supported resources.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => 'The ID of the zone.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-g', + ], + 'ZoneType' => [ + 'description' => 'The type of the zone. Valid values:'."\n" + ."\n" + .'* AvailabilityZone: zone for the Alibaba Cloud public cloud'."\n" + .'* CloudBoxZone: zone for CloudBox'."\n", + 'type' => 'string', + 'example' => 'AvailabilityZone', + ], + 'LocalName' => [ + 'description' => 'The name of the zone in the local language.'."\n", + 'type' => 'string', + 'example' => 'Hangzhou Zone G'."\n", + ], + 'AvailableResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ResourcesInfo' => [ + 'description' => 'Details about the resources that can be created in the zone.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'IoOptimized' => [ + 'description' => 'Indicates whether the instance is I/O optimized.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'SystemDiskCategories' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'supportedSystemDiskCategory' => [ + 'description' => 'The categories of system disks that can be created.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The category of system disks that can be created. Valid values:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: Enterprise SSD (ESSD)'."\n", + 'type' => 'string', + 'example' => 'cloud_essd', + ], + ], + ], + ], + 'InstanceGenerations' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'supportedInstanceGeneration' => [ + 'description' => 'The supported generations of instance families.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The supported generation of instance families.'."\n", + 'type' => 'string', + 'example' => 'ecs-6', + ], + ], + ], + ], + 'DataDiskCategories' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'supportedDataDiskCategory' => [ + 'description' => 'The categories of data disks that can be created.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The category of data disks that can be created. Valid values:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: ESSD'."\n" + .'* ephemeral_ssd: local SSD'."\n", + 'type' => 'string', + 'example' => 'cloud_essd', + ], + ], + ], + ], + 'InstanceTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'supportedInstanceType' => [ + 'description' => 'The supported instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The instance type of I/O optimized instances of different network types that can be created in the zone.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + ], + ], + ], + 'InstanceTypeFamilies' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'supportedInstanceTypeFamily' => [ + 'description' => 'The supported instance families.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The supported instance family.'."\n", + 'type' => 'string', + 'example' => 'ecs.r7t', + ], + ], + ], + ], + 'NetworkTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'supportedNetworkCategory' => [ + 'description' => 'The supported network types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The supported network type. Valid values:'."\n" + ."\n" + .'* VPC: Virtual Private Cloud (VPC)'."\n" + .'* Classic: classic network'."\n", + 'type' => 'string', + 'example' => 'vpc', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + 'AvailableResourceCreation' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ResourceTypes' => [ + 'description' => 'The types of resources that can be created. Valid values:'."\n" + ."\n" + .'* VSwitch: vSwitch'."\n" + .'* IoOptimized: I/O optimized instance'."\n" + .'* Instance: instance'."\n" + .'* DedicatedHost: dedicated host'."\n" + .'* disk: cloud disk'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The type of resources that can be created. Valid values:'."\n" + ."\n" + .'* VSwitch: vSwitch'."\n" + .'* IoOptimized: I/O optimized instance'."\n" + .'* Instance: instance'."\n" + .'* DedicatedHost: dedicated host'."\n" + .'* disk: cloud disk'."\n", + 'type' => 'string', + 'example' => 'DedicatedHost', + ], + ], + ], + ], + 'DedicatedHostGenerations' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DedicatedHostGeneration' => [ + 'description' => 'The supported generations of dedicated hosts.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The supported generation of dedicated hosts.'."\n", + 'type' => 'string', + 'example' => 'ddh-6', + ], + ], + ], + ], + 'AvailableInstanceTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceTypes' => [ + 'description' => 'The supported instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The supported instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs.g6.xlarge', + ], + ], + ], + ], + 'AvailableDiskCategories' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DiskCategories' => [ + 'description' => 'The categories of cloud disks that can be created. Valid values:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_essd: ESSD'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The category of cloud disks that can be created. Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_essd: ESSD'."\n", + 'type' => 'string', + 'example' => 'cloud', + ], + ], + ], + ], + 'AvailableDedicatedHostTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DedicatedHostType' => [ + 'description' => 'The supported dedicated host types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The supported dedicated host type.'."\n", + 'type' => 'string', + 'example' => 'ddh.g6', + ], + ], + ], + ], + 'AvailableVolumeCategories' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'VolumeCategories' => [ + 'description' => 'The supported Shared Block Storage device categories.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The supported Shared Block Storage device category.'."\n", + 'type' => 'string', + 'example' => 'san_efficiency', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSpotStrategy', + 'errorMessage' => 'The specified SpotStrategy is not valid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidRegion.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The InstanceChargeType does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidAcceptLanguage.NotFound', + 'errorMessage' => 'Only Chinese (zh-CN), English (en-US), and Japanese (ja) are allowed.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"Zones\\": {\\n \\"Zone\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-g\\",\\n \\"ZoneType\\": \\"AvailabilityZone\\",\\n \\"LocalName\\": \\"华东 1 可用区 G\\",\\n \\"AvailableResources\\": {\\n \\"ResourcesInfo\\": [\\n {\\n \\"IoOptimized\\": true,\\n \\"SystemDiskCategories\\": {\\n \\"supportedSystemDiskCategory\\": [\\n \\"cloud_essd\\"\\n ]\\n },\\n \\"InstanceGenerations\\": {\\n \\"supportedInstanceGeneration\\": [\\n \\"ecs-6\\"\\n ]\\n },\\n \\"DataDiskCategories\\": {\\n \\"supportedDataDiskCategory\\": [\\n \\"cloud_essd\\"\\n ]\\n },\\n \\"InstanceTypes\\": {\\n \\"supportedInstanceType\\": [\\n \\"ecs.g5.large\\"\\n ]\\n },\\n \\"InstanceTypeFamilies\\": {\\n \\"supportedInstanceTypeFamily\\": [\\n \\"ecs.r7t\\"\\n ]\\n },\\n \\"NetworkTypes\\": {\\n \\"supportedNetworkCategory\\": [\\n \\"vpc\\"\\n ]\\n }\\n }\\n ]\\n },\\n \\"AvailableResourceCreation\\": {\\n \\"ResourceTypes\\": [\\n \\"DedicatedHost\\"\\n ]\\n },\\n \\"DedicatedHostGenerations\\": {\\n \\"DedicatedHostGeneration\\": [\\n \\"ddh-6\\"\\n ]\\n },\\n \\"AvailableInstanceTypes\\": {\\n \\"InstanceTypes\\": [\\n \\"ecs.g6.xlarge\\"\\n ]\\n },\\n \\"AvailableDiskCategories\\": {\\n \\"DiskCategories\\": [\\n \\"cloud\\"\\n ]\\n },\\n \\"AvailableDedicatedHostTypes\\": {\\n \\"DedicatedHostType\\": [\\n \\"ddh.g6\\"\\n ]\\n },\\n \\"AvailableVolumeCategories\\": {\\n \\"VolumeCategories\\": [\\n \\"san_efficiency\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n \\n \\n \\n ddh-5\\n ddh-6\\n \\n \\n ecs.g6.xlarge\\n ecs.g7t.4xlarge\\n \\n cn-hangzhou-g\\n \\n ddh.g6\\n ddh.r6\\n \\n \\n \\n \\n ecs-5\\n ecs-6\\n \\n \\n vpc\\n \\n true\\n \\n cloud_efficiency\\n cloud_essd\\n \\n \\n ecs.c6.xlarge\\n ecs.g5.large\\n \\n \\n ecs.r7t\\n ecs.r7\\n \\n \\n cloud_efficiency\\n cloud_essd\\n \\n \\n \\n \\n cloud_efficiency\\n cloud_essd\\n \\n AvailabilityZone\\n 华东 1 可用区 G\\n \\n VSwitch\\n IoOptimized\\n Instance\\n DedicatedHost\\n Disk\\n \\n \\n san_efficiency\\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeZones', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'When you call this operation, only a list of zones and some resource information of each zone are returned. If you want to query instance types and disk categories that are available for purchase in a specific zone, we recommend that you call the [DescribeAvailableResource](~~66186~~) operation.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeAvailableResource' => [ + 'summary' => 'Queries resources in a zone. You can query the resources available in a zone before you create Elastic Compute Service (ECS) instances by calling the RunInstances operation or before you change instance types by calling the ModifyInstanceSpec operation.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28903', + 'abilityTreeNodes' => [ + 'FEATUREecs2UXJI2', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + ], + ], + [ + 'name' => 'SpotDuration', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '6', + 'minimum' => '0', + 'example' => '1', + ], + ], + [ + 'name' => 'DestinationResource', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => true, + 'example' => 'InstanceType', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-e', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'optimized', + ], + ], + [ + 'name' => 'DedicatedHostId', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'dh-bp165p6xk2tlw61e****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'SystemDiskCategory', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'DataDiskCategory', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'NetworkCategory', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'Cores', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'Memory', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '8.0', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'instance', + ], + ], + [ + 'name' => 'Scope', + 'in' => 'query', + 'schema' => [ + 'description' => '', + 'type' => 'string', + 'required' => false, + 'example' => 'Region', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => '', + 'type' => 'string', + 'example' => '0041D94C-FB92-4C49-B115-259DA1C*****', + ], + 'AvailableZones' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AvailableZone' => [ + 'description' => 'The information about the availability of resources in the zones.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the availability of resources in the zone.'."\n", + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'cn-hangzhou-e', + ], + 'Status' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'Available', + ], + 'StatusCategory' => [ + 'description' => 'The resource status based on the stock level in the zone. Valid value:'."\n" + ."\n" + .'* WithStock: The resources are available and can be continuously replenished.'."\n" + .'* ClosedWithStock: Inventory is available, but resources will not be replenished. The ability to guarantee the supply of inventory is low. We recommend selecting a product specification in the WithStock state.'."\n" + .'* WithoutStock: The resource is out of stock and will be replenished. We recommend using other resources that are in stock.'."\n" + .'* ClosedWithoutStock: The resource is out of stock and will no longer be replenished. We recommend using other resources that are in stock.'."\n", + 'type' => 'string', + 'example' => 'WithStock', + ], + 'RegionId' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'AvailableResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AvailableResource' => [ + 'description' => '', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'InstanceType', + ], + 'SupportedResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SupportedResource' => [ + 'description' => '', + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'Available', + ], + 'Value' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'ecs.d1ne.xlarge', + ], + 'Max' => [ + 'description' => '', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2048', + ], + 'Unit' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'GiB', + ], + 'StatusCategory' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'WithStock', + ], + 'Min' => [ + 'description' => '', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The specified InstanceChargeType is not valid.', + ], + [ + 'errorCode' => 'Invalid.Param', + 'errorMessage' => 'The input parameter DestinationResource that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified DedicatedHostId does not exist.', + ], + [ + 'errorCode' => 'InvalidParam.TypeAndCpuMem.Conflict', + 'errorMessage' => 'The specified \'InstanceType\' and \'Cores\',\'Memory\' are not blank at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Cores', + 'errorMessage' => 'The specified parameter \'Cores\' should be empty.', + ], + [ + 'errorCode' => 'InvalidParam.Memory', + 'errorMessage' => 'The specified parameter \'Memory\' should be empty.', + ], + [ + 'errorCode' => 'InvalidParameter.Scope', + 'errorMessage' => 'The specified parameter Scope is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.RegionIdNotSupported', + 'errorMessage' => 'The region does not support preemptible instances.', + ], + [ + 'errorCode' => 'OperationDenied.FlavorNotSupported', + 'errorMessage' => 'The flavor does not support preemptible instances.', + ], + [ + 'errorCode' => 'OperationDenied.TimestampNotSupported', + 'errorMessage' => 'Preemptible instances are not for sale for current time.', + ], + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerId', + 'errorMessage' => 'The specified parameter ResourceOwnerId is not available anymore.', + ], + ], + [ + [ + 'errorCode' => 'Invalid.RegionId', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'Unavailable.Regions', + 'errorMessage' => 'The available region does not exist.', + ], + [ + 'errorCode' => 'Invalid.ResourceType', + 'errorMessage' => 'The ResourceType provided does not exist in our records.', + ], + [ + 'errorCode' => 'Invalid.DestinationResource', + 'errorMessage' => 'The specified DestinationResource is not valid.', + ], + [ + 'errorCode' => 'Invalid.IoOptimized', + 'errorMessage' => 'The specified IoOptimized is not valid.', + ], + [ + 'errorCode' => 'Invalid.NetworkCategory', + 'errorMessage' => 'The specified NetworkCategory is not valid.', + ], + [ + 'errorCode' => 'Invalid.SpotStrategy', + 'errorMessage' => 'The specified SpotStrategy is not valid.', + ], + [ + 'errorCode' => 'Invalid.NetworkType', + 'errorMessage' => 'The specified NetworkType is not valid.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotFound', + 'errorMessage' => 'The specified ResourceId is not found in our records.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified Dedicated Host does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0041D94C-FB92-4C49-B115-259DA1C*****\\",\\n \\"AvailableZones\\": {\\n \\"AvailableZone\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-e\\",\\n \\"Status\\": \\"Available\\",\\n \\"StatusCategory\\": \\"WithStock\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"AvailableResources\\": {\\n \\"AvailableResource\\": [\\n {\\n \\"Type\\": \\"InstanceType\\",\\n \\"SupportedResources\\": {\\n \\"SupportedResource\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"Value\\": \\"ecs.d1ne.xlarge\\",\\n \\"Max\\": 2048,\\n \\"Unit\\": \\"GiB\\",\\n \\"StatusCategory\\": \\"WithStock\\",\\n \\"Min\\": 20\\n }\\n ]\\n }\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 0041D94C-FB92-4C49-B115-259DA1C*****\\n \\n \\n Available\\n cn-hangzhou\\n \\n \\n InstanceType\\n \\n \\n Available\\n ecs.g5.large\\n WithStock\\n \\n \\n \\n \\n cn-hangzhou-i\\n WithStock\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeAvailableResource', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeAccountAttributes' => [ + 'summary' => 'Queries the quotas of Elastic Compute Service (ECS) resources that you can create in an Alibaba Cloud region. For a specific region, you can query the maximum numbers of security groups, elastic network interfaces (ENIs), vCPUs for pay-as-you-go instances, vCPUs for spot instances, and dedicated hosts that you can create and the capacity quotas for pay-as-you-go disks that you can create. You can also query information such as network types or whether an account has completed the account verification.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28896', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the zone in which the resource resides.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-b', + ], + ], + [ + 'name' => 'AttributeName', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The type of resource quota N. Valid values of N: 1 to 8. Valid values:'."\n" + ."\n" + .'* instance-network-type: the available network types.'."\n" + ."\n" + .'* max-security-groups: the maximum number of security groups.'."\n" + ."\n" + .'* max-elastic-network-interfaces: the maximum number of ENIs.'."\n" + ."\n" + .'* max-postpaid-instance-vcpu-count: the maximum number of vCPUs for pay-as-you-go instances.'."\n" + ."\n" + .'* max-spot-instance-vcpu-count: the maximum number of vCPUs for spot instances.'."\n" + ."\n" + .'* used-postpaid-instance-vcpu-count: the number of vCPUs that have been allocated to pay-as-you-go instances.'."\n" + ."\n" + .'* used-spot-instance-vcpu-count: the number of vCPUs that have been allocated to spot instances.'."\n" + ."\n" + .'* max-postpaid-yundisk-capacity: the maximum capacity of pay-as-you-go data disks. (The value is deprecated.)'."\n" + ."\n" + .'* used-postpaid-yundisk-capacity: the capacity of pay-as-you-go data disks that have been created. (The value is deprecated.)'."\n" + ."\n" + .'* max-dedicated-hosts: the maximum number of dedicated hosts.'."\n" + ."\n" + .'* supported-postpaid-instance-types: the instance types of pay-as-you-go I/O optimized instances.'."\n" + ."\n" + .'* max-axt-command-count: the maximum number of Cloud Assistant commands.'."\n" + ."\n" + .'* max-axt-invocation-daily: the maximum number of Cloud Assistant command executions per day.'."\n" + ."\n" + .'* real-name-authentication: whether the account has completed the real-name verification.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** To create an ECS instance in a region in the Chinese mainland, you must complete the real-name verification.'."\n" + ."\n" + .'* max-cloud-assistant-activation-count: the maximum number of activation codes that can be created to use to register managed instances.'."\n" + ."\n" + .'This parameter is empty by default.', + 'type' => 'array', + 'items' => [ + 'description' => 'The type of resource quota N. Valid values of N: 1 to 8. Valid values:'."\n" + ."\n" + .'* instance-network-type: the available network types.'."\n" + ."\n" + .'* max-security-groups: the maximum number of security groups.'."\n" + ."\n" + .'* max-elastic-network-interfaces: the maximum number of ENIs.'."\n" + ."\n" + .'* max-postpaid-instance-vcpu-count: the maximum number of vCPUs for pay-as-you-go instances.'."\n" + ."\n" + .'* max-spot-instance-vcpu-count: the maximum number of vCPUs for spot instances.'."\n" + ."\n" + .'* used-postpaid-instance-vcpu-count: the number of vCPUs that have been allocated to pay-as-you-go instances.'."\n" + ."\n" + .'* used-spot-instance-vcpu-count: the number of vCPUs that have been allocated to spot instances.'."\n" + ."\n" + .'* max-postpaid-yundisk-capacity: the maximum capacity of pay-as-you-go data disks. (The value is deprecated.)'."\n" + ."\n" + .'* used-postpaid-yundisk-capacity: the capacity of pay-as-you-go data disks that have been created. (The value is deprecated.)'."\n" + ."\n" + .'* max-dedicated-hosts: the maximum number of dedicated hosts.'."\n" + ."\n" + .'* supported-postpaid-instance-types: the instance types of pay-as-you-go I/O optimized instances.'."\n" + ."\n" + .'* max-axt-command-count: the maximum number of Cloud Assistant commands.'."\n" + ."\n" + .'* max-axt-invocation-daily: the maximum number of Cloud Assistant command executions per day.'."\n" + ."\n" + .'* max-cloud-assistant-activation-count: the maximum number of activation codes that can be created to use to register managed instances.'."\n" + ."\n" + .'* real-name-authentication: whether the account has completed the real-name verification.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** To create an ECS instance in a region in the Chinese mainland, you must complete the real-name verification.'."\n" + ."\n" + .'This parameter is empty by default.', + 'type' => 'string', + 'required' => false, + 'example' => 'max-security-groups', + ], + 'required' => false, + 'example' => 'max-security-groups', + 'maxItems' => 30, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '8CE45CD5-31FB-47C2-959D-CA8144CE****', + ], + 'AccountAttributeItems' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AccountAttributeItem' => [ + 'description' => 'Details about account privileges in the specified region.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'AttributeName' => [ + 'description' => 'The type of the resource quota in the specified region. Valid values:'."\n" + ."\n" + .'* instance-network-type: the available network types.'."\n" + .'* max-security-groups: the maximum number of security groups.'."\n" + .'* max-elastic-network-interfaces: the maximum number of ENIs.'."\n" + .'* max-postpaid-instance-vcpu-count: the maximum number of vCPUs for pay-as-you-go instances.'."\n" + .'* max-spot-instance-vcpu-count: the maximum number of vCPUs for spot instances.'."\n" + .'* used-postpaid-instance-vcpu-count: the number of vCPUs that were allocated to pay-as-you-go instances.'."\n" + .'* used-spot-instance-vcpu-count: the number of vCPUs that were allocated to spot instances.'."\n" + .'* max-postpaid-yundisk-capacity: the maximum capacity of pay-as-you-go data disks. (The value is deprecated.)'."\n" + .'* used-postpaid-yundisk-capacity: the capacity of pay-as-you-go data disks that were created. (The value is deprecated.)'."\n" + .'* max-dedicated-hosts: the maximum number of dedicated hosts.'."\n" + .'* supported-postpaid-instance-types: the instance types of pay-as-you-go I/O optimized instances.'."\n" + .'* max-axt-command-count: the maximum number of Cloud Assistant commands.'."\n" + .'* max-axt-invocation-daily: the maximum number of Cloud Assistant command executions per day.'."\n" + .'* real-name-authentication: whether the account completed the real-name verification.'."\n" + .'* max-cloud-assistant-activation-count: the maximum number of activation codes that can be created to use to register managed instances.', + 'type' => 'string', + 'example' => 'max-security-groups', + ], + 'AttributeValues' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ValueItem' => [ + 'description' => 'The values of resource quotas.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'DiskCategory' => [ + 'description' => 'The data disk category. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: enhanced SSD (ESSD)'."\n", + 'type' => 'string', + 'example' => 'cloud_ssd', + ], + 'Value' => [ + 'description' => 'The value of the resource quota in the specified region. Valid values:'."\n" + ."\n" + .'The values returned for the resource quotas to which the following AttributeName values correspond are 0 or positive integers:'."\n" + ."\n" + .'* max-security-groups'."\n" + .'* max-elastic-network-interfaces'."\n" + .'* max-postpaid-instance-vcpu-count'."\n" + .'* max-spot-instance-vcpu-count'."\n" + .'* used-postpaid-instance-vcpu-count'."\n" + .'* used-spot-instance-vcpu-count'."\n" + .'* max-postpaid-yundisk-capacity (the value is deprecated)'."\n" + .'* used-postpaid-yundisk-capacity (the value is deprecated)'."\n" + .'* max-dedicated-hosts'."\n" + .'* max-axt-command-count'."\n" + .'* max-axt-invocation-daily'."\n" + .'* max-cloud-assistant-activation-count'."\n" + ."\n" + .'When AttributeName is set to supported-postpay-instance-types, instance types are returned. For more information, see [Overview of instance families](~~25378~~).'."\n" + ."\n" + .'When AttributeName is set to real-name-authentications, one of the following values is returned:'."\n" + ."\n" + .'* yes'."\n" + .'* none'."\n" + .'* unnecessary'."\n" + ."\n" + .'When AttributeName is set to instance-network-type, one of the following values is returned:'."\n" + ."\n" + .'* vpc'."\n" + .'* classic'."\n", + 'type' => 'string', + 'example' => '800', + ], + 'ExpiredTime' => [ + 'description' => 'The expiration time of a privilege. This parameter is returned only when the account privilege has an expiration time. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2019-01-01T12:30:00Z', + ], + 'ZoneId' => [ + 'description' => 'The ID of the zone in which the resource resides.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-b', + ], + 'InstanceType' => [ + 'description' => 'The type of the instance.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'Count' => [ + 'description' => 'The number of privilege attributes in the account.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the instance.'."\n", + 'type' => 'string', + 'example' => 'PrePaid', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Invalid.Parameter', + 'errorMessage' => 'The required parameter regionId must be not null.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The process of creating snapshot has failed due to some unknown error.', + ], + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The service is unavailable, please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8CE45CD5-31FB-47C2-959D-CA8144CE****\\",\\n \\"AccountAttributeItems\\": {\\n \\"AccountAttributeItem\\": [\\n {\\n \\"AttributeName\\": \\"max-security-groups\\",\\n \\"AttributeValues\\": {\\n \\"ValueItem\\": [\\n {\\n \\"DiskCategory\\": \\"cloud_ssd\\",\\n \\"Value\\": \\"800\\",\\n \\"ExpiredTime\\": \\"2019-01-01T12:30:00Z\\",\\n \\"ZoneId\\": \\"cn-hangzhou-b\\",\\n \\"InstanceType\\": \\"ecs.g5.large\\",\\n \\"Count\\": 3,\\n \\"InstanceChargeType\\": \\"PrePaid\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n \\n \\n 100\\n \\n \\n max-security-groups\\n \\n \\n \\n \\n 2\\n \\n \\n max-dedicated-hosts\\n \\n \\n \\n \\n 1000\\n \\n \\n max-postpaid-instance-vcpu-count\\n \\n \\n \\n \\n 1000\\n \\n \\n max-spot-instance-vcpu-count\\n \\n \\n \\n \\n 5000\\n \\n \\n max-elastic-network-interfaces\\n \\n \\n \\n \\n yes\\n \\n \\n real-name-authentication\\n \\n \\n \\n \\n vpc\\n \\n \\n instance-network-type\\n \\n \\n \\n \\n 229376\\n cloud_efficiency\\n \\n \\n 204800\\n cloud_ssd\\n \\n \\n 204800\\n cloud_essd\\n \\n \\n max-postpaid-yundisk-capacity\\n \\n \\n \\n \\n ecs.f3-c16f1.4xlarge\\n \\n \\n ecs.g5.2xlarge\\n \\n \\n supported-postpaid-instance-types\\n \\n \\n 8CE45CD5-31FB-47C2-959D-CA8144CE****\\n","errorExample":""}]', + 'title' => 'DescribeAccountAttributes', + 'description' => 'After you [create](https://account.alibabacloud.com/register/intl_register.htm) an Alibaba Cloud account, you can create a specific number of ECS instances in different regions within the account. For more information, see [Limits](~~25412~~).'."\n" + ."\n" + .'You can apply for a quota increase in the [Quota Center console](https://quotas.console.aliyun.com/products).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeResourcesModification' => [ + 'summary' => 'Queries available instance types or system disk categories in a specific zone before you change the instance type or system disk category of an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28988', + 'abilityTreeNodes' => [ + 'FEATUREecsY77CXF', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance for which you want to change the instance type or system disk category. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance for which you want to change the instance type or system disk category.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'MigrateAcrossZone', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether cross-cluster instance type upgrades are supported. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'When MigrateAcrossZone is set to true and you upgrade the instance type of an instance based on the returned information, take note of the following items:'."\n" + ."\n" + .'* Instance that resides in the classic network:'."\n" + ."\n" + .' * For [retired instance types](~~55263~~), when a non-I/O optimized instance is upgraded to an I/O optimized instance, the private IP address, disk device names, and software authorization codes of the instance change. For a Linux instance, basic disks (cloud) are identified as xvd\\* such as xvda and xvdb, and ultra disks (cloud_efficiency) and standard SSDs (cloud_ssd) are identified as vd\\* such as vda and vdb.'."\n" + .' * For [instance families available for purchase](~~25378~~), when the instance type of an instance is changed, the private IP address of the instance changes.'."\n" + ."\n" + .'* Instance that resides in a virtual private cloud (VPC): For [retired instance types](~~55263~~), when a non-I/O optimized instance is upgraded to an I/O optimized instance, the disk device names and software authorization codes of the instance change. For a Linux instance, basic disks (cloud) are identified as xvd\\* such as xvda and xvdb, and ultra disks (cloud_efficiency) and standard SSDs (cloud_ssd) are identified as vd\\* such as vda and vdb.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'DestinationResource', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource type that you want to change. Valid values:'."\n" + ."\n" + .'* InstanceType'."\n" + ."\n" + .'* SystemDisk'."\n" + ."\n" + .' If you set this parameter to SystemDisk, you must specify the InstanceType parameter. In this case, this operation queries the system disk categories supported by the specified instance type.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'InstanceType', + ], + ], + [ + 'name' => 'OperationType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operation of changing resource configurations.'."\n" + ."\n" + .'* Valid values for subscription resources:'."\n" + ."\n" + .' * Upgrade: upgrades resources.'."\n" + .' * Downgrade: downgrades resources.'."\n" + .' * RenewDowngrade: renews and downgrades resources.'."\n" + .' * RenewModify: renews an expired instance and changes its configurations.'."\n" + ."\n" + .'* Set the value to Upgrade for pay-as-you-go resources.'."\n" + ."\n" + .'Default value: Upgrade.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Upgrade', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type to which you want to change the instance type of the instance. For more information, see [Overview of instance families](~~25378~~). You can also call the [DescribeInstanceTypes](~~25620~~) operation to query the most recent instance type list.'."\n" + ."\n" + .'If you set the DestinationResource parameter to SystemDisk, you must specify the InstanceType parameter. In this case, this operation queries the system disk categories supported by the specified instance type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'Cores', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of vCPUs of the instance type. For information about the valid values, see [Overview of instance families](~~25378~~).'."\n" + ."\n" + .'This parameter is valid only when the DestinationResource parameter is set to InstanceType.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'Memory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The memory size of the instance type. Unit: GiB. For information about the valid values, see [Overview of instance families](~~25378~~).'."\n" + ."\n" + .'This parameter is valid only when the DestinationResource parameter is set to InstanceType.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '8.0', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the destination zone to which you want to migrate the instance.'."\n" + ."\n" + .'If you want to change the instance type across zones, you must specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-e', + ], + ], + [ + 'name' => 'Conditions', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The conditions.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Set the value to DiskCategory. When you set this parameter to DiskCategory, this operation queries the instance types to which you can change the instance type of the instance after a system disk category change.'."\n" + ."\n" + .'This parameter is valid only when the DestinationResource parameter is set to InstanceType.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'DiskCategory', + 'enum' => [], + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'AvailableZones' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AvailableZone' => [ + 'description' => 'The information about the queried zones.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => 'The zone ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-e', + ], + 'Status' => [ + 'description' => 'The state of the resource. Valid values:'."\n" + ."\n" + .'* Available'."\n" + .'* SoldOut'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'StatusCategory' => [ + 'description' => 'The category of the resource based on stock status. Valid values:'."\n" + ."\n" + .'* WithStock: resources that are in sufficient stock'."\n" + .'* ClosedWithStock: resources that are in insufficient stock'."\n" + .'* WithoutStock: resources that are out of stock'."\n", + 'type' => 'string', + 'example' => 'WithStock', + ], + 'RegionId' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'AvailableResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AvailableResource' => [ + 'description' => 'The resources that are available in the zone.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The resource type. Valid values:'."\n" + ."\n" + .'* InstanceType'."\n" + .'* SystemDisk'."\n", + 'type' => 'string', + 'example' => 'InstanceType', + ], + 'SupportedResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SupportedResource' => [ + 'description' => 'The information about the supported resources.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The state of the resource. Valid values:'."\n" + ."\n" + .'* Available'."\n" + .'* SoldOut'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'Value' => [ + 'description' => 'The resource type.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'Max' => [ + 'description' => 'The maximum disk capacity.'."\n" + ."\n" + .'This parameter takes effect only when the DestinationResource request parameter is set to SystemDisk.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Unit' => [ + 'description' => 'The unit of the disk capacity. This parameter takes effect only when the DestinationResource request parameter is set to SystemDisk.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'StatusCategory' => [ + 'description' => 'The category of the resource based on stock status. Valid values:'."\n" + ."\n" + .'* WithStock: resources that are in sufficient stock'."\n" + .'* ClosedWithStock: resources that are in insufficient stock'."\n" + .'* WithoutStock: resources that are out of stock'."\n", + 'type' => 'string', + 'example' => 'WithStock', + ], + 'Min' => [ + 'description' => 'The minimum disk capacity.'."\n" + ."\n" + .'This parameter takes effect only when the DestinationResource request parameter is set to SystemDisk.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'ConditionSupportedResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ConditionSupportedResource' => [ + 'description' => 'The resource types that resources can be changed to after the resources meet specified conditions. If the conditions are met, you can change the current resource to a resource in the list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource types that resources can be changed to after the resources meet specified conditions.', + 'type' => 'object', + 'properties' => [ + 'Conditions' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Condition' => [ + 'description' => 'The conditions.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The conditions.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The condition name. Valid value:'."\n" + ."\n" + .'DiskCategory, which indicates a disk category change.'."\n", + 'type' => 'string', + 'example' => 'DiskCategory', + ], + ], + ], + ], + ], + ], + 'Status' => [ + 'description' => 'The stock state of the resource. Valid values:'."\n" + ."\n" + .'* Available'."\n" + .'* SoldOut'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'Value' => [ + 'description' => 'The resource type.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'Max' => [ + 'description' => 'The maximum disk capacity.'."\n" + ."\n" + .'This parameter takes effect only when the DestinationResource request parameter is set to SystemDisk.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Unit' => [ + 'description' => 'The unit of the disk capacity.'."\n" + ."\n" + .'This parameter takes effect only when the DestinationResource request parameter is set to SystemDisk.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'StatusCategory' => [ + 'description' => 'The category of the resource based on stock status. Valid values:'."\n" + ."\n" + .'* WithStock: resources that are in sufficient stock'."\n" + .'* ClosedWithStock: resources that are in insufficient stock'."\n" + .'* WithoutStock: resources that are out of stock'."\n", + 'type' => 'string', + 'example' => 'WithStock', + ], + 'Min' => [ + 'description' => 'The minimum disk capacity.'."\n" + ."\n" + .'This parameter takes effect only when the DestinationResource request parameter is set to SystemDisk.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Invalid.OperationType', + 'errorMessage' => 'The specified operationType is not valid.', + ], + [ + 'errorCode' => 'Invalid.Param', + 'errorMessage' => 'The input parameter DestinationResource that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The specified InstanceChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidCondition.Malformed', + 'errorMessage' => 'The specified Condition is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified DedicatedHostId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidParam.TypeAndCpuMem.Conflict', + 'errorMessage' => 'The specified \'InstanceType\' and \'Cores\',\'Memory\' are not blank at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Cores', + 'errorMessage' => 'The specified parameter \'Cores\' should be empty.', + ], + [ + 'errorCode' => 'InvalidParam.Memory', + 'errorMessage' => 'The specified parameter \'Memory\' should be empty.', + ], + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerId', + 'errorMessage' => 'The specified parameter ResourceOwnerId is not available anymore.', + ], + ], + [ + [ + 'errorCode' => 'Invalid.RegionId', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'Unavailable.Regions', + 'errorMessage' => 'The available regions does not exists.', + ], + [ + 'errorCode' => 'Invalid.ResourceType', + 'errorMessage' => 'The ResourceType provided does not exist in our records.', + ], + [ + 'errorCode' => 'Invalid.DestinationResource', + 'errorMessage' => 'The specified DestinationResource is not valid.', + ], + [ + 'errorCode' => 'Invalid.IoOptimized', + 'errorMessage' => 'The specified IoOptimized is not valid.', + ], + [ + 'errorCode' => 'Invalid.NetworkCategory', + 'errorMessage' => 'The specified NetworkCategory is not valid.', + ], + [ + 'errorCode' => 'Invalid.SpotStrategy', + 'errorMessage' => 'The specified SpotStrategy is not valid.', + ], + [ + 'errorCode' => 'Invalid.ResourceId', + 'errorMessage' => 'The specified ResourceId is not valid.', + ], + [ + 'errorCode' => 'Invalid.InstancePayType', + 'errorMessage' => 'The specified InstancePayType is not valid.', + ], + [ + 'errorCode' => 'Invalid.OperationType', + 'errorMessage' => 'The specified OperationType is not valid.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified operation is denied as this instanceType is not support.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotFound', + 'errorMessage' => 'The specified ResourceId is not found in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"AvailableZones\\": {\\n \\"AvailableZone\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-e\\",\\n \\"Status\\": \\"Available\\",\\n \\"StatusCategory\\": \\"WithStock\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"AvailableResources\\": {\\n \\"AvailableResource\\": [\\n {\\n \\"Type\\": \\"InstanceType\\",\\n \\"SupportedResources\\": {\\n \\"SupportedResource\\": [\\n {\\n \\"Status\\": \\"Available\\",\\n \\"Value\\": \\"ecs.g7.large\\",\\n \\"Max\\": 2048,\\n \\"Unit\\": \\"GiB\\",\\n \\"StatusCategory\\": \\"WithStock\\",\\n \\"Min\\": 20\\n }\\n ]\\n },\\n \\"ConditionSupportedResources\\": {\\n \\"ConditionSupportedResource\\": [\\n {\\n \\"Conditions\\": {\\n \\"Condition\\": [\\n {\\n \\"Key\\": \\"DiskCategory\\"\\n }\\n ]\\n },\\n \\"Status\\": \\"Available\\",\\n \\"Value\\": \\"ecs.g5.large\\",\\n \\"Max\\": 2048,\\n \\"Unit\\": \\"GiB\\",\\n \\"StatusCategory\\": \\"WithStock\\",\\n \\"Min\\": 20\\n }\\n ]\\n }\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n \\n cn-hangzhou-e\\n Available\\n WithStock\\n cn-hangzhou\\n \\n InstanceType\\n \\n Available\\n ecs.g5.large\\n WithStock\\n \\n \\n \\n DiskCategory\\n \\n Available\\n ecs.g5.large\\n WithStock\\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeResourcesModification', + 'description' => 'Examples of common scenarios in which this operation is used:'."\n" + ."\n" + .'### [](#-1)Example 1: Query the instance types to which you can change the instance type of an instance.'."\n" + ."\n" + .'Query the instance types to which you can change the instance type of the i-bp67acfmxazb4p\\*\\*\\*\\* instance and the inventory of the queried instance types in the zone in which the instance resides.'."\n" + ."\n" + .' http(s)://ecs.aliyuncs.com/?Action=DescribeResourcesModification'."\n" + .' &RegionId=cn-hangzhou'."\n" + .' &ResourceId=i-bp67acfmxazb4p****'."\n" + .' &DestinationResource=InstanceType'."\n" + .' &OperationType=Upgrade'."\n" + .' &'."\n" + ."\n" + .'### [](#-2)Example 2: Query the instance types to which you can change the instance type of an instance after a system disk category change.'."\n" + ."\n" + .'Query the instance types to which you can change the instance type of the i-bp67acfmxazb4p\\*\\*\\*\\* instance after a system disk category change and the inventory of the queried instance types in the zone in which the instance resides.'."\n" + ."\n" + .' http(s)://ecs.aliyuncs.com/?Action=DescribeResourcesModification'."\n" + .' &RegionId=cn-hangzhou'."\n" + .' &ResourceId=i-bp67acfmxazb4p****'."\n" + .' &DestinationResource=InstanceType'."\n" + .' &OperationType=Upgrade'."\n" + .' &Conditions.0=DiskCategory'."\n" + .' &'."\n" + ."\n" + .'### [](#-3)Example 3: Query the system disk categories supported by the instance type to which you want to change the instance type of an instance.'."\n" + ."\n" + .'Query the system disk categories supported by the instance type to which you want to change the instance type of the i-bp67acfmxazb4p\\*\\*\\*\\* instance and the inventory of the disk categories in the zone in which the instance resides. In this example, the ecs.g7.large instance type is used. To change to the instance type, you must change the system disk category of the instance to a category supported by the instance type.'."\n" + ."\n" + .'> You can call this operation as described in Example 2 to query the instance types to which you can change the instance type of an instance.'."\n" + ."\n" + .' http(s)://ecs.aliyuncs.com/?Action=DescribeResourcesModification'."\n" + .' &RegionId=cn-hangzhou'."\n" + .' &ResourceId=i-bp67acfmxazb4p****'."\n" + .' &DestinationResource=SystemDisk'."\n" + .' &OperationType=Upgrade'."\n" + .' &InstanceType=ecs.g7.large'."\n" + .' &'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeRecommendInstanceType' => [ + 'summary' => 'Queries alternative instance types of an instance type. This operation is in internal preview. This operation lists all alternative instance types of an instance type that has been or is planed to be retired.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28982', + 'abilityTreeNodes' => [ + 'FEATUREecs2UXJI2', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'Cores', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of vCPU cores of the instance type.'."\n" + ."\n" + .'> If you specify both `Cores` and `Memory`, the system returns all instance types that match the values of the parameters.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'Memory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The memory size of the instance type. Unit: GiB.'."\n" + ."\n" + .'> If you specify both `Cores` and `Memory`, the system returns all instance types that match the values of the parameters.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '8.0', + ], + ], + [ + 'name' => 'InstanceFamilyLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The level of the instance family. Valid values:'."\n" + ."\n" + .'* EntryLevel: entry level.'."\n" + .'* EnterpriseLevel: enterprise level.'."\n" + .'* CreditEntryLevel: credit-based entry level. For more information, see [Burstable instance families](~~59977~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EnterpriseLevel', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type. For more information, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~25620~~) operation to query the most recent instance type list.'."\n" + ."\n" + .'> If you specify `InstanceType`, you cannot specify `Cores` or `Memory`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.hfg6.large', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of ECS instances. Valid values:'."\n" + ."\n" + .'* classic'."\n" + .'* vpc'."\n" + ."\n" + .'Default value: vpc.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the ECS instance. For more information, see [Billing overview](~~25398~~). Valid values:'."\n" + ."\n" + .'* PrePaid: subscription.'."\n" + .'* PostPaid: pay-as-you-go'."\n" + ."\n" + .'Default value: PostPaid'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + 'default' => 'PostPaid', + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bidding policy of the spot instance. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is created as a pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is a spot instance that has a user-defined maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is a spot instance for which the market price at the time of purchase is automatically used as the bid price. The market price can be up to the pay-as-you-go price.'."\n" + ."\n" + .'> If you specify `SpotStrategy`, you must set `InstanceChargeType` to `PostPaid`.'."\n" + ."\n" + .'Default value: NoSpot.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + 'default' => 'NoSpot', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether instances of the instance type are I/O optimized. You cannot specify IoOptimized if the instance type supports only non-I/O optimized instances. Valid values:'."\n" + ."\n" + .'* optimized: The instances are I/O optimized.'."\n" + .'* none: The instances are non-I/O optimized.'."\n" + ."\n" + .'Default value: optimized.'."\n" + ."\n" + .'If you query alternative instance types for retired instance types, this parameter is set to none by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optimized', + ], + ], + [ + 'name' => 'PriorityStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The policy for recommending instance types. Valid values:'."\n" + ."\n" + .'* InventoryFirst: recommends instance types in descending order of resource availability.'."\n" + .'* PriceFirst: recommends the most cost-effective instance types. Recommended instance types appear based on the hourly prices of vCPUs in ascending order.'."\n" + .'* NewProductFirst: recommends the latest instance types first.'."\n" + ."\n" + .'Default value: InventoryFirst.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PriceFirst', + 'default' => 'InventoryFirst', + ], + ], + [ + 'name' => 'MaxPrice', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum hourly price for pay-as-you-go instances or spot instances.'."\n" + ."\n" + .'> This parameter takes effect only when `SpotStrategy` is set to `SpotWithPriceLimit`.', + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '10.0', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID. You can call the [DescribeZones](~~25610~~) operation to query the most recent zone list.'."\n" + ."\n" + .'We recommend that you set ZoneMatchMode to Include, which is the default value. This way, the system recommends instance types that are available in the zone specified by ZoneId based on the priority policy. The system also recommends instance types that are available in other zones within the same region.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-f', + ], + ], + [ + 'name' => 'SystemDiskCategory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: Enterprise SSD (ESSD)'."\n" + .'* cloud: basic disk'."\n" + ."\n" + .'For non-I/O optimized instances, the default value is cloud.'."\n" + ."\n" + .'For I/O optimized instances, the default value is cloud_efficiency.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'ZoneMatchMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to recommend only instance types in the zone specified by ZoneId. Valid values:'."\n" + ."\n" + .'* Strict: recommends only instance types that are available in the zone specified by ZoneId.'."\n" + .'* Include: recommends instance types that are available in the zone specified by ZoneId and instance types that are available in other zones within the same region.'."\n" + ."\n" + .'If `ZoneId` is specified, the default value of this parameter is Strict, which indicates that only instance types in the zone specified by ZoneId are recommended.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Strict', + ], + ], + [ + 'name' => 'Scene', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies the scenarios in which instance types are recommended. Valid values:'."\n" + ."\n" + .'* UPGRADE: instance type upgrade or downgrade'."\n" + .'* CREATE: instance creation'."\n" + ."\n" + .'Default value: CREATE.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CREATE', + 'default' => 'CREATE', + ], + ], + [ + 'name' => 'InstanceTypeFamily', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The instance families from which the alternative instance types are selected. You can specify up to 10 instance families.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The instance family. For more information, see [Overview of instance families](~~25378~~). You can also call the [DescribeInstanceTypeFamilies](~~25620~~) operation to query the most recent list of instance families.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.hfg6', + ], + 'required' => false, + 'example' => 'ecs.hfg6', + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'Data' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RecommendInstanceType' => [ + 'description' => 'The details of the recommended instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CommodityCode' => [ + 'description' => 'The commodity code of the instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs', + ], + 'ZoneId' => [ + 'description' => 'The ID of the zone in which the instance type is available.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-h', + ], + 'Priority' => [ + 'description' => 'The priority based on which the system sorts the instance types.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'NetworkType' => [ + 'description' => 'The network type of the ECS instances.'."\n", + 'type' => 'string', + 'example' => 'vpc', + ], + 'Scene' => [ + 'description' => 'The scenario in which the instance type is recommended.'."\n", + 'type' => 'string', + 'example' => 'CREATE', + ], + 'SpotStrategy' => [ + 'description' => 'The bidding policy for the spot instances.', + 'type' => 'string', + 'example' => 'NoSpot', + ], + 'RegionId' => [ + 'description' => 'The ID of the region in which the instance type is available.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the instances.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'Zones' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'zone' => [ + 'description' => 'The details of the zones in which the instance type is available.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ZoneNo' => [ + 'description' => 'The ID of the zone in which the instance type is available.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-h', + ], + 'NetworkTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NetworkType' => [ + 'description' => 'The details of the network types of the instance type.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The network type of the instance type.'."\n", + 'type' => 'string', + 'example' => 'vpc', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + 'InstanceType' => [ + 'description' => 'The details of the instance type.'."\n", + 'type' => 'object', + 'properties' => [ + 'SupportIoOptimized' => [ + 'description' => 'Indicates whether the instance type supports I/O optimization.'."\n", + 'type' => 'string', + 'example' => 'optimized', + ], + 'Cores' => [ + 'description' => 'The number of vCPUs of the instance type.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Memory' => [ + 'description' => 'The memory size of the instance type. Unit: MB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8192', + ], + 'InstanceType' => [ + 'description' => 'The name of the instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs.hfg6.large', + ], + 'InstanceTypeFamily' => [ + 'description' => 'The instance family.'."\n", + 'type' => 'string', + 'example' => 'ecs.hfg6', + ], + 'Generation' => [ + 'description' => 'The generation of the instance family.'."\n", + 'type' => 'string', + 'example' => 'ecs-4', + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'RecommendEmpty.InstanceTypeNotAuthorized', + 'errorMessage' => 'The recommend instanceTypes are not authorized.', + ], + [ + 'errorCode' => 'RecommendEmpty.InstanceTypeSoldOut', + 'errorMessage' => 'The recommend instanceTypes are out of usage.', + ], + [ + 'errorCode' => 'RecommendEmpty.DiskCategoryNotRecommended', + 'errorMessage' => 'The specified disk category is not available for recommended.', + ], + [ + 'errorCode' => 'InvalidNetworkType.ValueNotSupported', + 'errorMessage' => 'The specified parameter NetworkType is not valid.', + ], + [ + 'errorCode' => 'InvalidSpotStrategy.ValueNotSupported', + 'errorMessage' => 'The specified parameter SpotStrategy is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The specified parameter InstanceChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidPriorityStrategy.ValueNotSupported', + 'errorMessage' => 'The specified parameter PriorityStrategy is not supported.', + ], + [ + 'errorCode' => 'InvalidParam.TypeAndCpuMem.Conflict', + 'errorMessage' => 'The specified parameters InstanceType and Cores,Memory should not be blank at the same time.', + ], + [ + 'errorCode' => 'InvalidIoOptimized.NotFound', + 'errorMessage' => 'The specified parameter IoOptimized is not valid.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotFound', + 'errorMessage' => 'The specified parameter SystemDiskCategory is not supported.', + ], + [ + 'errorCode' => 'InvalidInstanceTypeFamily.NotFound', + 'errorMessage' => 'The specified InstanceTypeFamily is not valid.', + ], + [ + 'errorCode' => 'InvalidMaxPrice.NotSupported', + 'errorMessage' => 'The specified MaxPrice is not valid.', + ], + [ + 'errorCode' => 'InvalidZoneId.MalFormed', + 'errorMessage' => 'The specified ZoneId is not valid when Cores and Memory is not null.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified InstanceType is not valid.', + ], + [ + 'errorCode' => 'InvalidZoneId.ValueNotSupported', + 'errorMessage' => 'The specified ZoneId is not valid.', + ], + [ + 'errorCode' => 'InvalidCoreAndMemory.ValueNotSupported', + 'errorMessage' => 'The specified Cores/Memory does not match instance type.', + ], + [ + 'errorCode' => 'QuotaExceed.AfterpayInstance', + 'errorMessage' => 'Living afterpay instances quota exceeded.', + ], + [ + 'errorCode' => 'RecommendEmpty.PerformanceNotSatisfied', + 'errorMessage' => 'The performance of recommend instanceType is not satisfied.', + ], + [ + 'errorCode' => 'RecommendEmpty.PriceNotSatisfied', + 'errorMessage' => 'The current price of recommend instanceTypes above user max price.', + ], + [ + 'errorCode' => 'RecommendEmpty.QuotaNotSatisfied', + 'errorMessage' => 'The quota of recommend instanceTypes are out of usage.', + ], + [ + 'errorCode' => 'RecommendEmpty.IzNotMatched', + 'errorMessage' => 'The iz of recommend instanceTypes are not match.', + ], + [ + 'errorCode' => 'RecommendEmpty.InstanceTypeNotMatched', + 'errorMessage' => 'The recommend instanceTypes are not match.', + ], + [ + 'errorCode' => 'InvalidScene.ValueNotSupported', + 'errorMessage' => 'The specified Scene is invalid.', + ], + [ + 'errorCode' => 'RecommendEmpty.InstanceTypeFamilyNotMatched', + 'errorMessage' => 'The recommend instanceTypeFamily are not match.', + ], + [ + 'errorCode' => 'RecommendEmpty.GenerationNotMatch', + 'errorMessage' => 'The recommend instanceType generation are not match.', + ], + [ + 'errorCode' => 'RecommendEmpty.NetworkTypeNotSupported', + 'errorMessage' => 'The recommend instanceType networkType are not match.', + ], + [ + 'errorCode' => 'InvalidInstanceFamilyLevel.NotSupported', + 'errorMessage' => 'The specified InstanceFamilyLevel is not valid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"Data\\": {\\n \\"RecommendInstanceType\\": [\\n {\\n \\"CommodityCode\\": \\"ecs\\",\\n \\"ZoneId\\": \\"cn-hangzhou-h\\",\\n \\"Priority\\": 2,\\n \\"NetworkType\\": \\"vpc\\",\\n \\"Scene\\": \\"CREATE\\",\\n \\"SpotStrategy\\": \\"NoSpot\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"Zones\\": {\\n \\"zone\\": [\\n {\\n \\"ZoneNo\\": \\"cn-hangzhou-h\\",\\n \\"NetworkTypes\\": {\\n \\"NetworkType\\": [\\n \\"vpc\\"\\n ]\\n }\\n }\\n ]\\n },\\n \\"InstanceType\\": {\\n \\"SupportIoOptimized\\": \\"optimized\\",\\n \\"Cores\\": 1,\\n \\"Memory\\": 8192,\\n \\"InstanceType\\": \\"ecs.hfg6.large\\",\\n \\"InstanceTypeFamily\\": \\"ecs.hfg6\\",\\n \\"Generation\\": \\"ecs-4\\"\\n }\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"Data\\":{\\n \\"RecommendInstanceType\\":[\\n {\\n \\"CommodityCode\\":\\"ecs\\",\\n \\"RegionNo\\":\\"us-west-ot7-a01\\",\\n \\"Scene\\":\\"CREATE\\",\\n \\"Zones\\":{\\n \\"zone\\":[\\n\\n ]\\n },\\n \\"InstanceType\\":{\\n \\"Memory\\":8192,\\n \\"Cores\\":1,\\n \\"InstanceTypeFamily\\":\\"ecs.s1\\",\\n \\"SupportIoOptimized\\":\\"none\\",\\n \\"Generation\\":\\"ecs-1\\",\\n \\"InstanceType\\":\\"ecs.s1.large\\"\\n }\\n },\\n {\\n \\"CommodityCode\\":\\"ecs\\",\\n \\"RegionNo\\":\\"us-west-ot7-a01\\",\\n \\"Scene\\":\\"CREATE\\",\\n \\"Zones\\":{\\n \\"zone\\":[\\n {\\n \\"ZoneNo\\":\\"us-west-1a\\",\\n \\"NetworkTypes\\":{\\n \\"NetworkType\\":[\\n \\"vpc\\"\\n ]\\n }\\n }\\n ]\\n },\\n \\"InstanceType\\":{\\n \\"Memory\\":8192,\\n \\"Cores\\":1,\\n \\"InstanceTypeFamily\\":\\"ecs.e4\\",\\n \\"SupportIoOptimized\\":\\"optimized\\",\\n \\"Generation\\":\\"ecs-3\\",\\n \\"InstanceType\\":\\"ecs.e4.small\\"\\n }\\n },\\n {\\n \\"CommodityCode\\":\\"ecs\\",\\n \\"RegionNo\\":\\"us-west-ot7-a01\\",\\n \\"Scene\\":\\"CREATE\\",\\n \\"Zones\\":{\\n \\"zone\\":[\\n {\\n \\"ZoneNo\\":\\"us-west-1a\\",\\n \\"NetworkTypes\\":{\\n \\"NetworkType\\":[\\n \\"vpc\\"\\n ]\\n }\\n }\\n ]\\n },\\n \\"InstanceType\\":{\\n \\"Memory\\":8192,\\n \\"Cores\\":2,\\n \\"InstanceTypeFamily\\":\\"ecs.sn2\\",\\n \\"SupportIoOptimized\\":\\"optimized\\",\\n \\"Generation\\":\\"ecs-2\\",\\n \\"InstanceType\\":\\"ecs.sn2.medium\\"\\n }\\n },\\n {\\n \\"CommodityCode\\":\\"ecs\\",\\n \\"RegionNo\\":\\"us-west-ot7-a01\\",\\n \\"Scene\\":\\"CREATE\\",\\n \\"Zones\\":{\\n \\"zone\\":[\\n\\n ]\\n },\\n \\"InstanceType\\":{\\n \\"Memory\\":8192,\\n \\"Cores\\":1,\\n \\"InstanceTypeFamily\\":\\"ecs.e3\\",\\n \\"SupportIoOptimized\\":\\"optimized\\",\\n \\"Generation\\":\\"ecs-2\\",\\n \\"InstanceType\\":\\"ecs.e3.small\\"\\n }\\n }\\n ]\\n },\\n \\"RequestId\\":\\"775643e7-8297-40ee-b9e6-f0a252aa152d\\"\\n}"},{"type":"xml","example":"\\n 5EEED58E-C640-4E62-B6E3-A251B5E910D5\\n \\n \\n cn-hangzhou-h\\n PostPaid\\n 1\\n vpc\\n cn-hangzhou\\n CREATE\\n \\n optimized\\n 2\\n ecs-5\\n ecs.hfg6\\n 8192\\n ecs.hfg6.large\\n \\n NoSpot\\n \\n \\n \\n vpc\\n \\n cn-hangzhou-h\\n \\n \\n \\n \\n cn-hangzhou-i\\n PostPaid\\n 2\\n vpc\\n cn-hangzhou\\n CREATE\\n \\n optimized\\n 2\\n ecs-5\\n ecs.hfg6\\n 8192\\n ecs.hfg6.large\\n \\n NoSpot\\n \\n \\n \\n vpc\\n \\n cn-hangzhou-i\\n \\n \\n \\n \\n cn-hangzhou-j\\n PostPaid\\n 3\\n vpc\\n cn-hangzhou\\n CREATE\\n \\n optimized\\n 2\\n ecs-5\\n ecs.hfg6\\n 8192\\n ecs.hfg6.large\\n \\n NoSpot\\n \\n \\n \\n vpc\\n \\n cn-hangzhou-j\\n \\n \\n \\n \\n","errorExample":"\\n \\n \\n ecs\\n us-west-ot7-a01\\n CREATE\\n \\n \\n 8192\\n 1\\n ecs.s1\\n none\\n ecs-1\\n ecs.s1.large\\n \\n \\n \\n ecs\\n us-west-ot7-a01\\n CREATE\\n \\n \\n us-west-1a\\n \\n vpc\\n \\n \\n \\n \\n 8192\\n 1\\n ecs.e4\\n optimized\\n ecs-3\\n ecs.e4.small\\n \\n \\n \\n ecs\\n us-west-ot7-a01\\n CREATE\\n \\n \\n us-west-1a\\n \\n vpc\\n \\n \\n \\n \\n 8192\\n 2\\n ecs.sn2\\n optimized\\n ecs-2\\n ecs.sn2.medium\\n \\n \\n \\n ecs\\n us-west-ot7-a01\\n CREATE\\n \\n \\n 8192\\n 1\\n ecs.e3\\n optimized\\n ecs-2\\n ecs.e3.small\\n \\n \\n \\n 775643e7-8297-409e6-f0a252aa152d\\n"}]', + 'title' => 'DescribeRecommendInstanceType', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribePrice' => [ + 'summary' => 'Queries the most recent prices of specified resources. You can specify a resource type in the request, such as the Elastic Compute Service (ECS) instance, cloud disk, dedicated host, elasticity assurance, and capacity reservation. You can also query the activity rules, prices, and discounts of resources.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28981', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource. Valid values:'."\n" + ."\n" + .'* instance: queries the most recent prices of ECS instances. If you set this parameter to `instance`, specify `InstanceType`.'."\n" + .'* disk: queries the most recent prices of cloud disks. If you set this parameter to `disk`, specify `DataDisk.1.Category` and `DataDisk.1.Size`.'."\n" + .'* diskperformance: Queries the most recent prices of the provioned performance of the Enterprise SSD (ESSD) AutoPL disk. You must also specify `DataDisk.1.Category` and `DataDisk.1.ProvisionedIops`.'."\n" + .'* bandwidth: queries the most recent prices for network usage.'."\n" + .'* ddh: queries the most recent prices of dedicated hosts.'."\n" + .'* ElasticityAssurance: queries the most recent prices of elasticity assurances. If you set this parameter to `ElasticityAssurance`, specify `InstanceType`.'."\n" + .'* CapacityReservation: queries the most recent prices of capacity reservations. If you set this parameter to `CapacityReservation`, specify `InstanceType`.'."\n" + ."\n" + .'Default value: instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'instance', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter takes effect only when ResourceType is set to instance.'."\n" + ."\n" + .'The image ID. Images contain the runtime environments to load when instances start. You can call the [DescribeImages](~~25534~~) operation to query available images. If you do not specify this parameter, the system queries the prices of Linux images.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'centos_7_05_64_20G_alibase_20181212.vhd', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type. When `ResourceType` is set to `instance`, you must specify this parameter. For more information, see [Instance families](~~25378~~) or call the [DescribeInstanceTypes](~~25620~~) operation to query the most recent list of instance types.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g6.large', + ], + ], + [ + 'name' => 'DedicatedHostType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the dedicated host. You can call the [DescribeDedicatedHostTypes](~~134240~~) operation to query the most recent list of dedicated host types.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ddh.c5', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the instance is I/O optimized. Valid values:'."\n" + ."\n" + .'* none: The instance is not I/O optimized.'."\n" + .'* optimized: The instance is I/O optimized.'."\n" + ."\n" + .'When the instance type specified by the InstanceType parameter belongs to [Generation I instance families](~~55263~~), the default value of this parameter is none.'."\n" + ."\n" + .'When the instance type specified by the InstanceType parameter does not belong to [Generation I instance families](~~55263~~), the default value of this parameter is optimized.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optimized', + ], + ], + [ + 'name' => 'InstanceNetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the instance. Valid values:'."\n" + ."\n" + .'* classic: classic network'."\n" + .'* vpc: Virtual Private Cloud (VPC)'."\n" + ."\n" + .'Default value: vpc.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth: pay-by-bandwidth'."\n" + .'* PayByTraffic: pay-by-traffic'."\n" + ."\n" + .'Default value: PayByTraffic'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + ], + ], + [ + 'name' => 'InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s. Valid values: 0 to 100.'."\n" + ."\n" + .'Default value: 0.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'SystemDisk.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* ephemeral_ssd: local SSD'."\n" + .'* cloud_essd: Enterprise SSD (ESSD)'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + ."\n" + .'Default value:'."\n" + ."\n" + .'* When InstanceType is set to a retired instance type and `IoOptimized` is set to `none`, the default value is `cloud`.'."\n" + .'* In other cases, the default value is `cloud_efficiency`.'."\n" + ."\n" + .'> If you want to query the price of a system disk, you must also specify `ImageId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'SystemDisk.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the system disk. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Basic disk (cloud): 20 to 500.'."\n" + ."\n" + .'* ESSD (cloud_essd): Valid values vary based on the SystemDisk.PerformanceLevel value.'."\n" + ."\n" + .' * Valid values when SystemDisk.PerformanceLevel is set to PL0: 1 to 2048.'."\n" + .' * Valid values when SystemDisk.PerformanceLevel is set to PL1: 20 to 2048.'."\n" + .' * Valid values when SystemDisk.PerformanceLevel is set to PL2: 461 to 2048.'."\n" + .' * Valid values when SystemDisk.PerformanceLevel is set to PL3: 1261 to 2048.'."\n" + ."\n" + .'* ESSD AutoPL disk (cloud_auto): 1 to 2048.'."\n" + ."\n" + .'* Other disk categories: 20 to 2048.'."\n" + ."\n" + .'Default value: 20 or the size of the image specified by ImageId, whichever is greater.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'SystemDisk.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the system disk when the disk is an ESSD. This parameter is valid only when `SystemDiskCategory` is set to cloud_essd. Valid values:'."\n" + ."\n" + .'PL0, PL1 (default), PL2, PL3.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + ], + [ + 'name' => 'DataDisk.1.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the data disk.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.Size`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + ], + [ + 'name' => 'DataDisk.1.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The data disk category.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.Category`.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_auto: Enterprise SSD (ESSD) AutoPL disk.'."\n" + .'* cloud_regional_disk_auto: Regional ESSD.'."\n" + .'* cloud_essd: ESSD.'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk.'."\n" + .'* cloud_essd_entry: ESSD Entry disk.'."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'cloud' => '', + 'cloud_efficiency' => '', + 'cloud_ssd' => '', + 'cloud_auto' => '', + 'cloud_regional_disk_auto' => '', + 'cloud_essd' => '', + 'elastic_ephemeral_disk_standard' => '', + 'cloud_essd_entry' => '', + 'elastic_ephemeral_disk_premium' => '', + ], + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'DataDisk.1.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the data disk.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.PerformanceLevel`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + ], + [ + 'name' => 'DataDisk.2.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the data disk.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.Size`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '200', + ], + ], + [ + 'name' => 'DataDisk.2.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The data disk category.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.Category`.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_auto: ESSD AutoPL disk.'."\n" + .'* cloud_regional_disk_auto: Regional ESSD.'."\n" + .'* cloud_essd: ESSD.'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk.'."\n" + .'* cloud_essd_entry: ESSD Entry disk.'."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'cloud' => '', + 'cloud_efficiency' => '', + 'cloud_ssd' => '', + 'cloud_auto' => '', + 'cloud_regional_disk_auto' => '', + 'cloud_essd' => '', + 'elastic_ephemeral_disk_standard' => '', + 'cloud_essd_entry' => '', + 'elastic_ephemeral_disk_premium' => '', + ], + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'DataDisk.2.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the data disk.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.PerformanceLevel`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + ], + [ + 'name' => 'DataDisk.3.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the data disk.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.Size`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + ], + [ + 'name' => 'DataDisk.3.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The data disk category.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.Category`.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_auto: ESSD AutoPL disk.'."\n" + .'* cloud_regional_disk_auto: Regional ESSD.'."\n" + .'* cloud_essd: ESSD.'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk.'."\n" + .'* cloud_essd_entry: ESSD Entry disk.'."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'cloud' => '', + 'cloud_efficiency' => '', + 'cloud_ssd' => '', + 'cloud_auto' => '', + 'cloud_regional_disk_auto' => '', + 'cloud_essd' => '', + 'elastic_ephemeral_disk_standard' => '', + 'cloud_essd_entry' => '', + 'elastic_ephemeral_disk_premium' => '', + ], + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'DataDisk.3.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the data disk.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.PerformanceLevel`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + ], + [ + 'name' => 'DataDisk.4.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the data disk.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.Size`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + ], + [ + 'name' => 'DataDisk.4.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The data disk category.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.Category`.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_auto: ESSD AutoPL disk.'."\n" + .'* cloud_regional_disk_auto: Regional ESSD.'."\n" + .'* cloud_essd: ESSD.'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk.'."\n" + .'* cloud_essd_entry: ESSD Entry disk.'."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'cloud' => '', + 'cloud_efficiency' => '', + 'cloud_ssd' => '', + 'cloud_auto' => '', + 'cloud_regional_disk_auto' => '', + 'cloud_essd' => '', + 'elastic_ephemeral_disk_standard' => '', + 'cloud_essd_entry' => '', + 'elastic_ephemeral_disk_premium' => '', + ], + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'DataDisk.4.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the data disk.'."\n" + ."\n" + .'To improve scalability, we recommend that you specify `DataDisk.N.PerformanceLevel`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing cycle of the ECS instance. Valid values:'."\n" + ."\n" + .'* Valid values when PriceUnit is set to Month: 1, 2, 3, 4, 5, 6, 7, 8, and 9.'."\n" + .'* Valid values when PriceUnit is set to Year: 1, 2, 3, 4, and 5.'."\n" + .'* Set the value to 1 when PriceUnit is set to Hour.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PriceUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pricing unit of the ECS resource. Valid values:'."\n" + ."\n" + .'* Month'."\n" + .'* Year'."\n" + .'* Hour (default)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Year', + ], + ], + [ + 'name' => 'Amount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of ECS instances. You can specify this parameter when you want to query the prices of multiple instances that have specific specifications. Valid values: 1 to 1000.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'OfferingType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The payment option of the reserved instance. Valid values:'."\n" + ."\n" + .'* No Upfront'."\n" + .'* Partial Upfront'."\n" + .'* All Upfront'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'All Upfront', + ], + ], + [ + 'name' => 'InstanceAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total number of reserved instances for an instance type.'."\n" + ."\n" + .'Valid values: 1 to 1000.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '100', + ], + ], + [ + 'name' => 'Scope', + 'in' => 'query', + 'schema' => [ + 'description' => 'The scope of the reserved instance. Valid values:'."\n" + ."\n" + .'* Region: regional'."\n" + .'* Zone: zonal'."\n" + ."\n" + .'Default value: Region.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Zone', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system of the image that is used by the instance. Valid values:'."\n" + ."\n" + .'* Windows: Windows Server operating system'."\n" + .'* Linux: Linux and UNIX-like operating system'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Linux', + ], + ], + [ + 'name' => 'Capacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The storage capacity. Unit: GiB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1024', + ], + ], + [ + 'name' => 'AssuranceTimes', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total number of times that the elasticity assurance can be applied. Set the value to Unlimited. This value indicates that the elasticity assurance can be applied an unlimited number of times within its effective period.'."\n" + ."\n" + .'Default value: Unlimited.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Unlimited', + ], + ], + [ + 'name' => 'InstanceCpuCoreCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total number of vCPUs supported by the elasticity assurance. When you call this API operation, the system calculates the number of instances that an elasticity assurance must support based on the specified value of InstanceType. The calculated value is rounded up to the nearest integer.'."\n" + ."\n" + .'> When you call this API operation to query the price of an elasticity assurance, you can only specify either InstanceCoreCpuCount or InstanceAmount.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1024', + ], + ], + [ + 'name' => 'Isp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Internet service provider (ISP). Valid values:'."\n" + ."\n" + .'* cmcc: China Mobile'."\n" + .'* telecom: China Telecom'."\n" + .'* unicom: China Unicom'."\n" + .'* multiCarrier: multi-line ISP'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cmcc', + ], + ], + [ + 'name' => 'InstanceTypeList', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The instance types. You can select only a single instance type when you configure an elasticity assurance in unlimited mode.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the instance type. You can select only a single instance type when you configure an elasticity assurance in unlimited mode.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.c6.xlarge', + ], + 'required' => false, + 'example' => 'ecs.g6.xlarge', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is a regular pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is created as a spot instance that has a user-defined maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is created as a spot instance whose bid price is based on the market price at the time of purchase. The market price can be up to the pay-as-you-go price.'."\n" + ."\n" + .'Default value: NoSpot.'."\n" + ."\n" + .'> This parameter takes effect only when `PriceUnit` is set to Hour and `Period` is set to 1. The default value of `PriceUnit` is `Hour` and the default value of `Period` is `1`. Therefore, you do not need to set `PriceUnit` or `Period` when you set SpotStrategy.', + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + 'default' => 'NoSpot', + 'enum' => [ + 'NoSpot', + 'SpotWithPriceLimit', + 'SpotAsPriceGo', + ], + ], + ], + [ + 'name' => 'SpotDuration', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Default value: 1. Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance runs for 1 hour. The system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released. Spot instances are billed by second. We recommend that you specify a protection period based on your business requirements.'."\n" + ."\n" + .'> This parameter takes effect only when SpotStrategy is set to SpotWithPriceLimit or SpotAsPriceGo.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID.'."\n" + ."\n" + .'> Prices of spot instances vary based on zones. When you query the price of a spot instance, specify ZoneId.', + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hagzhou-i', + ], + ], + [ + 'name' => 'DataDisk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about data disks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about data disk N.'."\n", + 'type' => 'object', + 'properties' => [ + 'Category' => [ + 'description' => 'The category of data disk N. Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* ephemeral_ssd: local SSD.'."\n" + .'* cloud_essd: ESSD.'."\n" + .'* cloud_auto: ESSD AutoPL disk.'."\n" + ."\n" + .'Valid values of N: 1 to 16.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + 'Size' => [ + 'description' => 'The size of data disk N. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values if DataDisk.N.Category is set to cloud: 5 to 2000.'."\n" + ."\n" + .'* Valid values if DataDisk.N.Category is set to cloud_efficiency: 20 to 32768.'."\n" + ."\n" + .'* Valid values if DataDisk.N.Category is set to cloud_ssd: 20 to 32768.'."\n" + ."\n" + .'* Valid values if DataDisk.N.Category is set to cloud_auto: 1 to 32768.'."\n" + ."\n" + .'* Valid values if DataDisk.N.Category is set to cloud_essd: vary based on the `DataDisk.N.PerformanceLevel` value.'."\n" + ."\n" + .' * Valid values if DataDisk.N.PerformanceLevel is set to PL0: 1 to 32768.'."\n" + .' * Valid values if DataDisk.N.PerformanceLevel is set to PL1: 20 to 32768.'."\n" + .' * Valid values if DataDisk.N.PerformanceLevel is set to PL2: 461 to 32768.'."\n" + .' * Valid values if DataDisk.N.PerformanceLevel is set to PL3: 1261 to 32768.'."\n" + ."\n" + .'* Valid values if DataDisk.N.Category is set to ephemeral_ssd: 5 to 800.'."\n" + ."\n" + .'Valid values of N: 1 to 16.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '2000', + ], + 'PerformanceLevel' => [ + 'description' => 'The performance level of data disk N when the disk is an ESSD. This parameter takes effect only when `DataDisk.N.Category` is set to cloud_essd. Valid values:'."\n" + ."\n" + .'* PL0'."\n" + .'* PL1 (default)'."\n" + .'* PL2'."\n" + .'* PL3'."\n" + ."\n" + .'Valid values of N: 1 to 16.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk to use as data disk N. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set `DataDisk.N.Category` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '40000', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'SchedulerOptions.DedicatedHostId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter takes effect only when ResourceType is set to instance.'."\n" + ."\n" + .'The ID of the dedicated host. You can call the [DescribeDedicatedHosts](~~134242~~) operation to query the dedicated host list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dh-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time when the time-segmented assurance of the elasticity assurance takes effect. Specify the time in the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2020-10-30T06:32:00Z', + ], + ], + [ + 'name' => 'RecurrenceRules', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The assurance schedules of the time-segmented elasticity assurance.'."\n" + ."\n" + .'> Time-segmented elasticity assurances are available only in specific regions and to specific users. To use time-segmented elasticity assurances, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The assurance schedule of the time-segmented elasticity assurance.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* When you modify an assurance schedule, **make sure that the validity period of the elasticity assurance remains unchanged**. For information about modification examples, see [ModifyElasticRule](~~2867405~~).'."\n" + ."\n" + .'* The modified assurance schedule takes effect the next day after the modification.'."\n", + 'type' => 'object', + 'properties' => [ + 'StartHour' => [ + 'description' => 'The start time of the assurance period for the capacity reservation of the time-segmented elasticity assurance. Specify an on-the-hour point in time.'."\n" + ."\n" + .'> You must specify both StartHour and EndHour. The EndHour value must be at least 4 hours later than the StartHour value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '24', + 'minimum' => '0', + 'example' => '4', + ], + 'RecurrenceType' => [ + 'description' => 'The type of the assurance schedule. Valid values:'."\n" + ."\n" + .'* Daily'."\n" + .'* Weekly'."\n" + .'* Monthly'."\n" + ."\n" + .'> If you specify this parameter, you must specify `RecurrenceType` and `RecurrenceValue`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Daily', + ], + 'EndHour' => [ + 'description' => 'The end time of the assurance period for the capacity reservation of the time-segmented elasticity assurance. Specify an on-the-hour point in time.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '24', + 'minimum' => '0', + 'example' => '10', + ], + 'RecurrenceValue' => [ + 'description' => 'The days of the week or month on which the capacity reservation of the time-segmented elasticity assurance takes effect or the interval, in number of days, at which the capacity reservation takes effect.'."\n" + ."\n" + .'* If you set `RecurrenceType` to `Daily`, you can specify only one value. Valid values: 1 to 31. The value specifies that the capacity reservation takes effect every few days.'."\n" + .'* If you set `RecurrenceType` to `Weekly`, you can specify multiple values. Separate the values with commas (,). Valid values: 0, 1, 2, 3, 4, 5, and 6, which specify Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, and Saturday, respectively. Example: `1,2`, which specifies that the capacity reservation takes effect on Monday and Tuesday.'."\n" + .'* If you set `RecurrenceType` to `Monthly`, you can specify two values in the `A-B` format. Valid values of A and B: 1 to 31. B must be greater than or equal to A. Example: `1-5`, which specifies that the capacity reservation takes effect every day from the first day up to the fifth day of each month.'."\n" + ."\n" + .'> If you specify this parameter, you must specify `RecurrenceType` and `RecurrenceValue`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'SchedulerOptions.DeploymentSetStrategy', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PriceInfo' => [ + 'description' => 'The information about the prices and promotion rules.'."\n", + 'type' => 'object', + 'properties' => [ + 'Rules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Rule' => [ + 'description' => 'The information about the promotion rules.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'description' => 'The description of the promotion rule.'."\n", + 'type' => 'string', + 'example' => 'Receive a 15% discount on a 1-year subscription'."\n", + ], + 'RuleId' => [ + 'description' => 'The ID of the pricing rule.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '587', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'Price' => [ + 'description' => 'The price.'."\n", + 'type' => 'object', + 'properties' => [ + 'OriginalPrice' => [ + 'description' => 'The original price.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '4368', + ], + 'ReservedInstanceHourPrice' => [ + 'description' => 'The hourly price of the reserved instance for which the No Upfront or Partial Upfront payment option is used.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '1', + ], + 'DiscountPrice' => [ + 'description' => 'The discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '655.2', + ], + 'Currency' => [ + 'description' => 'The currency unit.'."\n" + ."\n" + .'Alibaba Cloud China site (aliyun.com): CNY.'."\n" + ."\n" + .'Alibaba Cloud International site (alibabacloud.com): USD.'."\n", + 'type' => 'string', + 'example' => 'CNY', + ], + 'TradePrice' => [ + 'description' => 'The transaction price of the order. The transaction price is equal to the original price minus the discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '3712.8', + ], + 'DetailInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DetailInfo' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'OriginalPrice' => [ + 'type' => 'number', + 'format' => 'float', + ], + 'DiscountPrice' => [ + 'type' => 'number', + 'format' => 'float', + ], + 'Resource' => [ + 'type' => 'string', + ], + 'SubRules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Rule' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'type' => 'string', + ], + 'RuleId' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + ], + ], + ], + ], + ], + 'TradePrice' => [ + 'type' => 'number', + 'format' => 'float', + ], + ], + ], + ], + ], + ], + ], + ], + 'RelatedPrice' => [ + 'description' => 'The related price.'."\n", + 'type' => 'object', + 'properties' => [ + 'MarketplaceImagePrice' => [ + 'description' => 'The Alibaba Cloud Marketplace image price.'."\n", + 'type' => 'object', + 'properties' => [ + 'Currency' => [ + 'description' => 'The currency unit.'."\n" + ."\n" + .'China site (aliyun.com): CNY'."\n" + ."\n" + .'International site (alibabacloud.com): USD'."\n", + 'type' => 'string', + 'example' => 'CNY', + ], + 'OriginalPrice' => [ + 'description' => 'The original price.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '100', + ], + 'DiscountPrice' => [ + 'description' => 'The discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '0', + ], + 'TradePrice' => [ + 'description' => 'The transaction price, which is equal to the original price minus the discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '100', + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.RecurrenceRules', + 'errorMessage' => 'The specified parameter RecurrenceRules is invalid.', + ], + [ + 'errorCode' => 'InvalidRecurrenceRules.CountLimitExceeded', + 'errorMessage' => 'The count of RecurrenceRules exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidRecurrenceRulesStartHourEndHour.TooShort', + 'errorMessage' => 'The recurrence hour between RecurrenceRules.StartHour and RecurrenceRules.EndHour is too short.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesStartHourEndHour', + 'errorMessage' => 'The specified parameter RecurrenceRules.StartHour or RecurrenceRules.EndHour is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueMonthly', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Monthly is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueWeekly', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Weekly is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueDaily', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Daily is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceType', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceType is invalid.', + ], + [ + 'errorCode' => 'InvalidStartTime.NotSupported', + 'errorMessage' => 'The StartTime of TimeDivisionElasticityAssurance cannot between any of active time ranges.', + ], + [ + 'errorCode' => 'InvalidSpotAuthorized', + 'errorMessage' => 'The specified Spot param is unauthorized.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The specified ZoneId is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => 'The specified InternetChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidInternetMaxBandwidthOut.ValueNotSupported', + 'errorMessage' => 'The specified parameter "InternetMaxBandwidthOut" is not valid.', + ], + [ + 'errorCode' => 'AccountForbidden.ProductCreationLimited', + 'errorMessage' => 'The commodity must be officially operated by Aliyun and in pay-as-you-go billing method.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "SystemDisk.Category" is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DataDisk.n.Category" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The specified image does not support the specified instance type.', + ], + [ + 'errorCode' => 'InvalidNetworkType.Mismatch', + 'errorMessage' => 'Specified parameter "InternetChargeType" conflict with instance network type.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.Mismatch', + 'errorMessage' => 'The specified disk categories\' combination is not supported.', + ], + [ + 'errorCode' => 'InvalidIoOptimizedValue.ValueNotSupported', + 'errorMessage' => 'IoOptimized value not supported.', + ], + [ + 'errorCode' => 'InvalidPeriod', + 'errorMessage' => 'The specified period is not valid.', + ], + [ + 'errorCode' => 'InstanceDiskCategoryLimitExceed', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.', + ], + [ + 'errorCode' => 'InstanceDiskNumber.LimitExceed', + 'errorMessage' => 'The total number of specified disk in an instance exceeds.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanImageSize', + 'errorMessage' => 'The specified parameter "SystemDisk.Size" is less than the image size.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling.', + ], + [ + 'errorCode' => 'Throttling.User', + 'errorMessage' => 'Request was denied due to user flow control.', + ], + [ + 'errorCode' => 'PriceNotFound', + 'errorMessage' => 'The price of your queried resource is not available now, please try other resources.', + ], + [ + 'errorCode' => 'InvalidResourceType.ValueNotSupported', + 'errorMessage' => 'The specified parameter ResourceType is not valid.', + ], + [ + 'errorCode' => 'InvalidPriceUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PriceUnit is not valid.', + ], + [ + 'errorCode' => 'IncorrectImageStatus', + 'errorMessage' => 'The specified image is an Alibaba Cloud Marketplace image. The sale of this image has ended. For more information, contact the image service provider.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The current operation is not supported due to unfinished Temporary Upgrade.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.Malformed', + 'errorMessage' => 'The specified parameter DataDisk.n.PerformanceLevel is not valid.', + ], + [ + 'errorCode' => 'InvalidCapacity.ValueNotSupported', + 'errorMessage' => 'The specified parameter Capacity is not valid.', + ], + [ + 'errorCode' => 'InvalidActivity.NotSupported', + 'errorMessage' => 'The specified discount activity is not supported.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchEncryptAlgorithm', + 'errorMessage' => 'The specified parameter Encrypted must be true when EncryptAlgorithm is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchKmsKeyId', + 'errorMessage' => 'The specified parameter Encrypted must be true when KmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter Encrypted is different from the Encrypted of the snapshot.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is different from the encrypt algorithm of the snapshot.', + ], + [ + 'errorCode' => 'InvalidKmsKeyId.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter KmsKeyId is different from the KmsKeyId of the snapshot.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is not valid.', + ], + [ + 'errorCode' => 'InvalidAssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.Platform', + 'errorMessage' => 'The specified parameter Platform is invalid.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceRenewWithDowngradeInPlan', + 'errorMessage' => 'The operation is denied due to the specified instance has renew with downgrade record in plan.', + ], + [ + 'errorCode' => 'OperationDenied.TestAccountRetricted', + 'errorMessage' => 'Test-account for testing has been prohibited from creating instance in this region. Please contact 400181.', + ], + [ + 'errorCode' => 'UnsupportedIspNetworkChargeType', + 'errorMessage' => 'The network charge type is not supported when specifying ISP.', + ], + [ + 'errorCode' => 'EncryptedOption.Conflict', + 'errorMessage' => 'Disk encryption attributes conflict.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified parameter SystemDisk.Size is invalid', + ], + [ + 'errorCode' => 'UnsupportedIspChargeType', + 'errorMessage' => 'The specified Isp does not support the charge type.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified instanceType is not supported by the image architecture.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DiskCategory" is not valid.', + ], + [ + 'errorCode' => 'InvalidMarketImage.NotAuthorized', + 'errorMessage' => 'The specified marketplace image is not authorized for your channel, please use other image.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ImageNotSubscribed', + 'errorMessage' => 'The specified image has not be subscribed.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified Image is disabled or is deleted.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueUnauthorized', + 'errorMessage' => 'The disk category is not authorized.', + ], + [ + 'errorCode' => 'InstanceDiskCategoryLimitExceed', + 'errorMessage' => 'The total size of specified disk category in an instance exceeds.', + ], + [ + 'errorCode' => 'ImageRemovedInMarket', + 'errorMessage' => 'The specified market image is not available, Or the specified user defined image includes product code because it is based on an image subscribed from marketplace, and that image in marketplace includeing exact the same product code has been removed.', + ], + [ + 'errorCode' => 'QuotaExceed.PortableCloudDisk', + 'errorMessage' => 'The quota of portable cloud disk exceeds.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InstanceDiskNumLimitExceed', + 'errorMessage' => 'The number of specified disk in an instance exceeds.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified image is not support IoOptimized Instance.', + ], + [ + 'errorCode' => 'ImageNotSupportInstanceType', + 'errorMessage' => 'The specified image don\'t support the InstanceType instance.', + ], + [ + 'errorCode' => 'InvalidDiskSize.TooSmall', + 'errorMessage' => 'Specified disk size is less than the size of snapshot.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.Mismatch', + 'errorMessage' => 'The specified disk categories combination is not supported.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not support the specified instance type.', + ], + [ + 'errorCode' => 'QuotaExceed.BuyImage', + 'errorMessage' => 'The specified image is from the image market, you have not bought it or your quota has been exceeded.', + ], + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerAccount', + 'errorMessage' => 'ResourceOwnerAccount is Invalid.', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => 'There is no authority to create instance in the specified region.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidAmount.Malformed', + 'errorMessage' => 'The specified parameter Amount is not valid.', + ], + [ + 'errorCode' => 'InvalidChargeType.MarketImage', + 'errorMessage' => 'The specified chargeType of marketplace image is invalid.', + ], + [ + 'errorCode' => 'InvalidDiskIds.NotFound', + 'errorMessage' => 'Some of the specified disks do not exist.', + ], + [ + 'errorCode' => 'PrePaidInstance.Expired', + 'errorMessage' => 'The prePaid instance has expired.', + ], + [ + 'errorCode' => 'OperationDenied.PerformanceLevelNotMatch', + 'errorMessage' => 'The specified DataDisk.n.PerformanceLevel and DataDisk.n.Size do not match.', + ], + [ + 'errorCode' => 'InvalidAction.Unauthorized', + 'errorMessage' => 'The specified action is not valid.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportEncryptAlgorithm', + 'errorMessage' => 'The current region does not support creating encrypted disks with EncryptAlgorithm.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportDiskCategory', + 'errorMessage' => 'The instanceType of the specified instance does not support this disk category.', + ], + [ + 'errorCode' => 'InvalidOperation.PublicIpAddressNoStock', + 'errorMessage' => 'The public IP address for the specified Region or ChargeType of the instance is out of stock. Please try another Region or ChargeType.', + ], + [ + 'errorCode' => 'UnsupportedIspRegion', + 'errorMessage' => 'The specified region does not support Isp.', + ], + [ + 'errorCode' => 'InvalidIspBandwidthOut', + 'errorMessage' => 'The specified parameter InternetMaxBandwidthOut should be larger than 0 when specifying parameter Isp.', + ], + [ + 'errorCode' => 'InstanceType.Offline', + 'errorMessage' => 'The specified InstanceType has been offline', + ], + [ + 'errorCode' => 'InvalidIspUID', + 'errorMessage' => 'The current account does not have permission to specify the Isp parameter.', + ], + [ + 'errorCode' => 'UnsupportedIspClassicNetwork', + 'errorMessage' => 'The Isp parameter is not supported in the classic network.', + ], + [ + 'errorCode' => 'InvalidIspType.ValueNotSupported', + 'errorMessage' => 'The specified parameter Isp is invalid.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter SystemDisk.Category is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified Category of Data Disk is not valid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified Image is disabled or is deleted.', + ], + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified instancetype is not support IoOptimized instance.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The InstanceChargeType does not exist in our records.', + ], + [ + 'errorCode' => 'DependencyViolation.IoOptimized', + 'errorMessage' => 'The specified instancetype must be IoOptimized instance.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanImageSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the image size.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanMinSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the minimum size.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.MoreThanMaxSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is more than the maximum size.', + ], + [ + 'errorCode' => 'InvalidInternetMaxBandwidthOut.ValueNotSupported', + 'errorMessage' => 'The specified vm bandwidth is not valid.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified parameter SystemDisk.Size is invalid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.Missing', + 'errorMessage' => 'The InstanceType parameter that is mandatory for processing the request is not provided.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidNetworkType.ValueNotSupported', + 'errorMessage' => 'The specified parameter NetworkType is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.Missing', + 'errorMessage' => 'The DataDisk.1.Category parameter that is mandatory for processing the request is not provided.', + ], + [ + 'errorCode' => 'Invalid.InstanceId.NotFound', + 'errorMessage' => 'The Instance provided does not exist.', + ], + [ + 'errorCode' => 'InvalidMarketImage.NotFound', + 'errorMessage' => 'The specified marketplace image does not exist, please change the imageId and try again.', + ], + [ + 'errorCode' => 'InvalidDiskIds.NotPortable', + 'errorMessage' => 'The specified DiskId is not portable.', + ], + [ + 'errorCode' => 'InvalidSystemDisk.NotFound', + 'errorMessage' => 'The specified system disk does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostType.Missing', + 'errorMessage' => 'The dedicatedHostType parameter that is mandatory for processing the request is not provided.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified SchedulerOptions.DedicatedHostId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PriceInfo\\": {\\n \\"Rules\\": {\\n \\"Rule\\": [\\n {\\n \\"Description\\": \\"买满1年,立享官网价格8.5折优惠。\\",\\n \\"RuleId\\": 587\\n }\\n ]\\n },\\n \\"Price\\": {\\n \\"OriginalPrice\\": 4368,\\n \\"ReservedInstanceHourPrice\\": 1,\\n \\"DiscountPrice\\": 655.2,\\n \\"Currency\\": \\"CNY\\",\\n \\"TradePrice\\": 3712.8,\\n \\"DetailInfos\\": {\\n \\"DetailInfo\\": [\\n {\\n \\"OriginalPrice\\": 4368,\\n \\"DiscountPrice\\": 655.2,\\n \\"Resource\\": \\"instanceType\\",\\n \\"SubRules\\": {\\n \\"Rule\\": [\\n {\\n \\"Description\\": \\"买满1年,立享官网价格8.5折优惠\\",\\n \\"RuleId\\": 587\\n }\\n ]\\n },\\n \\"TradePrice\\": 3712.8\\n }\\n ]\\n }\\n },\\n \\"RelatedPrice\\": {\\n \\"MarketplaceImagePrice\\": {\\n \\"Currency\\": \\"CNY\\",\\n \\"OriginalPrice\\": 100,\\n \\"DiscountPrice\\": 0,\\n \\"TradePrice\\": 100\\n }\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 04F0F334-1335-436C-A1D7-6C044FE73368\\n \\n \\n CNY\\n 655.2\\n 0\\n 4368\\n 3712.8\\n \\n \\n \\n 买满1年,立享官网价格8.5折优惠。\\n ONE_YEAR_85_PERCENT\\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribePrice', + 'description' => 'The required parameters vary based on the type of resource whose prices you want to query.'."\n" + ."\n" + .'* When `ResourceType` is set to instance, you must specify `InstanceType`. By default, `ChargeType` is set to `PostPaid`. You can specify `PriceUnit` to query the ECS resource prices in different billing cycles.'."\n" + .'* When `ResourceType` is set to disk, you must specify `DataDisk.1.Category` and `DataDisk.1.Size` in the same request. When `ResourceType` is set to disk, only pay-as-you-go prices of cloud disks are returned. In this scenario, `PriceUnit` can be set only to `Hour`.'."\n" + .'* When `ResourceType` is set to diskperformance, you must specify `DataDisk.1.Category` and `DataDisk.1.ProvisionedIops`.'."\n" + .'* When `ResourceType` is set to ddh, you must specify `DedicatedHostType`.'."\n" + .'* When `ResourceType` is set to ElasticityAssurance, you must specify `InstanceType`.'."\n" + .'* When `ResourceType` is set to CapacityReservation, you must specify `InstanceType`.'."\n" + .'* When `ResourceType` is set to bandwidth, only the pay-by-traffic (`PayByTraffic`) prices for network usage are returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeRenewalPrice' => [ + 'summary' => 'Queries the renewal prices of Elastic Compute Service (ECS) resources. Renewal prices of only subscription resources can be queried.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28985', + 'abilityTreeNodes' => [ + 'FEATUREecsSX5FCF', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the resource. Set the value to instance.'."\n" + ."\n" + .'Default value: instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'instance', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource. If the `ResourceType` parameter is set to` instance `, the value of the `ResourceId` parameter is the ID of the specified instance.``'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp1f2o4ldh8l29zv****', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The renewal period. Valid values:'."\n" + ."\n" + .'* Valid values when the `PriceUnit` parameter is set to `Month`: 1, 2, 3, 4, 5, 6, 7, 8, and 9.'."\n" + .'* Valid values when the `PriceUnit` parameter is set to `Year`: 1, 2, 3.'."\n" + ."\n" + .'Default value: 1.'."\n" + ."\n" + .'> The renewal period-related parameter pair (`Period` and `PeriodUnit`) and the `ExpectedRenewDay` parameter are mutually exclusive.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PriceUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the renewal period. Valid values:'."\n" + ."\n" + .'* Month'."\n" + .'* Year'."\n" + ."\n" + .'Default value: Month.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'ExpectedRenewDay', + 'in' => 'query', + 'schema' => [ + 'description' => 'The synchronized expiration date. If you specify this parameter, the price for renewing a specified instance to the specified synchronized expiration date is queried. Valid values: 1 to 28.'."\n" + ."\n" + .'For information about how to synchronize the expiration dates of instances, see [Synchronize the expiration dates of instances](~~108486~~).'."\n" + ."\n" + .'> The renewal period-related parameter pair (`Period` and `PeriodUnit`) and the `ExpectedRenewDay` parameter are mutually exclusive.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'PriceInfo' => [ + 'description' => 'Details about the prices and promotion rules.'."\n", + 'type' => 'object', + 'properties' => [ + 'Rules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Rule' => [ + 'description' => 'The information about the promotion rules.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'description' => 'The description of the promotion rule.'."\n", + 'type' => 'string', + 'example' => 'Receive a 15% discount on a 1-year subscription'."\n", + ], + 'RuleId' => [ + 'description' => 'The ID of the promotion rule.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1234567890', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'Price' => [ + 'description' => 'The price.'."\n", + 'type' => 'object', + 'properties' => [ + 'OriginalPrice' => [ + 'description' => 'The original price.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '4368', + ], + 'DiscountPrice' => [ + 'description' => 'The discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '655.2', + ], + 'Currency' => [ + 'description' => 'The currency unit.'."\n" + ."\n" + .'Alibaba Cloud China site (aliyun.com): CNY.'."\n" + ."\n" + .'Alibaba Cloud International site (alibabacloud.com): USD.'."\n", + 'type' => 'string', + 'example' => 'CNY', + ], + 'TradePrice' => [ + 'description' => 'The transaction price, which is equal to the original price minus the discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '3712.8', + ], + 'DetailInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DetailInfo' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Resource' => [ + 'type' => 'string', + ], + 'OriginalPrice' => [ + 'type' => 'number', + 'format' => 'float', + ], + 'DiscountPrice' => [ + 'type' => 'number', + 'format' => 'float', + ], + 'TradePrice' => [ + 'type' => 'number', + 'format' => 'float', + ], + 'SubRules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Rule' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'type' => 'string', + ], + 'RuleId' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidResourceType.ValueNotSupported', + 'errorMessage' => 'The specified parameter ResourceType is not valid.', + ], + [ + 'errorCode' => 'InvalidPeriod', + 'errorMessage' => 'The specified period is not valid.', + ], + [ + 'errorCode' => 'InvalidPriceUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PriceUnit is not valid.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling.', + ], + [ + 'errorCode' => 'Throttling.User', + 'errorMessage' => 'Request was denied due to user flow control.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededMaximumExpirationDate', + 'errorMessage' => 'The specified renewal period cannot exceed the maximum expiration date. We recommend you try shortening the renewal period at next attempt.', + ], + [ + 'errorCode' => 'InvalidExpectedRenewDay.Conflict', + 'errorMessage' => 'The specified expectedRenewDay is in conflict with period.', + ], + [ + 'errorCode' => 'InvalidExpectedRenewDay.ValueNotSupported', + 'errorMessage' => 'The specified parameter ExpectedRenewDay is not valid.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededDedicatedHost', + 'errorMessage' => 'Instance expired date can not exceed dedicated host expired date.', + ], + [ + 'errorCode' => 'OperationRestricted.Renewal', + 'errorMessage' => 'The renewal operation has been restricted because the zone is closed. %s', + ], + ], + 403 => [ + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + [ + 'errorCode' => 'InvalidAction.Unauthorized', + 'errorMessage' => 'The specified action is not valid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"PriceInfo\\": {\\n \\"Rules\\": {\\n \\"Rule\\": [\\n {\\n \\"Description\\": \\"买满1年,立享官网价格8.5折优惠。\\",\\n \\"RuleId\\": 1234567890\\n }\\n ]\\n },\\n \\"Price\\": {\\n \\"OriginalPrice\\": 4368,\\n \\"DiscountPrice\\": 655.2,\\n \\"Currency\\": \\"CNY\\",\\n \\"TradePrice\\": 3712.8,\\n \\"DetailInfos\\": {\\n \\"DetailInfo\\": [\\n {\\n \\"Resource\\": \\"instance\\",\\n \\"OriginalPrice\\": 4368,\\n \\"DiscountPrice\\": 655.2,\\n \\"TradePrice\\": 3712.8,\\n \\"SubRules\\": {\\n \\"Rule\\": [\\n {\\n \\"Description\\": \\"买满1年,立享官网价格8.5折优惠。\\",\\n \\"RuleId\\": 1234567890\\n }\\n ]\\n }\\n }\\n ]\\n }\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n \\n \\n \\n 买满1年,立享官网价格8.5折优惠。\\n 1234567890\\n \\n \\n \\n \\n 4368\\n 655.2\\n CNY\\n 3712.8\\n \\n \\n instance\\n 4368\\n 655.2\\n 3712.8\\n \\n \\n 买满1年,立享官网价格8.5折优惠。\\n 1234567890\\n \\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeRenewalPrice', + 'description' => '* You can call this operation to query the price for renewing a subscription instance for a specific period of time or to a synchronized expiration date.'."\n" + ."\n" + .'* Take note of the following items:'."\n" + ."\n" + .' * If you specify only the required parameters, the price for renewing an instance for one month is queried by default.'."\n" + .' * The renewal period-related parameter pair (`Period` and `PeriodUnit`) and the synchronized expiration date-related parameter (`ExpectedRenewDay`) are mutually exclusive. You cannot set these parameters together to query the prices for renewing a specified instance for a period of time and to a synchronized expiration date at the same time.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstanceModificationPrice' => [ + 'summary' => 'Queries the pricing information about newly attached subscription data disks or about the new instance types when you upgrade the configurations of unexpired subscription Elastic Compute Service (ECS) instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28950', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance for which you want to query pricing information for a configuration upgrade.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp1f2o4ldh8l****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new instance type. We recommend that you call the [DescribeResourcesModification](~~66187~~) operation to query the instance types available for configuration upgrades in a specified zone.'."\n" + ."\n" + .'> When you call the DescribeInstanceModificationPrice operation, you must specify at least one of the following parameters: `InstanceType` and `DataDisk.N.*`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g6e.large', + ], + ], + [ + 'name' => 'SystemDisk.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the system disk. You must specify this parameter only when you upgrade a non-I/O optimized instance of a retired instance type to an I/O optimized instance of an available instance type. For more information about instance types, see [Instance families](~~25378~~) and [Retired instance types](~~55263~~).'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'DataDisk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about data disks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the data disk.'."\n", + 'type' => 'object', + 'properties' => [ + 'PerformanceLevel' => [ + 'description' => 'The performance level of data disk N that is an enhanced SSD (ESSD). The value of N must be the same as that in `DataDisk.N.Category` when DataDisk.N.Category is set to cloud_essd. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'Default value: PL1.'."\n" + ."\n" + .'For more information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + 'Size' => [ + 'description' => 'The capacity of data disk N. Valid values of N: 1 to 16. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_efficiency: 20 to 32768.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_ssd: 20 to 32768.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_essd: vary based on the `DataDisk.N.PerformanceLevel` value.'."\n" + ."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL0: 1 to 32768.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL1: 20 to 32768.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL2: 461 to 32768.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL3: 1261 to 32768.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud: 5 to 2000.'."\n" + ."\n" + .'The default value is the minimum capacity allowed for the specified data disk category.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '100', + ], + 'Category' => [ + 'description' => 'The category of data disk N. You can specify this parameter if you want to query the pricing information about newly attached subscription data disks. Valid values of N: 1 to 16. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: utra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_essd: ESSD.'."\n" + .'* cloud: basic disk.'."\n" + ."\n" + .'This parameter is empty by default.'."\n" + ."\n" + .'> When you call the DescribeInstanceModificationPrice operation, you must specify at least one of the following parameters: `InstanceType` and `DataDisk.N.*`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_essd', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A3DC3196-379B-4F32-A2C5-B937134FAD8A', + ], + 'PriceInfo' => [ + 'description' => 'Details about the prices and promotion rules.'."\n", + 'type' => 'object', + 'properties' => [ + 'Rules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Rule' => [ + 'description' => 'The information about the promotion rules.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'description' => 'The description of the promotion rule.'."\n", + 'type' => 'string', + 'example' => 'Upgrade offers'."\n", + ], + 'RuleId' => [ + 'description' => 'The ID of the promotion rule.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1234567890', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'Price' => [ + 'description' => 'The price.'."\n", + 'type' => 'object', + 'properties' => [ + 'OriginalPrice' => [ + 'description' => 'The original price.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '175.200', + ], + 'DiscountPrice' => [ + 'description' => 'The discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '61.320', + ], + 'Currency' => [ + 'description' => 'The currency unit. Valid values:'."\n" + ."\n" + .'* Alibaba Cloud China site (aliyun.com): CNY'."\n" + .'* Alibaba Cloud International site (alibabacloud.com): USD'."\n", + 'type' => 'string', + 'example' => 'CNY', + ], + 'TradePrice' => [ + 'description' => 'The transaction price, which is equal to the original price minus the discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '113.880', + ], + 'DetailInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DetailInfo' => [ + 'description' => 'The information about the price.'."\n" + ."\n" + .'> This parameter is returned only when ResourceType is set to instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the price.'."\n", + 'type' => 'object', + 'properties' => [ + 'Resource' => [ + 'description' => 'The resource name. Valid values:'."\n" + ."\n" + .'* InstanceType'."\n" + .'* bandwidth'."\n" + .'* image'."\n" + .'* SystemDisk'."\n" + .'* DataDisk'."\n", + 'type' => 'string', + 'example' => 'instanceType', + ], + 'OriginalPrice' => [ + 'description' => 'The original price.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '4368', + ], + 'DiscountPrice' => [ + 'description' => 'The discount.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '655.2', + ], + 'TradePrice' => [ + 'description' => 'The transaction price.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '3712.8', + ], + 'SubRules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Rule' => [ + 'description' => 'The pricing rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The pricing rule.'."\n", + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'description' => 'The description of the pricing rule.'."\n", + 'type' => 'string', + 'example' => 'If you subscribe to an instance for one year, you can receive a 15% discount off the list price.', + ], + 'RuleId' => [ + 'description' => 'The ID of the pricing rule.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '315716429631488', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.InstanceTypeOrDataDisk', + 'errorMessage' => 'You must specify the parameter InstanceType or DataDisk.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "SystemDisk.Category" is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.Missing', + 'errorMessage' => 'The DataDisk.1.Category parameter that is mandatory for processing the request is not provided.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DataDisk.n.Category" is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DiskCategory" is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.Malformed', + 'errorMessage' => 'The specified parameter DataDisk.n.PerformanceLevel is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskSize.TooSmall', + 'errorMessage' => 'Specified disk size is too small when choose PL0 of cloud_essd.', + ], + [ + 'errorCode' => 'OperationDenied.PerformanceLevelNotMatch', + 'errorMessage' => 'The specified DataDisk.n.PerformanceLevel and DataDisk.n.Size do not match.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidAction.WithActiveElasticUpgrade', + 'errorMessage' => 'The instance has active Elastic Upgrade.', + ], + [ + 'errorCode' => 'PriceNotFound', + 'errorMessage' => 'The price of your queried resource is not available now, please try other resources.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerAccount', + 'errorMessage' => 'ResourceOwnerAccount is Invalid.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'PostPaid instance do not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportUpgrade', + 'errorMessage' => 'The specified InstanceType can only be downgraded. This API supports querying prices only of InstanceType that can be upgraded.', + ], + [ + 'errorCode' => 'InstanceExpired', + 'errorMessage' => 'The PrePaid instance has been expired.', + ], + [ + 'errorCode' => 'Throttling.User', + 'errorMessage' => 'Request was denied due to user flow control.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling.', + ], + [ + 'errorCode' => 'InstanceType.Offline', + 'errorMessage' => 'The specified InstanceType has been offline', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => 'There is no authority to create instance in the specified region.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A3DC3196-379B-4F32-A2C5-B937134FAD8A\\",\\n \\"PriceInfo\\": {\\n \\"Rules\\": {\\n \\"Rule\\": [\\n {\\n \\"Description\\": \\"升级优惠\\",\\n \\"RuleId\\": 1234567890\\n }\\n ]\\n },\\n \\"Price\\": {\\n \\"OriginalPrice\\": 175.2,\\n \\"DiscountPrice\\": 61.32,\\n \\"Currency\\": \\"CNY\\",\\n \\"TradePrice\\": 113.88,\\n \\"DetailInfos\\": {\\n \\"DetailInfo\\": [\\n {\\n \\"Resource\\": \\"instanceType\\",\\n \\"OriginalPrice\\": 4368,\\n \\"DiscountPrice\\": 655.2,\\n \\"TradePrice\\": 3712.8,\\n \\"SubRules\\": {\\n \\"Rule\\": [\\n {\\n \\"Description\\": \\"买满1年,立享官网价格8.5折优惠\\",\\n \\"RuleId\\": 315716429631488\\n }\\n ]\\n }\\n }\\n ]\\n }\\n }\\n }\\n}","type":"json"}]', + 'title' => 'DescribeInstanceModificationPrice', + 'description' => '* Pricing information can be queried for unexpired subscription ECS instances only when you upgrade their configurations. The pricing information cannot be queried when the instance configurations are downgraded.'."\n" + .'* Pricing information cannot be queried for pay-as-you-go ECS instances when you change their configurations. Prices of existing pay-as-you-go ECS instances whose configurations are changed are the same as those of new pay-as-you-go instances. You can call the [DescribePrice](~~107829~~) operation to query the latest prices of ECS instances.'."\n" + .'* Before you upgrade the configurations of an instance, we recommend that you call the [DescribeResourcesModification](~~66187~~) operation to query the instance types available for configuration upgrades in a specified zone.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RunInstances' => [ + 'summary' => 'Batch creates Elastic Compute Service (ECS) instances. You can automatically start, assign public IP addresses to, and specify an automatic release time for the instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29315', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + 'FEATUREecsL143PE', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image. You can call the [DescribeImages](~~25534~~) operation to query available images. If you do not use `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template and do not set `ImageFamily` to obtain the latest available custom image from a specified image family, you must specify `ImageId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aliyun_2_1903_x64_20G_alibase_20200324.vhd', + ], + ], + [ + 'name' => 'ImageFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image family. You can set this parameter to obtain the latest available custom image from the specified image family to create instances.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length. The name cannot start with a digit, a special character, http://, or https://. The name can contain letters, digits, periods (.), underscores (\\_), hyphens (-), and colons (:).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If you specify `ImageId`, you cannot specify ImageFamily.'."\n" + .'* If you do not specify `ImageId` but use `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template that has `ImageId` specified, you cannot specify ImageFamily.'."\n" + .'* If you do not specify `ImageId` but use `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template that does not have `ImageId` specified, you can specify ImageFamily.'."\n" + .'* If you do not specify `ImageId`, `LaunchTemplateId`, or `LaunchTemplateName`, you can specify ImageFamily.'."\n" + ."\n" + .'> For information about image families that are associated with Alibaba Cloud official images, see [Overview of public images](~~108393~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hangzhou-daily-update', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type. If you do not use `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template, you must set the `InstanceType` parameter.'."\n" + ."\n" + .'* Select an instance type. See [Instance families](~~25378~~) or call the [DescribeInstanceTypes](~~25620~~) operation to query the performance data of an instance type, or see [Best practices for instance type selection](~~58291~~) to learn about how to select instance types.'."\n" + .'* Query available resources. Call the [DescribeAvailableResource](~~66186~~) operation to query available resources in a specific region or zone.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g6.large', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group to which you want to assign the instance. Instances in the same security group can communicate with each other. The maximum number of instances allowed in a security group varies based on the type of the security group. For more information, see the "Security group limits" section in [Limits and quotas](~~25412#SecurityGroupQuota~~).'."\n" + ."\n" + .'> The network type of the new instance is the same as the network type of the security group specified by `SecurityGroupId`. For example, if the specified security group is of the VPC type, the new instance is also of the VPC type and you must specify `VSwitchId`.'."\n" + ."\n" + .'If you do not use `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template, you must specify a security group ID. When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* You can set `SecurityGroupId` to specify a single security group or set `SecurityGroupIds.N` to specify one or more security groups. However, you cannot specify both `SecurityGroupId` and `SecurityGroupIds.N` in the same request.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot specify `SecurityGroupId` or `SecurityGroupIds.N` but can specify `NetworkInterface.N.SecurityGroupId` or `NetworkInterface.N.SecurityGroupIds.N`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which to connect to the instance. You must set this parameter when you create an instance of the VPC type. The specified vSwitch and security group must belong to the same VPC. You can call the [DescribeVSwitches](~~35748~~) operation to query available vSwitches.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If you specify the `VSwitchId` parameter, the zone specified by the `ZoneId` parameter must be the zone where the specified vSwitch is located. You can also leave the `ZoneId` parameter empty. Then, the system selects the zone where the specified vSwitch resides.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot specify `VSwitchId` but can specify `NetworkInterface.N.VSwitchId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1s5fnvk4gn2tws0****', + ], + ], + [ + 'name' => 'InstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the ECS instance. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-). The default value of this parameter is the `InstanceId` value.'."\n" + ."\n" + .'When you batch create instances, you can batch configure sequential names for the instances. The sequential names can contain brackets (\\[ ]) and commas (,). For more information, see [Batch configure sequential names or hostnames for multiple instances](~~196048~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'k8s-node-[1,4]-alibabacloud', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the instance. The description must be 2 to 256 characters in length, and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Instance_Description', + ], + ], + [ + 'name' => 'InternetMaxBandwidthIn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum inbound public bandwidth. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* When the purchased outbound public bandwidth is less than or equal to 10 Mbit/s, the valid values of InternetMaxBandwidthIn are 1 to 10, and the default value is 10.'."\n" + .'* When the purchased outbound public bandwidth is greater than 10 Mbit/s, the valid values of this parameter are 1 to the `InternetMaxBandwidthOut` value and the default value is the `InternetMaxBandwidthOut` value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s. Valid values: 0 to 100.'."\n" + ."\n" + .'Default value: 0.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'HostName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The hostname of the instance. Take note of the following items:'."\n" + ."\n" + .'* The hostname cannot start or end with a period (.) or hyphen (-). It cannot contain consecutive periods (.) or hyphens (-).'."\n" + ."\n" + .'* For Windows instances, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. It can contain letters, digits, and hyphens (-).'."\n" + ."\n" + .'* For instances that run other operating systems such as Linux, take note of the following items:'."\n" + ."\n" + .' * The hostname must be 2 to 64 characters in length. You can use periods (.) to separate a hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-).'."\n" + .' * You can use the `${instance_id}` placeholder to pass instance IDs into the hostname specified by `HostName`. For example, if you set `HostName` to k8s-${instance_id} and the instance is assigned an ID of `i-123abc****`, the hostname of the instance is `k8s-i-123abc****`.'."\n" + ."\n" + .'When you create multiple instances, you can perform the following operations:'."\n" + ."\n" + .'* Batch configure sequential hostnames for the instances. For more information, see [Batch configure sequential names or hostnames for multiple instances](~~196048~~).'."\n" + .'* Use the `HostNames.N` parameter to configure different hostnames for instances. You cannot specify both the `HostName` and `HostNames.N` parameters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'k8s-node-[1,4]-ecshost', + ], + ], + [ + 'name' => 'UniqueSuffix', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically append incremental suffixes to the hostname specified by the `HostName` parameter and to the instance name specified by the `InstanceName` parameter when you batch create instances. The incremental suffixes can range from 001 to 999. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'When the `HostName` or `InstanceName` value is set in the `name_prefix[begin_number,bits]` format without `name_suffix`, the `UniqueSuffix` parameter does not take effect. The names are sorted in the specified sequence.'."\n" + ."\n" + .'For more information, see [Batch configure sequential names or hostnames for multiple instances](~~196048~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'Password', + 'in' => 'query', + 'schema' => [ + 'description' => 'The password of the instance. The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. Special characters include:'."\n" + ."\n" + .' ()`~!@#$%^&*-_+=|{}[]:;\'<>,.?/'."\n" + ."\n" + .'For Windows instances, the password cannot start with a forward slash (/).'."\n" + ."\n" + .'> If the `Password` parameter is specified, we recommend that you send requests over HTTPS to prevent password leaks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsV587!', + ], + ], + [ + 'name' => 'PasswordInherit', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use the password preset in the image. Valid values:'."\n" + ."\n" + .'* true: uses the preset password.'."\n" + .'* false: does not use the preset password.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> If you set this parameter to true, make sure that you leave the Password parameter empty and the selected image has a preset password.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the zone in which to create the instance. You can call the [DescribeZones](~~25610~~) operation to query the most recent zone list.'."\n" + ."\n" + .'> If you specify the `VSwitchId` parameter, the zone specified by the `ZoneId` parameter must be the zone where the vSwitch is located. You can also leave the `ZoneId` parameter empty. Then, the system selects the zone where the specified vSwitch is located.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth: pay-by-bandwidth'."\n" + .'* PayByTraffic: pay-by-traffic'."\n" + ."\n" + .'Default value: PayByTraffic.'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method for network usage is used, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios where demand outstrips resource supplies, these maximum bandwidth values may not be reached. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + ], + ], + [ + 'name' => 'SystemDisk.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the system disk. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Basic disk: 20 to 500.'."\n" + ."\n" + .'* ESSD: Valid values vary based on the performance level of the ESSD.'."\n" + ."\n" + .' * PL0 ESSD: 1 to 2048.'."\n" + .' * PL1 ESSD: 20 to 2048.'."\n" + .' * PL2 ESSD: 461 to 2048.'."\n" + .' * PL3 ESSD: 1261 to 2048.'."\n" + ."\n" + .'* ESSD AutoPL disk: 1 to 2048.'."\n" + ."\n" + .'* Other disk categories: 20 to 2048.'."\n" + ."\n" + .'The value of this parameter must be at least 1 and greater than or equal to the image size.'."\n" + ."\n" + .'Default value: 40 or the image size, whichever is greater.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '40', + ], + ], + [ + 'name' => 'SystemDisk.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: utra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: enhanced SSD (ESSD)'."\n" + .'* cloud: basic disk'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* cloud_essd_entry: ESSD Entry disk'."\n" + ."\n" + .'> The value of this parameter can be `cloud_essd_entry` only when `InstanceType` is set to `ecs.u1` or `ecs.e`. ecs.u1 indicates the u1 universal instance family and ecs.e indicates the e economy instance family. For information about the u1 and e instance families, see the [u1, universal instance family](~~457079~~) section in the "Universal instance families" topic and the [e, economy instance family](~~108489~~) section in the "Shared instance families" topic.'."\n" + ."\n" + .'For non-I/O optimized instances of retired instance types, the default value is cloud. For other types of instances, the default value is cloud_efficiency.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'SystemDisk.DiskName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the system disk. The name must be 2 to 128 characters in length and support Unicode characters under the Decimal Number category and the categories whose names contain Letter. The name can contain colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssdSystem', + ], + ], + [ + 'name' => 'SystemDisk.Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the system disk. The description must be 2 to 256 characters in length. The description can contain letters but cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SystemDisk_Description', + ], + ], + [ + 'name' => 'SystemDisk.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the ESSD to use as the system disk. Default value: PL1. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'For more information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL0', + ], + ], + [ + 'name' => 'SystemDisk.AutoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy to apply to the system disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the instance is I/O optimized. For instances of [retired instance types](~~55263~~), the default value is none. For instances of other instance types, the default value is optimized. Valid values:'."\n" + ."\n" + .'* none: The instance is not I/O optimized.'."\n" + .'* optimized: The instance is I/O optimized.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optimized', + ], + ], + [ + 'name' => 'UserData', + 'in' => 'query', + 'schema' => [ + 'description' => 'The user data of the instance. You must specify Base64-encoded data. The instance user data cannot exceed 32 KB in size before Base64 encoding.'."\n" + ."\n" + .'For information about the limits, formats, and running frequencies of instance user data, see [Instance user data](~~49121~~).'."\n" + ."\n" + .'> To ensure security, we recommend that you do not use plaintext to pass in confidential information, such as passwords or private keys, as user data. If you need to pass in confidential information, we recommend that you encrypt and encode the information in Base64 and then decode and decrypt the information in the same manner in the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ZWNobyBoZWxsbyBlY3Mh', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair.'."\n" + ."\n" + .'> For Windows instances, this parameter is ignored. This parameter is empty by default. The `Password` parameter takes effect even if the KeyPairName parameter is specified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeyPair_Name', + ], + ], + [ + 'name' => 'RamRoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the Resource Access Management (RAM) role. You can call the [ListRoles](~~28713~~) operation provided by RAM to query the instance RAM roles that you created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RAM_Name', + ], + ], + [ + 'name' => 'Amount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The desired number of ECS instances that you want to create. Valid values: 1 to 100.'."\n" + ."\n" + .'The number of ECS instances that can be created varies based on the Amount and MinAmount values.'."\n" + ."\n" + .'* If you do not specify MinAmount, the RunInstances operation creates ECS instances based on the Amount value. If the available resources are insufficient to create the desired number of ECS instances, the RunInstances operation returns an error response and no ECS instances are created.'."\n" + ."\n" + .'* If you specify MinAmount, take note of the following items:'."\n" + ."\n" + .' * If the available resources are insufficient to create the minimum number of ECS instances, no ECS instances are created and the RunInstances operation returns an error response.'."\n" + .' * If the available resources are insufficient to create the desired number of ECS instances but are sufficient to create the minimum number of ECS instances, the RunInstances operation uses the available resources to create ECS instances and returns a success response. In this case, the number of ECS instances that can be created is less than the desired number of ECS instances.'."\n" + .' * If the available resources are sufficient to create the desired number of ECS instances, the RunInstances operation uses the available resources to create the desired number of ECS instances and returns a success response.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '1000', + 'minimum' => '1', + 'example' => '3', + 'default' => '1', + ], + ], + [ + 'name' => 'MinAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of ECS instances that you want to create. Valid values: 1 to 100.'."\n" + ."\n" + .'The number of ECS instances that can be created varies based on the Amount and MinAmount values.'."\n" + ."\n" + .'* If you do not specify MinAmount, the RunInstances operation creates ECS instances based on the Amount value. If the available resources are insufficient to create the desired number of ECS instances, the RunInstances operation returns an error response and no ECS instances are created.'."\n" + ."\n" + .'* If you specify MinAmount, take note of the following items:'."\n" + ."\n" + .' * If the available resources are insufficient to create the minimum number of ECS instances, no ECS instances are created and the RunInstances operation returns an error response.'."\n" + .' * If the available resources are insufficient to create the desired number of ECS instances but are sufficient to create the minimum number of ECS instances, the RunInstances operation uses the available resources to create ECS instances and returns a success response. In this case, the number of ECS instances that can be created is less than the desired number of ECS instances.'."\n" + .' * If the available resources are sufficient to create the desired number of ECS instances, the RunInstances operation uses the available resources to create the desired number of ECS instances and returns a success response.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '2', + ], + ], + [ + 'name' => 'AutoReleaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time when to automatically release the pay-as-you-go instance. Specify the time in the [ISO 8601 standard](~~25696~~) in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC.'."\n" + ."\n" + .'* If the value of seconds (`ss`) is not `00`, the start time is automatically rounded to the nearest minute based on the value of minutes (`mm`).'."\n" + .'* The specified time must be at least 30 minutes later than the current time.'."\n" + .'* The specified time can be at most three years later than the current time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2018-01-01T12:05:00Z', + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. This parameter is valid only when the `InstanceChargeType` parameter is set to `PostPaid`. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is created as a pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is created as a spot instance with a user-defined maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is created as a spot instance for which the market price at the time of purchase is automatically used as the bid price.'."\n" + ."\n" + .'Default value: NoSpot.', + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + ], + ], + [ + 'name' => 'SpotDuration', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance can run for one hour. The system compares the biding price with the market prices and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'Default value: 1.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* You can set this parameter only to 0 or 1.'."\n" + ."\n" + .'* The spot instance is billed by second. Specify an appropriate protection period.'."\n" + ."\n" + .'* Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '720', + 'minimum' => '0', + 'example' => '1', + ], + ], + [ + 'name' => 'SpotPriceLimit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum hourly price of the instance. The value is accurate to three decimal places. This parameter is valid only when the `SpotStrategy` parameter is set to `SpotWithPriceLimit`.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'maximum' => '999999', + 'minimum' => '0', + 'example' => '0.97', + ], + ], + [ + 'name' => 'SpotInterruptionBehavior', + 'in' => 'query', + 'schema' => [ + 'description' => 'The interruption mode of the spot instance. Valid values:'."\n" + ."\n" + .'* Terminate: The instance is released.'."\n" + ."\n" + .'* Stop: The instance is stopped in economical mode.'."\n" + ."\n" + .' For information about the economical mode, see [Economical mode](~~63353~~).'."\n" + ."\n" + .'Default value: Terminate.', + 'type' => 'string', + 'required' => false, + 'example' => 'Terminate', + ], + ], + [ + 'name' => 'SecurityEnhancementStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable security hardening. Valid values:'."\n" + ."\n" + .'* Active: enables security hardening. This value is applicable only to public images.'."\n" + .'* Deactive: does not enable security hardening. This value is applicable to all images.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.**** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'HpcClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the high performance computing (HPC) cluster to which the instance belongs.'."\n" + ."\n" + .'This parameter is required when you create instances of a Supper Computing Cluster (SCC) instance type. For information about how to create an HPC cluster, see [CreateHpcCluster](~~109138~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hpc-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the validity of the request without actually making the request. Default value: false. Valid values:'."\n" + ."\n" + .'* true: The validity of the request is checked but the request is not made. Check items include whether required parameters are specified, the request format, service limits, and available ECS resources. If the check fails, the corresponding error code is returned. If the check succeeds, the `DryRunOperation` error code is returned.'."\n" + .'* false: The validity of the request is checked, and the request is made if the check succeeds.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DedicatedHostId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the dedicated host.'."\n" + ."\n" + .'You can call the [DescribeDedicatedHosts](~~134242~~) operation to query the list of dedicated host IDs.'."\n" + ."\n" + .'> Spot instances cannot be created on dedicated hosts. If you specify DedicatedHostId, SpotStrategy and SpotPriceLimit are automatically ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dh-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'LaunchTemplateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the launch template. For more information, call the [DescribeLaunchTemplates](~~73759~~) operation.'."\n" + ."\n" + .'To use a launch template to create an instance, you must use the `LaunchTemplateId` or `LaunchTemplateName` parameter to specify the launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'lt-bp1apo0bbbkuy0rj****', + ], + ], + [ + 'name' => 'LaunchTemplateName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the launch template.'."\n" + ."\n" + .'To use a launch template to create an instance, you must use the `LaunchTemplateId` or `LaunchTemplateName` parameter to specify the launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'LaunchTemplate_Name', + ], + ], + [ + 'name' => 'LaunchTemplateVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The version of the launch template. If you set the `LaunchTemplateId` or `LaunchTemplateName` parameter but do not set the version number of the launch template, the default template version is used.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '3', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription period of the instance. The unit is specified by the `PeriodUnit` parameter. This parameter is valid and required only when `InstanceChargeType` is set to `PrePaid`. If the `DedicatedHostId` parameter is specified, the value of Period must not exceed the subscription period of the specified dedicated host. Valid values:'."\n" + ."\n" + .'* Valid values when PeriodUnit is set to Week: 1, 2, 3, and 4.'."\n" + .'* Valid values when PeriodUnit is set to Month: 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, and 60.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the subscription period. Default value: Month. Valid values:'."\n" + ."\n" + .'* Week'."\n" + .'* Month'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal for the instance. This parameter is valid only when the `InstanceChargeType` parameter is set to `PrePaid`. Valid values:'."\n" + ."\n" + .'* true: enables auto-renewal.'."\n" + .'* false: does not enable auto-renewal.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'AutoRenewPeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal period of the instance. Valid values:'."\n" + ."\n" + .'* Valid values when PeriodUnit is set to Week: 1, 2, and 3.'."\n" + .'* Valid values when PeriodUnit is set to Month: 1, 2, 3, 6, 12, 24, 36, 48, and 60.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription'."\n" + .'* PostPaid: pay-as-you-go'."\n" + ."\n" + .'Default value: PostPaid.'."\n" + ."\n" + .'If you set this parameter to PrePaid, make sure that your account has sufficient balance or credit. Otherwise, an `InvalidPayMethod` error is returned.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + ], + ], + [ + 'name' => 'DeploymentSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the deployment set to which to deploy the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ds-bp1brhwhoqinyjd6****', + ], + ], + [ + 'name' => 'DeploymentSetGroupNo', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the deployment set group to which to deploy the instance. If the deployment set specified by the DeploymentSetId parameter uses the high availability group strategy (AvailabilityGroup), you can use the DeploymentSetGroupNo parameter to specify a deployment set group in the deployment set. Valid values: 1 to 7.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The private IP address to assign to the instance. To assign a private IP address to an instance that resides in a VPC, make sure that the IP address is an idle IP address within the CIDR block of the vSwitch specified by `VSwitchId`.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If `PrivateIpAddress` is specified, take note of the following items:'."\n" + ."\n" + .' * If `Amount` is set to 1, a single instance is created and the specified private IP address is assigned to the instance.'."\n" + .' * If `Amount` is set to a numeric value greater than 1, the specified number of instances are created and consecutive private IP addresses starting from the specified one are assigned to the instances. In this case, you cannot specify parameters that start with `NetworkInterface.N` to attach secondary ENIs to the instances.'."\n" + ."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot specify `PrivateIpAddress` but can specify `NetworkInterface.N.PrimaryIpAddress`.'."\n" + ."\n" + .'> The first IP address and last three IP addresses of each vSwitch CIDR block are reserved. You cannot specify the IP addresses. For example, if a vSwitch CIDR block is 192.168.1.0/24, the IP addresses 192.168.1.0, 192.168.1.253, 192.168.1.254, and 192.168.1.255 are reserved.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.1.**.**', + ], + ], + [ + 'name' => 'CreditSpecification', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard: the standard mode. For more information, see the "Standard mode" section in [Overview of burstable instances](~~59977~~).'."\n" + .'* Unlimited: the unlimited mode. For more information, see the "Unlimited mode" section in [Burstable instances](~~59977~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'Ipv6AddressCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv6 addresses to randomly generate for the primary ENI. Valid values: 1 to 10.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You cannot specify both the `Ipv6Addresses.N` and `Ipv6AddressCount` parameters.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot specify `Ipv6Address.N` or `Ipv6AddressCount` but can specify `NetworkInterface.N.Ipv6Address.N` or `NetworkInterface.N.Ipv6AddressCount`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'NetworkInterfaceQueueNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of queues supported by the primary ENI. Take note of the following items:'."\n" + ."\n" + .'* The value of this parameter cannot exceed the maximum number of queues per ENI allowed for the instance type.'."\n" + .'* The total number of queues for all ENIs on the instance cannot exceed the queue quota for the instance type. To query the maximum number of queues per ENI and the queue quota for an instance type, you can call the [DescribeInstanceTypes](~~25620~~) operation to query the `MaximumQueueNumberPerEni` and `TotalEniQueueQuantity` values.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot specify `NetworkInterfaceQueueNumber` but can specify `NetworkInterface.N.QueueNumber`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '8', + ], + ], + [ + 'name' => 'DeletionProtection', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable release protection for the instance. This parameter determines whether you can use the ECS console or call the [DeleteInstance](~~25507~~) operation to release the instance. Valid values:'."\n" + ."\n" + .'* true: enables release protection for the instance.'."\n" + .'* false: disables release protection for the instance.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This parameter is applicable to only pay-as-you-go instances. It can protect instances against manual releases, but not against automatic releases.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'HibernationOptions.Configured', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is unavailable.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Affinity', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to associate an instance on a dedicated host with the dedicated host. Valid values:'."\n" + ."\n" + .'* default: does not associate the instance with the dedicated host. When you start an instance that was stopped in economical mode, the instance is automatically deployed to another dedicated host in the automatic deployment resource pool if the available resources of the original dedicated host are insufficient.'."\n" + .'* host: associates the instance with the dedicated host. When you start an instance that was stopped in economical mode, the instance remains on the original dedicated host. If the available resources of the original dedicated host are insufficient, the instance cannot be started.'."\n" + ."\n" + .'Default value: default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'default', + ], + ], + [ + 'name' => 'Tenancy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to create the instance on a dedicated host. Valid values:'."\n" + ."\n" + .'* default: creates the instance on a non-dedicated host.'."\n" + .'* host: creates the instance on a dedicated host. If you do not set the `DedicatedHostId` parameter, Alibaba Cloud selects a dedicated host for the instance.'."\n" + ."\n" + .'Default value: default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'default', + ], + ], + [ + 'name' => 'StorageSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the storage set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ss-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'StorageSetPartitionNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of partitions in the storage set. Valid values: integers greater than or equal to 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '2', + ], + ], + [ + 'name' => 'CpuOptions.Core', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of CPU cores.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'CpuOptions.ThreadsPerCore', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of threads per CPU core. The following formula is used to calculate the number of vCPUs of the instance: `CpuOptions.Core` value × `CpuOptions.ThreadsPerCore` value.'."\n" + ."\n" + .'* If `CpuOptionsThreadPerCore` is set to 1, Hyper-Threading (HT) is disabled.'."\n" + .'* This parameter is applicable only to specific instance types.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'CpuOptions.Numa', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is no longer used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'CpuOptions.TopologyType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CPU topology type of the instance. Valid values:'."\n" + ."\n" + .'* ContinuousCoreToHTMapping: The HT technology allows continuous threads to run on the same core in the CPU topology of the instance.``'."\n" + .'* DiscreteCoreToHTMapping: The HT technology allows discrete threads to run on the same core in the CPU topology of the instance.``'."\n" + ."\n" + .'This parameter is empty by default.'."\n" + ."\n" + .'> This parameter is supported only for specific instance families. For more information about the supported instance families, see [View and modify the CPU topology](~~2636059~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'DiscreteCoreToHTMapping', + ], + ], + [ + 'name' => 'SecurityOptions.TrustedSystemMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The trusted system mode. Set the value to vTPM.'."\n" + ."\n" + .'The trusted system mode supports the following instance families:'."\n" + ."\n" + .'* g7, c7, and r7'."\n" + .'* Security-enhanced instance families: g7t, c7t, and r7t'."\n" + ."\n" + .'When you create instances of the preceding instance families, you must set this parameter. Take note of the following items:'."\n" + ."\n" + .'* To use the Alibaba Cloud trusted system, set this parameter to vTPM. Then, the Alibaba Cloud trusted system performs trust verifications when the instances start.'."\n" + .'* If you do not want to use the Alibaba Cloud trusted system, leave this parameter empty. Note that if your created instances use an enclave-based confidential computing environment (with `SecurityOptions.ConfidentialComputingMode` set to Enclave), the Alibaba Cloud trusted system is enabled for the instances.'."\n" + .'* When you use the ECS API to create instances that use the trusted system, you can call only the `RunInstances` operation. The `CreateInstance` operation does not support the `SecurityOptions.TrustedSystemMode` parameter.'."\n" + ."\n" + .'> If you have configured an instance as a trusted one when you created the instance, you can use only an image that support the trusted system to replace the system disk of the instance.'."\n" + ."\n" + .'For more information about the trusted system, see [Overview](~~201394~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vTPM', + ], + ], + [ + 'name' => 'SecurityOptions.ConfidentialComputingMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The confidential computing mode. Set the value to Enclave.'."\n" + ."\n" + .'A value of Enclave indicates that an enclave-based confidential computing environment is built on the instance. When you call the `RunInstances` operation, you can set this parameter only for c7, g7, or r7 instances to use enclave-based confidential computing. Take note of the following items:'."\n" + ."\n" + .'* The confidential computing feature is in invitational preview.'."\n" + .'* When you use the ECS API to create instances that support enclave-based confidential computing, you can call only the `RunInstances` operation. The `CreateInstance` operation does not support the `SecurityOptions.ConfidentialComputingMode` parameter.'."\n" + .'* Enclave-based confidential computing is implemented based on Alibaba Cloud Trusted System (vTPM). When you build a confidential computing environment on an instance by using Enclave, Alibaba Cloud Trusted System is enabled for the instance. If you set `SecurityOptions.ConfidentialComputingMode` to Enclave when you call this operation, the created instances use enclave-based confidential computing and Alibaba Cloud Trusted System regardless of whether `SecurityOptions.TrustedSystemMode` is set to vTPM.'."\n" + ."\n" + .'For more information about confidential computing, see [Build a confidential computing environment by using Enclave](~~203433~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Enclave', + ], + ], + [ + 'name' => 'HttpEndpoint', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the access channel for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: enabled.'."\n" + ."\n" + .'> For more information about instance metadata, see [Overview of ECS instance metadata](~~49122~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'enabled', + ], + ], + [ + 'name' => 'HttpTokens', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully use the security-enhanced mode (IMDSv2) to access instance metadata. Valid values:'."\n" + ."\n" + .'* optional: does not forcefully use the security-enhanced mode (IMDSv2).'."\n" + .'* required: forcefully uses the security-enhanced mode (IMDSv2). After you set this parameter to required, you cannot access instance metadata in normal mode.'."\n" + ."\n" + .'Default value: optional.'."\n" + ."\n" + .'> For more information about the modes of accessing instance metadata, see [Access mode of instance metadata](~~150575~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optional', + ], + ], + [ + 'name' => 'HttpPutResponseHopLimit', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + ], + [ + 'name' => 'PrivatePoolOptions.MatchCriteria', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the private pool to use to create the instance. A private pool is generated after an elasticity assurance or a capacity reservation takes effect. You can select the private pool when you start an instance. Valid values:'."\n" + ."\n" + .'* Open: open private pool. The system selects a matching open private pool to create the instance. If no matching open private pools are found, resources in the public pool are used. When you set this parameter to Open, you can leave the `PrivatePoolOptions.Id` parameter empty.'."\n" + .'* Target: specified private pool. The system uses the capacity in a specified private pool to create the instance. If the specified private pool is unavailable, the instance cannot be created. If you set this parameter to Target, you must specify the `PrivatePoolOptions.Id` parameter.'."\n" + .'* None: no private pool. The capacity in private pools is not used.'."\n" + ."\n" + .'Default value: None.'."\n" + ."\n" + .'In the following scenarios, the PrivatePoolOptions.MatchCriteria parameter can be set only to `None` or left empty:'."\n" + ."\n" + .'* A spot instance is created.'."\n" + .'* The instance is created in the classic network.'."\n" + .'* The instance is created on a dedicated host.', + 'type' => 'string', + 'required' => false, + 'example' => 'Open', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the private pool. The ID of a private pool is the same as that of the elasticity assurance or capacity reservation for which the private pool is generated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eap-bp67acfmxazb4****', + ], + ], + [ + 'name' => 'Isp', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is unavailable.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'SchedulerOptions.DedicatedHostClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the dedicated host cluster in which to create the instance. After this parameter is specified, the system selects one dedicated host from the specified cluster to create the instance.'."\n" + ."\n" + .'> This parameter is valid only when the `Tenancy` parameter is set to `host`.'."\n" + ."\n" + .'When you specify both the `DedicatedHostId` and `SchedulerOptions.DedicatedHostClusterId` parameters, take note of the following items:'."\n" + ."\n" + .'* If the specified dedicated host belongs to the specified dedicated host cluster, the instance is preferentially deployed on the specified dedicated host.'."\n" + .'* If the specified dedicated host does not belong to the specified dedicated host cluster, the instance cannot be created.'."\n" + ."\n" + .'You can call the [DescribeDedicatedHostClusters](~~184145~~) operation to query the list of dedicated host cluster IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dc-bp12wlf6am0vz9v2****', + ], + ], + [ + 'name' => 'SecurityGroupIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of security groups to which to assign the instance. The valid values of N vary based on the maximum number of security groups to which an instance can belong. For more information, see the [Security group limits](~~101348~~) section of the "Limits" topic.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* You cannot specify both `SecurityGroupId` and `SecurityGroupIds.N` in the same request.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot specify `SecurityGroupId` or `SecurityGroupIds.N` but can specify `NetworkInterface.N.SecurityGroupId` or `NetworkInterface.N.SecurityGroupIds.N`.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N to which to assign the instance. The valid values of N vary based on the maximum number of security groups to which an instance can belong. For more information, see the [Security group limits](~~101348~~) section of the "Limits" topic.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* You cannot specify both `SecurityGroupId` and `SecurityGroupIds.N` in the same request.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot specify `SecurityGroupId` or `SecurityGroupIds.N` but can specify `NetworkInterface.N.SecurityGroupId` or `NetworkInterface.N.SecurityGroupIds.N`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + ], + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + 'maxItems' => 51, + ], + ], + [ + 'name' => 'HostNames', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The hostname of instance N. You can use this parameter to specify different hostnames for multiple instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The hostname of instance N. You can use this parameter to specify different hostnames for multiple instances. Take note of the following items:'."\n" + ."\n" + .'* The maximum value of N must be the same as the `Amount` value. For example, if you set `Amount` to 2, you can use HostNames.1 and HostNames.2 to specify hostnames for the individual instances. Examples: `HostNames.1=test1` and `HostNames.2=test2`.'."\n" + .'* You cannot specify both the `HostName` and `HostNames.N` parameters.'."\n" + .'* The hostname cannot start or end with a period (.) or hyphen (-). It cannot contain consecutive periods (.) or hyphens (-).'."\n" + .'* For Windows instances, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. It can contain letters, digits, and hyphens (-).'."\n" + .'* For instances that run other operating systems such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate a hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs-host-01', + ], + 'required' => false, + 'example' => 'ecs-host-01', + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'DataDisk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The data disks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Data disk N.'."\n", + 'type' => 'object', + 'properties' => [ + 'PerformanceLevel' => [ + 'description' => 'The performance level of the ESSD to use as data disk N. The value of N must be the same as that in `DataDisk.N.Category` when DataDisk.N.Category is set to cloud_essd. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10000 random read/write IOPS.'."\n" + .'* PL1 (default): A single ESSD can deliver up to 50000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1000000 random read/write IOPS.'."\n" + ."\n" + .'For information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy to apply to data disk N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-bp67acfmxazb4p****', + ], + 'Encrypted' => [ + 'description' => 'Specifies whether to encrypt data disk N. Valid values:'."\n" + ."\n" + .'* true: encrypts the data disk.'."\n" + .'* false: does not encrypt the data disk.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> When you use a shared encrypted image to create the disk based on an encrypted snapshot, you must set Encrypted to true to ensure that the disk uses an encryption key of your own.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + 'Description' => [ + 'description' => 'The description of data disk N. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'DataDisk_Description', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot to use to create data disk N. Valid values of N: 1 to 16.'."\n" + ."\n" + .'When `DataDisk.N.SnapshotId` is specified, `DataDisk.N.Size` is ignored. The data disk is created with the size of the specified snapshot. Use snapshots created on or after July 15, 2013. Otherwise, an error is returned and your request is rejected.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp17441ohwka0yuh****', + ], + 'Device' => [ + 'description' => 'The mount point of data disk N. The mount points are named based on the number of data disks:'."\n" + ."\n" + .'* 1st to 25th data disks: /dev/xvd`[b-z]`.'."\n" + .'* From the 26th data disk on: /dev/xvd`[aa-zz]`. For example, the 26th data disk is named /dev/xvdaa, the 27th data disk is named /dev/xvdab, and so on.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* This parameter is applicable to scenarios in which a full image is used to create instances. A full image is an image that contains an operating system, application software, and business data. For these scenarios, you can set this parameter to the mount point of data disk N in the full image and modify `DataDisk.N.Size` and `DataDisk.N.Category` to change the category and size of data disk N created based on the image.'."\n" + ."\n" + .'* When you use a full image to create an ECS instance, the data disks in the image are created as the first N data disks of the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '/dev/xvdb', + ], + 'Size' => [ + 'description' => 'The size of data disk N. Valid values of N: 1 to 16. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_efficiency: 20 to 32768.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_ssd: 20 to 32768.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_essd: vary based on the value of `DataDisk.N.PerformanceLevel`.'."\n" + ."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL0: 1 to 65536.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL1: 20 to 65536.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL2: 461 to 65536.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL3: 1261 to 65536.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud: 5 to 2000.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_auto: 1 to 65536.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_essd_entry: 10 to 32768.'."\n" + ."\n" + .'> The value of this parameter must be greater than or equal to the size of the snapshot specified by `DataDisk.N.SnapshotId`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + 'DiskName' => [ + 'description' => 'The name of data disk N. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssdData', + ], + 'Category' => [ + 'description' => 'The category of data disk N. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: utra disk.'."\n" + ."\n" + .'* cloud_ssd: standard SSD.'."\n" + ."\n" + .'* cloud_essd: ESSD.'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + ."\n" + .'* cloud_auto: ESSD AutoPL disk.'."\n" + ."\n" + .'* cloud_regional_disk_auto: Regional ESSD.'."\n" + ."\n" + .'* cloud_essd_entry: ESSD Entry disk.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** This parameter can be set to `cloud_essd_entry` only when `InstanceType` is set to `ecs.u1` or `ecs.e`.'."\n" + ."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk.'."\n" + ."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk'."\n" + ."\n" + .'For I/O optimized instances, the default value is cloud_efficiency. For non-I/O optimized instances, the default value is cloud.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + 'EncryptAlgorithm' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes-256', + ], + 'DeleteWithInstance' => [ + 'description' => 'Specifies whether to release data disk N when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true: releases the data disk when the associated instance is released.'."\n" + .'* false: does not release the data disk when the associated instance is released.'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key used for the data disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + 'StorageClusterId' => [ + 'description' => 'The ID of the dedicated block storage cluster to which data disk N belongs. If you want to use a disk in a dedicated block storage cluster as data disk N when you create the instance, you must specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dbsc-j5e1sf2vaf5he8m2****', + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk to use as data disk N. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set DataDisk.N.Category to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '40000', + ], + 'BurstingEnabled' => [ + 'description' => 'Specifies whether to enable the performance burst feature for data disk N. Valid values:'."\n" + ."\n" + .'* true: enables the performance burst feature for the system disk.'."\n" + .'* false: disables the performance burst feature for the data disk.'."\n" + ."\n" + .'> This parameter is available only if you set DataDisk.N.Category to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'Arn', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'RoleType' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Rolearn' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'AssumeRoleFor' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '0', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'NetworkInterface', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information of the elastic network interfaces (ENIs).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information of ENI N.'."\n", + 'type' => 'object', + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which to connect ENI N.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* The value of N cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you must specify this parameter. In this case, this parameter is equivalent to `VSwitchId`. You cannot specify both NetworkInterface.N.VSwitchId and `VSwitchId` in the same request.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Secondary` or left empty, you do not need to specify this parameter. The default value is the VSwitchId value.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp67acfmxazb4p****', + ], + 'NetworkInterfaceName' => [ + 'description' => 'The name of ENI N. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The value of N cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you do not need to specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Network_Name', + ], + 'Description' => [ + 'description' => 'The description of ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The value of N cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + .'* The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you do not need to specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Network_Description', + ], + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group to which to assign ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The value of N cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you must specify this parameter. In this case, this parameter is equivalent to `SecurityGroupId` and you cannot specify `SecurityGroupId`, `SecurityGroupIds.N`, or `NetworkInterface.N.SecurityGroupIds.N`.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you do not need to specify this parameter. The default value is the ID of the security group to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'PrimaryIpAddress' => [ + 'description' => 'The primary IP address to assign to ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The value of N cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + ."\n" + .' * If the value of N is 1, you can configure a primary or secondary ENI. If you specify this parameter, set `Amount` to a numeric value greater than 1, and set NetworkInterface.N.InstanceType to Primary, the specified number of instances are created and consecutive primary IP addresses starting from the specified IP address are assigned to the instances. In this case, you cannot attach secondary ENIs to the instances.'."\n" + .' * If you specify this parameter, set `Amount` to a numeric value greater than 1, and set NetworkInterface.N.InstanceType to Primary, you cannot set `NetworkInterface.2.InstanceType` to Secondary to attach a secondary ENI.'."\n" + ."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, this parameter is equivalent to `PrivateIpAddress`. You cannot specify both this parameter and `PrivateIpAddress` in the same request.'."\n" + ."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, the specified primary IP address is assigned to the secondary ENI. The default value is an IP address that is randomly selected from within the CIDR block of the vSwitch to which to connect the secondary ENI.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* The first IP address and last three IP addresses of each vSwitch CIDR block are reserved. You cannot specify the IP addresses. For example, if a vSwitch CIDR block is 192.168.1.0/24, the following IP addresses are reserved: 192.168.1.0, 192.168.1.253, 192.168.1.254, and 192.168.1.255.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '172.16.**.**', + ], + 'QueueNumber' => [ + 'description' => 'The number of queues supported by ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The value of N cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + .'* The value of this parameter cannot exceed the maximum number of queues allowed per ENI.'."\n" + .'* The total number of queues for all ENIs of an instance cannot exceed the queue quota for the instance type. To query the maximum number of queues per ENI and the queue quota for an instance type, you can call the [DescribeInstanceTypes](~~25620~~) operation and check the `MaximumQueueNumberPerEni` and `TotalEniQueueQuantity` values in the response.'."\n" + .'* If you specify this parameter and set `NetworkInterface.N.InstanceType` to `Primary`, you cannot specify `NetworkInterfaceQueueNumber`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8', + ], + 'SecurityGroupIds' => [ + 'description' => 'The IDs of security groups to which to assign ENI N.'."\n" + ."\n" + .'* The value of the first N in this parameter cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + .'* The second N in this parameter indicates that one or more security group IDs can be specified. The valid values of the second N vary based on the maximum number of security groups to which an instance can belong. For more information, see [Security group limits](~~25412#SecurityGroupQuota1~~).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, you must specify this parameter or `NetworkInterface.N.SecurityGroupId`. In this case, this parameter is equivalent to `SecurityGroupIds.N`, and you cannot specify `SecurityGroupId`, `SecurityGroupIds.N`, or `NetworkInterface.N.SecurityGroupId`.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you do not need to specify this parameter. The default value is the ID of the security group to which to assign the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N to which to assign ENI N.'."\n" + ."\n" + .'* The value of the first N in this parameter cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + .'* The second N in this parameter indicates that one or more security group IDs can be specified. The valid values of the second N vary based on the maximum number of security groups to which an instance can belong. For more information, see [Security group limits](~~25412#SecurityGroupQuota1~~).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, you must specify this parameter or `NetworkInterface.N.SecurityGroupId`. In this case, this parameter is equivalent to `SecurityGroupIds.N`, and you cannot specify `SecurityGroupId`, `SecurityGroupIds.N`, or `NetworkInterface.N.SecurityGroupId`.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you do not need to specify this parameter. The default value is the ID of the security group to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + ], + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + 'maxItems' => 51, + ], + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of ENI N. Valid values:'."\n" + ."\n" + .'* Standard: uses the TCP communication mode.'."\n" + .'* HighPerformance: uses the remote direct memory access (RDMA) communication mode with Elastic RDMA Interface (ERI) enabled.'."\n" + ."\n" + .'Default value: Standard.'."\n" + ."\n" + .'> The number of ERIs on an instance cannot exceed the maximum number of ERIs that the instance type supports. For more information, see [Overview of instance families](~~25378~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + 'QueuePairNumber' => [ + 'description' => 'The number of queue pairs (QPs) supported by the ERI.'."\n" + ."\n" + .'If you want to attach multiple ERIs to a created instance, we recommend that you specify QueuePairNumber for each ERI based on the value of `QueuePairNumber` supported by the instance type and the number of ERIs that you want to use. Make sure that the total number of QPs of all ERIs does not exceed the maximum number of QPs supported by the instance type. For information about the maximum number of QPs supported by an instance type, see [DescribeInstanceTypes](~~2679699~~).'."\n" + ."\n" + .'> If you do not specify QueuePairNumber for an ERI, the maximum number of QPs supported by the instance type is used as the number of QPs supported by the ERI. In this case, you cannot attach an additional ERI to the instance. However, you can attach other types of ENIs to the instance.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '0', + ], + 'InstanceType' => [ + 'description' => 'The type of ENI N. The value of the first N in this parameter cannot exceed the maximum number of ENIs per instance that the instance type supports. For the maximum number of ENIs per instance that an instance type supports, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~2679699~~) operation.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Primary: the primary ENI'."\n" + .'* Secondary'."\n" + ."\n" + .'Default value: Secondary.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Secondary', + ], + 'Ipv6AddressCount' => [ + 'description' => 'The number of IPv6 addresses to randomly generate for the primary ENI. Valid values: 1 to 10.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when `NetworkInterface.N.InstanceType` is set to `Primary`. If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you cannot specify this parameter.'."\n" + .'* If you specify this parameter, you cannot specify `Ipv6AddressCount`, `Ipv6Address.N`, or `NetworkInterface.N.Ipv6Address.N`.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1', + ], + 'Ipv6Address' => [ + 'description' => 'The IPv6 addresses to assign to the primary ENI. You can assign up to 10 IPv6 addresses to the primary ENI. Valid values of the second N: 1 to 10.'."\n" + ."\n" + .'Example: `Ipv6Address.1=2001:db8:1234:1a00::***`.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when `NetworkInterface.N.InstanceType` is set to `Primary`. If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you cannot specify this parameter.'."\n" + .'* If you specify this parameter, you must set `Amount` to 1 and cannot specify `Ipv6AddressCount`, `Ipv6Address.N`, or `NetworkInterface.N.Ipv6AddressCount`.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 address N to assign to the primary ENI. You can assign up to 10 IPv6 addresses to the primary ENI. Valid values of the second N: 1 to 10.'."\n" + ."\n" + .'Example: `Ipv6Address.1=2001:db8:1234:1a00::***`.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when `NetworkInterface.N.InstanceType` is set to `Primary`. If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you cannot specify this parameter.'."\n" + .'* If you specify this parameter, you must set `Amount` to 1 and cannot specify `Ipv6AddressCount`, `Ipv6Address.N`, or `NetworkInterface.N.Ipv6AddressCount`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + 'required' => false, + 'maxItems' => 10, + ], + 'NetworkCardIndex' => [ + 'description' => 'The index of the network card for ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You can specify NIC indexes only for instances of specific instance types.'."\n" + .'* If you set NetworkInterface.N.InstanceType to Primary, you can set NetworkInterface.N.NetworkCardIndex only to 0 for instance types that support network cards.'."\n" + .'* If you set NetworkInterface.N.InstanceType to Secondary or leave NetworkInterface.N.InstanceType empty, you can specify NetworkInterface.N.NetworkCardIndex based on instance types if the instance types support network cards. For more information, see [Overview of instance families](~~25378~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + 'DeleteOnRelease' => [ + 'description' => 'Specifies whether to release ENI N when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true: releases the ENI when the associated instance is released.'."\n" + .'* false: retains the ENI when the associated instance is released.'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'> This parameter takes effect only for secondary ENIs.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'NetworkInterfaceId' => [ + 'description' => 'The ID of the ENI to attach to the instance.'."\n" + ."\n" + .'If you specify this parameter, you must set `Amount` to 1.'."\n" + ."\n" + .'> This parameter takes effect only for secondary ENIs. After you specify an existing secondary ENI, you cannot specify other ENI creation parameters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-bp1gn106np8jhxhj****', + ], + 'RxQueueSize' => [ + 'description' => 'The receive (Rx) queue depth of ENI N.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available. To use this parameter, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* This parameter is applicable only to 7th-generation or later ECS instance types.'."\n" + .'* This parameter is applicable to Linux images.'."\n" + .'* A larger Rx queue depth yields higher inbound throughput and reduces packet loss rates but consumes more memory.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + 'TxQueueSize' => [ + 'description' => 'The Tx queue depth of ENI N.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available. To use this parameter, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* This parameter is applicable only to 7th-generation or later ECS instance types.'."\n" + .'* This parameter is applicable to Linux images.'."\n" + .'* A larger Tx queue depth yields higher outbound throughput and reduces packet loss rates but consumes more memory.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + 'SourceDestCheck' => [ + 'description' => 'Specifies whether to enable the source and destination IP address check feature. We recommend that you enable the feature to improve network security. Valid value:'."\n" + ."\n" + .'* true: enables the performance burst feature for the system disk.'."\n" + .'* false: disables the performance burst feature for the data disk.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This feature is available only in some regions. Before you use this method, read [Source and destination IP address check](~~2863210~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'SecondaryPrivateIpAddressCount' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the instance, disks, and primary ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the instance, disks, and primary ENI. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the instance, disks, and primary ENI. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 71, + ], + ], + [ + 'name' => 'Ipv6Address', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'IPv6 address N to be assigned to the primary ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'Example: `Ipv6Address.1=2001:db8:1234:1a00::***`.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If the `Ipv6Address.N` parameter is specified, you must set the `Amount` parameter to 1 and leave the `Ipv6AddressCount` parameter empty.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot set `Ipv6Addresses.N` or `Ipv6AddressCount` and must set `NetworkInterface.N.Ipv6Addresses.N` or `NetworkInterface.N.Ipv6AddressCount`.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 address N to be assigned to the primary ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'Example: `Ipv6Address.1=2001:db8:1234:1a00::***`.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If the `Ipv6Address.N` parameter is specified, you must set the `Amount` parameter to 1 and leave the `Ipv6AddressCount` parameter empty.'."\n" + .'* If `NetworkInterface.N.InstanceType` is set to `Primary`, you cannot set `Ipv6Addresses.N` or `Ipv6AddressCount` and must set `NetworkInterface.N.Ipv6Addresses.N` or `NetworkInterface.N.Ipv6AddressCount`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + 'required' => false, + 'example' => 'Ipv6Address.1=2001:db8:1234:1a00::***', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'SystemDisk', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The system disk-related parameter. You can set `SystemDisk.StorageClusterId` to specify the ID of the dedicated block storage cluster.'."\n", + 'type' => 'object', + 'properties' => [ + 'StorageClusterId' => [ + 'description' => 'The ID of the dedicated block storage cluster to which the system disk belongs. If you want to use disks in a dedicated block storage cluster as system disks when you create instances, specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dbsc-j5e1sf2vaf5he8m2****', + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk to use as the system disk. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set `SystemDisk.Category` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'minimum' => '0', + 'example' => '40000', + ], + 'BurstingEnabled' => [ + 'description' => 'Specifies whether to enable the performance burst feature for the system disk. Valid values:'."\n" + ."\n" + .'* true: enables the performance burst feature for the system disk.'."\n" + .'* false: disables the performance burst feature for the system disk.'."\n" + ."\n" + .'> This parameter is available only if you set `SystemDisk.Category` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'Encrypted' => [ + 'description' => 'Specifies whether to encrypt the system disk. Valid values:'."\n" + ."\n" + .'* true: encrypts the system disk.'."\n" + .'* false: does not encrypt the system disk.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> The system disks of instances cannot be encrypted during instance creation in Hong Kong Zone D or Singapore Zone A.'."\n" + ."\n" + .'> When you use a shared encrypted image to create the disk based on an encrypted snapshot, you must set Encrypted to true to ensure that the disk uses an encryption key of your own.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key to use for the system disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + 'maxLength' => 64, + ], + 'EncryptAlgorithm' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ase-256', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'ImageOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'Details about the image options.'."\n", + 'type' => 'object', + 'properties' => [ + 'LoginAsNonRoot' => [ + 'description' => 'Specifies whether the instance that uses the image supports logons of the ecs-user user. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'NetworkOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'Details about network options.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableJumboFrame' => [ + 'description' => 'Specifies whether to enable the Jumbo Frames feature for the instance. Valid values:'."\n" + ."\n" + .'* false: does not enable the Jumbo Frames feature for the instance. The maximum transmission unit (MTU) value of all ENIs on the instance is set to 1500.'."\n" + .'* true: enables the Jumbo Frames feature for the instance. The MTU value of all ENIs on the instance is set to 8500.'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'> The Jumbo Frames feature is supported by only 8th-generation or later instance types. For more information, see [Jumbo Frames](~~200512~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'EnableNetworkEncryption' => [ + 'description' => '', + 'type' => 'boolean', + 'required' => false, + ], + 'BandwidthWeighting' => [ + 'type' => 'string', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically complete the payment for instance creation. Valid values:'."\n" + ."\n" + .'* true: The payment is automatically completed.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** Make sure that your account balance is sufficient. Otherwise, your order becomes invalid and is canceled. If your account balance is insufficient, you can set `AutoPay` to `false` to generate an unpaid order. Then, you can log on to the ECS console to pay for the order.'."\n" + ."\n" + .'* false: An order is generated but no payment is made.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** When `InstanceChargeType` is set to `PostPaid`, `AutoPay` cannot be set to `false`.'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'PrivateDnsNameOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The private domain name options of the instance.'."\n" + ."\n" + .'For information about the resolution of ECS private domain names, see [ECS private DNS resolution](~~2844797~~).'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableInstanceIdDnsARecord' => [ + 'description' => 'Specifies whether DNS Resolution from the Instance ID-based Hostname to the Instance Primary Private IPv4 Address (A Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'EnableInstanceIdDnsAAAARecord' => [ + 'description' => 'Specifies whether DNS Resolution from the Instance ID-based Hostname to the Instance Primary Private IPv6 Address (AAAA Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableIpDnsARecord' => [ + 'description' => 'Specifies whether DNS Resolution from the IP Address-based Hostname to the Instance Primary Private IPv4 Address (A Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableIpDnsPtrRecord' => [ + 'description' => 'Specifies whether Reverse DNS Resolution from the Instance Primary Private IPv4 Address to the IP Address-based Hostname (PTR Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'HostnameType' => [ + 'description' => 'The type of hostname. Valid values:'."\n" + ."\n" + .'* Custom: custom hostname'."\n" + .'* IpBased: IP address-based hostname'."\n" + .'* InstanceIdBased: instance ID-based hostname'."\n" + ."\n" + .'Default value: Custom.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Custom', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'ClockOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PtpStatus' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The information about the created instances.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'OrderId' => [ + 'description' => 'The ID of the order. This parameter is returned only when `InstanceChargeType` is set to PrePaid.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + 'TradePrice' => [ + 'description' => 'The transaction price.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '0.165', + ], + 'InstanceIdSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceIdSet' => [ + 'description' => 'The instance IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'string', + 'description' => '', + 'example' => '["i-bp67acfmxazb4pd2****", "i-bp1i43l28m7u48p1****", "i-bp12yqg7jdyxl11f****"]', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'LoginAsNonRoot.ImageNotSupport', + 'errorMessage' => 'The specified image does not support login as non-root.', + ], + [ + 'errorCode' => 'InvalidParam.NotSupportJumboFrame', + 'errorMessage' => 'Not support jumbo frame.', + ], + [ + 'errorCode' => 'InsufficientBalance.AgentCredit', + 'errorMessage' => 'Insufficient agent credit. Please contact your agent.', + ], + [ + 'errorCode' => 'QuotaExceed.DiskCapacity', + 'errorMessage' => 'The used capacity of disk type has exceeded the quota in the zone, %s.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededDedicatedHost', + 'errorMessage' => 'Instance expired date can not exceed dedicated host expired date.', + ], + [ + 'errorCode' => 'InvalidParam.SecondaryNetworkInterface', + 'errorMessage' => 'When min amount greater than 1 and the PrivateIpAddress or Primary NetworkInterface is specified,the Secondary NetworkInterface IP parameter cannot be specified.', + ], + [ + 'errorCode' => 'InvalidPrimaryIpAddress.SizeInvalid', + 'errorMessage' => 'The NetworkInterface PrimaryIpAddress is used to create only one instance.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.CapacityNotEnough', + 'errorMessage' => 'The remaining capacity of the current dedicated storage cluster is less than the size of disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.StatusNotSupport', + 'errorMessage' => 'The current status of the dedicated storage cluster cannot create a cloud disk yet.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.ZoneIdEmpty', + 'errorMessage' => 'The specified param ZoneId cannot be empty when StorageClusterId given.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.PerformanceLevelNotMatch', + 'errorMessage' => 'The current dedicated storage cluster cannot create this performance level of disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.CategoryNotMatch', + 'errorMessage' => 'The current dedicated storage cluster cannot create this category of disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.DiskSizeEmpty', + 'errorMessage' => 'The specified param DiskSize cannot be empty when StorageClusterId given.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter "Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => 'The specified InternetChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter "InternetMaxBandwidthOut" is not valid.', + ], + [ + 'errorCode' => 'InvalidHostName.Malformed', + 'errorMessage' => 'The specified parameter "HostName" is not valid.', + ], + [ + 'errorCode' => 'InvalidPassword.Malformed', + 'errorMessage' => 'The specified parameter "Password" is not valid.', + ], + [ + 'errorCode' => 'InvalidPasswordParam.Mismatch', + 'errorMessage' => 'The input password should be null when passwdInherit is true.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "SystemDisk.Category" is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskName.Malformed', + 'errorMessage' => 'The specified parameter "SyatemDisk.DiskName or DataDisk.n.DiskName" is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskDescription.Malformed', + 'errorMessage' => 'The specified parameter "SyatemDisk.DiskDescription" or "DataDisk.n.Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DataDisk.n.Category" is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDevice.Malformed', + 'errorMessage' => 'The specified parameter "DataDisk.n.Device" is not valid.', + ], + [ + 'errorCode' => 'InvalidNodeControllerId.Malformed', + 'errorMessage' => 'The specified parameter "NodeControllerId" is not valid.', + ], + [ + 'errorCode' => 'InvalidInnerIpAddress.Malformed', + 'errorMessage' => 'The specified parameter "InnerIpAddress" is not valid.', + ], + [ + 'errorCode' => 'InvalidInnerIpAddress.Unusable', + 'errorMessage' => 'The specified InnerIpAddress is already used or not found in usable ip range.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The specified image does not support the specified instance type.', + ], + [ + 'errorCode' => 'ImageNotSupportCloudInit', + 'errorMessage' => 'The specified image does not support cloud-init.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.BasedSnapshotTooOld', + 'errorMessage' => 'The specified snapshot is created before 2013-07-15.', + ], + [ + 'errorCode' => 'QuotaExceed.AfterpayInstance', + 'errorMessage' => 'Living afterpay instances quota exceeded.', + ], + [ + 'errorCode' => 'InvalidInstanceName.Malformed', + 'errorMessage' => 'The specified parameter "InstanceName" is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceName.CustomMalformed', + 'errorMessage' => 'Customized section of instance or host name is invalid, please use valid format: [], [,], [m,], [,n], [m,n].', + ], + [ + 'errorCode' => 'InvalidParameter.Mismatch', + 'errorMessage' => 'Specified security group and virtual switch are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidNetworkType.Mismatch', + 'errorMessage' => 'Specified parameter "InternetMaxBandwidthIn" or "InternetMaxBandwidthOut" conflict with instance network type.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress', + 'errorMessage' => 'Specified private IP address is not in the CIDR block of virtual switch.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Malformed', + 'errorMessage' => 'Specified private IP address is malformed.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrivateIpAddress', + 'errorMessage' => 'Don\'t have enough private IPs in this switch.', + ], + [ + 'errorCode' => 'QuotaExceeded', + 'errorMessage' => 'Living instances quota exceeded in this VPC.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current status of virtual switch does not support this operation.', + ], + [ + 'errorCode' => 'ResourceNotAvailable', + 'errorMessage' => 'Resource you requested is not available in this region or zone.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "VSwitchId" that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.Mismatch', + 'errorMessage' => 'The specified disk categories\' combination is not supported.', + ], + [ + 'errorCode' => 'MissingParamter', + 'errorMessage' => 'The specified parameter "Period" is not null.', + ], + [ + 'errorCode' => 'InvalidPeriod', + 'errorMessage' => 'The specified period is not valid.', + ], + [ + 'errorCode' => 'InstanceDiskCategoryLimitExceed', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.', + ], + [ + 'errorCode' => 'InvalidClientToken.ValueNotSupported', + 'errorMessage' => 'The ClientToken provided is invalid.', + ], + [ + 'errorCode' => 'InvalidIoOptimize.ValueNotSupported', + 'errorMessage' => 'The specified IoOptimize is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The SecurityGroupId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInternetMaxBandwidthOut.Malformed', + 'errorMessage' => 'The specified parameter internetMaxBandwidthOut is not valid.', + ], + [ + 'errorCode' => 'InvalidInternetMaxBandwidthIn.Malformed', + 'errorMessage' => 'The specified parameter internetMaxBandwidthIn is not valid.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified parameter SnapshotId is not exist.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidTag.Mismatch', + 'errorMessage' => 'The specified Tag.n.Key and Tag.n.Value are not match.', + ], + [ + 'errorCode' => 'InvalidTagCount', + 'errorMessage' => 'The specified tags are beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidMinAmount.Malformed', + 'errorMessage' => 'The specified parameter MinAmount is not valid.', + ], + [ + 'errorCode' => 'InvalidMaxAmount.Malformed', + 'errorMessage' => 'The specified parameter MaxAmount is not valid.', + ], + [ + 'errorCode' => 'InvalidAutoReleaseTime.Malformed', + 'errorMessage' => 'The specified parameter AutoReleaseTime is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.NoVlan', + 'errorMessage' => 'The specified parameter "VlanId" is not valid or vlan has not enough IP address.', + ], + [ + 'errorCode' => 'OperationDenied.QuotaExceed', + 'errorMessage' => 'The quota of tags on resource is beyond permitted range.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has been in arrears.', + ], + [ + 'errorCode' => 'InvalidUserData.SizeExceeded', + 'errorMessage' => 'The specified parameter "UserData" exceeds the size.', + ], + [ + 'errorCode' => 'InvalidUserData.NotSupported', + 'errorMessage' => 'TThe specified parameter "UserData" only support the vpc and IoOptimized Instance.', + ], + [ + 'errorCode' => 'InvalidUserData.Base64FormatInvalid', + 'errorMessage' => 'The specified UserData is not valid.', + ], + [ + 'errorCode' => 'InstanceDiskNumber.LimitExceed', + 'errorMessage' => 'The total number of specified disk in an instance exceeds.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DiskCategory" is not valid.', + ], + [ + 'errorCode' => 'InvalidSpotStrategy', + 'errorMessage' => 'The specified SpotStrategy is not valid.', + ], + [ + 'errorCode' => 'InvalidSpotParam.EmptyZoneID', + 'errorMessage' => 'The specified zoneid is empty when SpotStrategy is set.', + ], + [ + 'errorCode' => 'InvalidSpotPriceLimit', + 'errorMessage' => 'The specified SpotPriceLimitis not valid.', + ], + [ + 'errorCode' => 'InvalidSpotDuration', + 'errorMessage' => 'The specified SpotDuration is not valid.', + ], + [ + 'errorCode' => 'InvalidSpotAuthorized', + 'errorMessage' => 'The specified Spot param is unauthorized.', + ], + [ + 'errorCode' => 'InvalidSpotPrepaid', + 'errorMessage' => 'The specified Spot type is not support PrePay Instance.', + ], + [ + 'errorCode' => 'InvalidSpotAliUid', + 'errorMessage' => 'The specified UID is not authorized to use SPOT instance.', + ], + [ + 'errorCode' => 'InvalidParameter.Bandwidth', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.ElasticNetworkInterfaceNotSupported', + 'errorMessage' => 'The specified instance type does not support Elastic Network Interface, you can not attach Elastic Network Interface to generation I instances.', + ], + [ + 'errorCode' => 'InvalidParameter.EncryptedIllegal', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EncryptedNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSpotPriceLimit.LowerThanPublicPrice', + 'errorMessage' => 'The specified parameter "spotPriceLimit" can\'t be lower than current public price.', + ], + [ + 'errorCode' => 'InvalidRelationResource.NotFound', + 'errorMessage' => 'The relation resource has been deleted.', + ], + [ + 'errorCode' => 'IncorrectRecycleBinStatus', + 'errorMessage' => 'The operation is not permitted due to resource status.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.Unnecessary', + 'errorMessage' => 'The specified HpcClusterId is unnecessary.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.Necessary', + 'errorMessage' => 'The VSwitchId is necessary.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.Necessary', + 'errorMessage' => 'The HpcClusterId is necessary.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.NotFound', + 'errorMessage' => 'The specified HpcClusterId is not found.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.Creating', + 'errorMessage' => 'The specified HpcClusterId is creating.', + ], + [ + 'errorCode' => 'InvalidParameter.VSwitchId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.NotInDefaultVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'VpcNotFound', + 'errorMessage' => 'Vpc is not found according to the specified VSwitch or the vpc does not belong to you.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ImageNotSupportResize', + 'errorMessage' => 'The specified image does not support resize.', + ], + [ + 'errorCode' => 'InvalidSpotInterruptionBehavior', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidDeploymentOnHost', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotSupport', + 'errorMessage' => 'The Dedicated host not support the specified Instance charge type.', + ], + [ + 'errorCode' => 'InvalidNetworkType.NotSupported', + 'errorMessage' => 'The classic networkType not support create ECS on dedicatedHost.', + ], + [ + 'errorCode' => 'NoAvaliableDedicatedHost', + 'errorMessage' => 'No available dedicated host or not enough resource on dedicated host.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified DedicatedHostId does not exist.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostStatus.NotSupport', + 'errorMessage' => 'Operation denied due to dedicated host status.', + ], + [ + 'errorCode' => 'IncorrectDedicatedHostStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'ChargeTypeViolation.PostPaidDedicatedHost', + 'errorMessage' => 'Prepaid instance onto postpaid dedicated host is not allowed.', + ], + [ + 'errorCode' => 'DedicatedHostType.Unmatched', + 'errorMessage' => 'The specified DedicatedHostType doesn?t match the instance type.', + ], + [ + 'errorCode' => 'InvalidParam.NetworkInterface', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.CreateEniParams', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.CreditSpecification', + 'errorMessage' => 'The specified CreditSpecification is not supported in this region.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified instanceType is not supported by the deployment set.', + ], + [ + 'errorCode' => 'InvalidVpcZone.NotSupported', + 'errorMessage' => 'The specified operation is not allowed in the zone to which your VPC belongs, please try in other zones.', + ], + [ + 'errorCode' => 'IncorrectDefaultVpcStatus', + 'errorMessage' => 'The status of the default VPC is invalid.', + ], + [ + 'errorCode' => 'InvalidAutoRenewPeriod.ValueNotSupported', + 'errorMessage' => 'The specified autoRenewPeriod is invalid.', + ], + [ + 'errorCode' => 'InvalidMarketImageChargeType.NotSupport', + 'errorMessage' => 'The specified chargeType of marketImage is unsupported.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified instanceType or zone is not available or not authorized.', + ], + [ + 'errorCode' => 'InvalidPeriodType.ValueNotSupported', + 'errorMessage' => 'The specified parameter PeriodType is invalid.', + ], + [ + 'errorCode' => 'IncorrectImageStatus', + 'errorMessage' => 'The specified image is an Alibaba Cloud Marketplace image. The sale of this image has ended. For more information, contact the image service provider.', + ], + [ + 'errorCode' => 'InvalidParam.Tenancy', + 'errorMessage' => 'The specified Tenancy is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Affinity', + 'errorMessage' => 'The specified Affinity is invalid.', + ], + [ + 'errorCode' => 'InvalidCustomInstanceType.NotSupported', + 'errorMessage' => 'The specified custom instance type is invalid.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified instance must be IoOptimized instance when kmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.Malformed', + 'errorMessage' => 'The specified SnapshotId is not valid.', + ], + [ + 'errorCode' => 'InvalidCapacityReservationId.NotFound', + 'errorMessage' => 'The specified CapacityReservationId does not exist.', + ], + [ + 'errorCode' => 'LackResource', + 'errorMessage' => 'There\'s no enough resource on the specified capacity reservation.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.NetworkType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupIdRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.SingleIdAndMultiIdConflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.MultiGroupIdNetworkTypeConflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'JoinedGroupLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAccountStatus.PayAmountLimitExceeded', + 'errorMessage' => 'Your account is being restricted, because you have no default payment method or you are not authorized.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.Malformed', + 'errorMessage' => 'The specified parameter DataDisk.n.PerformanceLevel is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => 'The maximum number of eni in a enterprise security group is exceeded.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrepayDataDiskCapacity', + 'errorMessage' => 'The quota of prepay data disk capacity exceeds.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ConflictSnapshotCategory', + 'errorMessage' => 'The specified disk category conflict with snapshot category.', + ], + [ + 'errorCode' => 'AccountForbidden.ProductCreationLimited', + 'errorMessage' => 'The commodity must be officially operated by Aliyun and in pay-as-you-go billing method.', + ], + [ + 'errorCode' => 'UnexpectedImageFamily.ImageIdSupplied', + 'errorMessage' => 'The input parameter ImageFamily must be null when image id is set.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchEncryptAlgorithm', + 'errorMessage' => 'The specified parameter Encrypted must be true when EncryptAlgorithm is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchKmsKeyId', + 'errorMessage' => 'The specified parameter Encrypted must be true when KmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is different from the encrypt algorithm of the snapshot.', + ], + [ + 'errorCode' => 'InvalidKmsKeyId.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter KmsKeyId is different from the KmsKeyId of the snapshot.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is not valid.', + ], + [ + 'errorCode' => 'InvalidHttpEndpoint.NotSupported', + 'errorMessage' => 'The specified HttpEndpoint not supported, you can use enabled(default) or disabled.', + ], + [ + 'errorCode' => 'InvalidHttpTokens.NotSupported', + 'errorMessage' => 'The specified HttpTokens not supported, you can use optional(default) or required.', + ], + [ + 'errorCode' => 'InvalidHttpPutResponseHopLimit.NotSupported', + 'errorMessage' => 'The specified HttpPutResponseHopLimit not supported, more than 1 and less than 64 is reasonable.', + ], + [ + 'errorCode' => 'InvalidOperation.VpcHasEnabledAdvancedNetworkFeature', + 'errorMessage' => 'The specified vpc has enabled advanced network feature.', + ], + [ + 'errorCode' => 'InvalidChargeType.CapacityReservationNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.ValueNotSupported', + 'errorMessage' => 'The current ZoneId or InstanceType does not support PL0 of cloud_essd.', + ], + [ + 'errorCode' => 'InvalidKMSKeyId.NotSymmetric', + 'errorMessage' => 'The specified parameter KmsKeyId must be symmetric.', + ], + [ + 'errorCode' => 'InvalidParameter.Arns', + 'errorMessage' => 'The specified Arns is not valid.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostClusterId.NotFound', + 'errorMessage' => 'The specified DedicatedHostClusterId does not exist.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostClusterId.InValid', + 'errorMessage' => 'The specified Dedicated Host Cluster is invalid.', + ], + [ + 'errorCode' => 'InvalidDeploymentSetId.NotFound', + 'errorMessage' => 'The parameter DeploymentSetId is invalid.', + ], + [ + 'errorCode' => 'InvalidOperation.UserNotSupported', + 'errorMessage' => 'Reseller user do not support purchase at the moment.', + ], + [ + 'errorCode' => 'InvalidManagedPrivateSpaceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSchedulerOptions', + 'errorMessage' => 'The specified parameter SchedulerOptions is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptionsId', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptionsId', + 'errorMessage' => 'The specified PrivatePoolOptions.Id is invalid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.NoStock', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool is expired or inactive.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'InvalidBandwidthOut.LessThanZero', + 'errorMessage' => 'The bandwidth must be larger than 0 when specifying isp.', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceTypeNotSupport', + 'errorMessage' => 'The specified instance type is not support.', + ], + [ + 'errorCode' => 'HibernationConfigured.ImageNotEncrypted', + 'errorMessage' => 'The hibernation configured instance only support encrypted image.', + ], + [ + 'errorCode' => 'HibernationConfigured.MemorySizeTooBig', + 'errorMessage' => 'The hibernation configured instance memory size is too big.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanMemSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the memory size.', + ], + [ + 'errorCode' => 'InvalidCloudBoxZone.OperationNotSupported', + 'errorMessage' => 'The cloud box zone does not support creating prepaid or encrypted resources.', + ], + [ + 'errorCode' => 'ProvisionedIopsForDiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support provisioned iops.', + ], + [ + 'errorCode' => 'InvalidProvisionedIops.LimitExceed', + 'errorMessage' => 'The provisioned iops exceeds the limit.', + ], + [ + 'errorCode' => 'BurstingEnabledForDiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support bursting enabled.', + ], + [ + 'errorCode' => 'BurstingEnabledForMultiAttachDiskUnsupported', + 'errorMessage' => 'The multi attach disk does not support bursting enabled.', + ], + [ + 'errorCode' => 'ProvisionedIopsForDiskCategoryRequired', + 'errorMessage' => 'The provisioned iops is required for this disk category.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.InstanceType', + 'errorMessage' => 'The specified instance type does not support creating encrypted disks with native snapshot encrypt.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.RegionId', + 'errorMessage' => 'The specified region does not support creating encrypted disks with native snapshot encrypt.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.ZoneId', + 'errorMessage' => 'The specified zone does not support creating encrypted disks with native snapshot encrypt.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.ShareImage', + 'errorMessage' => 'Shared snapshot creating encrypted disks with native snapshot encrypt is not supported.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.ImageOwnerAlias', + 'errorMessage' => 'The specified image category does not support creating encrypted disks with native snapshot encrypt.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.DiskCategory', + 'errorMessage' => 'The specified disk category does not support creating encrypted disks with native snapshot encrypt.', + ], + [ + 'errorCode' => 'NotSupport.SnapshotEncryptedAlgorithmConflict', + 'errorMessage' => 'Changing encrypt algorithm with encrypted snapshot is not supported.', + ], + [ + 'errorCode' => 'NoPermission.SystemTag', + 'errorMessage' => 'The operator is not permission for the system tag.', + ], + [ + 'errorCode' => 'NumberExceed.Tags', + 'errorMessage' => 'The Tags parameter\'s number is exceed , Valid : 20.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotSupportShareEncryptedImage', + 'errorMessage' => 'Creating instances by shared encrypted images is not supported in this zone.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.CloudboxNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidZoneId.NotSupportCreateWithShareEncryptedImage', + 'errorMessage' => 'You cannot use shared encrypted images to create instances in this zone.', + ], + [ + 'errorCode' => 'InvalidParameter.NetworkCardIndexInvalid', + 'errorMessage' => 'Invalid network card index, please check your instance type.', + ], + [ + 'errorCode' => 'InvalidOperation.UserNotSupportNetworkCard', + 'errorMessage' => 'User not support network card.', + ], + [ + 'errorCode' => 'InvalidAccount.NotSupportSpot', + 'errorMessage' => 'According to business rules, this account cannot purchase ECS Spot instances.', + ], + [ + 'errorCode' => 'AccountForbidden.AssociatedWithResellerPartner', + 'errorMessage' => 'Your account is associated with your reseller partner. Your account or your reseller partner\'s account has been forbidden to create orders, please contact your reseller partner.', + ], + [ + 'errorCode' => 'InvalidDestinationZone.DeploymentSetMismatch', + 'errorMessage' => 'Error happened, %s.', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'InvalidAutoPay.PostPaidUnsupported', + 'errorMessage' => 'The specified parameter AutoPay must be set as true for postpaid instance.', + ], + [ + 'errorCode' => 'InvalidParam.EncryptedMismatch', + 'errorMessage' => 'Creating encrypted disks with shared encrypted snapshots requires replacing encryption keys.', + ], + [ + 'errorCode' => 'InvalidParameter.DedicatedRegionNotSupported', + 'errorMessage' => 'The specified action is rejected because the specified ECS instance in the dedicated region does not support public IP.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsTopologyType', + 'errorMessage' => 'The specified parameter CpuOptions.TopologyType: %s is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportCpuOptionsTopologyType', + 'errorMessage' => 'The specified instance type does not support CpuOptions.TopologyType: %s.', + ], + [ + 'errorCode' => 'InvalidEniQueueSize.RegionOrUserNotSupported', + 'errorMessage' => 'The specified parameter RxQueueSize or TxQueueSize is not supported in this region, or this account is not in the whitelist of using eni QueueSize.', + ], + [ + 'errorCode' => 'InvalidParameter.EniQueueSize', + 'errorMessage' => 'The specified parameter TxQueueSize and RxQueueSize are not equal or exceed limit.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnable', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Duplicated', + 'errorMessage' => 'The specified private IP address is already in use.', + ], + [ + 'errorCode' => 'InvalidAdditionalInfoPvdConfig.SizeExceeded', + 'errorMessage' => 'The specified parameter AdditionalInfo.PvdConfig exceeds the size.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted', + 'errorMessage' => 'Creating non-encrypted disks with encrypted snapshots is not supported.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportHighDensityMode', + 'errorMessage' => 'The specified instance type does not support the use of the high density mode.', + ], + [ + 'errorCode' => 'QuotaExceeded.InternetBandwidth', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsAccelerators', + 'errorMessage' => 'The specified parameter CpuOptionsAccelerators is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportCpuOptionsAccelerators', + 'errorMessage' => 'The specified instance type does not support attach accelerator.', + ], + [ + 'errorCode' => 'OperationDenied.TestAccountRetricted', + 'errorMessage' => 'Test-account for testing has been prohibited from creating instance in this region. Please contact 400181.', + ], + [ + 'errorCode' => 'InvalidBurstingEnabled.DiskSizeTooSmall', + 'errorMessage' => 'The disk size must be greater than 3 GiB to enable burst.', + ], + [ + 'errorCode' => 'InvalidImage.WindowsUnsupported', + 'errorMessage' => 'The specified InstanceType does not support the specified Windows image.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsTurboMode', + 'errorMessage' => 'The specified parameter TurboMode is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.EnableNVSUnsupported', + 'errorMessage' => 'The specified instance type does not support EnableNVS.', + ], + [ + 'errorCode' => 'InvalidInstanceType.EnableVISSTUnsupported', + 'errorMessage' => 'The specified instance type does not support EnableVISST.', + ], + [ + 'errorCode' => 'InvalidInstanceType.EnableVRDTUnsupported', + 'errorMessage' => 'The specified instance type does not support EnableVRDT.', + ], + [ + 'errorCode' => 'InvalidInstanceType.SingleCoreMaxModeUnsupported', + 'errorMessage' => 'The specified instance type does not support TurboMode: "SINGLE CORE MAX".', + ], + [ + 'errorCode' => 'InvalidParameter.PtpStatus', + 'errorMessage' => 'The specified parameter PtpStatus: %s is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportEnablePtp', + 'errorMessage' => 'The specified instance type does not support enable PTP.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NetworkOptionsBandwidthWeightingUnsupported', + 'errorMessage' => 'The current instance type does not support setting or modifying the BandwidthWeighting parameter.', + ], + [ + 'errorCode' => 'InvalidParameter.NetworkOptionsBandwidthWeighting', + 'errorMessage' => 'The specified parameter BandwidthWeighting is not valid.The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidMarketImage.NotAuthorized', + 'errorMessage' => 'The specified marketplace image is not authorized for your channel, please use other image.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRamRole.NotEcsRole', + 'errorMessage' => 'The specified ram role is not authorized for ecs, please check your role policy.', + ], + ], + 403 => [ + [ + 'errorCode' => 'OperationDenied.CashCouponsInsufficientOrExpired', + 'errorMessage' => 'Cash coupon balance is insufficient or has expired, please retry.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivateIpAddressRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceEniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniNumExceededWithLaunchEcs', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportHighPerformanceTrafficMode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.QueuePairNumberMustEmpty', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniTrafficMode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidQueuePairNumber', + 'errorMessage' => 'The parameter of QueuePairNumber is invalid.', + ], + [ + 'errorCode' => 'InvalidParam.IpCount', + 'errorMessage' => 'The parameter of ip count is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.EniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceTrafficModeIsNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.NetworkInterface', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.Combination', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidHostname.SingleAndMultiConflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidHostname.SizeInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.InstanceNameExceed', + 'errorMessage' => 'The uniqueSuffix takes three naming places, please shorten your InstanceName.', + ], + [ + 'errorCode' => 'InvalidParams.HostnameExceed', + 'errorMessage' => 'The uniqueSuffix takes three naming places, please shorten your Hostname.', + ], + [ + 'errorCode' => 'ImageNotSubscribed', + 'errorMessage' => 'The specified image has not be subscribed.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueUnauthorized', + 'errorMessage' => 'The disk category is not authorized.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The specified snapshot has not completed yet.', + ], + [ + 'errorCode' => 'InstanceDiskCategoryLimitExceed', + 'errorMessage' => 'The total size of specified disk category in an instance exceeds.', + ], + [ + 'errorCode' => 'InvalidDevice.InUse', + 'errorMessage' => 'The specified device has been occupied.', + ], + [ + 'errorCode' => 'ImageRemovedInMarket', + 'errorMessage' => 'The specified market image is not available, Or the specified user defined image includes product code because it is based on an image subscribed from marketplace, and that image in marketplace includeing exact the same product code has been removed.', + ], + [ + 'errorCode' => 'CategoryNotSupported', + 'errorMessage' => 'The specified zone does not offer the specified disk category.', + ], + [ + 'errorCode' => 'QuotaExceed.PortableCloudDisk', + 'errorMessage' => 'The quota of portable cloud disk exceeds.', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => 'Exceeding the allowed amount of instances of a security group.', + ], + [ + 'errorCode' => 'NodeControllerUnavailable', + 'errorMessage' => 'The Node Controller is temporarily unavailable.', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => 'There is no authority to create instance in the specified region.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotDataDiskSnapshot', + 'errorMessage' => 'The specified snapshot is system disk snapshot.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'DeleteWithInstance.Conflict', + 'errorMessage' => 'The specified disk is not a portable disk and cannot be set to DeleteWithInstance attribute.', + ], + [ + 'errorCode' => 'InstanceDiskNumLimitExceed', + 'errorMessage' => 'The number of specified disk in an instance exceeds.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified image is not support IoOptimized Instance.', + ], + [ + 'errorCode' => 'InvalidDiskSize.TooSmall', + 'errorMessage' => 'Specified disk size is less than the size of snapshot.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.Mismatch', + 'errorMessage' => 'The specified disk categories combination is not supported.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not support the specified instance type.', + ], + [ + 'errorCode' => 'QuotaExceed.BuyImage', + 'errorMessage' => 'The specified image is from the image market?You have not bought it or your quota has been exceeded.', + ], + [ + 'errorCode' => 'InvalidResourceId.NotSupported', + 'errorMessage' => 'The specified ResourceId does not support tagging.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified RegionId does not support the creation of the network type ECS instance.', + ], + [ + 'errorCode' => 'OperationDenied.ImageNotValid', + 'errorMessage' => 'The specified Image is disabled or is deleted.', + ], + [ + 'errorCode' => 'OperationDenied.SnapshotNotValid', + 'errorMessage' => 'The specified snapshot is not allowed to create disk.', + ], + [ + 'errorCode' => 'OperationDenied.SnapshotNotAllowed', + 'errorMessage' => 'The specified snapshot is not allowed to create disk.', + ], + [ + 'errorCode' => 'OperationDenied.ZoneNotAllowed', + 'errorMessage' => 'The creation of Instance to the specified Zone is not allowed.', + ], + [ + 'errorCode' => 'OperationDenied.ZoneSystemCategoryNotMatch', + 'errorMessage' => 'The specified Zone or cluster does not offer the specified disk category or the speicified zone and cluster do not match.', + ], + [ + 'errorCode' => 'OperationDenied.ResourceControl', + 'errorMessage' => 'The specified region is in resource control, please try later.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The resource is out of usage.', + ], + [ + 'errorCode' => 'OperationDenied.SnapshotParamsNotValid', + 'errorMessage' => 'The capacity of snapshot exceeds the size limit of the specified disk category or the specified category is not authorizied.', + ], + [ + 'errorCode' => 'OperationDenied.DiskTypeNotSupport', + 'errorMessage' => 'The type of the disk does not support the operation.', + ], + [ + 'errorCode' => 'InvalidUserData.Forbidden', + 'errorMessage' => 'User not authorized to input the parameter "UserData", please apply for permission "UserData".', + ], + [ + 'errorCode' => 'Zone.NotOpen', + 'errorMessage' => 'The specified zone is not granted to you to buy resources yet.', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => 'The resource in the specified zone is no longer available for sale. Please try other regions and zones.', + ], + [ + 'errorCode' => 'InvalidClusterId.NotFound', + 'errorMessage' => 'The specified clusterId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ZoneNotSupported', + 'errorMessage' => 'The specified zone does not support this instancetype.', + ], + [ + 'errorCode' => 'InstanceType.Offline', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'DependencyViolation.WindowsInstance', + 'errorMessage' => 'The instance creating is window, cannot use ssh key pair to login.', + ], + [ + 'errorCode' => 'InvalidNetworkType.MismatchRamRole', + 'errorMessage' => 'A RAM role can?t be used for classic instance.', + ], + [ + 'errorCode' => 'InvalidUser.PassRoleForbidden', + 'errorMessage' => 'The RAM user does not have the privilege to pass a RAM role.', + ], + [ + 'errorCode' => 'InvalidParam.TrustedSystemMode', + 'errorMessage' => 'The specified TrustedSystemMode is invalid.', + ], + [ + 'errorCode' => 'InvalidParam.ConfidentialComputingMode', + 'errorMessage' => 'The specified ConfidentialComputingMode is invalid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified instance type does not support trusted system.', + ], + [ + 'errorCode' => 'InvalidSecurityOptions.NotSupported', + 'errorMessage' => 'SecurityOptions for vTPM and Enclave can not both be set.', + ], + [ + 'errorCode' => 'InvalidImage.NotSupported', + 'errorMessage' => 'The specified vTPM instance need UEFI image.', + ], + [ + 'errorCode' => 'Forbidden.RiskControl', + 'errorMessage' => 'This operation is forbidden by Aliyun RiskControl system.', + ], + [ + 'errorCode' => 'InvalidInstance.UnPaidOrder', + 'errorMessage' => 'The specified Instance has unpaid order.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has been in arrears.', + ], + [ + 'errorCode' => 'RealNameAuthenticationError', + 'errorMessage' => 'Your account has not passed the real-name authentication yet.', + ], + [ + 'errorCode' => 'InvalidPayMethod', + 'errorMessage' => 'The specified pay method is not valid.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'ImageNotSupportInstanceType', + 'errorMessage' => 'The specified image does not support the specified InstanceType.', + ], + [ + 'errorCode' => 'DryRun.InvalidAmount', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.InvalidNetworkType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSpotInterruptionBehavior.ClassicNetworkNotSupport', + 'errorMessage' => 'The specified SpotInterruptionBehavior does not support Classic network Instance.', + ], + [ + 'errorCode' => 'InvalidSpotInterruptionBehavior.LocalDiskNotSupport', + 'errorMessage' => 'The specified SpotInterruptionBehavior does not support local disk instance.', + ], + [ + 'errorCode' => 'QuotaExceed.PostPaidDisk', + 'errorMessage' => 'Living postPaid disks quota exceeded.', + ], + [ + 'errorCode' => 'InvalidParameter.NotMatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitch.DefaultVSwitchNotSupport', + 'errorMessage' => 'The specified zone in vpc can\'t support create default vSwitch.', + ], + [ + 'errorCode' => 'OperationDenied.LocalDiskUnsupported', + 'errorMessage' => 'The configuration change is not allowed when the specified instance has local disks mounted.', + ], + [ + 'errorCode' => 'OperationDenied.InconsistentNetwork', + 'errorMessage' => 'The specified security group and vswitch are not in the same vpc.', + ], + [ + 'errorCode' => 'DefaultVswitch.Existed', + 'errorMessage' => 'The default vswitch for VPC already exists.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'CategoryViolation', + 'errorMessage' => 'The specified instance does not support this operation because of its disk category.', + ], + [ + 'errorCode' => 'ResourcesNotInSameZone', + 'errorMessage' => 'The specified instance and dedicated host are not in the same zone.', + ], + [ + 'errorCode' => 'InvalidDisk.SystemDiskSize', + 'errorMessage' => 'The specified SystemDiskSize beyond the permitted range.', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidOperation.NetworkInterface', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniIpv6IpsCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpAssigned', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.Address', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.SecondaryIp', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitch.Ipv6NotTurnOn', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.IpAssign', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.Amount', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.CpuOptionsCore', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.CpuOptionsNuma', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.DeploymentSetInstanceQuotaFull', + 'errorMessage' => 'The instance quota in one deployment set exceeded.', + ], + [ + 'errorCode' => 'InvalidChargeType.ValueNotSupported', + 'errorMessage' => 'Deletion protection is only valid for postPaid instance, not for prePaid or spot instance.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support byok.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in byok white list.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'SecurityRisk.3DVerification', + 'errorMessage' => 'We have detected a security risk with your default credit or debit card. Please proceed with verification via the link in your email.', + ], + [ + 'errorCode' => 'Mayi.InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'InvalidNetworkType', + 'errorMessage' => 'The network type is not support in this region.', + ], + [ + 'errorCode' => 'InvalidAccountStatus', + 'errorMessage' => 'Your account status is invalid, please contact customer service.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrivateIpAddress', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.PerformanceLevelNotMatch', + 'errorMessage' => 'The specified DataDisk.n.PerformanceLevel and DataDisk.n.Size do not match.', + ], + [ + 'errorCode' => 'InvalidStorageSetName.Malformed', + 'errorMessage' => 'Specified parameter StorageSetName is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'Specified parameter Description is not valid.', + ], + [ + 'errorCode' => 'InvalidMaxPartitionNumber.Malformed', + 'errorMessage' => 'Specified parameter MaxPartitionNumber is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetPartitionNumber', + 'errorMessage' => 'Specified parameter StorageSetPartitionNumber is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetId', + 'errorMessage' => 'Specified parameter StorageSetId is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetZoneId', + 'errorMessage' => 'Specified parameter StorageSetZoneId is not valid.', + ], + [ + 'errorCode' => 'EnterpriseGroupLimited.MutliGroupType', + 'errorMessage' => 'The specified instance can\'t join multi SecurityGroup types.', + ], + [ + 'errorCode' => 'EnterpriseGroupLimited.InstanceType', + 'errorMessage' => 'The specified instance type doesn\'t support Enterprise SecurityGroup.', + ], + [ + 'errorCode' => 'QuotaExceed.Tags', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.RegionIdNotSupported', + 'errorMessage' => 'The specified region does not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.FlavorNotSupported', + 'errorMessage' => 'Flavor not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.TimestampNotSupported', + 'errorMessage' => 'Timestamp not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.PaygNotAvailable', + 'errorMessage' => 'Pay-as-you-go instance is not available now.', + ], + [ + 'errorCode' => 'OperationDenied.PrepayNotAvailable', + 'errorMessage' => 'Prepay instance is not available now.', + ], + [ + 'errorCode' => 'OperationDenied.BidOwnResource', + 'errorMessage' => 'Bid user can not own resource.', + ], + [ + 'errorCode' => 'OperationDenied.CloudSSDNotSupported', + 'errorMessage' => 'The specified available zone does not offer the cloud_ssd disk, use cloud_essd instead.', + ], + [ + 'errorCode' => 'QuotaExceed.ElasticQuota', + 'errorMessage' => 'No additional quota is available for the specified ECS instance type.', + ], + [ + 'errorCode' => 'QuotaExceeded.PostpaidDataDiskCapacity', + 'errorMessage' => 'The quota of postpaid data disk capacity exceeds.', + ], + [ + 'errorCode' => 'InvalidImageFamily.MissingAvailableImage', + 'errorMessage' => 'There is no available image related to the specified image family.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportEncryptAlgorithm', + 'errorMessage' => 'The current region does not support creating encrypted disks with EncryptAlgorithm.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidManagedPrivateSpaceId.DedicatedHostIdConflict', + 'errorMessage' => 'ManagedPrivateSpaceId and DedicatedHostId cannot be specified at the same time.', + ], + [ + 'errorCode' => 'InvalidManagedPrivateSpaceId.TenancyConflict', + 'errorMessage' => 'ManagedPrivateSpaceId and Tenancy cannot be specified at the same time.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidEniQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueueNumberExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ExceedInstanceTypeQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIspType.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedIspChargeType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedIspClassicNetwork', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIspBandwidthOut', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedIspNetworkChargeType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIspUID', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedIspRegion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.OnlySupportEnterpriseGroup', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'InstanceDiskLimitExceeded', + 'errorMessage' => 'The amount of the disk on instance reach its limits.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportDiskCategory', + 'errorMessage' => 'The instanceType of the specified instance does not support this disk category.', + ], + [ + 'errorCode' => 'InvalidOperation.ConfidentialComputingModeInInviteOnlyTesting', + 'errorMessage' => 'The specified confidential computing mode is in invite only testing: %s.', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidNetworkInterfaceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.RegionNotSupportNetworkInterfaceId', + 'errorMessage' => 'The specific region does not support network interface id.', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.DiskCategory', + 'errorMessage' => 'The specified disk category does not support creating encrypted system disks or creating encrypted data disks from snapshots. Check the DiskCategory or Encrypted parameter, or check your account for default encryption settings.', + ], + [ + 'errorCode' => 'InvalidOperation.PublicIpAddressNoStock', + 'errorMessage' => 'The public IP address for the specified Region or ChargeType of the instance is out of stock. Please try another Region or ChargeType.', + ], + [ + 'errorCode' => 'AclLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.DataEncryptedKeyCreateFailed', + 'errorMessage' => 'Create kms data encrypted key fail. If you need further assistance, you can contact the KMS Technical Support.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsThreadsPerCore', + 'errorMessage' => 'The specified parameter CpuOptions.ThreadsPerCore is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsCore', + 'errorMessage' => 'The specified parameter CpuOptions.Core is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.CpuOptionsThreadsPerCoreUnsupported', + 'errorMessage' => 'The current instance type does not support setting or modifying the CpuOptions.ThreadsPerCore parameter.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsNuma', + 'errorMessage' => 'The specified parameter CpuOptions.Numa is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter Encrypted must be set to true when creating disks with encrypted snapshots.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchDiskDefaultEncryption', + 'errorMessage' => 'Enabling disk default encryption prevents the creation of non-encrypted disks.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportNetworkEncryption', + 'errorMessage' => 'The specified instance type does not support network encryption.', + ], + [ + 'errorCode' => 'InvalidOperation.UserNotSupportNetworkEncryption', + 'errorMessage' => 'User not support network encryption.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportEniTrunking', + 'errorMessage' => 'The current instance type does not support ENI trunking operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidStorageClusterId.NotExist', + 'errorMessage' => 'The specified StorageClusterId does not exist in current region.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The ZoneId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId', + 'errorMessage' => 'The specified SecurityGroupId is invalid or does not exist.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The SecurityGroupId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidDataDiskSnapshotId.NotFound', + 'errorMessage' => 'The specified parameter "DataDisk.n.SnapshotId" is not valid.', + ], + [ + 'errorCode' => 'InvalidClusterId.NotFound', + 'errorMessage' => 'The ClusterId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'Specified virtual switch does not exist.', + ], + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified instancetype is not support IoOptimized instance.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The InstanceChargeType does not exist in our records.', + ], + [ + 'errorCode' => 'DependencyViolation.IoOptimized', + 'errorMessage' => 'The specified instancetype must be IoOptimized instance.', + ], + [ + 'errorCode' => 'PaymentMethodNotFound', + 'errorMessage' => 'No payment method has been registered on the account.', + ], + [ + 'errorCode' => 'HOSTNAME_ILLEGAL', + 'errorMessage' => 'The specified parameter HostName is not valid.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanImageSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the image size.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanMinSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the min size.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.MoreThanMaxSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is more than the max size.', + ], + [ + 'errorCode' => 'OperationDenied.ImageNotValid', + 'errorMessage' => 'The specified Image is disabled or is deleted.', + ], + [ + 'errorCode' => 'OperationDenied.CreatingConflict', + 'errorMessage' => 'Another Instance has been creating.', + ], + [ + 'errorCode' => 'InvalidKeyPairName.NotFound', + 'errorMessage' => 'The specified parameter KeyPairName does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRamRole.NotFound', + 'errorMessage' => 'The specified parameter "RAMRoleName" does not exist.', + ], + [ + 'errorCode' => 'InvalidLaunchTemplate.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidLaunchTemplateVersion.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidMarketImage.NotFound', + 'errorMessage' => 'The specified marketplace image does not exist, please change the imageId and try again.', + ], + [ + 'errorCode' => 'DeploymentSet.NotFound', + 'errorMessage' => 'The specified deployment set does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.DeploymentSetGroupNo', + 'errorMessage' => 'Parameter DeploymentSetGroupNo is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'InvalidDiskIds.NotPortable', + 'errorMessage' => 'The specified DiskId is not portable.', + ], + [ + 'errorCode' => 'InvalidAutoSnapshotPolicyId.NotFound', + 'errorMessage' => 'Specified parameter AutoSnapshotPolicyId not found.', + ], + ], + 429 => [ + [ + 'errorCode' => 'Throttling.Resource', + 'errorMessage' => 'The request throttle by resource operation.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"OrderId\\": \\"123456****\\",\\n \\"TradePrice\\": 0.165,\\n \\"InstanceIdSets\\": {\\n \\"InstanceIdSet\\": [\\n \\"i-bp67acfmxazb4ph****\\"\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n 123456****\\n 0.165\\n [\\"i-bp67acfmxazb4pd2****\\", \\"i-bp1i43l28m7u48p1****\\", \\"i-bp12yqg7jdyxl11f****\\"]\\n","errorExample":""}]', + 'title' => 'RunInstances', + 'description' => 'Before you call this operation, familiarize yourself with the billing rules and [pricing](https://www.alibabacloud.com/zh/pricing-calculator#/commodity/vm_intl) of ECS resources.'."\n" + ."\n" + .'This operation is an asynchronous operation. After a request to create ECS instances is sent, ECS instance IDs are returned but the creation and startup of the instances may be incomplete. You can call the [DescribeInstanceStatus](~~2679688~~) operation to query the status of the instances. When the status of an instance is `Running` in the DescribeInstanceStatus response, the instance is created and started.'."\n" + ."\n" + .'### [](#)Considerations'."\n" + ."\n" + .'* If the resource inventory is insufficient to complete instance creation, Alibaba Cloud immediately sends an instance creation failure event (SystemFailure.Delete). You can call the [DescribeInstanceHistoryEvents](~~2679897~~) operation to check whether an instance creation failure event exists. For more information, see [System events related to instance creation failures](~~2545990~~).'."\n" + .'* Make sure that the number of ECS instances you create or the number of vCPUs on ECS instances of all instance types you create does not exceed the corresponding quota. Go to the [Quota Center](https://quotas.console.aliyun.com/products/ecs/quotas) to view the quotas.'."\n" + .'* Before you create ECS instances of the Virtual Private Cloud (VPC) type in a region, [create a VPC](~~65430~~) in the region.'."\n" + ."\n" + .'### [](#)Precautions'."\n" + ."\n" + .'* If you create a subscription instance (`PrePaid`), available coupons in your account are automatically used.'."\n" + .'* You can call the RunInstances operation to create up to 100 ECS instances in a single request. To create more than 100 ECS instances, we recommend that you initiate multiple requests in batches or concurrently.'."\n" + .'* If you set `InternetMaxBandwidthOut` to a value greater than 0, public IP addresses are automatically assigned to the ECS instances to be created.'."\n" + ."\n" + .'> For the limits on the sum of maximum public bandwidths of ECS instances that use the pay-by-bandwidth billing method for network usage per region per Alibaba Cloud account, see the [Public bandwidth](~~25412#BandwidthQuota~~) section of the "Limits and quotas on ECS" topic.'."\n" + ."\n" + .'### [](#)Suggestions'."\n" + ."\n" + .'* **Test scenarios**: Set `DryRun` to true to perform a dry run without performing the actual request.'."\n" + .'* **Release of ECS instances**: Use `AutoReleaseTime` to configure an automatic release time for ECS instances in the request to RunInstances or call the [DeleteInstances](~~2679710~~) operation to release the instances.'."\n" + .'* **Management and search of ECS instances**: Add tags to the ECS instances by specifying `Tag.N.Key` and `Tag.N.Value` and append incremental suffixes by specifying `UniqueSuffix` to the hostname specified by `HostName` and the instance name specified by `InstanceName`. For more information, see [Batch configure sequential names or hostnames for multiple instances](~~196048~~).'."\n" + .'* **Launch template**: A launch template contains the parameters required to create an ECS instance so that you do not have to specify the parameters every time you create ECS instances. You can call the [CreateLaunchTemplate](~~2679729~~) operation to create a launch template. Then, in the request to `RunInstances`, you can specify `LaunchTemplateId` and `LaunchTemplateVersion` to use the launch template.'."\n" + .'* **Disabling of Hyper-Threading (HT)**: In memory-intensive scenarios, set `CpuOptions.ThreadsPerCore` to 1 to disable HT and increase the memory-to-vCPU ratio.'."\n" + .'* **Enabling of Jumbo Frames**: Set `NetworkOptions.EnableJumboFrame` to true to enable the `Jumbo Frames` feature when you create ECS instances. For more information, see [Jumbo Frames](~~200512~~).'."\n" + ."\n" + .'## [](#)Sample requests'."\n" + ."\n" + .'Use a specific image to create ECS instances of a specific instance type in the China (Hangzhou) region. The instances use disks with a specific capacity as the system disk and data disks and are automatically assigned public IP addresses. The instances have user-defined names and logon passwords. The instances are assigned to a specific security group and connected to a specific vSwitch. Request parameters:'."\n" + ."\n" + .' RegionId:"cn-hangzhou", //Set the region ID to cn-hangzhou, which specifies the China (Hangzhou) region.'."\n" + .' ImageId:"aliyun_3_x64_20G_alibase_20221102.vhd", //Set the image ID to aliyun_3_x64_20G_alibase_20221102.vhd.'."\n" + .' InstanceType:"ecs.g7.large", //Set the instance type to ecs.g7.large.'."\n" + .' SecurityGroupId:"sg-bp150uqocpf9jj70****", //Set the security group ID to sg-bp150uqocpf9jj70****.'."\n" + .' VSwitchId:"vsw-bp1qo7s91cbch5i4l****", //Set the vSwitch ID to vsw-bp1qo7s91cbch5i4l****.'."\n" + .' SystemDisk:{'."\n" + .' Category:"cloud_essd", //Set the system disk category to cloud_essd, which specifies the Enterprise SSD (ESSD) category.'."\n" + .' Size:40, //Set the system disk size to 40. Unit: GiB.'."\n" + .' },'."\n" + .' DataDisk:['."\n" + .' {'."\n" + .' Category:"cloud_essd", //Set the data disk category to cloud_essd, which specifies the ESSD category.'."\n" + .' Size:100, //Set the data disk size to 100. Unit: GiB.'."\n" + .' }'."\n" + .' ],'."\n" + .' HostName:"ECS-test", //Set the instance hostname to ECS-test.'."\n" + .' Password:"ECS@test1234", //Set the logon password to ECS@test1234.'."\n" + .' InternetMaxBandwidthOut:10 //Set the outbound public bandwidth to 10. Unit: Mbit/s.'."\n" + ."\n" + .'Examples on how to create instances of different types based on the preceding parameters:'."\n" + ."\n" + .'**Example: Create five subscription ECS instances for which auto-renewal is enabled**'."\n" + ."\n" + .' Amount:5, //Set the number of ECS instances that you want to create to 5.'."\n" + .' InstanceChargeType:"PrePaid", //Set the billing method to PrePaid, which specifies the subscription billing method.'."\n" + .' PeriodUnit:"Month", //Set the subscription period unit to Month.'."\n" + .' Period:1, //Set the subscription period to 1. The unit is specified by PeriodUnit, which is Month in this example.'."\n" + .' AutoRenew:true, //Set this parameter to true to enable auto-renewal.'."\n" + .' AutoRenewPeriod:1 //Set the renewal period to 1. The unit is specified by PeriodUnit, which is Month in this example.'."\n" + ."\n" + .'**Example: Create 10 pay-as-you-go ECS instances**'."\n" + ."\n" + .' Amount:10, //Set the number of ECS instances that you want to create to 10.'."\n" + .' InstanceChargeType:"PostPaid", //Set the billing method to PostPaid, which specifies the pay-as-you-go billing method.'."\n" + .' SpotStrategy:"NoSpot" //Set this parameter to NoSpot, which is the default value and specifies that the instances are created as pay-as-you-go instances.'."\n" + ."\n" + .'**Example: Create 20 spot instances that use a specific bidding policy and a protection period**'."\n" + ."\n" + .' Amount:20, //Set the number of ECS instances that you want to create to 20.'."\n" + .' InstanceChargeType:"PostPaid",'."\n" + .' SpotStrategy:"SpotAsPriceGo", //Set the bidding policy to SpotAsPriceGo, which specifies that the instances are created as spot instances for which the market price at the time of purchase is automatically used as the bid price.'."\n" + .' SpotDuration:1 //Set the protection period of the spot instances to 1. Unit: hours.'."\n" + ."\n" + .'Use a launch template created by calling the [CreateLaunchTemplate](~~2679729~~) operation to create ECS instances in the China (Hangzhou) region. Examples:'."\n" + ."\n" + .'**Example: Create 10 ECS instances based on a launch template**'."\n" + ."\n" + .' RegionId:"cn-hangzhou", //Set the region ID to cn-hangzhou, which specifies the China (Hangzhou) region.'."\n" + .' Amount:10, //Set the number of ECS instances that you want to create to 10.'."\n" + .' LaunchTemplateId:"lt-bp14xczpoxvb6rre****" //Set the launch template ID to lt-bp14xczpoxvb6rre****.'."\n" + ."\n" + .'> If a parameter is specified both in the launch template that you reference in a request and in the instance parameters of the same request, the value specified in the instance parameters takes precedence. For example, if you set InstanceChargeType in the launch template to PrePaid (subscription) and set InstanceChargeType in the instance parameters to PostPaid (pay-as-you-go), the created instances are pay-as-you-go instances.'."\n" + ."\n" + .'**Example: Use a full image (an image that contains the system disk and data disks) to create an ECS instance**'."\n" + ."\n" + .' RegionId:"cn-hangzhou", //Set the region ID to cn-hangzhou, which specifies the China (Hangzhou) region.'."\n" + .' ImageId = m-bp13ohd32cvzpq9e****, //Set the custom image ID to m-bp13ohd32cvzpq9e****.'."\n" + .' InstanceType = ecs.u1-c1m1.large, //Set the instance type to ecs.u1-c1m1.large.'."\n" + .' SecurityGroupId = sg-bp10jztp6b0sdsyl****, //Set the security group ID to sg-bp10jztp6b0sdsyl****.'."\n" + .' VSwitchId = vsw-bp19wo63nleroq22g****, //Set the vSwitch ID to vsw-bp19wo63nleroq22g****.'."\n" + .' SystemDisk.Size = 50, //Set the size of the system disk in the full image to 50. Unit: GiB.'."\n" + .' SystemDisk.Category = cloud_auto, //Set the category of the system disk in the full image to cloud_auto, which specifies the ESSD AutoPL disk category.'."\n" + .' DataDisk.0.Device = /dev/xvdb, //Set the mount point of the data disk in the full image to /dev/xvdb.'."\n" + .' DataDisk.0.Size = 50, //Set the size of the data disk in the full image to 50. Unit: GiB.'."\n" + .' DataDisk.0.Category = cloud_essd, //Set the category of the data disk in the full image to cloud_essd, which specifies the ESSD category.'."\n" + .' DataDisk.1.Device = /dev/xvdc, //Set the mount point of the new data disk to /dev/xvdc. If you want to use a new data disk to replace the data disk in the full image, set DataDisk.1.Device to /dev/xvdb (the default mount point of the data disk in the full image).'."\n" + .' DataDisk.1.Size = 70, //Set the size of the new data disk to 70. Unit: GiB.'."\n" + .' DataDisk.1.Category = cloud_auto, //Set the category of the new data disk to cloud_auto, which specifies the ESSD AutoPL disk category.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => "\n", + ], + 'CreateInstance' => [ + 'summary' => 'Creates a subscription or pay-as-you-go Elastic Compute Service (ECS) instance. When you call this operation, you can specify different parameters to create instances based on your business requirements.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + [ + 'APP' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28832', + 'abilityTreeNodes' => [ + 'FEATUREecsYLNQGM', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image to use to create the instance. To use an Alibaba Cloud Marketplace image, you can view the `image ID` on the product page of the Alibaba Cloud Marketplace image. This parameter is required if you do not specify `ImageFamily` to obtain the latest available custom image from the specified image family.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ubuntu_18_04_64_20G_alibase_20190624.vhd', + ], + ], + [ + 'name' => 'ImageFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image family. You can set this parameter to obtain the latest available custom image from the specified image family to create the instance.'."\n" + ."\n" + .'* ImageFamily must be empty if `ImageId` is specified.'."\n" + .'* ImageFamily can be specified if `ImageId` is not specified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hangzhou-daily-update', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type.'."\n" + ."\n" + .'* Instance type selection: See [Instance families](~~25378~~) or call the [DescribeInstanceTypes](~~25620~~) operation to query the performance data of instance types, or see [Best practices for instance type selection](~~58291~~) to learn about how to select instance types.'."\n" + .'* Query of available resources: Call the [DescribeAvailableResource](~~66186~~) operation to query resources available in a specific region or zone.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecs.g6.large', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg****', + ], + ], + [ + 'name' => 'InstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with `http://` or `https://`. It can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-). If you do not specify this parameter, the instance ID is used as the instance name by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2018-12-06T103200Z', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method for network usage. Default value: PayByTraffic. Valid values:'."\n" + ."\n" + .'* PayByBandwidth: pay-by-bandwidth'."\n" + .'* PayByTraffic (default): pay-by-traffic'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method is used for network usage, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios where demand outstrips resource supplies, these maximum bandwidth values may be limited. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal for the instance. This parameter is valid only if `InstanceChargeType` is set to `PrePaid`. Valid values:'."\n" + ."\n" + .'* true: enables auto-renewal.'."\n" + .'* false: does not enable auto-renewal.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'AutoRenewPeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal period of the instance. This parameter is required if AutoRenew is set to true.'."\n" + ."\n" + .'Valid values if PeriodUnit is set to Month: 1, 2, 3, 6, and 12.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'InternetMaxBandwidthIn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum inbound public bandwidth. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* When the purchased outbound public bandwidth is less than or equal to 10 Mbit/s, the valid values of this parameter are 1 to 10 and the default value is 10.'."\n" + .'* When the purchased outbound public bandwidth is greater than 10 Mbit/s, the valid values of this parameter are 1 to the `InternetMaxBandwidthOut` value and the default value is the `InternetMaxBandwidthOut` value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '200', + 'minimum' => '1', + 'example' => '50', + ], + ], + [ + 'name' => 'InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s. Valid values: 0 to 100.'."\n" + ."\n" + .'Default value: 0.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'HostName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The hostname of the instance.'."\n" + ."\n" + .'* The hostname cannot start or end with a period (.) or hyphen (-). It cannot contain consecutive periods (.) or hyphens (-).'."\n" + .'* For a Windows instance, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. It can contain letters, digits, and hyphens (-).'."\n" + .'* For an instance that runs another type of operating system such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate the hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'LocalHostName', + ], + ], + [ + 'name' => 'Password', + 'in' => 'query', + 'schema' => [ + 'description' => 'The password of the instance. The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The following special characters are supported:'."\n" + ."\n" + .' ( ) ` ~ ! @ # $ % ^ & * - _ + = | { } [ ] : ; \' < > , . ? /'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* For security reasons, we recommend that you use HTTPS to send requests if the Password parameter is specified.'."\n" + .'* Passwords of Windows instances cannot start with a forward slash (/).'."\n" + .'* Passwords cannot be set for instances that run specific types of operating systems such as Others Linux and Fedora CoreOS. For these instances, only key pairs can be set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestEcs123!', + ], + ], + [ + 'name' => 'PasswordInherit', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use the password preset in the image. When you use this parameter, leave the Password parameter empty and make sure that the selected image has a password preset.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DeploymentSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the deployment set to which to deploy the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ds-bp1brhwhoqinyjd6****', + ], + ], + [ + 'name' => 'DeploymentSetGroupNo', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the deployment set group to which to deploy the instance. If the deployment set specified by the DeploymentSetId parameter uses the high availability group strategy (AvailabilityGroup), you can use the DeploymentSetGroupNo parameter to specify a deployment set group in the deployment set. Valid values: 1 to 7.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the zone in which to create the instance. You can call the [DescribeZones](~~25610~~) operation to query the zones in a specific region.'."\n" + ."\n" + .'> If `VSwitchId` is specified, the zone specified by `ZoneId` must be the zone where the specified vSwitch resides. You can also leave `ZoneId` empty. Then, the system selects the zone where the specified vSwitch resides.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'ClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the cluster in which to create the instance.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use other parameters to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'c-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.**** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'VlanId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual LAN (VLAN).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'InnerIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The internal IP address to assign to the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.**.**', + ], + ], + [ + 'name' => 'SystemDisk.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the system disk. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Basic disks: 20 to 500.'."\n" + .'* Other disks: 20 to 2048.'."\n" + ."\n" + .'The value of this parameter must be at least 20 and greater than or equal to the size of the image.'."\n" + ."\n" + .'Default value: 40 or the size of the image, whichever is greater.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '40', + ], + ], + [ + 'name' => 'SystemDisk.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud_essd: ESSD. If SystemDisk.Category is set to this value, you can use `SystemDisk.PerformanceLevel` to specify the performance level of the disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud: basic disk.'."\n" + ."\n" + .'For non-I/O optimized instances of retired instance types, the default value is cloud. For other types of instances, the default value is cloud_efficiency.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'SystemDisk.DiskName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the system disk. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with `http://` or `https://`. It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SystemDiskName', + ], + ], + [ + 'name' => 'SystemDisk.Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the system disk. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestDescription', + ], + ], + [ + 'name' => 'SystemDisk.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the ESSD that is used as the system disk. Default value: PL1. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1 (default): A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'For information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + ], + [ + 'name' => 'NodeControllerId', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the instance. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'InstanceTest', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which to connect the instance. This parameter is required when you create an instance in a VPC. You can call the [DescribeVSwitches](~~35748~~) operation to query available vSwitches.'."\n" + ."\n" + .'> If `VSwitchId` is specified, the zone specified by `ZoneId` must be the zone where the specified vSwitch resides. You can also leave `ZoneId` empty. Then, the system selects the zone where the specified vSwitch resides.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1s5fnvk4gn2tws0****', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The private IP address to assign to the instance. The private IP address must be an available IP address in the CIDR block of the specified vSwitch.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '172.16.236.*', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the instance is I/O optimized. Valid values:'."\n" + ."\n" + .'* none: The instance is not I/O optimized.'."\n" + .'* optimized: The ECS instance is I/O optimized.'."\n" + ."\n" + .'For retired instance types, the default value is none. For more information, see [Retired instance types](~~55263~~).'."\n" + ."\n" + .'For other instance types, the default value is optimized.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optimized', + ], + ], + [ + 'name' => 'UseAdditionalService', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use the system configurations for virtual machines. Alibaba Cloud provides the Network Time Protocol (NTP) and Key Management Service (KMS) system configurations for Windows and the NTP and Yellowdog Updater, Modified (YUM) system configurations for Linux.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription. If you set this parameter to PrePaid, make sure that you have sufficient balance or credit in your account. Otherwise, an `InvalidPayMethod` error is returned.'."\n" + .'* PostPaid (default): pay-as-you-go.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription period of the instance. The unit is specified by `PeriodUnit`. This parameter is valid and required only when `InstanceChargeType` is set to `PrePaid`. If `DedicatedHostId` is specified, the value of Period must not exceed the subscription period of the specified dedicated host. Valid values:'."\n" + ."\n" + .'Valid values if PeriodUnit is set to Month: 1, 2, 3, 6, and 12.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the subscription period. Valid values:'."\n" + ."\n" + .'Month'."\n" + ."\n" + .'Default value: Month.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'UserData', + 'in' => 'query', + 'schema' => [ + 'description' => 'The user data of the instance. The user data must be encoded in Base64. The maximum size of raw data is 32 KB.', + 'type' => 'string', + 'required' => false, + 'example' => 'ZWNobyBoZWxsbyBlY3Mh', + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. This parameter is valid only if you set `InstanceChargeType` to `PostPaid`. Valid values:'."\n" + ."\n" + .'* NoSpot (default): The instance is created as a regular pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is a spot instance for which you specify the maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is a spot instance for which the market price at the time of purchase is automatically used as the bid price. The market price can be up to the pay-as-you-go price.', + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair.'."\n" + ."\n" + .'> For Windows instances, this parameter is ignored. This parameter is empty by default. The `Password` parameter takes effect even if the KeyPairName parameter is specified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeyPairTestName', + ], + ], + [ + 'name' => 'SpotPriceLimit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum hourly price of the instance. The value is accurate to three decimal places. This parameter is valid only when `SpotStrategy` is set to `SpotWithPriceLimit`.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '0.98', + ], + ], + [ + 'name' => 'SpotDuration', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Default value: 1. Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance runs for 1 hour. The system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* You can set this parameter only to 0 or 1.'."\n" + ."\n" + .'* The spot instance is billed by second. Specify an appropriate protection period.'."\n" + ."\n" + .'* Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '6', + 'minimum' => '0', + 'example' => '1', + ], + ], + [ + 'name' => 'SpotInterruptionBehavior', + 'in' => 'query', + 'schema' => [ + 'description' => 'The interruption mode of the spot instance. Valid values:'."\n" + ."\n" + .'* Terminate: The instance is released.'."\n" + ."\n" + .'* Stop: The instance is stopped in economical mode.'."\n" + ."\n" + .' For information about the economical mode, see [Economical mode](~~63353~~).'."\n" + ."\n" + .'Default value: Terminate.', + 'type' => 'string', + 'required' => false, + 'example' => 'Terminate', + ], + ], + [ + 'name' => 'RamRoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance Resource Access Management (RAM) role. You can call the [ListRoles](~~28713~~) operation provided by RAM to query the instance RAM roles that you created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RAMTestName', + ], + ], + [ + 'name' => 'SecurityEnhancementStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable security hardening. Valid values:'."\n" + ."\n" + .'* Active: enables security hardening. This value applies only to public images.'."\n" + .'* Deactive: disables security hardening. This value is applicable to all images.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'HpcClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the high performance computing (HPC) cluster to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hpc-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, service limits, and unavailable ECS resources. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false (default): performs a dry run and performs the actual request. If the request passes the dry run, the operation is performed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DedicatedHostId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the dedicated host on which to create the instance.'."\n" + ."\n" + .'You can call the [DescribeDedicatedHosts](~~134242~~) operation to query the list of dedicated host IDs.'."\n" + ."\n" + .'> Spot instances (spot instances) cannot be created on dedicated hosts. If you specify DedicatedHostId, SpotStrategy and SpotPriceLimit are automatically ignored.', + 'type' => 'string', + 'required' => false, + 'example' => 'dh-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'CreditSpecification', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard: standard mode. For more information, see the "Standard mode" section in the [Overview of burstable instances](~~59977~~) topic.'."\n" + .'* Unlimited: unlimited mode. For more information, see the "Unlimited mode" section in the [Burstable instances](~~59977~~) topic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'DeletionProtection', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable release protection for the instance. This parameter indicates whether you can use the ECS console or call the [DeleteInstance](~~25507~~) operation to release the instance.'."\n" + ."\n" + .'* true: enables release protection.'."\n" + .'* false (default): disables release protection.'."\n" + ."\n" + .'> This parameter is applicable only to pay-as-you-go instances. It can protect instances against manual releases, but not against automatic releases.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'HibernationOptions.Configured', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Affinity', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to associate the instance on a dedicated host with the dedicated host. Valid values:'."\n" + ."\n" + .'* default: does not associate the instance with the dedicated host. When you start an instance that was stopped in economical mode, the instance is automatically deployed to another dedicated host in the automatic deployment resource pool if the available resources of the original dedicated host are insufficient.'."\n" + .'* host: associates the instance with the dedicated host. When you start an instance that was stopped in economical mode, the instance remains on the original dedicated host. If the available resources of the original dedicated host are insufficient, the instance cannot start.'."\n" + ."\n" + .'Default value: default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'default', + ], + ], + [ + 'name' => 'Tenancy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to create the instance on a dedicated host. Valid values:'."\n" + ."\n" + .'* default: creates the instance on a non-dedicated host.'."\n" + .'* host: creates the instance on a dedicated host. If you do not specify `DedicatedHostId`, Alibaba Cloud selects a dedicated host for the instance.'."\n" + ."\n" + .'Default value: default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'default', + ], + ], + [ + 'name' => 'StorageSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the storage set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ss-bp1j4i2jdf3owlhe****', + ], + ], + [ + 'name' => 'StorageSetPartitionNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of partitions in the storage set. Valid values: greater than or equal to 2.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '2', + ], + ], + [ + 'name' => 'HttpEndpoint', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the access channel for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: enabled.'."\n" + ."\n" + .'> For more information about instance metadata, see [Overview of instance metadata](~~49122~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'enabled', + ], + ], + [ + 'name' => 'HttpTokens', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcibly use the security hardening mode (IMDSv2) to access instance metadata. Valid values:'."\n" + ."\n" + .'* optional: does not forcefully use the security hardening mode (IMDSv2).'."\n" + .'* required: forcefully uses the security hardening mode (IMDSv2). After you set this parameter to required, you cannot access instance metadata in normal mode.'."\n" + ."\n" + .'Default value: optional.'."\n" + ."\n" + .'> For more information about the modes of accessing instance metadata, see [Access mode of instance metadata](~~150575~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optional', + ], + ], + [ + 'name' => 'HttpPutResponseHopLimit', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + ], + [ + 'name' => 'PrivatePoolOptions.MatchCriteria', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the private pool to use to start the instance. A private pool is generated when an elasticity assurance or a capacity reservation takes effect. You can select a private pool to start instances. Valid values:'."\n" + ."\n" + .'* Open: open private pool. The system selects a matching open private pool to start the instance. If no matching open private pools are found, resources in the public pool are used. When you set this parameter to Open, you can leave the `PrivatePoolOptions.Id` parameter empty.'."\n" + .'* Target: specified private pool. The system uses the capacity in a specified private pool to start the instance. If the specified private pool is unavailable, the instance cannot be started. If you set this parameter to Target, you must specify the `PrivatePoolOptions.Id` parameter.'."\n" + .'* None: no private pool. The capacity in private pools is not used.'."\n" + ."\n" + .'Default value: none.'."\n" + ."\n" + .'In the following scenarios, the PrivatePoolOptions.MatchCriteria parameter can be set only to `None` or left empty:'."\n" + ."\n" + .'* Create a spot instance.'."\n" + .'* Create an instance in the classic network.'."\n" + .'* Create an instance on a dedicated host.', + 'type' => 'string', + 'required' => false, + 'example' => 'Open', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the private pool. The ID of a private pool is the same as that of the elasticity assurance or capacity reservation for which the private pool is generated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eap-bp67acfmxazb4****', + ], + ], + [ + 'name' => 'DataDisk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The data disks.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PerformanceLevel' => [ + 'description' => 'The performance level of the ESSD to use as data disk N. The value of N must be the same as that in `DataDisk.N.Category` when DataDisk.N.Category is set to cloud_essd. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1 (default): A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'For more information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL2', + ], + 'Description' => [ + 'description' => 'The description of data disk N. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestDescription', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot to use to create data disk N. Valid values of N: 1 to 16.'."\n" + ."\n" + .'* If `DataDisk.N.SnapshotId` is specified, `DataDisk.N.Size` is ignored. The data disk is created based on the size of the specified snapshot.'."\n" + .'* Use snapshots created on or after July 15, 2013. Otherwise, an error is returned and your request is rejected.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp17441ohwka0yuh****', + ], + 'Size' => [ + 'description' => 'The size of data disk N. Valid values of N: 1 to 16. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_efficiency: 20 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_ssd: 20 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_essd: vary based on the `DataDisk.N.PerformanceLevel` value.'."\n" + ."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL0: 1 to 65536.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL1: 20 to 65536.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL2: 461 to 65536.'."\n" + .' * Valid values when DataDisk.N.PerformanceLevel is set to PL3: 1261 to 65536.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud: 5 to 2000.'."\n" + ."\n" + .'> The value of this parameter must be greater than or equal to the size of the snapshot specified by `SnapshotId`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + 'Device' => [ + 'description' => 'The mount point of data disk N.'."\n" + ."\n" + .'> This parameter is applicable to scenarios in which a full image is used to create instances. A full image is an image that contains an operating system, application software, and business data. For these scenarios, you can set this parameter to the mount point of data disk N contained in the full image and modify the `DataDisk.N.Size` and `DataDisk.N.Category` parameters to change the category and size of data disk N created based on the image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '/dev/xvdb', + ], + 'DiskName' => [ + 'description' => 'The name of data disk N. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'DataDiskName', + ], + 'Category' => [ + 'description' => 'The category of data disk N. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: utra disk.'."\n" + ."\n" + .'* cloud_ssd: standard SSD.'."\n" + ."\n" + .'* cloud_essd: ESSD.'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + ."\n" + .'* cloud_auto: ESSD AutoPL disk.'."\n" + ."\n" + .'* cloud_essd_entry: ESSD Entry disk.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** This parameter can be set to `cloud_essd_entry` only when `InstanceType` is set to `ecs.u1` or `ecs.e`.'."\n" + ."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk.'."\n" + ."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk.'."\n" + ."\n" + .'For I/O optimized instances, the default value is cloud_efficiency. For non-I/O optimized instances, the default value is cloud.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + 'DeleteWithInstance' => [ + 'description' => 'Specifies whether to release data disk N when the instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key to use for data disk N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d****', + 'maxLength' => 64, + ], + 'EncryptAlgorithm' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'Encrypted' => [ + 'description' => 'Specifies whether to encrypt data disk N. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'StorageClusterId' => [ + 'description' => 'The ID of the dedicated block storage cluster to which data disk N belongs. If you want to use a disk in a dedicated block storage cluster as data disk N when you create the instance, specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dbsc-j5e1sf2vaf5he8m2****', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'Arn', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RoleType' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Primary', + ], + 'Rolearn' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'acs:ram::123456789012****:role/adminrole', + ], + 'AssumeRoleFor' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1234567890', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The key of tag N to add to the instance.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use Tag.N.key to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test', + ], + 'Key' => [ + 'description' => 'The key of tag N to add to the instance, disks, and primary ENI. Valid values of N: 1 to 20. 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`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the instance, disks, and primary ENI. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The value of tag N to add to the instance.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use Tag.N.Value to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'SystemDisk', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The parameter is related to the system disk. You can use `StorageClusterId` to specify the ID of a dedicated block storage cluster.'."\n", + 'type' => 'object', + 'properties' => [ + 'StorageClusterId' => [ + 'description' => 'The ID of the dedicated block storage cluster. If you want to use disks in a dedicated block storage cluster as system disks when you create instances, you need to specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dbsc-j5e1sf2vaf5he8m2****', + ], + ], + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'InstanceId' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + 'OrderId' => [ + 'description' => 'The order ID. This parameter is returned only if `InstanceChargeType` is set to PrePaid.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + 'TradePrice' => [ + 'description' => 'The transaction price.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '0.165', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidStorageClusterId.CapacityNotEnough', + 'errorMessage' => 'The remaining capacity of the current dedicated storage cluster is less than the size of disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.StatusNotSupport', + 'errorMessage' => 'The current status of the dedicated storage cluster cannot create a cloud disk yet.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.ZoneIdEmpty', + 'errorMessage' => 'The specified param ZoneId cannot be empty when StorageClusterId given.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.PerformanceLevelNotMatch', + 'errorMessage' => 'The current dedicated storage cluster cannot create this performance level of disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.CategoryNotMatch', + 'errorMessage' => 'The current dedicated storage cluster cannot create this category of disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.DiskSizeEmpty', + 'errorMessage' => 'The specified param DiskSize cannot be empty when StorageClusterId given.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => 'The specified InternetChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter "InternetMaxBandwidthOut" is not valid.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter " SystemDisk.Category " is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter "Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidHostName.Malformed', + 'errorMessage' => 'The specified parameter "HostName" is not valid.', + ], + [ + 'errorCode' => 'InvalidPassword.Malformed', + 'errorMessage' => 'The specified parameter "Password" is not valid.', + ], + [ + 'errorCode' => 'InvalidPasswordParam.Mismatch', + 'errorMessage' => 'The input password should be null when passwdInherit is true.', + ], + [ + 'errorCode' => 'InvalidDiskName.Malformed', + 'errorMessage' => 'The specified parameter "SystemDisk.DiskName or DataDisk.n.DiskName" is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskDescription.Malformed', + 'errorMessage' => 'The specified parameter "SystemDisk.DiskDescription" or "DataDisk.n.Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DataDisk.n.Category" is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDevice.Malformed', + 'errorMessage' => 'The specified parameter "DataDisk.n.Device" is not valid.', + ], + [ + 'errorCode' => 'InvalidNodeControllerId.Malformed', + 'errorMessage' => 'The specified parameter "NodeControllerId" is not valid.', + ], + [ + 'errorCode' => 'InvalidInnerIpAddress.Malformed', + 'errorMessage' => 'The specified parameter "InnerIpAddress" is not valid.', + ], + [ + 'errorCode' => 'InvalidInnerIpAddress.Unusable', + 'errorMessage' => 'The specified InnerIpAddress is already used or not found in usable ip range.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified parameter "VlanId" is not valid or vlan has not enough IP address.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The specified image does not support the specified instance type.', + ], + [ + 'errorCode' => 'ImageNotSupportCloudInit', + 'errorMessage' => 'The specified image does not support cloud-init.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.BasedSnapshotTooOld', + 'errorMessage' => 'The specified snapshot is created before 2013-07-15.', + ], + [ + 'errorCode' => 'QuotaExceed.AfterpayInstance', + 'errorMessage' => 'The maximum number of Pay-As-You-Go instances is exceeded: %s.', + ], + [ + 'errorCode' => 'InvalidMarketImageChargeType.NotSupport', + 'errorMessage' => 'The specified chargeType of marketImage is unsupported.', + ], + [ + 'errorCode' => 'InvalidInstanceName.Malformed', + 'errorMessage' => 'The specified parameter "InstanceName" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Mismatch', + 'errorMessage' => 'Specified security group and virtual switch are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidNetworkType.Mismatch', + 'errorMessage' => 'Specified parameter InternetMaxBandwidthIn or InternetMaxBandwidthOut conflict with instance network type.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress', + 'errorMessage' => 'Specified private IP address is not in the CIDR block of virtual switch.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Malformed', + 'errorMessage' => 'Specified private IP address is invalid.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Duplicated', + 'errorMessage' => 'Specified private IP address is duplicated.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrivateIpAddress', + 'errorMessage' => 'Don\'t have enough private IPs in this switch.', + ], + [ + 'errorCode' => 'QuotaExceeded', + 'errorMessage' => 'Living instances quota exceeded in this VPC.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current status of virtual switch does not support this operation.', + ], + [ + 'errorCode' => 'ResourceNotAvailable', + 'errorMessage' => 'Resource you requested is not available in this region or zone.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "VSwitchId" that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.Mismatch', + 'errorMessage' => 'The specified disk categories\' combination is not supported.', + ], + [ + 'errorCode' => 'InvalidIoOptimizedValue.ValueNotSupported', + 'errorMessage' => 'IoOptimized value not supported.', + ], + [ + 'errorCode' => 'MissingParamter', + 'errorMessage' => 'The specified parameter "Period" is not null.', + ], + [ + 'errorCode' => 'InvalidPeriod', + 'errorMessage' => 'The specified period is not valid.', + ], + [ + 'errorCode' => 'InstanceDiskCategoryLimitExceed', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.', + ], + [ + 'errorCode' => 'InvalidParameter.Bandwidth', + 'errorMessage' => 'The specified parameter Bandwidth is not valid.', + ], + [ + 'errorCode' => 'InvalidIPAddress.AlreadyUsed', + 'errorMessage' => 'The specified IPAddress is already used by other resource.', + ], + [ + 'errorCode' => 'InvalidUserData.SizeExceeded', + 'errorMessage' => 'The specified parameter "UserData" exceeds the size.', + ], + [ + 'errorCode' => 'InvalidUserData.NotSupported', + 'errorMessage' => 'The specified parameter "UserData" only support the vpc and IoOptimized Instance.', + ], + [ + 'errorCode' => 'InstanceDiskNumber.LimitExceed', + 'errorMessage' => 'The total number of specified disk in an instance exceeds.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has an outstanding payment.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DiskCategory" is not valid.', + ], + [ + 'errorCode' => 'InvalidAutoRenewPeriod.ValueNotSupported', + 'errorMessage' => 'The specified autoRenewPeriod is not valid.', + ], + [ + 'errorCode' => 'InvalidSpotStrategy', + 'errorMessage' => 'The specified SpotStrategy is not valid.', + ], + [ + 'errorCode' => 'InvalidSpotParam.EmptyZoneID', + 'errorMessage' => 'The specified ZoneId is empty when SpotStrategy is set.', + ], + [ + 'errorCode' => 'InvalidSpotPriceLimit', + 'errorMessage' => 'The specified SpotPriceLimitis not valid.', + ], + [ + 'errorCode' => 'InvalidSpotDuration', + 'errorMessage' => 'The specified SpotDuration is not valid.', + ], + [ + 'errorCode' => 'InvalidSpotAuthorized', + 'errorMessage' => 'The specified Spot param is unauthorized.', + ], + [ + 'errorCode' => 'InvalidSpotPrepaid', + 'errorMessage' => 'The specified Spot type is not support PrePay Instance.', + ], + [ + 'errorCode' => 'InvalidSpotAliUid', + 'errorMessage' => 'The specified UID is not authorized to use SPOT instance.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EncryptedIllegal', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EncryptedNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EncryptedOption.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSpotPriceLimit.LowerThanPublicPrice', + 'errorMessage' => 'The specified parameter "soptPriceLimit" can\'t be lower than current public price.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.Unnecessary', + 'errorMessage' => 'The specified HpcClusterId is unnecessary.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.Necessary', + 'errorMessage' => 'The VSwitchId is necessary.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.Necessary', + 'errorMessage' => 'The HpcClusterId is necessary.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.NotFound', + 'errorMessage' => 'The specified HpcClusterId is not found.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.Creating', + 'errorMessage' => 'The specified HpcClusterId is creating.', + ], + [ + 'errorCode' => 'InvalidPeriodUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PeriodUnit is not valid.', + ], + [ + 'errorCode' => 'IncorrectImageStatus', + 'errorMessage' => 'Encrypted snapshots do not support this operation.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.NotInDefaultVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'VpcNotFound', + 'errorMessage' => 'Vpc is not found according to the specified VSwitch or the vpc does not belong to you.', + ], + [ + 'errorCode' => 'InvalidSpotInterruptionBehavior', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.IllegalPaymentPolicy', + 'errorMessage' => 'The current payment policy is illegal, please connect your service provider to authenticate relative agreement.', + ], + [ + 'errorCode' => 'InvalidDeploymentOnHost', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotSupport', + 'errorMessage' => 'The Dedicated host not support the specified Instance charge type.', + ], + [ + 'errorCode' => 'InvalidNetworkType.NotSupported', + 'errorMessage' => 'The classic networkType not support create ECS on dedicatedHost.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified DedicatedHostId does not exist.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostStatus.NotSupport', + 'errorMessage' => 'Operation denied due to dedicated host status.', + ], + [ + 'errorCode' => 'IncorrectDedicatedHostStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'ChargeTypeViolation.PostPaidDedicatedHost', + 'errorMessage' => 'Prepaid instance onto postpaid dedicated host is not allowed.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededDedicatedHost', + 'errorMessage' => 'Instance expired date can\'t exceed dedicated host expired date.', + ], + [ + 'errorCode' => 'DedicatedHostType.Unmatched', + 'errorMessage' => 'The specified DedicatedHostType doesn?t match the instance type.', + ], + [ + 'errorCode' => 'NoAvaliableDedicatedHost', + 'errorMessage' => 'There\'s no enough resource on the specified dedicated host.', + ], + [ + 'errorCode' => 'InvalidParameter.Affinity', + 'errorMessage' => 'The specified Affinity is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Tenancy', + 'errorMessage' => 'The specified Tenancy is invalid.', + ], + [ + 'errorCode' => 'InvalidParam.Tenancy', + 'errorMessage' => 'The specified Tenancy is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.CreditSpecification', + 'errorMessage' => 'The specified CreditSpecification is not supported in this region.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified instanceType is not supported by the deployment set.', + ], + [ + 'errorCode' => 'InvalidVpcZone.NotSupported', + 'errorMessage' => 'Zone of the specified VSwitch is not available for creating, please try in other zones.', + ], + [ + 'errorCode' => 'IncorrectDefaultVpcStatus', + 'errorMessage' => 'The status of the default VPC is invalid.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified instance must be IoOptimized instance when kmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidClientToken.ValueNotSupported', + 'errorMessage' => 'The ClientToken provided is invalid.', + ], + [ + 'errorCode' => 'InvalidCapacityReservationId.NotFound', + 'errorMessage' => 'The specified CapacityReservationId does not exist.', + ], + [ + 'errorCode' => 'LackResource', + 'errorMessage' => 'There\'s no enough resource on the specified capacity reservation.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidParameter.Arns', + 'errorMessage' => 'The specified Arns is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.NotSupportEnterpriseGroup', + 'errorMessage' => 'The specified instance type doesn\'t support enterprise level security group.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiGroupType', + 'errorMessage' => 'The specified instance can\'t join different types of security group.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.PayAmountLimitExceeded', + 'errorMessage' => 'Your account is being restricted, because you have no default payment method or you are not authorized.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.Malformed', + 'errorMessage' => 'The specified parameter DataDisk.n.PerformanceLevel is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.NetworkType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceeded.PrepayDataDiskCapacity', + 'errorMessage' => 'The quota of prepay data disk capacity exceeds.', + ], + [ + 'errorCode' => 'InvalidCustomInstanceType.NotSupported', + 'errorMessage' => 'The specified custom instance type is invalid.', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => 'The maximum number of eni in a enterprise security group is exceeded.', + ], + [ + 'errorCode' => 'AccountForbidden.ProductCreationLimited', + 'errorMessage' => 'The commodity must be officially operated by Aliyun and in pay-as-you-go billing method.', + ], + [ + 'errorCode' => 'UnexpectedImageFamily.ImageIdSupplied', + 'errorMessage' => 'The input parameter ImageFamily must be null when image id is set.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchEncryptAlgorithm', + 'errorMessage' => 'The specified parameter Encrypted must be true when EncryptAlgorithm is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchKmsKeyId', + 'errorMessage' => 'The specified parameter Encrypted must be true when KmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is different from the encrypt algorithm of the snapshot.', + ], + [ + 'errorCode' => 'InvalidKmsKeyId.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter KmsKeyId is different from the KmsKeyId of the snapshot.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is not valid.', + ], + [ + 'errorCode' => 'InvalidHttpEndpoint.NotSupported', + 'errorMessage' => 'The specified HttpEndpoint not supported, you can use enabled(default) or disabled.', + ], + [ + 'errorCode' => 'InvalidHttpTokens.NotSupported', + 'errorMessage' => 'The specified HttpTokens not supported, you can use optional(default) or required.', + ], + [ + 'errorCode' => 'InvalidHttpPutResponseHopLimit.NotSupported', + 'errorMessage' => 'The specified HttpPutResponseHopLimit not supported, more than 1 and less than 64 is reasonable.', + ], + [ + 'errorCode' => 'InvalidOperation.VpcHasEnabledAdvancedNetworkFeature', + 'errorMessage' => 'The specified vpc has enabled advanced network feature.', + ], + [ + 'errorCode' => 'InvalidChargeType.CapacityReservationNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.ValueNotSupported', + 'errorMessage' => 'The current ZoneId or InstanceType does not support PL0 of cloud_essd.', + ], + [ + 'errorCode' => 'InvalidKMSKeyId.NotSymmetric', + 'errorMessage' => 'The specified parameter KmsKeyId must be symmetric.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostClusterId.NotFound', + 'errorMessage' => 'The specified DedicatedHostClusterId does not exist.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostClusterId.InValid', + 'errorMessage' => 'The specified Dedicated Host Cluster is invalid.', + ], + [ + 'errorCode' => 'InvalidOperation.UserNotSupported', + 'errorMessage' => 'Reseller user do not support purchase at the moment.', + ], + [ + 'errorCode' => 'InvalidDeploymentSetId.NotFound', + 'errorMessage' => 'The parameter DeploymentSetId is invalid.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptionsId', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptionsId', + 'errorMessage' => 'The specified PrivatePoolOptions.Id is invalid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.NoStock', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool is expired or inactive.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceTypeNotSupport', + 'errorMessage' => 'The specified instance type is not support.', + ], + [ + 'errorCode' => 'HibernationConfigured.ImageNotEncrypted', + 'errorMessage' => 'The hibernation configured instance only support encrypted image.', + ], + [ + 'errorCode' => 'HibernationConfigured.MemorySizeTooBig', + 'errorMessage' => 'The hibernation configured instance memory size is too big.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanMemSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the memory size.', + ], + [ + 'errorCode' => 'InvalidCloudBoxZone.OperationNotSupported', + 'errorMessage' => 'The cloud box zone does not support creating prepaid or encrypted resources.', + ], + [ + 'errorCode' => 'InvalidInternetMaxBandwidthOut.Malformed', + 'errorMessage' => 'The specified parameter InternetMaxBandwidthOut is not valid.', + ], + [ + 'errorCode' => 'InvalidInternetMaxBandwidthIn.Malformed', + 'errorMessage' => 'The specified parameter InternetMaxBandwidthIn is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.CloudboxNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.ShareImage ', + 'errorMessage' => 'Shared snapshot creating encrypted disks with native snapshot encrypt is not supported.', + ], + [ + 'errorCode' => 'QuotaExceed.DiskCapacity', + 'errorMessage' => 'The used capacity of disk type has exceeded the quota in the zone, %s.', + ], + [ + 'errorCode' => 'InvalidParameter.DataEncryptedKeyCreateFailed', + 'errorMessage' => 'Create kms data encrypted key fail. If you need further assistance, you can contact the KMS Technical Support.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not supported.', + ], + [ + 'errorCode' => 'InvalidDestinationZone.DeploymentSetMismatch', + 'errorMessage' => 'Error happened, %s.', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'InvalidParameter.DedicatedRegionNotSupported', + 'errorMessage' => 'The specified action is rejected because the specified ECS instance in the dedicated region does not support public IP.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnable', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidParam.EncryptedMismatch', + 'errorMessage' => 'Creating encrypted disks with shared encrypted image requires replacing encryption keys.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted', + 'errorMessage' => 'Creating non-encrypted disks with encrypted snapshots is not supported.', + ], + [ + 'errorCode' => 'QuotaExceeded.InternetBandwidth', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified VSwitch does not exist in the specified region.', + ], + [ + 'errorCode' => 'OperationDenied.TestAccountRetricted', + 'errorMessage' => 'Test-account for testing has been prohibited from creating instance in this region. Please contact 400181.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRamRole.NotEcsRole', + 'errorMessage' => 'The specified ram role is not authorized for ecs, please check your role policy.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not support the specified instance type.', + ], + [ + 'errorCode' => 'ImageNotSubscribed', + 'errorMessage' => 'The specified image has not be subscribed.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified Image is disabled or is deleted.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueUnauthorized', + 'errorMessage' => 'The disk category is not authorized.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The specified snapshot has not completed yet.', + ], + [ + 'errorCode' => 'InstanceDiskCategoryLimitExceed', + 'errorMessage' => 'The total size of specified disk category in an instance exceeds.', + ], + [ + 'errorCode' => 'InvalidDevice.InUse', + 'errorMessage' => 'The specified device has been occupied.', + ], + [ + 'errorCode' => 'ImageRemovedInMarket', + 'errorMessage' => 'The specified market image is not available, Or the specified user defined image includes product code because it is based on an image subscribed from marketplace, and that image in marketplace includeing exact the same product code has been removed.', + ], + [ + 'errorCode' => 'CategoryNotSupported', + 'errorMessage' => 'The specified zone does not offer the specified disk category.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone; try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'QuotaExceed.PortableCloudDisk', + 'errorMessage' => 'The quota of portable cloud disk exceeds.', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => 'The maximum number of instances in a security group is exceeded.', + ], + [ + 'errorCode' => 'NodeControllerUnavailable', + 'errorMessage' => 'The Node Controller is temporarily unavailable.', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => 'There is no authority to create instance in the specified region.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotDataDiskSnapshot', + 'errorMessage' => 'The specified snapshot is system disk snapshot.', + ], + [ + 'errorCode' => 'DeleteWithInstance.Conflict', + 'errorMessage' => 'The specified disk is not a portable disk and cannot be set to DeleteWithInstance attribute.', + ], + [ + 'errorCode' => 'InstanceDiskNumLimitExceed', + 'errorMessage' => 'The number of specified disk in an instance exceeds.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified image is not support IoOptimized Instance.', + ], + [ + 'errorCode' => 'ImageNotSupportInstanceType', + 'errorMessage' => 'The specified image don\'t support the InstanceType instance.', + ], + [ + 'errorCode' => 'InvalidDiskSize.TooSmall', + 'errorMessage' => 'Specified disk size is less than the size of snapshot.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.Mismatch', + 'errorMessage' => 'The specified disk categories combination is not supported.', + ], + [ + 'errorCode' => 'QuotaExceed.BuyImage', + 'errorMessage' => 'The specified image is from the image market, You have not bought it or your quota has been exceeded.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The VSwitchId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerAccount', + 'errorMessage' => 'ResourceOwnerAccount is Invalid.', + ], + [ + 'errorCode' => 'InvalidUserData.Forbidden', + 'errorMessage' => 'User not authorized to input the parameter "UserData", please apply for permission "UserData".', + ], + [ + 'errorCode' => 'Zone.NotOpen', + 'errorMessage' => 'The specified zone is not granted to you to buy resources yet.', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => 'The specified zone is not available for purchase.', + ], + [ + 'errorCode' => 'InvalidClusterId.NotFound', + 'errorMessage' => 'The specified clusterId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ZoneNotSupported', + 'errorMessage' => 'The specified zone does not support this instancetype.', + ], + [ + 'errorCode' => 'InvalidPayMethod', + 'errorMessage' => 'The specified pay method is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.ImageNotValid', + 'errorMessage' => 'The specified Image is disabled or is deleted.', + ], + [ + 'errorCode' => 'InvalidUserData.Base64FormatInvalid', + 'errorMessage' => 'The specified UserData is not valid.', + ], + [ + 'errorCode' => 'InstanceType.Offline', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'DependencyViolation.WindowsInstance', + 'errorMessage' => 'The instance creating is window, cannot use ssh key pair to login.', + ], + [ + 'errorCode' => 'RealNameAuthenticationError', + 'errorMessage' => 'Your account has not passed the real-name authentication yet.', + ], + [ + 'errorCode' => 'InvalidNetworkType.MismatchRamRole', + 'errorMessage' => 'Ram role cannot be applied to instances of Classic network type.', + ], + [ + 'errorCode' => 'InvalidUser.PassRoleForbidden', + 'errorMessage' => 'The RAM user does not have the privilege to pass a RAM role.', + ], + [ + 'errorCode' => 'InvalidImage.NotSupported', + 'errorMessage' => 'The specified image does not support vSGX instance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter.NotMatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.InvalidNetworkType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSpotInterruptionBehavior.ClassicNetworkNotSupport', + 'errorMessage' => 'The specified SpotInterruptionBehavior does not support Classic network Instance.', + ], + [ + 'errorCode' => 'InvalidSpotInterruptionBehavior.LocalDiskNotSupport', + 'errorMessage' => 'The specified SpotInterruptionBehavior does not support local disk instance.', + ], + [ + 'errorCode' => 'QuotaExceed.PostPaidDisk', + 'errorMessage' => 'Living postPaid disks quota exceeded.', + ], + [ + 'errorCode' => 'QuotaExceed.DeploymentSetInstanceQuotaFull', + 'errorMessage' => 'Instance quota in one deployment set exceeded.', + ], + [ + 'errorCode' => 'InvalidVSwitch.DefaultVSwitchNotSupport', + 'errorMessage' => 'The specified zone in vpc can\'t support create default vSwitch.', + ], + [ + 'errorCode' => 'OperationDenied.LocalDiskUnsupported', + 'errorMessage' => 'The configuration change is not allowed when the specified instance has local disks mounted.', + ], + [ + 'errorCode' => 'OperationDenied.InconsistentNetwork', + 'errorMessage' => 'The specified security group and vswitch are not in the same vpc.', + ], + [ + 'errorCode' => 'DefaultVswitch.Existed', + 'errorMessage' => 'The default vswitch for VPC already exists.', + ], + [ + 'errorCode' => 'InvalidChargeType.ValueNotSupported', + 'errorMessage' => 'Deletion protection is only valid for postPaid instance, not for prePaid or spot instance.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'CategoryViolation', + 'errorMessage' => 'The specified instance does not support this operation because of its disk category.', + ], + [ + 'errorCode' => 'ResourcesNotInSameZone', + 'errorMessage' => 'The specified instance and dedicated host are not in the same zone.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support byok.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in byok white list.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'SecurityRisk.3DVerification', + 'errorMessage' => 'We have detected a security risk with your default credit or debit card. Please proceed with verification via the link in your email.', + ], + [ + 'errorCode' => 'InvalidDisk.SystemDiskSize', + 'errorMessage' => 'The specified SystemDiskSize beyond the permitted range.', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'Mayi.InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'InvalidNetworkType', + 'errorMessage' => 'The network type is not support in this region.', + ], + [ + 'errorCode' => 'InvalidAccountStatus', + 'errorMessage' => 'Your account status is invalid, please contact customer service.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrivateIpAddress', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.PerformanceLevelNotMatch', + 'errorMessage' => 'The specified DataDisk.n.PerformanceLevel and DataDisk.n.Size do not match.', + ], + [ + 'errorCode' => 'InvalidStorageSetName.Malformed', + 'errorMessage' => 'Specified parameter StorageSetName is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'Specified parameter Description is not valid.', + ], + [ + 'errorCode' => 'InvalidMaxPartitionNumber.Malformed', + 'errorMessage' => 'Specified parameter MaxPartitionNumber is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetPartitionNumber', + 'errorMessage' => 'Specified parameter StorageSetPartitionNumber is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetId', + 'errorMessage' => 'Specified parameter StorageSetId is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetZoneId', + 'errorMessage' => 'Specified parameter StorageSetZoneId is not valid.', + ], + [ + 'errorCode' => 'QuotaExceed.Tags', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.RegionIdNotSupported', + 'errorMessage' => 'Region not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.FlavorNotSupported', + 'errorMessage' => 'Flavor not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.TimestampNotSupported', + 'errorMessage' => 'Timestamp not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.PrepayNotAvailable', + 'errorMessage' => 'Prepay instance is not available now.', + ], + [ + 'errorCode' => 'OperationDenied.PaygNotAvailable', + 'errorMessage' => 'Pay-as-you-go instance is not available now.', + ], + [ + 'errorCode' => 'EnterpriseGroupLimited.MutliGroupType', + 'errorMessage' => 'The specified instance can not join multi SecurityGroup types.', + ], + [ + 'errorCode' => 'EnterpriseGroupLimited.InstanceType', + 'errorMessage' => 'The specified instance type does not support Enterprise SecurityGroup.', + ], + [ + 'errorCode' => 'InternalError.AllocateUnderlayIp', + 'errorMessage' => 'Allocate underlay ip for the instance error.', + ], + [ + 'errorCode' => 'OperationDenied.BidOwnResource', + 'errorMessage' => 'Bid user can not own resource.', + ], + [ + 'errorCode' => 'OperationDenied.CloudSSDNotSupported', + 'errorMessage' => 'The specified available zone does not offer the cloud_ssd disk, use cloud_essd instead.', + ], + [ + 'errorCode' => 'InvalidVPCStatus.NotWorking', + 'errorMessage' => 'The specified VPC subnet status is not working.', + ], + [ + 'errorCode' => 'QuotaExceed.ElasticQuota', + 'errorMessage' => 'No additional quota is available for the specified ECS instance type.', + ], + [ + 'errorCode' => 'QuotaExceeded.PostpaidDataDiskCapacity', + 'errorMessage' => 'The quota of postpaid data disk capacity exceeds.', + ], + [ + 'errorCode' => 'InvalidImageFamily.MissingAvailableImage', + 'errorMessage' => 'There is no available image related to the specified image family.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportEncryptAlgorithm', + 'errorMessage' => 'The current region does not support creating encrypted disks with EncryptAlgorithm.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.OnlySupportEnterpriseGroup', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'InstanceDiskLimitExceeded', + 'errorMessage' => 'The amount of the disk on instance reach its limits.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportDiskCategory', + 'errorMessage' => 'The instanceType of the specified instance does not support this disk category.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.DiskCategory', + 'errorMessage' => 'The specified disk category does not support creating encrypted system disks or creating encrypted data disks from snapshots. Check the DiskCategory or Encrypted parameter, or check your account for default encryption settings.', + ], + [ + 'errorCode' => 'InvalidOperation.PublicIpAddressNoStock', + 'errorMessage' => 'The public IP address for the specified Region or ChargeType of the instance is out of stock. Please try another Region or ChargeType.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchDiskDefaultEncryption', + 'errorMessage' => 'Enabling disk default encryption prevents the creation of non-encrypted disks.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter Encrypted must be set to true when creating disks with encrypted snapshots.', + ], + ], + [ + [ + 'errorCode' => 'InvalidStorageClusterId.NotExist', + 'errorMessage' => 'The specified StorageClusterId does not exist in current region.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified instancetype is not support IoOptimized instance.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The ZoneId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidDataDiskSnapshotId.NotFound', + 'errorMessage' => 'The specified parameter "DataDisk.n.SnapshotId" is not valid.', + ], + [ + 'errorCode' => 'InvalidClusterId.NotFound', + 'errorMessage' => 'The ClusterId provided does not exist in our records.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified Image is disabled or is deleted.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'Specified virtual switch does not exist.', + ], + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The InstanceChargeType does not exist in our records.', + ], + [ + 'errorCode' => 'DependencyViolation.IoOptimized', + 'errorMessage' => 'The specified instancetype must be IoOptimized instance.', + ], + [ + 'errorCode' => 'PaymentMethodNotFound', + 'errorMessage' => 'No payment method has been registered on the account.', + ], + [ + 'errorCode' => 'HOSTNAME_ILLEGAL', + 'errorMessage' => 'The specified parameter Hostname is not valid.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanImageSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the image size.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanMinSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the min size.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.MoreThanMaxSize', + 'errorMessage' => 'The specified SystemDisk.Size parameter exceeds the maximum size.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified vm bandwidth is not valid.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is invalid.', + ], + [ + 'errorCode' => 'InvalidKeyPairName.NotFound', + 'errorMessage' => 'The specified parameter KeyPairName does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRamRole.NotFound', + 'errorMessage' => 'The specified RAMRoleName does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidMarketImage.NotFound', + 'errorMessage' => 'The specified marketplace image does not exist, please change the imageId and try again.', + ], + [ + 'errorCode' => 'DeploymentSet.NotFound', + 'errorMessage' => 'The specified deployment set does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'InvalidDiskIds.NotPortable', + 'errorMessage' => 'The specified DiskId is not portable.', + ], + ], + 409 => [ + [ + 'errorCode' => 'OperationConflict', + 'errorMessage' => 'Request was denied due to conflict with a previous request,please try again later.', + ], + ], + 429 => [ + [ + 'errorCode' => 'Throttling.Resource', + 'errorMessage' => 'The request throttle by resource operation.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'InvalidImage.OSType', + 'errorMessage' => 'The image OSType does not support this instance type.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"OrderId\\": \\"1234567890\\",\\n \\"TradePrice\\": 0.165\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n i-bp67acfmxazb4p****\\n 1234567890\\n 0.165\\n","errorExample":""}]', + 'title' => 'CreateInstance', + 'description' => '> This operation is no longer iterated or updated. We recommend that you call the [RunInstances](~~2679677~~) operation instead.'."\n" + ."\n" + .'**Before you call this operation, familiarize yourself with the billing rules and [pricing](https://www.alibabacloud.com/zh/pricing-calculator#/commodity/vm_intl) of ECS resources.**'."\n" + ."\n" + .'This operation is an asynchronous operation. After a request to create an ECS instance is sent, an ECS instance ID is immediately returned but the instance may be still being created. You can call the [DescribeInstanceStatus](~~2679688~~) operation to query the status of the instance. If the status of the instance is `Stopped` in the DescribeInstanceStatus response, the instance is created. In this case, you can call the [StartInstance](~~2679679~~) operation to start the instance.'."\n" + ."\n" + .'### [](#)Prerequisites'."\n" + ."\n" + .'* Make sure that you are familiar with the ECS billing methods because you may be charged for the resources that are used by the instance. For more information, see [Billing overview](~~25398~~).'."\n" + .'* Make sure that the number of ECS instances you create or the number of vCPUs on ECS instances of all instance types you create does not exceed the corresponding quota. Go to the [Quota Center](https://quotas.console.aliyun.com/products/ecs/quotas) to view the quotas.'."\n" + .'* Before you create ECS instances of the Virtual Private Cloud (VPC) type in a region, create a VPC in the region. For more information, see [Create a VPC](~~65430~~).'."\n" + ."\n" + .'### [](#)Considerations'."\n" + ."\n" + .'* If you create a subscription instance (`PrePaid`), available coupons in your account are automatically used.'."\n" + .'* If you want to create instances with 512 MiB of memory, you cannot use Windows Server images except for Windows Server Semi-Annual Channel images. If you want to create instances with 4 GiB or more of memory, you cannot use 32-bit OS image.'."\n" + .'* If you call the CreateInstance operation to create an instance, no public IP address is automatically assigned to the instance. If the InternetMaxBandwidthOut value of the instance is greater than 0 Mbit/s, call the [AllocatePublicIpAddress](~~25544~~) operation to assign a public IP address to the instance. If the InternetMaxBandwidthOut value of the instance is 0 Mbit/s, call the [ModifyInstanceNetworkSpec](~~2679879~~) operation to set InternetMaxBandwidthOut to a value greater than 0 Mbit/s and then call the [AllocatePublicIpAddress](~~25544~~) operation to assign a public IP address to the instance.'."\n" + ."\n" + .'> For the limits on the sum of maximum public bandwidths of ECS instances that use the pay-by-bandwidth billing method for network usage per region per Alibaba Cloud account, see the [Public bandwidth limits](~~25412#BandwidthQuota~~) section of the "Limits" topic.'."\n" + ."\n" + .'### [](#)Suggestions'."\n" + ."\n" + .'* **Instance type selection**: See [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~25620~~) operation to query the performance data of instance types, or see [Instance type selection](~~58291~~) to learn about how to select instance types.'."\n" + .'* **Query of available resources**: Call the [DescribeAvailableResource](~~66186~~) operation to query resources available in a specific region or zone.'."\n" + .'* **User data**: If the instance type supports [user data](~~49121~~), you can use UserData to pass in user data. We recommend that you do not pass in confidential information, such as passwords or private keys, in plaintext as user data. This is because the system does not encrypt `UserData` values when API requests are sent. If you must pass in confidential information as user data, we recommend that you encrypt and encode the information in Base64 before you pass in the information. Then, decode and decrypt the information within the instance for subsequent use.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'StartInstance' => [ + 'summary' => 'Starts an Elastic Compute Service (ECS) instance. You can specify the ID of an ECS instance and parameters, such as InitLocalDisk, in the request based on your business requirements to start the instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29185', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance that you want to start.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'InitLocalDisk', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to restore the ECS instance to the initial health state on startup if a local disk fails. This parameter is applicable to ECS instances that are equipped with local disks, such as d1, i1, and i2 instances. Valid values:'."\n" + ."\n" + .'* true: restores the ECS instance to the initial health state on startup.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Warning**: After the ECS instance is restored to the initial health state, data stored on the local disks of the instance is lost.'."\n" + ."\n" + .'* false: does not restore the ECS instance to the initial health state on startup. The instance remains in the current state.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the AccessKey pair, the permissions of the RAM user, and the required parameters. If the request fails the dry run, an error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'LackResource', + 'errorMessage' => 'There\'s no enough resource on the specified capacity reservation.', + ], + [ + 'errorCode' => 'InvalidDedicatedHost.NotEnoughResource', + 'errorMessage' => 'The specified dedicated host has not enough resource due to host affinity.', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => 'The specified instance does not have system disk.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.NoStock', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'DiskError', + 'errorMessage' => 'IncorrectDiskStatus.', + ], + [ + 'errorCode' => 'InstanceExpired', + 'errorMessage' => 'The postPaid instance has been expired.Please ensure your account have enough balance.', + ], + [ + 'errorCode' => 'InstanceNotReady', + 'errorMessage' => 'The specified instance is not ready for use.', + ], + [ + 'errorCode' => 'DiskInArrears', + 'errorMessage' => 'The specified operation is denied as your disk has expired.', + ], + [ + 'errorCode' => 'OperationDenied.SpotPriceLowerThanPublicPrice', + 'errorMessage' => 'The spot instance price is lower than public price.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'QuotaExceed.ElasticQuota', + 'errorMessage' => 'No additional quota is available for the specified ECS instance type.', + ], + [ + 'errorCode' => 'OperationDenied.HostRepairing', + 'errorMessage' => 'The specified operation is denied as the host of ECS instance is being repaired.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone, try other types of resources or other regions and zones.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidCapacityReservationId.NotFound', + 'errorMessage' => 'The specified capacity reservation does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InstanceNotReady', + 'errorMessage' => 'The specified instance is not ready for use.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + 503 => [ + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The request has failed due to a temporary failure of the server.', + ], + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"C0003E8B-B930-4F59-ADC0-0E20xxxxxxxx\\"\\n}\\n"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n C0003E8B-B930-4F59-ADC0-0E20xxxxxxxx\\n"}]', + 'title' => 'StartInstance', + 'description' => 'This operation is an asynchronous operation. After you call this operation to start an ECS instance, the operation sets the status of the ECS instance to Starting and begins the startup process. You can call the [DescribeInstanceStatus](~~2679688~~) operation to query the status of the ECS instance. When the status of the ECS instance changes to `Running`, the instance is started.'."\n" + ."\n" + .'### [](#)Precautions'."\n" + ."\n" + .'* You cannot call this operation to start an ECS instance that is locked for security reasons. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n" + .'* The ECS instance that you want to start must be in the **Stopped** (`Stopped`) state.'."\n" + .'* If an ECS instance is stopped in economical mode, the instance may fail to be started due to insufficient resources.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'StartInstances' => [ + 'summary' => 'Starts Elastic Compute Service (ECS) instances that are in the Stopped state.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29186', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + ], + ], + 'parameters' => [ + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform a dry run. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including required parameters, request syntax, and instance status. If the request fails the dry run, an error message is returned. If the request passes the dry run, `DRYRUN.SUCCESS` is returned.'."\n" + ."\n" + .'> If you set `BatchOptimization` to `SuccessFirst` and `DryRun` to true, only `DRYRUN.SUCCESS` is returned regardless of whether the request passes the dry run.'."\n" + ."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ECS instance. You can call the [DescribeRegions](~~DescribeRegions~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'BatchOptimization', + 'in' => 'query', + 'schema' => [ + 'description' => 'The batch operation mode. Valid values:'."\n" + ."\n" + .'* AllTogether: starts all ECS instances at the same time. If all ECS instances are started, a success message is returned. If an ECS instance fails to be started, all the specified instances fail to be started and an error message is returned.'."\n" + .'* SuccessFirst: separately starts each ECS instance. The response contains the operation results of each ECS instance.'."\n" + ."\n" + .'Default value: AllTogether.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AllTogether', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of ECS instances. Valid values of N: 1 to 100.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of ECS instance N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4p****', + ], + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'InstanceResponses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceResponse' => [ + 'description' => 'The information about the ECS instance, such as the status of each instance before and after the operation is called and the operation results.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'The error code that is returned for the operation on the ECS instance. The value 200 indicates that the operation is successful. For more information, see the "Error codes" section in this topic.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The error message that is returned for the operation on the ECS instance. The value success indicates that the operation is successful. For more information, see the "Error codes" section in this topic.'."\n", + 'type' => 'string', + 'example' => 'success', + ], + 'InstanceId' => [ + 'description' => 'The ID of the ECS instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + 'CurrentStatus' => [ + 'description' => 'The status of the ECS instance after the operation is called.'."\n", + 'type' => 'string', + 'example' => 'Starting', + ], + 'PreviousStatus' => [ + 'description' => 'The status of the ECS instance before the operation is called.'."\n", + 'type' => 'string', + 'example' => 'Stopped', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be added ECS tag', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service account have no right to access your KMS.', + ], + [ + 'errorCode' => 'DRYRUN.SUCCESS', + 'errorMessage' => 'This request is a dryrun request with successful result.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.NoStock', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'InstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.TooManyInstanceIds', + 'errorMessage' => 'Instance ids cannot be more than 100.', + ], + [ + 'errorCode' => 'Abs.InvalidInstanceIds.MalFormed', + 'errorMessage' => 'The specified instanceIds is not valid.', + ], + [ + 'errorCode' => 'InstanceExpired', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.SpotPriceLowerThanPublicPrice', + 'errorMessage' => 'The spot instance price is lower than public price.', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InstanceNotReady', + 'errorMessage' => 'The specified instance is not ready for use.', + ], + [ + 'errorCode' => 'OperationDenied.HostRepairing', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone, try other types of resources or other regions and zones.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The specified InstanceIds does not exist.', + ], + ], + 409 => [ + [ + 'errorCode' => 'InvalidOperation.Conflict', + 'errorMessage' => 'Request was denied due to conflict with a previous request, please try again later.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + 503 => [ + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"InstanceResponses\\": {\\n \\"InstanceResponse\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"success\\",\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"CurrentStatus\\": \\"Starting\\",\\n \\"PreviousStatus\\": \\"Stopped\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n \\n \\n success\\n i-bp67acfmxazb4p****\\n Stopped\\n Starting\\n 200\\n \\n \\n success\\n i-bp67acfmxazb4p****\\n Stopped\\n Starting\\n 200\\n \\n \\n The specified InstanceId does not exist.\\n i-TestID\\n \\n \\n InvalidInstanceId.NotFound\\n \\n \\n","errorExample":""}]', + 'title' => 'StartInstances', + 'description' => 'This operation is an asynchronous operation. After you call this operation to start ECS instances, the operation sets the status of the ECS instances to Starting and begins the startup process. You can call the [DescribeInstanceStatus](~~2679688~~) operation to query the status of the instances. When the status of the ECS instances changes to `Running`, the instances are started.'."\n" + ."\n" + .'### [](#)Precautions'."\n" + ."\n" + .'* You cannot call this operation to start ECS instances that are locked for security reasons. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n" + .'* The ECS instances that you want to start must be in the **Stopped** (`Stopped`) state.'."\n" + .'* ECS instances stopped in economical mode may fail to be started due to insufficient resources.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'StopInstance' => [ + 'summary' => 'Stops an Elastic Compute Service (ECS) instance. You can specify parameters to determine whether to forcefully stop the instance and the stop mode.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29192', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'ConfirmStop', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter will be removed in the future and is retained only to ensure compatibility. We recommend that you ignore this parameter.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'ForceStop', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully stop the ECS instance. Valid values:'."\n" + ."\n" + .'* true: forcefully stops the ECS instance. If you set ForceStop to true, this operation is equivalent to a power-off operation. Cache data that is not written to storage devices on the instance is lost.'."\n" + .'* false: normally stops the ECS instance.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'StoppedMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The stop mode of the pay-as-you-go instance. Valid values:'."\n" + ."\n" + .'* StopCharging: economical mode. After an instance is stopped in economical mode:'."\n" + ."\n" + .' * Billing for the following resources of the instance stops: computing resources (vCPUs, memory, and GPUs), image licenses, and public bandwidth of the static public IP address (if any) that uses the pay-by-bandwidth metering method.'."\n" + .' * Billing for the following resources of the instance continues: system disk, data disks, and public bandwidth of the elastic IP address (EIP) (if any) that uses the pay-by-bandwidth metering method.'."\n" + .' * The instance may fail to restart due to the reclaimed computing resources or insufficient resources. Try again later or change the instance type of the instance.'."\n" + .' * If an EIP is associated with the instance before the instance is stopped, the EIP remains unchanged after the instance is restarted. If a static public IP address is associated with the instance before the instance is stopped, the static public IP address may change, but the private IP address does not change.'."\n" + ."\n" + .' For more information, see [Economical mode](~~63353~~).'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** If the instance does not support the economical mode, the system stops the instance and does not report errors during the operation call. The following types of instances are not supported: classic network instances, local disks, and monthly instances.'."\n" + ."\n" + .'* KeepCharging: standard mode. After the instance is stopped in standard mode, you continue to be charged for the instance.'."\n" + ."\n" + .'Default value: If the conditions for [enabling the economical mode for an instance in a VPC](~~63353#default~~) are met and you have enabled this mode in the ECS console, the default value is `StopCharging`. Otherwise, the default value is `KeepCharging`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeepCharging', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, service limits, and available ECS resources. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'Hibernate', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'hide', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '1C488B66-B819-4D14-8711-C4EAAA13AC01', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnable', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'DiskError', + 'errorMessage' => 'IncorrectDiskStatus.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InstanceType.ParameterMismatch', + 'errorMessage' => 'The input parameter ConfirmStop must be true when an instance have localstorage.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotSupport', + 'errorMessage' => 'Classic network Instance does not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'HibernationConfigured.NotEnabled', + 'errorMessage' => 'The instance hibernation configured option is not enabled.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSKeyIdNotFound', + 'errorMessage' => 'The specified KMSKeyId not found, %s.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSServiceNotOpen', + 'errorMessage' => 'KMS service is currently not open.', + ], + [ + 'errorCode' => 'OperationDenied.SystemInstanceNotSupport', + 'errorMessage' => 'The system instance does not support the %s operation because %s.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + 503 => [ + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1C488B66-B819-4D14-8711-C4EAAA13AC01\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"1C488B66-B819-4D14-8711-C4EAAA13AC01\\"\\n}"},{"type":"xml","example":"\\n 1C488B66-B819-4D14-8711-C4EAAA13AC01\\n","errorExample":"\\n 1C488B66-B819-4D14-8711-C4EAAA13AC01\\n"}]', + 'title' => 'StopInstance', + 'description' => 'This operation is an asynchronous operation. After you call this operation to stop an ECS instance, the operation sets the status of the ECS instance to Stopping and begins the stop process. You can call the [DescribeInstanceStatus](~~2679688~~) operation to query the status of the ECS instance. When the status of the ECS instance changes to `Stopped`, the instance is stopped.'."\n" + ."\n" + .'### [](#)Precautions'."\n" + ."\n" + .'* You cannot call this operation to stop an ECS instance that is locked for security reasons. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n" + .'* After you enable the default economical mode for all pay-as-you-go ECS instances located in virtual private clouds (VPCs) in your account, you can set `StoppedMode` to KeepCharging for the ECS instance that you want to stop to enable standard mode. This way, the ECS instance continues to be billed after the instance is stopped. The instance type resources and public IP address of the instance are retained.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'StopInstances' => [ + 'summary' => 'Stops Elastic Compute Service (ECS) instances. You can specify parameters to determine whether to forcefully stop the instances and the stop mode.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29194', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + ], + ], + 'parameters' => [ + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to send a precheck 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 instance status. If the check fails, the corresponding error message is returned. If the request passes the dry run, `DRYRUN.SUCCESS` is returned.'."\n" + ."\n" + .'> If you set `BatchOptimization` to `SuccessFirst` and `DryRun` to true, only `DRYRUN.SUCCESS` is returned, regardless of whether the request passes the dry run.'."\n" + ."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, instances are stopped.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ForceStop', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully stop instances. Valid values:'."\n" + ."\n" + .'* true: forcefully stops the ECS instance.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Alert** Force Stop: forcefully stops the instance. A force stop is equivalent to a physical shutdown and may cause data loss if instance data has not been written to disks.'."\n" + ."\n" + .'* false: normally stops the ECS instance.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'StoppedMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'Stop mode. Valid values:'."\n" + ."\n" + .'* StopCharging: economical mode. After an instance is stopped in economical mode:'."\n" + ."\n" + .' * Billing for the following resources of the instance stops: computing resources (vCPUs, memory, and GPUs), image licenses, and public bandwidth of the static public IP address (if any) that uses the pay-by-bandwidth metering method.'."\n" + .' * Billing for the following resources of the instance continues: system disk, data disks, and public bandwidth of the elastic IP address (EIP) (if any) that uses the pay-by-bandwidth metering method.'."\n" + .' * The instance may fail to restart due to the reclaimed computing resources or insufficient resources. Try again later or change the instance type of the instance.'."\n" + .' * If an EIP is associated with the instance before the instance is stopped, the EIP remains unchanged after the instance is restarted. If a static public IP address is associated with the instance before the instance is stopped, the static public IP address may change, but the private IP address does not change.'."\n" + ."\n" + .' For more information, see [Economical mode](~~63353~~).'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** If the instance itself does not support the economical shutdown mode, the API side does not intercept errors, and the instance is preferentially stopped. The following types of instances are not supported: classic network instances, local disks, and monthly instances.'."\n" + ."\n" + .'* KeepCharging: standard mode. After the instance is stopped in standard mode, you continue to be charged for the instance. If you want to change the operating system, re-initialize disks, change the instance type, or modify the private IP address, we recommend selecting this mode to avoid startup failures.'."\n" + ."\n" + .'Default value: If the conditions for [enabling the economical mode for an instance in a VPC](~~63353#default~~) are met and you have enabled this mode in the ECS console, the default value is `StopCharging`. Otherwise, the default value is `KeepCharging`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeepCharging', + ], + ], + [ + 'name' => 'BatchOptimization', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies the batch operation mode. Valid values:'."\n" + ."\n" + .'* AllTogether: The batch operation is successful only after all operations are successful. If any operation fails, the batch operation is considered failed, and all operations that have been performed are undone to restore the instances to the status before the batch operation.'."\n" + .'* SuccessFirst: allows each operation in a batch to be independently executed. If an operation fails, other operations can continue and confirm success. In this mode, successful operations are committed and failed operations are marked as failed, but the execution results of other operations are not affected.'."\n" + ."\n" + .'Default value: AllTogether.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AllTogether', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of ECS instances. You can specify 1 to 100 instance IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the ECS instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4p****', + ], + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '1C488B66-B819-4D14-8711-C4EAAA13AC01', + ], + 'InstanceResponses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceResponse' => [ + 'description' => 'The instance-specific responses, which contain the status of each instance before and after the operation was called and the results of the operation.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'The error code returned for the instance. A return value of 200 indicates that the operation was successful. For more information, see the "Error codes" section of this topic.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The error message returned for the instance. The return value `success` indicates that the operation is successful. For more information, see the "Error codes" section of this topic.'."\n", + 'type' => 'string', + 'example' => 'success', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + 'CurrentStatus' => [ + 'description' => 'The current status of the instance.'."\n", + 'type' => 'string', + 'example' => 'Stopping', + ], + 'PreviousStatus' => [ + 'description' => 'The status of the instance before the operation was called.'."\n", + 'type' => 'string', + 'example' => 'Running', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be added ECS tag', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service account have no right to access your KMS.', + ], + [ + 'errorCode' => 'DRYRUN.SUCCESS', + 'errorMessage' => 'This request is a dryrun request with successful result.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnable', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'InstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.TooManyInstanceIds', + 'errorMessage' => 'Instance ids cannot be more than 100.', + ], + [ + 'errorCode' => 'Abs.InvalidInstanceIds.MalFormed', + 'errorMessage' => 'The specified instanceIds is not valid.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InstanceNotReady', + 'errorMessage' => 'The specified instance is not ready for use.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSKeyIdNotFound', + 'errorMessage' => 'The specified KMSKeyId not found, %s.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSServiceNotOpen', + 'errorMessage' => 'KMS service is currently not open.', + ], + [ + 'errorCode' => 'OperationDenied.SystemInstanceNotSupport', + 'errorMessage' => 'The system instance does not support the %s operation because %s.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The specified InstanceIds does not exist.', + ], + ], + 409 => [ + [ + 'errorCode' => 'InvalidOperation.Conflict', + 'errorMessage' => 'Request was denied due to conflict with a previous request, please try again later.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + 503 => [ + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"1C488B66-B819-4D14-8711-C4EAAA13AC01\\",\\n \\"InstanceResponses\\": {\\n \\"InstanceResponse\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"success\\",\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"CurrentStatus\\": \\"Stopping\\",\\n \\"PreviousStatus\\": \\"Running\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FF53E96D-3F1A-42F0-8373-1C2B39D72D44\\n \\n \\n success\\n i-bp67acfmxazb4p****\\n Running\\n Stopping\\n 200\\n \\n \\n success\\n i-bp67acfmxazb4p****\\n Running\\n Stopping\\n 200\\n \\n \\n The specified InstanceId does not exist.\\n i-TestID\\n \\n \\n InvalidInstanceId.NotFound\\n \\n \\n","errorExample":""}]', + 'title' => 'StopInstances', + 'description' => 'This operation is an asynchronous operation. After you call this operation to stop an ECS instance, the operation sets the status of the ECS instance to Stopping and begins the stop process. You can call the [DescribeInstanceStatus](~~2679688~~) operation to query the status of the ECS instance. When the status of the ECS instance changes to `Stopped`, the instance is stopped.'."\n" + ."\n" + .'### [](#)Considerations'."\n" + ."\n" + .'* The instance is unavailable after you stop the instance. Make sure that stopping the instance does not affect your business. You can also call the [StartInstance](~~2679679~~) or [StartInstances](~~2679680~~) operation to start the instance.'."\n" + .'* You cannot call this operation to stop ECS instances that are locked for security reasons. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RebootInstance' => [ + 'summary' => 'Restarts an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29133', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'ForceStop', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully stop the ECS instance before the instance is restarted. Valid values:'."\n" + ."\n" + .'* true: forcefully stops the ECS instance. If you set this parameter to true, this operation is equivalent to a power-off operation. Cache data that is not written to storage devices on the instance is lost.'."\n" + .'* false: normally stops the ECS instance.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, service limits, and available ECS resources. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and sends the request. If the request passes the dry run, the ECS instance is restarted.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'DiskError', + 'errorMessage' => 'IncorrectDiskStatus.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + 503 => [ + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"F2E2C40D-AB09-45A1-B5C5-EB9F5C4E4E4A\\"\\n}"},{"type":"xml","example":"\\n F2E2C40D-AB09-45A1-B5C5-EB9F5C4E4E4A\\n","errorExample":"\\n F2E2C40D-AB09-45A1-B5C5-EB9F5C4E4E4A\\n"}]', + 'title' => 'RebootInstance', + 'description' => 'This operation is an asynchronous operation. After you call this operation to restart an ECS instance, the operation sets the status of the ECS instance to `Starting` and begins the restart process. You can call the [DescribeInstanceStatus](~~2679688~~) operation to query the status of the instance. When the status of the ECS instance changes to `Running`, the instance is restarted.'."\n" + ."\n" + .'### [](#)Considerations'."\n" + ."\n" + .'* You cannot call this operation to restart an ECS instance that is locked for security reasons. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n" + .'* The ECS instance that you want to restart must be in the **Running** (`Running`) state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RebootInstances' => [ + 'summary' => 'Restarts Elastic Compute Service (ECS) instances. When you call this operation, you can configure parameters to specify a batch operation mode and whether to forcefully restart the instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29135', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + ], + ], + 'parameters' => [ + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and instance status. If the request fails the dry run, an error message is returned. If the request passes the dry run, `DRYRUN.SUCCESS` is returned.'."\n" + ."\n" + .'> If you set `BatchOptimization` to `SuccessFirst` and `DryRun` to true, only `DRYRUN.SUCCESS` is returned regardless of whether the request passes the dry run.'."\n" + ."\n" + .'* false: performs a dry run and sends the request. If the request passes the dry run, the instance is restarted.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ForceReboot', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully restart the instance. Valid values:'."\n" + ."\n" + .'* true: forcefully restarts the instance. This operation is equivalent to the typical power-off operation. Cache data that is not written to storage devices on the instance is lost.'."\n" + .'* false: normally restarts the instance.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'BatchOptimization', + 'in' => 'query', + 'schema' => [ + 'description' => 'The batch operation mode. Valid values:'."\n" + ."\n" + .'* AllTogether: In this mode, if all instances are restarted, a success message is returned. If an instance fails the verification, all instances fail to be restarted and an error message is returned.'."\n" + .'* SuccessFirst: In this mode, each instance is restarted separately. The response contains the operation results of each instance.'."\n" + ."\n" + .'Default value: AllTogether.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AllTogether', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of ECS instances. Valid values of N: 1 to 100.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of ECS instance N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4p****', + ], + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'InstanceResponses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceResponse' => [ + 'description' => 'Details about instance-specific responses, which contain the status of each instance before and after the operation is called and the results of the operation.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'The error code returned for the instance. A return value of 200 indicates that the operation is successful. For more information, see the "Error codes" section of this topic.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The error message that is returned for the operation on the instance. The return value Success indicates that the operation is successful. For more information, see the "Error codes" section of this topic.'."\n", + 'type' => 'string', + 'example' => 'success', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp1g6zv0ce8oghu7****', + ], + 'CurrentStatus' => [ + 'description' => 'The current state of the instance.'."\n", + 'type' => 'string', + 'example' => 'Stopping', + ], + 'PreviousStatus' => [ + 'description' => 'The state of the instance before the operation is called.'."\n", + 'type' => 'string', + 'example' => 'Running', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be added ECS tag', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service account have no right to access your KMS.', + ], + [ + 'errorCode' => 'DRYRUN.SUCCESS', + 'errorMessage' => 'This request is a dryrun request with successful result.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'InstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.TooManyInstanceIds', + 'errorMessage' => 'Instance ids cannot be more than 100.', + ], + [ + 'errorCode' => 'Abs.InvalidInstanceIds.MalFormed', + 'errorMessage' => 'The specified instanceIds is not valid.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InstanceNotReady', + 'errorMessage' => 'The specified instance is not ready for use.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The specified InstanceIds does not exist.', + ], + ], + 409 => [ + [ + 'errorCode' => 'InvalidOperation.Conflict', + 'errorMessage' => 'Request was denied due to conflict with a previous request, please try again later.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + 503 => [ + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"InstanceResponses\\": {\\n \\"InstanceResponse\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"success\\",\\n \\"InstanceId\\": \\"i-bp1g6zv0ce8oghu7****\\",\\n \\"CurrentStatus\\": \\"Stopping\\",\\n \\"PreviousStatus\\": \\"Running\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n FF53E96D-3F1A-42F0-8373-1C2B39D72D44\\n \\n \\n success\\n i-bp1g6zv0ce8oghu7****\\n Running\\n Stopping\\n 200\\n \\n \\n success\\n i-bp1g6zv0ce8oghu7****\\n Running\\n Stopping\\n 200\\n \\n \\n The specified InstanceId does not exist.\\n i-TestID\\n \\n \\n InvalidInstanceId.NotFound\\n \\n \\n","errorExample":""}]', + 'title' => 'RebootInstances', + 'description' => 'This operation is an asynchronous operation. After you call this operation to restart an ECS instance, the operation sets the status of the ECS instance to `Starting` and begins the restart process. You can call the [DescribeInstanceStatus](~~2679688~~) operation to query the status of the instance. When the status of the ECS instance changes to `Running`, the instance is restarted.'."\n" + ."\n" + .'### [](#)Limits'."\n" + ."\n" + .'* You cannot call this operation to restart ECS instances that are locked due to security reasons. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n" + .'* The ECS instances that you want to restart must be in the **Running** (`Running`) state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteInstance' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28872', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp1g6zv0ce8oghu7****', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully release the ECS instance in the **Running** (`Running`) state. Valid values:'."\n" + ."\n" + .'* true: forcefully releases the ECS instance in the **Running** (`Running`) state.'."\n" + .'* false: normally releases the ECS instance. This value is valid only if the instance is in the **Stopped** (`Stopped`) state.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'**'."\n" + ."\n" + .'**Warning** When Force is set to true, this operation is equivalent to a power-off operation. Temporary data in the memory and storage of the instance is erased and cannot be restored.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'ForceStop', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully stop the ECS instance in the **Running** (`Running`) state before the instance is released. This parameter takes effect only when `Force` is set to true. Valid values:'."\n" + ."\n" + .'* true: forcefully stops and releases the ECS instance. In this case, this operation is equivalent to a power-off operation. The instance directly enters the resource release process.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Warning** A forceful stop and release is equivalent to a power-off operation. Temporary data in the memory and storage of the instance is erased and cannot be restored.'."\n" + ."\n" + .'* false: stops the ECS instance in the normal stop process and then releases the instance. In this case, the release process takes several minutes to complete. You can configure business drainage actions to reduce the noise of the business system on operating system shutdown.'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'true', + ], + ], + [ + 'name' => 'TerminateSubscription', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the expired subscription instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, service limits, and unavailable ECS resources. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false (default): performs a dry run and performs the actual request. If the request passes the dry run, the instance is released.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DependencyViolation.SLBConfiguring', + 'errorMessage' => 'Specified operation is denied as your instance is using by another product.', + ], + [ + 'errorCode' => 'DependencyViolation.RouteEntry', + 'errorMessage' => 'Specified instance is used by route entry.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The input parameter InstanceId is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus.Initializing', + 'errorMessage' => 'The specified instance status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.DeletionProtection', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniLinked', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.SystemInstanceNotSupport', + 'errorMessage' => 'The system instance does not support the %s operation because %s.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"928E2273-5715-46B9-A730-238DC996A533\\"\\n}"},{"type":"xml","example":"\\n 928E2273-5715-46B9-A730-238DC996A533\\n","errorExample":"\\n 928E2273-5715-46B9-A730-238DC996A533\\n"}]', + 'title' => 'DeleteInstance', + 'summary' => 'Deletes or releases a pay-as-you-go Elastic Compute Service (ECS) instance or an expired subscription ECS instance. You can configure parameters to specify whether to release the disks attached to the instance or retain the disks as pay-as-you-go disks.', + 'description' => '**'."\n" + ."\n" + .'**Warning** After you release an instance, the physical resources used by the instance are recycled. Relevant data is erased and cannot be restored.'."\n" + ."\n" + .'* After you release an instance, manual snapshots of the cloud disks attached to the instance are retained and continue to be billed. You can call the [DeleteSnapshot](~~2679824~~) operation to delete the snapshots.'."\n" + ."\n" + .'* After you release an instance, whether the cloud disks attached to the instance and the automatic snapshots of the disks are released is determined by the disk attributes. Before you release an instance, you can call the [DescribeDisks](~~2679767~~) and [ModifyDiskAttribute](~~2679770~~) operations to query and modify disk attributes.'."\n" + ."\n" + .' * The cloud disks for which `DeleteWithInstance` is set to false are retained as pay-as-you-go disks after the instance is released. The cloud disks for which DeleteWithInstance is set to true are released along with the instance.'."\n" + .' * If `DeleteAutoSnapshot` is set to false for a cloud disk attached to the instance, the automatic snapshots of the cloud disk are retained when the instance is released. If DeleteAutoSnapshot is set to true for the cloud disk, the automatic snapshots of the disk are released along with the instance.'."\n" + ."\n" + .'* Elastic IP addresses (EIPs) are not released together with instances. You can call the [ReleaseEipAddress](~~448702~~) operation to release EIPs.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** When you release an instance that is locked for security reasons, the cloud disks attached to the instance are released even if DeleteWithInstance is set to false.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteInstances' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28873', + 'abilityTreeNodes' => [ + 'FEATUREecs0ILANB', + ], + ], + 'parameters' => [ + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request.'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized Resource Access Management (RAM) users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the DRYRUN.SUCCESS error code is returned.'."\n" + .'* false: 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" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully release the ECS instance in the **Running** (`Running`) state. Valid values:'."\n" + ."\n" + .'* true: forcefully releases the ECS instance in the **Running** (`Running`) state.'."\n" + .'* false: normally releases the ECS instance. This value is valid only if the instance is in the **Stopped** (`Stopped`) state.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'**'."\n" + ."\n" + .'**Warning** When Force is set to true, this operation is equivalent to a power-off operation. Temporary data in the memory and storage of the instance is erased and cannot be restored.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'ForceStop', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully stop the ECS instance in the **Running** (`Running`) state before the instance is released. This parameter takes effect only when `Force` is set to true. Valid values:'."\n" + ."\n" + .'* true: forcefully stops and releases the ECS instance. In this case, this operation is equivalent to a power-off operation. The instance directly enters the resource release process.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Warning** A forceful stop and release is equivalent to a power-off operation. Temporary data in the memory and storage of the instance is erased and cannot be restored.'."\n" + ."\n" + .'* false: stops the ECS instance in the normal stop process and then releases the instance. In this case, the release process takes several minutes to complete. You can configure business drainage actions to reduce the noise of the business system on operating system shutdown.'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'true', + ], + ], + [ + 'name' => 'TerminateSubscription', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the expired subscription instance.'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of ECS instances. You can specify 1 to 100 ECS instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the ECS instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp1g6zv0ce8oghu7****', + ], + 'required' => true, + 'example' => 'i-bp1g6zv0ce8oghu7****', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '7B7813C6-57BF-41XX-B12B-F172F65A6046', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.CrossRegionNotSupport', + 'errorMessage' => 'Instances of multiple regions not support.', + ], + [ + 'errorCode' => 'DRYRUN.SUCCESS', + 'errorMessage' => 'This request is a dryrun request with successful result.', + ], + [ + 'errorCode' => 'DependencyViolation.SLBConfiguring', + 'errorMessage' => 'Specified operation is denied as your instance is using by another product.', + ], + [ + 'errorCode' => 'DependencyViolation.RouteEntry', + 'errorMessage' => 'Specified instance is used by route entry.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidParameter.TooManyInstanceIds', + 'errorMessage' => 'Instance ids cannot be more than 100.', + ], + [ + 'errorCode' => 'InvalidInstanceIds.ValueNotSupported', + 'errorMessage' => 'The specified instanceIds is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.DeletionProtection', + 'errorMessage' => 'The operation is not allowed due to deletion protection.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus.Initializing', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniLinked', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'OperationDenied.SystemInstanceNotSupport', + 'errorMessage' => 'The system instance does not support the %s operation because %s.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The specified InstanceIds does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + ], + 500 => [ + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Invalid parameters.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"7B7813C6-57BF-41XX-B12B-F172F65A6046\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 7B7813C6-57BF-41XX-B12B-F172F65A6046\\n","errorExample":""}]', + 'title' => 'DeleteInstances', + 'summary' => 'Releases multiple pay-as-you-go Elastic Compute Service (ECS) instances or expired subscription ECS instances at a time. You can configure parameters to specify whether to release the disks attached to the instances or retain the disks as pay-as-you-go disks.', + 'description' => '>After you release an instance, the physical resources used by the instance are recycled. Relevant data is erased and cannot be restored.>'."\n" + ."\n" + .'* After you release an instance, manual snapshots of the cloud disks attached to the instance are retained and continue to be billed. You can call the [DeleteSnapshot](~~2679824~~) operation to delete the snapshots.'."\n" + ."\n" + .'* After you release an instance, whether the cloud disks attached to the instance and the automatic snapshots of the disks are released is determined by the disk attributes. Before you release an instance, you can call the [DescribeDisks](~~2679767~~) and [ModifyDiskAttribute](~~2679770~~) operations to query and modify disk attributes.'."\n" + ."\n" + .' * If `DeleteWithInstance` is set to false for a cloud disk attached to the instance, the cloud disk is changed to a pay-as-you-go disk and retained after the instance is released. If DeleteWithInstance is set to true for the cloud disk, the disk is released together with the instance.'."\n" + .' * If `DeleteAutoSnapshot` is set to false for a cloud disk attached to the instance, the automatic snapshots of the disk are retained when the instance is released. If DeleteAutoSnapshot is set to true for the cloud disk, the automatic snapshots of the disk are released together with the instance.'."\n" + ."\n" + .'* Elastic IP addresses (EIPs) are not released together with instances. You can call the [ReleaseEipAddress](~~448702~~) operation to release EIPs.'."\n" + ."\n" + .'> When you release an instance that is locked for security reasons, the cloud disks attached to the instance are released together with the instance even if DeleteWithInstance is set to false for the disks.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstanceStatus' => [ + 'summary' => 'Queries the status of one or more Elastic Compute Service (ECS) instances. You can also call this operation to query the list of ECS instances that match the specified filter conditions.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28956', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instances. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the instances. You can call the [DescribeZones](~~25610~~) operation to query the most recent zone list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-d', + ], + ], + [ + 'name' => 'ClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the cluster to which the ECS instances belong.'."\n" + ."\n" + .'> This parameter is deprecated. We recommend that you do not use this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cls-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: 1 to 50.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of ECS instances. You can specify 1 to 100 instance IDs.'."\n" + ."\n" + .'Example: \\["i-bp1j4i2jdf3owlhe\\*\\*\\*\\*", "i-bp1j4i2jdf3o1234\\*\\*\\*\\*"].'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the ECS instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp1j4i2jdf3owlhe****', + ], + 'required' => false, + 'example' => 'i-bp1j4i2jdf3owlhe****', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of instances.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '58', + ], + 'InstanceStatuses' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceStatus' => [ + 'description' => 'The IDs and status of the ECS instances.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the instance. Valid values:'."\n" + ."\n" + .'* Pending: The instance is being created.'."\n" + .'* Running: The instance is running.'."\n" + .'* Starting: The instance is being started.'."\n" + .'* Stopping: The instance is being stopped.'."\n" + .'* Stopped: The instance is stopped.'."\n", + 'type' => 'string', + 'example' => 'Running', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp1j4i2jdf3owlhe****', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidParameter.TooManyInstanceIds', + 'errorMessage' => 'Instance ids cannot be more than 100.', + ], + [ + 'errorCode' => 'Abs.InvalidInstanceIds.MalFormed', + 'errorMessage' => 'The specified instanceIds is not valid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The ZoneId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 1,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 58,\\n \\"InstanceStatuses\\": {\\n \\"InstanceStatus\\": [\\n {\\n \\"Status\\": \\"Running\\",\\n \\"InstanceId\\": \\"i-bp1j4i2jdf3owlhe****\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n\\"RequestId\\": \\"6EF60BEC-0242-43AF-BB20-270359FB54A7\\",\\n\\"TotalCount\\": 2,\\n\\"PageNumber\\": 1,\\n\\"PageSize\\": 10,\\n\\"InstanceStatuses\\": {\\n \\"InstanceStatus\\": [{\\n \\"InstanceId\\": \\"i-instance1\\",\\n \\"Status\\": \\"Running\\"\\n },\\n {\\n \\"InstanceId\\": \\"i-ae4r89pp\\",\\n \\"Status\\": \\"Stopped\\"\\n }]\\n }\\n}"},{"type":"xml","example":"\\n 1\\n \\n \\n Running\\n i-bp1j4i2jdf3owlhe****\\n \\n \\n 58\\n 1\\n 746C3444-9A24-4D7D-B8A8-DCBF7AC8BD66\\n","errorExample":"\\n 6EF60BEC-0242-43AF-BB20-270359FB54A7\\n 2\\n 1\\n 10\\n \\n \\n i-instance1\\n Running\\n \\n \\n i-ae4r89pp\\n Stopped\\n \\n \\n"}]', + 'title' => 'DescribeInstanceStatus', + 'description' => 'For information about the lifecycle states of an ECS instance, see [Instance lifecycle](~~25687~~).'."\n" + ."\n" + .'## [](#)Sample requests'."\n" + ."\n" + .'* Query the ECS instances and the status of the instances in a **specific region**. Sample request:'."\n" + ."\n" + .''."\n" + ."\n" + .' "RegionID": "cn-hangzhou"'."\n" + ."\n" + .'* Query the ECS instances and the status of the instances in a **zone** of a **specific region**. Sample request:'."\n" + ."\n" + .''."\n" + ."\n" + .' "RegionID": "cn-hangzhou",'."\n" + .' "ZoneID": "cn-hangzhou-a"'."\n" + ."\n" + .'* Query the status of an ECS instance in a **specific region** based on the **instance ID**. Sample request:'."\n" + ."\n" + .''."\n" + ."\n" + .' "RegionID": "cn-hangzhou",'."\n" + .' "InstancesID": ["i-bp1f7c1zqp999zvp****", "i-bp1dqjv36biueg61****"]'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstances' => [ + 'summary' => 'Queries Elastic Compute Service (ECS) instances by various filter conditions. The details of the queried ECS instances are returned in the response.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28954', + 'abilityTreeNodes' => [ + 'FEATUREecsQDYV10', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'v-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'InstanceNetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the instance. Valid values:'."\n" + ."\n" + .'* classic'."\n" + .'* vpc'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group to which the instance belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance. The value can be a JSON array that consists of up to 100 instance IDs. Separate the IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["i-bp67acfmxazb4p****", "i-bp67acfmxazb4p****", … "i-bp67acfmxazb4p****"]', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of `NextToken`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value:'."\n" + ."\n" + .'* If you do not specify this parameter or if you set this parameter to a value that is smaller than 10, the default value is 10.'."\n" + .'* If you set this parameter to a value that is greater than 100, the default value is 100.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'InnerIpAddresses', + 'in' => 'query', + 'schema' => [ + 'description' => 'The internal IP addresses of instances located in the classic network. This parameter is valid when InstanceNetworkType is set to classic. The value can be a JSON array that consists of up to 100 IP addresses. Separate the IP addresses with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["10.1.1.1", "10.1.2.1", … "10.1.10.1"]', + ], + ], + [ + 'name' => 'PrivateIpAddresses', + 'in' => 'query', + 'schema' => [ + 'description' => 'The private IP addresses of instances located in a VPC. This parameter is valid when InstanceNetworkType is set to vpc. The value can be a JSON array that consists of up to 100 IP addresses. Separate the IP addresses with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["172.16.1.1", "172.16.2.1", … "172.16.10.1"]', + ], + ], + [ + 'name' => 'PublicIpAddresses', + 'in' => 'query', + 'schema' => [ + 'description' => 'The public IP addresses of instances. The value can be a JSON array that consists of up to 100 IP addresses. Separate the IP addresses with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["42.1.1.**", "42.1.2.**", … "42.1.10.**"]', + ], + ], + [ + 'name' => 'EipAddresses', + 'in' => 'query', + 'schema' => [ + 'description' => 'The elastic IP addresses (EIPs) of instances. This parameter is valid when InstanceNetworkType is set to vpc. The value can be a JSON array that consists of up to 100 IP addresses. Separate the IP addresses with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["42.1.1.**", "42.1.2.**", … "42.1.10.**"]', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PostPaid: pay-as-you-go'."\n" + .'* PrePaid: subscription'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth'."\n" + .'* PayByTraffic'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method is used for network usage, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios in which demands exceed resource supplies, the maximum bandwidths may not be reached. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + ], + ], + [ + 'name' => 'InstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance. Fuzzy search with asterisk (\\*) wildcard characters is supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'm-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the instance. Valid values:'."\n" + ."\n" + .'* Pending: The instance is being created.'."\n" + .'* Running: The instance is running.'."\n" + .'* Starting: The instance is being started.'."\n" + .'* Stopping: The instance is being stopped.'."\n" + .'* Stopped: The instance is stopped.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Running', + ], + ], + [ + 'name' => 'LockReason', + 'in' => 'query', + 'schema' => [ + 'description' => 'The reason why the instance is locked. Valid values:'."\n" + ."\n" + .'* financial: The instance is locked due to overdue payments.'."\n" + .'* security: The instance is locked due to security reasons.'."\n" + .'* recycling: The spot instance is locked and pending release.'."\n" + .'* dedicatedhostfinancial: The instance is locked due to overdue payments for the dedicated host.'."\n" + .'* refunded: The instance is locked because a refund is made for the instance.', + 'type' => 'string', + 'required' => false, + 'example' => 'security', + ], + ], + [ + 'name' => 'Filter.1.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key of filter 1 used to query resources. Set the value to `CreationStartTime`. You can specify a time by setting both `Filter.1.Key` and `Filter.1.Value` to query resources that were created after the specified time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationStartTime', + ], + ], + [ + 'name' => 'Filter.2.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key of filter 2 used to query resources. Set the value to `CreationEndTime`. You can specify a time by setting both `Filter.2.Key` and `Filter.2.Value` to query resources that were created before the specified time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationEndTime', + ], + ], + [ + 'name' => 'Filter.3.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key of filter 3 used to query resources. Set the value to `ExpiredStartTime`. You can specify a time by setting both `Filter.3.Key` and `Filter.3.Value` to query resources that expire after the specified time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ExpiredStartTime', + ], + ], + [ + 'name' => 'Filter.4.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key of filter 4 used to query resources. Set the value to `ExpiredEndTime`. You can specify a time by setting both `Filter.4.Key` and `Filter.4.Value` to query resources that expire before the specified time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ExpiredEndTime', + ], + ], + [ + 'name' => 'Filter.1.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of filter 1 used to query resources. Set the value to a time. If you specify this parameter, you must also specify `Filter.1.Key`. Specify the time in the ISO 8601 standard in the `yyyy-MM-ddTHH:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-05T22:40Z', + ], + ], + [ + 'name' => 'Filter.2.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of filter 2 used to query resources. Set the value to a time. If you specify this parameter, you must also specify `Filter.2.Key`. Specify the time in the `yyyy-MM-ddTHH:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-06T22:40Z', + ], + ], + [ + 'name' => 'Filter.3.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of filter 3 used to query resources. Set the value to a time. If you specify this parameter, you must also specify `Filter.3.Key`. Specify the time in the `yyyy-MM-ddTHH:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-07T22:40Z', + ], + ], + [ + 'name' => 'Filter.4.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of filter 4 used to query resources. Set the value to a time. If you specify this parameter, you must also specify `Filter.4.Key`. Specify the time in the `yyyy-MM-ddTHH:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-08T22:40Z', + ], + ], + [ + 'name' => 'DeviceAvailable', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the instance is an I/O optimized instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'NeedSaleCycle', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type of the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'InstanceTypeFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance family of the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SSH key pair bound to the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeyPairNameTest', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the instance belongs. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'HpcClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the high-performance computing (HPC) cluster to which the instance belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hpc-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'RdmaIpAddresses', + 'in' => 'query', + 'schema' => [ + 'description' => 'The remote direct memory access (RDMA) IP addresses of the instance in the HPC cluster.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.10.10.102', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized RAM users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'HttpEndpoint', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the access channel is enabled for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: enabled.'."\n" + ."\n" + .'> For information about instance metadata, see [Access instance metadata](~~49122~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'enabled', + ], + ], + [ + 'name' => 'HttpTokens', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the security hardening mode (IMDSv2) is forcefully used to access instance metadata. Valid values:'."\n" + ."\n" + .'* optional: The security hardening mode (IMDSv2) is not forcefully used.'."\n" + .'* required: The security hardening mode (IMDSv2) is forcefully used. After you set this parameter to required, you cannot access instance metadata in normal mode.'."\n" + ."\n" + .'Default value: optional.'."\n" + ."\n" + .'> For information about modes of accessing instance metadata, see [Access instance metadata](~~150575~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optional', + ], + ], + [ + 'name' => 'HttpPutResponseHopLimit', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + ], + [ + 'name' => 'Ipv6Address', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IPv6 addresses assigned to elastic network interfaces (ENIs).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 address N of the ENI. Valid values of N: 1 to 100.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:4321:180:1701:94c7:bc38:3bfa:****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Value' => [ + 'description' => 'The value of tag N of the instance. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The value of the tag.'."\n" + ."\n" + .'> This parameter will be removed in the future. To ensure future compatibility, we recommend that you use `Tag.N.Value`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'valueTest', + ], + 'key' => [ + 'description' => 'The key of the tag.'."\n" + ."\n" + .'> This parameter will be removed in the future. To ensure future compatibility, we recommend that you use `Tag.N.Key`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'keyTest', + ], + 'Key' => [ + 'description' => 'The key of tag N of the instance. Valid values of N: 1 to 20.'."\n" + ."\n" + .'If you specify a single tag to query resources, up to 1,000 resources to which the tag is added are returned. If you specify multiple tags to query resources, up to 1,000 resources to which all specified tags are added are returned. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'AdditionalAttributes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The additional instance attributes.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The value of attribute N. Valid values of N: 1 to 20. Valid values:'."\n" + ."\n" + .'* META_OPTIONS: instance metadata.'."\n" + .'* DDH_CLUSTER: dedicated host cluster.'."\n" + .'* NETWORK_PRIMARY_ENI_IP: secondary IP address associated with the primary ENI.'."\n" + .'* PRIVATE_DNS_OPTIONS: private domain name information.'."\n" + .'* CPU_OPTIONS_TOPOLOGY_TYPE: CPU topology type of the instance.'."\n" + .'* CURRENT_OS_NVME_SUPPORTED: whether the operating system supports access to disks over the Non-Volatible Memory Express (NVMe) protocol.'."\n" + .'* LOGIN_AS_NON_ROOT: whether ecs-user is used as the logon username of the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'META_OPTIONS', + ], + 'required' => false, + 'example' => 'META_OPTIONS', + 'maxItems' => 5, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. If NextToken is empty, no next page exists.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of instances queried.'."\n" + ."\n" + .'> If you specify the `MaxResults` and `NextToken` request parameters to perform a paged query, the value of the `TotalCount` response parameter is invalid.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Instances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Instance' => [ + 'description' => 'Details about the queried instances.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the instance belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'Memory' => [ + 'description' => 'The memory size. Unit: MiB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '16384', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription'."\n" + .'* PostPaid: pay-as-you-go'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'Cpu' => [ + 'description' => 'The number of vCPUs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8', + ], + 'OSName' => [ + 'description' => 'The name of the operating system of the instance.'."\n", + 'type' => 'string', + 'example' => 'CentOS 7.4 64-bit'."\n", + ], + 'InstanceNetworkType' => [ + 'description' => 'The network type of the instance. Valid values:'."\n" + ."\n" + .'* classic'."\n" + .'* vpc'."\n", + 'type' => 'string', + 'example' => 'vpc', + ], + 'InnerIpAddress' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The internal IP addresses of the instance located in the classic network.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The internal IP address of the instance located in the classic network.'."\n", + 'type' => 'string', + 'example' => '10.170.**.**', + ], + ], + ], + ], + 'ExpiredTime' => [ + 'description' => 'The expiration time of the instance. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mmZ format. The time is displayed in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'example' => '2017-12-10T04:04Z', + ], + 'ImageId' => [ + 'description' => 'The image ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'm-bp67acfmxazb4p****', + ], + 'EipAddress' => [ + 'description' => 'Details about the EIP associated with the instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'Bandwidth' => [ + 'description' => 'The maximum public bandwidth of the EIP. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'AllocationId' => [ + 'description' => 'The ID of the EIP.'."\n", + 'type' => 'string', + 'example' => 'eip-2ze88m67qx5z****', + ], + 'IpAddress' => [ + 'description' => 'The EIP.'."\n", + 'type' => 'string', + 'example' => '42.112.**.**', + ], + 'IsSupportUnassociate' => [ + 'description' => 'Indicates whether the EIP can be disassociated.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'InternetChargeType' => [ + 'description' => 'The metering method of the EIP. Valid values:'."\n" + ."\n" + .'* PayByBandwidth'."\n" + .'* PayByTraffic'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + ], + ], + 'ImageOptions' => [ + 'description' => 'The image options.'."\n", + 'type' => 'object', + 'properties' => [ + 'LoginAsNonRoot' => [ + 'description' => 'Indicates whether the instance that uses the image supports logons of the ecs-user user. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'CurrentOSNVMeSupported' => [ + 'description' => 'Indicates whether the operating system supports access to disks over the NVMe protocol. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'> This parameter is returned only if you specify CURRENT_OS_NVME_SUPPORTED in AdditionalAttributes in the request.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + 'VlanId' => [ + 'description' => 'The virtual LAN (VLAN) ID of the instance.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use other parameters to ensure future compatibility.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'HostName' => [ + 'description' => 'The hostname of the instance.'."\n", + 'type' => 'string', + 'example' => 'testHostName', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagKey' => [ + 'description' => 'The tag key of the instance.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + 'TagValue' => [ + 'description' => 'The tag value of the instance.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + ], + ], + ], + ], + ], + 'Status' => [ + 'description' => 'The status of the instance.'."\n", + 'type' => 'string', + 'example' => 'Running', + ], + 'HibernationOptions' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'Configured' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + ], + ], + 'AdditionalInfo' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableHighDensityMode' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + 'MetadataOptions' => [ + 'description' => 'Details about the metadata options.'."\n", + 'type' => 'object', + 'properties' => [ + 'HttpPutResponseHopLimit' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'HttpTokens' => [ + 'description' => 'Indicates whether the security hardening mode (IMDSv2) is forcefully used to access instance metadata. Valid values:'."\n" + ."\n" + .'* optional: The security hardening mode (IMDSv2) is not forcefully used.'."\n" + .'* required: The security hardening mode (IMDSv2) is forcefully used.'."\n", + 'type' => 'string', + 'example' => 'optional', + ], + 'HttpEndpoint' => [ + 'description' => 'Indicates whether the access channel is enabled for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n", + 'type' => 'string', + 'example' => 'enabled', + ], + ], + ], + 'InstanceId' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + 'StoppedMode' => [ + 'description' => 'Indicates whether the instance continues to be billed after it is stopped. Valid values:'."\n" + ."\n" + .'* KeepCharging: The instance is stopped in standard mode. Billing for the instance continues after the instance is stopped, and resources are retained for the instance.'."\n" + .'* StopCharging: The instance is stopped in economical mode. Billing for some resources of the instance stops after the instance is stopped. When the instance is stopped, its resources such as vCPUs, memory, and public IP addresses are released. The instance may be unable to restart if some required resources are out of stock in the current region.'."\n" + .'* Not-applicable: The instance does not support economical mode.'."\n", + 'type' => 'string', + 'example' => 'KeepCharging', + ], + 'CpuOptions' => [ + 'description' => 'Details about the CPU options.'."\n", + 'type' => 'object', + 'properties' => [ + 'TopologyType' => [ + 'description' => 'The CPU topology type of the instance. Valid values:'."\n" + ."\n" + .'* ContinuousCoreToHTMapping: Hyper-Threading (HT) continuous CPU topology'."\n" + .'* DiscreteCoreToHTMapping: HT discrete CPU topology'."\n", + 'type' => 'string', + 'example' => 'ContinuousCoreToHTMapping', + ], + 'TurboMode' => [ + 'type' => 'string', + ], + 'EnableVISST' => [ + 'type' => 'boolean', + ], + 'EnableVRDT' => [ + 'type' => 'boolean', + ], + 'ThreadsPerCore' => [ + 'description' => 'The number of threads per CPU core.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Numa' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'example' => '2', + ], + 'CoreCount' => [ + 'description' => 'The number of physical CPU cores.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + ], + ], + 'StartTime' => [ + 'description' => 'The time when the instance was last started. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mmZ format. The time is displayed in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'example' => '2017-12-10T04:04Z', + ], + 'PrivateDnsNameOptions' => [ + 'description' => 'The private domain name options of the instance.'."\n" + ."\n" + .'For information about the resolution of ECS private domain names, see [ECS private DNS resolution](~~2844797~~).'."\n" + ."\n" + .'> This parameter is returned only when the `AdditionalAttributes` parameter contains `PRIVATE_DNS_OPTIONS` in the request.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableInstanceIdDnsARecord' => [ + 'description' => 'Indicates whether DNS Resolution from the Instance ID-based Hostname to the Instance Primary Private IPv4 Address (A Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'HostnameType' => [ + 'description' => 'The type of hostname. Valid values:'."\n" + ."\n" + .'* Custom: custom hostname'."\n" + .'* IpBased: IP address-based hostname'."\n" + .'* InstanceIdBased: instance ID-based hostname'."\n" + ."\n" + .'Default value: Custom.'."\n", + 'type' => 'string', + 'example' => 'Custom', + ], + 'EnableIpDnsPtrRecord' => [ + 'description' => 'Indicates whether Reverse DNS Resolution from the Instance Primary Private IPv4 Address to the IP Address-based Hostname (PTR Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'EnableIpDnsARecord' => [ + 'description' => 'Indicates whether DNS Resolution from the IP Address-based Hostname to the Instance Primary Private IPv4 Address (A Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'EnableInstanceIdDnsAAAARecord' => [ + 'description' => 'Indicates whether DNS Resolution from the Instance ID-based Hostname to the Instance Primary Private IPv6 Address (AAAA Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + ], + ], + 'DeletionProtection' => [ + 'description' => 'Indicates whether release protection is enabled for the instance. This parameter determines whether you can use the ECS console or call the DeleteInstance operation to release the instance. Valid values:'."\n" + ."\n" + .'* true: Release protection is enabled for the instance.'."\n" + .'* false: Release protection is disabled for the instance.'."\n" + ."\n" + .'> This parameter is applicable only to pay-as-you-go instances. The release protection feature can protect instances against manual releases, but not against automatic releases.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'SecurityGroupIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The IDs of the security groups to which the instance belongs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + ], + ], + 'VpcAttributes' => [ + 'description' => 'The VPC attributes of the instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'PrivateIpAddress' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The private IP addresses of the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The private IP address of the instance.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + ], + ], + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-2zeuphj08tt7q3brd****', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which the instance is connected.'."\n", + 'type' => 'string', + 'example' => 'vsw-2zeh0r1pabwtg6wcs****', + ], + 'NatIpAddress' => [ + 'description' => 'The NAT IP address of the instance. The NAT IP address is used by ECS instances in different VPCs for communication.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + ], + ], + 'InternetChargeType' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth: pay-by-bandwidth'."\n" + .'* PayByTraffic: pay-by-traffic'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + 'DeploymentSetId' => [ + 'description' => 'The ID of the deployment set to which the instance belongs.'."\n", + 'type' => 'string', + 'example' => 'ds-bp67acfmxazb4p****', + ], + 'InstanceName' => [ + 'description' => 'The instance name.'."\n", + 'type' => 'string', + 'example' => 'InstanceNameTest', + ], + 'SpotInterruptionBehavior' => [ + 'description' => 'The interruption mode of the spot instance when the system initiates a spot instance interruption operation. Valid values:'."\n" + ."\n" + .'* Terminate: releases the spot instance.'."\n" + .'* Stop: stops the instance in economical mode.', + 'type' => 'string', + 'example' => 'Terminate', + ], + 'InternetMaxBandwidthOut' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'SerialNumber' => [ + 'description' => 'The serial number of the instance.'."\n", + 'type' => 'string', + 'example' => '51d1353b-22bf-4567-a176-8b3e12e4****', + ], + 'OSType' => [ + 'description' => 'The type of the operating system of the instance. Valid values:'."\n" + ."\n" + .'* windows: Windows operating systems'."\n" + .'* linux: Linux operating systems'."\n", + 'type' => 'string', + 'example' => 'linux', + ], + 'CreationTime' => [ + 'description' => 'The time when the instance was created. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mmZ format. The time is displayed in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'example' => '2017-12-10T04:04Z', + ], + 'AutoReleaseTime' => [ + 'description' => 'The automatic release time of the pay-as-you-go instance.'."\n", + 'type' => 'string', + 'example' => '2017-12-10T04:04Z', + ], + 'Description' => [ + 'description' => 'The description of the instance.'."\n", + 'type' => 'string', + 'example' => 'testDescription', + ], + 'EnableNVS' => [ + 'type' => 'boolean', + ], + 'LocalStorageCapacity' => [ + 'description' => 'The capacity of local disks attached to the instance. Unit: GiB.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1000', + ], + 'InstanceTypeFamily' => [ + 'description' => 'The instance family of the instance.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5', + ], + 'DedicatedInstanceAttribute' => [ + 'description' => 'The attributes of the instance on the dedicated host.'."\n", + 'type' => 'object', + 'properties' => [ + 'Tenancy' => [ + 'description' => 'Indicates whether the instance is hosted on a dedicated host. Valid values:'."\n" + ."\n" + .'* default: The instance is not hosted on a dedicated host.'."\n" + .'* host: The instance is hosted on a dedicated host.'."\n", + 'type' => 'string', + 'example' => 'default', + ], + 'Affinity' => [ + 'description' => 'Indicates whether the instance on the dedicated host is associated with the dedicated host. Valid values:'."\n" + ."\n" + .'* default: The instance is not associated with the dedicated host. When the instance is restarted from economical mode, the instance may be automatically deployed on another dedicated host in the automatic deployment resource pool.'."\n" + .'* host: The instance is associated with the dedicated host. When the instance is restarted from economical mode, the instance is still deployed on the original dedicated host.'."\n", + 'type' => 'string', + 'example' => 'default', + ], + ], + ], + 'SpotDuration' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance runs for 1 hour. The system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released. Spot instances are billed by second. We recommend that you specify a protection period based on your business requirements.'."\n" + ."\n" + .'> This parameter is returned when SpotStrategy is set to SpotWithPriceLimit or SpotAsPriceGo.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'LocalStorageAmount' => [ + 'description' => 'The number of local disks attached to the instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'PublicIpAddress' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The public IP addresses of the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The public IP address of the instance.'."\n", + 'type' => 'string', + 'example' => '121.40.**.**', + ], + ], + ], + ], + 'GPUSpec' => [ + 'description' => 'The category of GPUs for the instance type.'."\n", + 'type' => 'string', + 'example' => 'NVIDIA V100', + ], + 'NetworkInterfaces' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NetworkInterface' => [ + 'description' => 'The ENIs attached to the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ENI attached to the instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The type of the ENI. Valid values:'."\n" + ."\n" + .'* Primary'."\n" + .'* Secondary'."\n", + 'type' => 'string', + 'example' => 'Primary', + ], + 'Ipv6Sets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Set' => [ + 'description' => 'The IPv6 addresses of the ENI. This parameter has a value only when `AdditionalAttributes.N` is set to `NETWORK_PRIMARY_ENI_IP`.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6Address' => [ + 'description' => 'The IPv6 address of the ENI.'."\n", + 'type' => 'string', + 'example' => '2408:4321:180:1701:94c7:bc38:3bfa:***', + ], + ], + ], + ], + ], + ], + 'Ipv6PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6PrefixSet' => [ + 'description' => 'The IPv6 prefixes of the ENI. This parameter has a value only when `AdditionalAttributes.N` is set to `NETWORK_PRIMARY_ENI_IP`.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6Prefix' => [ + 'description' => 'The IPv6 prefix of the ENI.'."\n", + 'type' => 'string', + 'example' => '2001:1111:*:*::/64', + ], + ], + ], + ], + ], + ], + 'PrimaryIpAddress' => [ + 'description' => 'The primary private IP address of the ENI.'."\n", + 'type' => 'string', + 'example' => '172.17.**.***', + ], + 'MacAddress' => [ + 'description' => 'The MAC address of the ENI.'."\n", + 'type' => 'string', + 'example' => '00:16:3e:32:b4:**', + ], + 'NetworkInterfaceId' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'eni-2zeh9atclduxvf1z****', + ], + 'Ipv4PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv4PrefixSet' => [ + 'description' => 'The IPv4 prefixes of the ENI. This parameter has a value only when `AdditionalAttributes.N` is set to `NETWORK_PRIMARY_ENI_IP`.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv4Prefix' => [ + 'description' => 'The IPv4 prefix of the ENI.'."\n", + 'type' => 'string', + 'example' => '47.122.*.*/19', + ], + ], + ], + ], + ], + ], + 'PrivateIpSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PrivateIpSet' => [ + 'description' => 'The private IP addresses of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PrivateIpAddress' => [ + 'description' => 'The private IP address of the ENI.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + 'PrivateDnsName' => [ + 'description' => 'The private domain name of the instance.'."\n" + ."\n" + .'> This parameter has a value in a specific format only if `HostnameType` is set to `IpBased` or `InstanceIdBased`.'."\n", + 'type' => 'string', + 'example' => 'dnsTestName', + ], + 'Primary' => [ + 'description' => 'Indicates whether the IP address is the primary private IP address. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'SpotPriceLimit' => [ + 'description' => 'The maximum hourly price of the instance. The value can be accurate to three decimal places. This parameter is valid when SpotStrategy is set to SpotWithPriceLimit.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '0.98', + ], + 'SaleCycle' => [ + 'description' => '> The parameter is removed.'."\n", + 'type' => 'string', + 'example' => 'month', + ], + 'DeviceAvailable' => [ + 'description' => 'Indicates whether data disks can be attached to the instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'InstanceType' => [ + 'description' => 'The instance type of the instance.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'SpotStrategy' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is a regular pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is a spot instance with a user-defined maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is a spot instance for which the market price is automatically used as the bid price. The market price can be up to the pay-as-you-go price.', + 'type' => 'string', + 'example' => 'NoSpot', + ], + 'OSNameEn' => [ + 'description' => 'The English name of the operating system of the instance.'."\n", + 'type' => 'string', + 'example' => 'CentOS 7.4 64 bit', + ], + 'KeyPairName' => [ + 'description' => 'The name of the key pair.'."\n", + 'type' => 'string', + 'example' => 'testKeyPairName', + ], + 'IoOptimized' => [ + 'description' => 'Indicates whether the instance is an I/O optimized instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ZoneId' => [ + 'description' => 'The zone ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-g', + ], + 'ClusterId' => [ + 'description' => 'The ID of the cluster to which the instance belongs.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use other parameters to ensure future compatibility.'."\n", + 'type' => 'string', + 'example' => 'c-bp67acfmxazb4p****', + ], + 'HpcClusterId' => [ + 'description' => 'The ID of the HPC cluster to which the instance belongs.'."\n", + 'type' => 'string', + 'example' => 'hpc-bp67acfmxazb4p****', + ], + 'ISP' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'DeploymentSetGroupNo' => [ + 'description' => 'The number of the deployment set group to which the instance belongs in a deployment set.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'EcsCapacityReservationAttr' => [ + 'description' => 'Details about the capacity reservation associated with the instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'CapacityReservationPreference' => [ + 'description' => 'The preference of the capacity reservation.'."\n", + 'type' => 'string', + 'example' => 'cr-bp67acfmxazb4p****', + ], + 'CapacityReservationId' => [ + 'description' => 'The ID of the capacity reservation.'."\n", + 'type' => 'string', + 'example' => 'cr-bp67acfmxazb4p****', + ], + ], + ], + 'DedicatedHostAttribute' => [ + 'description' => 'The information about the dedicated host. The value is an array that consists of DedicatedHostClusterId, DedicatedHostId, and DedicatedHostName.'."\n", + 'type' => 'object', + 'properties' => [ + 'DedicatedHostId' => [ + 'description' => 'The ID of the dedicated host.'."\n", + 'type' => 'string', + 'example' => 'dh-bp67acfmxazb4p****', + ], + 'DedicatedHostName' => [ + 'description' => 'The name of the dedicated host.'."\n", + 'type' => 'string', + 'example' => 'testDedicatedHostName', + ], + 'DedicatedHostClusterId' => [ + 'description' => 'The ID of the dedicated host cluster.'."\n", + 'type' => 'string', + 'example' => 'dc-bp67acfmxazb4h****', + ], + ], + ], + 'GPUAmount' => [ + 'description' => 'The number of GPUs for the instance type.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '4', + ], + 'OperationLocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LockReason' => [ + 'description' => 'The reasons why the instance was locked.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'LockReason' => [ + 'description' => 'The reason why the instance was locked. Valid values:'."\n" + ."\n" + .'* financial: The instance was locked due to overdue payments.'."\n" + .'* security: The instance was locked due to security reasons.'."\n" + .'* recycling: The spot instance was locked and pending release.'."\n" + .'* dedicatedhostfinancial: The instance was locked due to overdue payments for the dedicated host.'."\n" + .'* refunded: The instance was locked because a refund was made for the instance.', + 'type' => 'string', + 'example' => 'Recycling', + ], + 'LockMsg' => [ + 'description' => 'The message returned when the instance was locked.'."\n", + 'type' => 'string', + 'example' => 'The specified instance is locked due to financial reason.', + ], + ], + ], + ], + ], + ], + 'RdmaIpAddress' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The RDMA IP addresses of the instance in the HPC cluster.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The RDMA IP address of the instance in the HPC cluster.'."\n", + 'type' => 'string', + 'example' => '10.10.10.102', + ], + ], + ], + ], + 'InternetMaxBandwidthIn' => [ + 'description' => 'The maximum inbound public bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '50', + ], + 'ClockOptions' => [ + 'type' => 'object', + 'properties' => [ + 'PtpStatus' => [ + 'type' => 'string', + ], + ], + ], + 'Recyclable' => [ + 'description' => 'Indicates whether the instance can be recycled.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'RegionId' => [ + 'description' => 'The region ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'CreditSpecification' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard: the standard mode. For more information, see the "Standard mode" section in [Overview of burstable instances](~~59977~~).'."\n" + .'* Unlimited: the unlimited mode. For more information, see the "Unlimited mode" section in [Overview of burstable instances](~~59977~~).'."\n", + 'type' => 'string', + 'example' => 'Standard', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTag.Mismatch', + 'errorMessage' => 'The specified Tag.n.Key and Tag.n.Value are not match.', + ], + [ + 'errorCode' => 'InvalidTagCount', + 'errorMessage' => 'The specified tags are beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.NotFound', + 'errorMessage' => 'The specified HpcClusterId is not found.', + ], + [ + 'errorCode' => 'InvalidHpcClusterId.Creating', + 'errorMessage' => 'The specified HpcClusterId is creating.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The InstanceChargeType does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => 'The specified InternetChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidLockReason.NotFound', + 'errorMessage' => 'The specified LockReason is not found.', + ], + [ + 'errorCode' => 'InvalidFilterKey.NotFound', + 'errorMessage' => 'Invalid filter.%s.', + ], + [ + 'errorCode' => 'InvalidFilterValue', + 'errorMessage' => 'Invalid filter.%s.', + ], + [ + 'errorCode' => 'InvalidNetworkType.NotFound', + 'errorMessage' => 'The specified InstanceNetworkType is not found.', + ], + [ + 'errorCode' => 'InvalidStatus.NotFound', + 'errorMessage' => 'The specified Status is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"PageSize\\": 10,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"Instances\\": {\\n \\"Instance\\": [\\n {\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"Memory\\": 16384,\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"Cpu\\": 8,\\n \\"OSName\\": \\"CentOS 7.4 64 位\\",\\n \\"InstanceNetworkType\\": \\"vpc\\",\\n \\"InnerIpAddress\\": {\\n \\"IpAddress\\": [\\n \\"10.170.**.**\\"\\n ]\\n },\\n \\"ExpiredTime\\": \\"2017-12-10T04:04Z\\",\\n \\"ImageId\\": \\"m-bp67acfmxazb4p****\\",\\n \\"EipAddress\\": {\\n \\"Bandwidth\\": 5,\\n \\"AllocationId\\": \\"eip-2ze88m67qx5z****\\",\\n \\"IpAddress\\": \\"42.112.**.**\\",\\n \\"IsSupportUnassociate\\": true,\\n \\"InternetChargeType\\": \\"PayByTraffic\\"\\n },\\n \\"ImageOptions\\": {\\n \\"LoginAsNonRoot\\": false,\\n \\"CurrentOSNVMeSupported\\": true\\n },\\n \\"VlanId\\": \\"10\\",\\n \\"HostName\\": \\"testHostName\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagKey\\": \\"TestKey\\",\\n \\"TagValue\\": \\"TestValue\\"\\n }\\n ]\\n },\\n \\"Status\\": \\"Running\\",\\n \\"HibernationOptions\\": {\\n \\"Configured\\": false\\n },\\n \\"AdditionalInfo\\": {\\n \\"EnableHighDensityMode\\": true\\n },\\n \\"MetadataOptions\\": {\\n \\"HttpPutResponseHopLimit\\": 0,\\n \\"HttpTokens\\": \\"optional\\",\\n \\"HttpEndpoint\\": \\"enabled\\"\\n },\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"StoppedMode\\": \\"KeepCharging\\",\\n \\"CpuOptions\\": {\\n \\"TopologyType\\": \\"DiscreteCoreToHTMapping\\",\\n \\"TurboMode\\": \\"\\",\\n \\"EnableVISST\\": true,\\n \\"EnableVRDT\\": true,\\n \\"ThreadsPerCore\\": 2,\\n \\"Numa\\": \\"null\\",\\n \\"CoreCount\\": 2\\n },\\n \\"StartTime\\": \\"2017-12-10T04:04Z\\",\\n \\"PrivateDnsNameOptions\\": {\\n \\"EnableInstanceIdDnsARecord\\": false,\\n \\"HostnameType\\": \\"Custom\\",\\n \\"EnableIpDnsPtrRecord\\": true,\\n \\"EnableIpDnsARecord\\": true,\\n \\"EnableInstanceIdDnsAAAARecord\\": false\\n },\\n \\"DeletionProtection\\": false,\\n \\"SecurityGroupIds\\": {\\n \\"SecurityGroupId\\": [\\n \\"sg-bp67acfmxazb4p****\\"\\n ]\\n },\\n \\"VpcAttributes\\": {\\n \\"PrivateIpAddress\\": {\\n \\"IpAddress\\": [\\n \\"172.17.**.**\\"\\n ]\\n },\\n \\"VpcId\\": \\"vpc-2zeuphj08tt7q3brd****\\",\\n \\"VSwitchId\\": \\"vsw-2zeh0r1pabwtg6wcs****\\",\\n \\"NatIpAddress\\": \\"172.17.**.**\\"\\n },\\n \\"InternetChargeType\\": \\"PayByTraffic\\",\\n \\"DeploymentSetId\\": \\"ds-bp67acfmxazb4p****\\",\\n \\"InstanceName\\": \\"InstanceNameTest\\",\\n \\"SpotInterruptionBehavior\\": \\"Terminate\\",\\n \\"InternetMaxBandwidthOut\\": 5,\\n \\"SerialNumber\\": \\"51d1353b-22bf-4567-a176-8b3e12e4****\\",\\n \\"OSType\\": \\"linux\\",\\n \\"CreationTime\\": \\"2017-12-10T04:04Z\\",\\n \\"AutoReleaseTime\\": \\"2017-12-10T04:04Z\\",\\n \\"Description\\": \\"testDescription\\",\\n \\"EnableNVS\\": true,\\n \\"LocalStorageCapacity\\": 1000,\\n \\"InstanceTypeFamily\\": \\"ecs.g5\\",\\n \\"DedicatedInstanceAttribute\\": {\\n \\"Tenancy\\": \\"default\\",\\n \\"Affinity\\": \\"default\\"\\n },\\n \\"SpotDuration\\": 1,\\n \\"LocalStorageAmount\\": 2,\\n \\"PublicIpAddress\\": {\\n \\"IpAddress\\": [\\n \\"121.40.**.**\\"\\n ]\\n },\\n \\"GPUSpec\\": \\"NVIDIA V100\\",\\n \\"NetworkInterfaces\\": {\\n \\"NetworkInterface\\": [\\n {\\n \\"Type\\": \\"Primary\\",\\n \\"Ipv6Sets\\": {\\n \\"Ipv6Set\\": [\\n {\\n \\"Ipv6Address\\": \\"2408:4321:180:1701:94c7:bc38:3bfa:***\\"\\n }\\n ]\\n },\\n \\"Ipv6PrefixSets\\": {\\n \\"Ipv6PrefixSet\\": [\\n {\\n \\"Ipv6Prefix\\": \\"2001:1111:*:*::/80\\"\\n }\\n ]\\n },\\n \\"PrimaryIpAddress\\": \\"172.17.**.***\\",\\n \\"MacAddress\\": \\"00:16:3e:32:b4:**\\",\\n \\"NetworkInterfaceId\\": \\"eni-2zeh9atclduxvf1z****\\",\\n \\"Ipv4PrefixSets\\": {\\n \\"Ipv4PrefixSet\\": [\\n {\\n \\"Ipv4Prefix\\": \\"192.168.*.*/28\\"\\n }\\n ]\\n },\\n \\"PrivateIpSets\\": {\\n \\"PrivateIpSet\\": [\\n {\\n \\"PrivateIpAddress\\": \\"172.17.**.**\\",\\n \\"PrivateDnsName\\": \\"dnsTestName\\",\\n \\"Primary\\": true\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"SpotPriceLimit\\": 0.98,\\n \\"SaleCycle\\": \\"month\\",\\n \\"DeviceAvailable\\": true,\\n \\"InstanceType\\": \\"ecs.g5.large\\",\\n \\"SpotStrategy\\": \\"NoSpot\\",\\n \\"OSNameEn\\": \\"CentOS 7.4 64 bit\\",\\n \\"KeyPairName\\": \\"testKeyPairName\\",\\n \\"IoOptimized\\": true,\\n \\"ZoneId\\": \\"cn-hangzhou-g\\",\\n \\"ClusterId\\": \\"c-bp67acfmxazb4p****\\",\\n \\"HpcClusterId\\": \\"hpc-bp67acfmxazb4p****\\",\\n \\"ISP\\": \\"null\\",\\n \\"DeploymentSetGroupNo\\": 1,\\n \\"EcsCapacityReservationAttr\\": {\\n \\"CapacityReservationPreference\\": \\"cr-bp67acfmxazb4p****\\",\\n \\"CapacityReservationId\\": \\"cr-bp67acfmxazb4p****\\"\\n },\\n \\"DedicatedHostAttribute\\": {\\n \\"DedicatedHostId\\": \\"dh-bp67acfmxazb4p****\\",\\n \\"DedicatedHostName\\": \\"testDedicatedHostName\\",\\n \\"DedicatedHostClusterId\\": \\"dc-bp67acfmxazb4h****\\"\\n },\\n \\"GPUAmount\\": 4,\\n \\"OperationLocks\\": {\\n \\"LockReason\\": [\\n {\\n \\"LockReason\\": \\"Recycling\\",\\n \\"LockMsg\\": \\"The specified instance is locked due to financial reason.\\"\\n }\\n ]\\n },\\n \\"RdmaIpAddress\\": {\\n \\"IpAddress\\": [\\n \\"10.10.10.102\\"\\n ]\\n },\\n \\"InternetMaxBandwidthIn\\": 50,\\n \\"ClockOptions\\": {\\n \\"PtpStatus\\": \\"\\"\\n },\\n \\"Recyclable\\": false,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"CreditSpecification\\": \\"Standard\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n caeba0bbb2be03f84eb48b699f0a4883\\n 10\\n 1\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 1\\n \\n \\n 2017-12-10T04:04Z\\n 51d1353b-22bf-4567-a176-8b3e12e4****\\n Running\\n ds-bp67acfmxazb4p****\\n testKeyPairName\\n month\\n NoSpot\\n true\\n 1000\\n testDescription\\n 1\\n vpc\\n InstanceNameTest\\n CentOS 7.4 64 bit\\n hpc-bp67acfmxazb4p****\\n 0.98\\n 16384\\n CentOS 7.4 64 位\\n 1\\n m-bp67acfmxazb4p****\\n 10\\n c-bp67acfmxazb4p****\\n NVIDIA V100\\n 2017-12-10T04:04Z\\n false\\n KeepCharging\\n 4\\n testHostName\\n i-bp67acfmxazb4p****\\n 5\\n 50\\n ecs.g5.large\\n PostPaid\\n cn-hangzhou\\n true\\n 2017-12-10T04:04Z\\n 8\\n 2\\n 2017-12-10T04:04Z\\n rg-bp67acfmxazb4p****\\n PayByTraffic\\n cn-hangzhou-g\\n false\\n null\\n Standard\\n ecs.g5\\n linux\\n \\n \\n Primary\\n 00:16:3e:32:b4:**\\n 172.17.**.***\\n eni-2zeh9atclduxvf1z****\\n \\n \\n 172.17.**.**\\n true\\n \\n \\n \\n \\n 2408:4321:180:1701:94c7:bc38:3bfa:***\\n \\n \\n \\n \\n 192.168.*.*/28\\n \\n \\n \\n \\n 2001:1111:*:*::/80\\n \\n \\n \\n \\n The specified instance is locked due to financial reason.\\n Recycling\\n \\n \\n \\n \\n TestValue\\n TestKey\\n \\n \\n \\n 10.10.10.102\\n \\n \\n sg-bp67acfmxazb4p****\\n \\n \\n 121.40.**.**\\n \\n \\n 10.170.**.**\\n \\n \\n vpc-2zeuphj08tt7q3brd****\\n 172.17.**.**\\n vsw-2zeh0r1pabwtg6wcs****\\n \\n 172.17.**.**\\n \\n \\n \\n true\\n PayByTraffic\\n 42.112.**.**\\n 5\\n eip-2ze88m67qx5z****\\n \\n \\n false\\n \\n \\n dh-bp67acfmxazb4p****\\n testDedicatedHostName\\n dc-bp67acfmxazb4h****\\n \\n \\n cr-bp67acfmxazb4p****\\n cr-bp67acfmxazb4p****\\n \\n \\n default\\n default\\n \\n \\n 2\\n 2\\n 4\\n \\n \\n enabled\\n 0\\n optional\\n \\n \\n false\\n \\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeInstances', + 'description' => '### [](#)Limits'."\n" + ."\n" + .'* When you call the API operation by using Alibaba Cloud CLI, you must specify request parameter values of different data types in the required formats. For more information, see [Parameter format overview](~~110340~~).'."\n" + .'* If you use a Resource Access Management (RAM) user or RAM role that does not have the permissions to call this operation, an empty list is returned.'."\n" + ."\n" + .'### [](#)Suggestions'."\n" + ."\n" + .'* Specify DryRun in the request to perform a dry run. In the dry run, the system checks the validity and authorization status of the parameters.'."\n" + .'* During a paged query, when you call the DescribeInstances operation to retrieve the first page of results, set `MaxResults` to specify the maximum number of entries to return in the call. The return value of `NextToken` is a pagination token that can be used in the next call to retrieve a new page of results. When you call the DescribeInstances operation to retrieve a new page of results, set `NextToken` to the `NextToken` value returned in the previous call and set `MaxResults` to specify the maximum number of entries to return in this call.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstanceTypeFamilies' => [ + 'summary' => 'Queries the instance families provided by Elastic Compute Service (ECS). You can call the DescribeInstanceTypeFamilies operation to obtain information about different series of instance families. This helps you better understand the available instance types and choose appropriate instance types to create ECS instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28958', + 'abilityTreeNodes' => [ + 'FEATUREecsILZKWZ', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance family. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Generation', + 'in' => 'query', + 'schema' => [ + 'description' => 'The series of the instance family. For more information, see [Overview of instance families](~~25378~~). Valid values:'."\n" + ."\n" + .'* ecs-1: Series I, which consists of the earliest and cost-effective instance types'."\n" + .'* ecs-2: Series II, which provides upgraded software and hardware and higher performance than Series I'."\n" + .'* ecs-3: Series III, which consists of high-performance instance families and is suitable for different business scenarios'."\n" + .'* ecs-4: Series IV, which consists of enterprise-level instance families (such as g5, c5, and r5), ECS Bare Metal Instance families (such as ebmc5s, ebmg5s, and ebmr5s), and burstable instance families (such as t5) and can meet a wide variety of business requirements with lower latency'."\n" + .'* ecs-5: Series V, which consists of enterprise-level instance families (such as g6, c6, and r6), ECS Bare Metal Instance families (such as ebmg6, ebmg6e, and ebmc6), and storage-enhanced instance families (such as g6e) and delivers quick response times and higher performance'."\n" + .'* ecs-6: Series VI, which consists of enterprise-level instance families (such as hfc7, hfg7, and hfr7) and ECS Bare Metal Instance families (such as ebmhfg7)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs-5', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The data returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'InstanceTypeFamilies' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceTypeFamily' => [ + 'description' => 'The instance families.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The series of the instance family.'."\n", + 'type' => 'object', + 'properties' => [ + 'Generation' => [ + 'description' => 'The series of the instance family.'."\n", + 'type' => 'string', + 'example' => 'ecs-5', + ], + 'InstanceTypeFamilyId' => [ + 'description' => 'The ID of the instance family.'."\n", + 'type' => 'string', + 'example' => 'ecs.g6', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"InstanceTypeFamilies\\": {\\n \\"InstanceTypeFamily\\": [\\n {\\n \\"Generation\\": \\"ecs-5\\",\\n \\"InstanceTypeFamilyId\\": \\"ecs.g6\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n ecs.g6\\n ecs-5\\n \\n \\n ecs.ebmg6\\n ecs-5\\n \\n \\n ecs.ebmg6e\\n ecs-5\\n \\n \\n ecs.g6e\\n ecs-5\\n \\n \\n ecs.c6\\n ecs-5\\n \\n \\n ecs.r6\\n ecs-5\\n \\n \\n ecs.t6\\n ecs-5\\n \\n \\n ecs.hfc6\\n ecs-5\\n \\n \\n ecs.hfg6\\n ecs-5\\n \\n \\n ecs.hfr6\\n ecs-5\\n \\n \\n ecs.ebmc6\\n ecs-5\\n \\n \\n ecs.ebmr6\\n ecs-5\\n \\n \\n A66D039A-EC35-4130-B0D1-E9873C07****\\n","errorExample":""}]', + 'title' => 'DescribeInstanceTypeFamilies', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstanceTypes' => [ + 'summary' => 'Queries the details of all instance types or a specific instance type provided by Elastic Compute Service (ECS). You can understand the specifications and performance of instance types based on the response and select an instance type that meets your business requirements.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28959', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'InstanceTypeFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance family to which the instance type belongs. For information about the valid values of this parameter, see [DescribeInstanceTypeFamilies](~~25621~~).'."\n" + ."\n" + .'For more information about instance families, see [Instance families](~~25378~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g6', + ], + ], + [ + 'name' => 'InstanceTypes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The instance types. You can specify 1 to 10 instance types. If this parameter is empty, information about all instance types is queried.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The instance type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g6.large', + ], + 'required' => false, + 'example' => 'ecs.g6.large', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'MinimumCpuCoreCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of vCPUs. The value must be a positive integer.'."\n" + ."\n" + .'> If an instance type has fewer vCPUs than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'MaximumCpuCoreCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of vCPUs. The value must be a positive integer.'."\n" + ."\n" + .'> If an instance type has more vCPUs than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'MinimumMemorySize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum memory size. Unit: GiB.'."\n" + ."\n" + .'> If the memory size of an instance type is smaller than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'MaximumMemorySize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum memory size. Unit: GiB.'."\n" + ."\n" + .'> If the memory size of an instance type is larger than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '60', + ], + ], + [ + 'name' => 'MinimumGPUAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of GPUs. The value must be a positive integer.'."\n" + ."\n" + .'> If an instance type provides fewer GPUs than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + ], + [ + 'name' => 'MaximumGPUAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of GPUs. The value must be a positive integer.'."\n" + ."\n" + .'> If an instance type provides more GPUs than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'GPUSpec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The GPU model.'."\n" + ."\n" + .'> Fuzzy match is supported. For example, if an instance type provides NVIDIA V100 GPUs and you set this parameter to NVIDIA, information about the instance type is queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'NVIDIA V100', + ], + ], + [ + 'name' => 'InstanceCategory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the instance type. Valid values:'."\n" + ."\n" + .'* General-purpose: general-purpose instance type'."\n" + .'* Compute-optimized: compute-optimized instance type'."\n" + .'* Memory-optimized: memory-optimized instance type'."\n" + .'* Big data: big data instance type'."\n" + .'* Local SSDs: instance type with local SSDs'."\n" + .'* High Clock Speed: instance type with high clock speeds'."\n" + .'* Enhanced: enhanced instance type'."\n" + .'* Shared: shared instance type'."\n" + .'* Compute-optimized with GPU: GPU-accelerated compute-optimized instance type'."\n" + .'* Visual Compute-optimized: visual compute-optimized instance type'."\n" + .'* Heterogeneous Service: heterogeneous service instance type'."\n" + .'* Compute-optimized with FPGA: FPGA-accelerated compute-optimized instance type'."\n" + .'* Compute-optimized with NPU: NPU-accelerated compute-optimized instance type'."\n" + .'* ECS Bare Metal: ECS Bare Metal Instance type'."\n" + .'* Super Computing Cluster: Super Computing Cluster (SCC) instance type'."\n" + .'* High Performance Compute: high-performance computing instance type'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Big data', + 'enum' => [ + 'General-purpose', + 'Compute-optimized', + 'Memory-optimized', + 'Big data', + 'Local SSDs', + 'High Clock Speed', + 'Enhanced', + 'Shared', + 'Compute-optimized with GPU', + 'Visual Compute-optimized', + 'Heterogeneous Service', + 'Compute-optimized with FPGA', + 'Compute-optimized with NPU', + 'ECS Bare Metal', + 'Super Computing Cluster', + 'High Performance Compute', + ], + ], + ], + [ + 'name' => 'CpuArchitecture', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CPU architecture. Valid values:'."\n" + ."\n" + .'* X86'."\n" + .'* ARM'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'X86', + 'enum' => [ + 'X86', + 'ARM', + ], + ], + ], + [ + 'name' => 'MinimumCpuSpeedFrequency', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum clock speed.'."\n" + ."\n" + .'> If an instance type uses processors that have a lower clock speed than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '2.5', + ], + ], + [ + 'name' => 'MaximumCpuSpeedFrequency', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum clock speed.'."\n" + ."\n" + .'> If an instance type uses processors that have a higher clock speed than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '3.2', + ], + ], + [ + 'name' => 'MinimumCpuTurboFrequency', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum turbo frequency.'."\n" + ."\n" + .'> If an instance type uses processors that deliver a lower turbo frequency than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '3.2', + ], + ], + [ + 'name' => 'MaximumCpuTurboFrequency', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum turbo frequency.'."\n" + ."\n" + .'> If an instance type uses processors that deliver a higher turbo frequency than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '4.1', + ], + ], + [ + 'name' => 'PhysicalProcessorModel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CPU model.'."\n" + ."\n" + .'> Fuzzy match is supported. For example, if an instance type uses Intel Xeon (Ice Lake) Platinum 8369B processors and you set this parameter to Intel, information about the instance type is queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Intel Xeon(Ice Lake) Platinum 8369B', + ], + ], + [ + 'name' => 'InstanceFamilyLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The level of the instance family. Valid values:'."\n" + ."\n" + .'* EntryLevel: entry level (shared)'."\n" + .'* EnterpriseLevel: enterprise level'."\n" + .'* CreditEntryLevel: credit-based entry level'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EntryLevel', + 'enum' => [ + 'EntryLevel', + 'EnterpriseLevel', + 'CreditEntryLevel', + ], + ], + ], + [ + 'name' => 'MinimumInstancePpsRx', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum inbound packet forwarding rate over the internal network. Unit: pps.'."\n" + ."\n" + .'> If an instance type provides an inbound packet forwarding rate over the internal network that is lower than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '15', + ], + ], + [ + 'name' => 'MinimumInstancePpsTx', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum outbound packet forwarding rate over the internal network. Unit: pps.'."\n" + ."\n" + .'> If an instance type provides an outbound packet forwarding rate over the internal network that is lower than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '15', + ], + ], + [ + 'name' => 'MinimumInstanceBandwidthRx', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum inbound internal bandwidth. Unit: Kbit/s.'."\n" + ."\n" + .'> If an instance type provides an inbound internal bandwidth that is lower than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '12288', + ], + ], + [ + 'name' => 'MinimumInstanceBandwidthTx', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum outbound internal bandwidth. Unit: Kbit/s.'."\n" + ."\n" + .'> If an instance type provides an outbound internal bandwidth that is lower than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '12288', + ], + ], + [ + 'name' => 'MinimumPrimaryEniQueueNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum default number of queues per primary network interface controller (NIC).'."\n" + ."\n" + .'> If an instance type supports fewer queues per primary NIC than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8', + ], + ], + [ + 'name' => 'MinimumSecondaryEniQueueNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum default number of queues per secondary NIC.'."\n" + ."\n" + .'> If an instance type supports fewer queues per secondary NIC than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '4', + ], + ], + [ + 'name' => 'MinimumEniQuantity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of elastic network interfaces (ENIs) per instance.'."\n" + ."\n" + .'> If an instance type supports fewer ENIs than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '4', + ], + ], + [ + 'name' => 'MinimumQueuePairNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of queue pair (QP) queues per elastic RDMA interface (ERI).'."\n" + ."\n" + .'> If an instance type supports fewer QP queues per ERI than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8', + ], + ], + [ + 'name' => 'MinimumEriQuantity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of ERIs per instance.'."\n" + ."\n" + .'> If an instance type supports fewer ERIs than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + ], + [ + 'name' => 'MinimumEniPrivateIpAddressQuantity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of IPv4 addresses per ENI.'."\n" + ."\n" + .'> If an instance type supports fewer IPv4 addresses per ENI than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'MinimumEniIpv6AddressQuantity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of IPv6 addresses per ENI.'."\n" + ."\n" + .'> If an instance type supports fewer IPv6 addresses per ENI than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'MinimumLocalStorageAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of local disks per instance.'."\n" + ."\n" + .'> If an instance type supports fewer local disks than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '4', + ], + ], + [ + 'name' => 'MinimumLocalStorageCapacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The capacity of each local disk attached per instance. Unit: GiB.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '40', + ], + ], + [ + 'name' => 'MinimumDiskQuantity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of cloud disks per instance.'."\n" + ."\n" + .'> If an instance type supports fewer cloud disks than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '4', + ], + ], + [ + 'name' => 'LocalStorageCategory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of local disks. For more information, see [Local disks](~~63138#section_n2w\\_8yc\\_5u1~~). Valid values:'."\n" + ."\n" + .'* local_hdd_pro: local Serial Advanced Technology Attachment (SATA) HDDs, which are attached to d1ne or d1 instances.'."\n" + .'* local_ssd_pro: local Non-Volatile Memory Express (NVMe) SSDs, which are attached to i2, i2g, i1, ga1, or gn5 instances.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* local_hdd_pro'."\n" + .'* local_ssd_pro'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'local_ssd_pro', + 'enum' => [ + 'local_hdd_pro', + 'local_ssd_pro', + ], + ], + ], + [ + 'name' => 'NvmeSupport', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether cloud disks can be attached by using the NVMe protocol. Valid values:'."\n" + ."\n" + .'* required: Cloud disks can be attached by using the NVMe protocol.'."\n" + .'* unsupported: Cloud disks cannot be attached by using the NVMe protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'required', + 'enum' => [ + 'required', + 'unsupported', + ], + ], + ], + [ + 'name' => 'MinimumBaselineCredit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum baseline CPU performance (overall baseline performance of all vCPUs) of a t5 or t6 burstable instance.'."\n" + ."\n" + .'> If a t5 or t6 instance type provides baseline CPU performance lower than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '12', + ], + ], + [ + 'name' => 'MinimumInitialCredit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum initial CPU credits of a t5 or t6 burstable instance.'."\n" + ."\n" + .'> If a t5 or t6 instance type provides less initial vCPU credits than the specified value, information about the instance type is not queried.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '12', + ], + ], + [ + 'name' => 'InstanceTypeFamilies', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The instance families. You can specify 1 to 10 instance families.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The instance family.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["ecs.g6", "ecs.c6", … "ecs.r6"]', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'GpuSpecs', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The GPU models of instance types. You can specify 1 to 10 GPU models.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The GPU model.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["NVIDIA V100", "NVIDIA T4", … "NVIDIA A10"]', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'InstanceCategories', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The categories of instance types. You can specify 1 to 10 categories of instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The category of instance types. Valid values:'."\n" + ."\n" + .'* General-purpose: general-purpose instance type'."\n" + .'* Compute-optimized: compute-optimized instance type'."\n" + .'* Memory-optimized: memory-optimized instance type'."\n" + .'* Big data: big data instance type'."\n" + .'* Local SSDs: instance type with local SSDs'."\n" + .'* High Clock Speed: instance type with high clock speeds'."\n" + .'* Enhanced: enhanced instance type'."\n" + .'* Shared: shared instance type'."\n" + .'* Compute-optimized with GPU: GPU-accelerated compute-optimized instance type'."\n" + .'* Visual Compute-optimized: visual compute-optimized instance type'."\n" + .'* Heterogeneous Service: heterogeneous service instance type'."\n" + .'* Compute-optimized with FPGA: FPGA-accelerated compute-optimized instance type'."\n" + .'* Compute-optimized with NPU: NPU-accelerated compute-optimized instance type'."\n" + .'* ECS Bare Metal: ECS Bare Metal Instance type'."\n" + .'* Super Computing Cluster: Super Computing Cluster (SCC) instance type'."\n" + .'* High Performance Compute: high-performance computing instance type'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["General-purpose", "Compute-optimized", … "Enhanced"]', + 'enum' => [ + 'General-purpose', + 'Compute-optimized', + 'Memory-optimized', + 'Big data', + 'Local SSDs', + 'High Clock Speed', + 'Enhanced', + 'Shared', + 'Compute-optimized with GPU', + 'Visual Compute-optimized', + 'Heterogeneous Service', + 'Compute-optimized with FPGA', + 'Compute-optimized with NPU', + 'ECS Bare Metal', + 'Super Computing Cluster', + 'High Performance Compute', + ], + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'CpuArchitectures', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The CPU architectures of instance types. You can specify 1 or 2 CPU architectures.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The CPU architecture. Valid values:'."\n" + ."\n" + .'* X86'."\n" + .'* ARM'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["X86", "ARM"]', + 'enum' => [ + 'X86', + 'ARM', + ], + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'PhysicalProcessorModels', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The CPU models of instance types. You can specify 1 to 10 CPU models.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The CPU model.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["Intel Xeon(Ice Lake) Platinum 8369B", "Intel Xeon(Skylake) Platinum 8163", … "Intel Xeon(Cascade Lake) Platinum 8269CY"]', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'LocalStorageCategories', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The categories of local disks used by instance types. You can specify 1 or 2 categories of local disks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The category of local disks. For more information, see [Local disks](~~63138#section_n2w\\_8yc\\_5u1~~). Valid values:'."\n" + ."\n" + .'* local_hdd_pro: local SATA HDDs, which are attached to d1ne or d1 instances'."\n" + .'* local_ssd_pro: local Non-Volatile Memory Express (NVMe) SSDs, which are attached to i2, i2g, i1, ga1, or gn5 instances.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["local_hdd_pro", "local_ssd_pro"]', + 'enum' => [ + 'local_hdd_pro', + 'local_ssd_pro', + ], + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'The maximum number of entries per page. Valid values: 1 to 1600.'."\n" + ."\n" + .'Default value: 1600.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'maximum' => '1600', + 'minimum' => '1', + 'example' => '10', + 'default' => '1600', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'The query token. Set the value to the NextToken value returned in the previous call to the DescribeInstanceTypes operation. You do not need to specify this parameter for the first request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'e71d8a535bd9cc11', + 'maxLength' => 50, + ], + ], + [ + 'name' => 'AdditionalAttributes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'string', + ], + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The information about the queried instance types.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '00827261-20B7-4562-83F2-4DF39876A45A', + ], + 'InstanceTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceType' => [ + 'description' => 'Details about the instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the instance type.'."\n", + 'type' => 'object', + 'properties' => [ + 'EniTotalQuantity' => [ + 'description' => 'The maximum number of ENIs, including primary, secondary, and trunk ENIs.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'LocalStorageCategory' => [ + 'description' => 'The category of local disks. For more information, see [Local disks](~~63138~~). Valid values:'."\n" + ."\n" + .'* local_hdd_pro: local SATA HDDs, which are attached to d1ne or d1 instances'."\n" + .'* local_ssd_pro: local NVMe SSDs, which are attached to i2, i2g, i1, ga1, or gn5 instances'."\n", + 'type' => 'string', + 'example' => 'local_ssd_pro', + ], + 'PrimaryEniQueueNumber' => [ + 'description' => 'The default number of queues per primary ENI.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '4', + ], + 'MemorySize' => [ + 'description' => 'The memory size. Unit: GiB'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '16', + ], + 'LocalStorageCapacity' => [ + 'description' => 'The capacity of each local disk. Unit: GiB'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '5000', + ], + 'InstanceFamilyLevel' => [ + 'description' => 'The level of the instance family. Valid values:'."\n" + ."\n" + .'* EntryLevel: entry level (shared).'."\n" + .'* EnterpriseLevel: enterprise level.'."\n" + .'* CreditEntryLevel: credit-based entry level. For more information, see [Overview](~~59977~~).'."\n", + 'type' => 'string', + 'example' => 'EnterpriseLevel', + ], + 'InstancePpsRx' => [ + 'description' => 'The inbound packet forwarding rate over the internal network. Unit: pps.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '500000', + ], + 'EniIpv6AddressQuantity' => [ + 'description' => 'The maximum number of IPv6 addresses per ENI.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'MaximumQueueNumberPerEni' => [ + 'description' => 'The maximum number of queues per ENI, including primary and secondary ENIs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '4', + ], + 'InstanceTypeId' => [ + 'description' => 'The ID of the instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs.g6.large', + ], + 'InstanceBandwidthRx' => [ + 'description' => 'The maximum inbound internal bandwidth. Unit: Kbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1024000', + ], + 'SecondaryEniQueueNumber' => [ + 'description' => 'The default number of queues per secondary ENI.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '4', + ], + 'GPUSpec' => [ + 'description' => 'The GPU model.'."\n", + 'type' => 'string', + 'example' => 'NVIDIA V100', + ], + 'InstanceBandwidthTx' => [ + 'description' => 'The maximum outbound internal bandwidth. Unit: Kbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1024000', + ], + 'QueuePairNumber' => [ + 'description' => 'The maximum number of QPs per instance, which varies based on the instance type.'."\n" + ."\n" + .'* For enterprise-level CPU-based instance types, the value of `QueuePairNumber` is the maximum number of QPs per instance.'."\n" + .'* For GPU-accelerated instance types, the maximum number of QPs per instance is calculated by using the following formula: Value of `QueuePairNumber` × Value of NetworkCardQuantity.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '22', + ], + 'EriQuantity' => [ + 'description' => 'The number of ERIs.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'GPUAmount' => [ + 'description' => 'The number of GPUs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'TotalEniQueueQuantity' => [ + 'description' => 'The maximum number of queues on ENIs that the instance type supports.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '12', + ], + 'NvmeSupport' => [ + 'description' => 'Indicates whether cloud disks can be attached by using the NVMe protocol. Valid values:'."\n" + ."\n" + .'* required: Cloud disks can be attached by using the NVMe protocol.'."\n" + .'* unsupported: Cloud disks cannot be attached by using the NVMe protocol.'."\n", + 'type' => 'string', + 'example' => 'unsupported', + ], + 'DiskQuantity' => [ + 'description' => 'The maximum number of cloud disks per instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '17', + ], + 'InitialCredit' => [ + 'description' => 'The initial vCPU credits per t5 or t6 burstable instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '120', + ], + 'LocalStorageAmount' => [ + 'description' => 'The number of local disks per instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'BaselineCredit' => [ + 'description' => 'The baseline vCPU computing performance (overall baseline performance of all vCPUs) per t5 or t6 burstable instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '4', + ], + 'InstancePpsTx' => [ + 'description' => 'The outbound packet forwarding rate over the internal network. Unit: pps.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '500000', + ], + 'EniPrivateIpAddressQuantity' => [ + 'description' => 'The maximum number of IPv4 addresses per ENI.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'CpuCoreCount' => [ + 'description' => 'The number of vCPUs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '4', + ], + 'InstanceTypeFamily' => [ + 'description' => 'The instance family.'."\n", + 'type' => 'string', + 'example' => 'ecs.g6', + ], + 'EniQuantity' => [ + 'description' => 'The maximum number of ENIs per instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'EniTrunkSupported' => [ + 'description' => 'Indicates whether trunk ENIs are supported.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'CpuSpeedFrequency' => [ + 'description' => 'The CPU base frequency. Unit: GHz.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '2.7', + ], + 'CpuTurboFrequency' => [ + 'description' => 'The CPU turbo frequency. Unit: GHz.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '3.5', + ], + 'PhysicalProcessorModel' => [ + 'description' => 'The CPU model.'."\n", + 'type' => 'string', + 'example' => 'Intel Xeon(Ice Lake) Platinum 8369B', + ], + 'NetworkEncryptionSupport' => [ + 'description' => 'Indicates whether to allow network traffic transmitted over virtual private clouds (VPCs) to be encrypted. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'InstanceCategory' => [ + 'description' => 'The category of the instance type. Valid values:'."\n" + ."\n" + .'* General-purpose'."\n" + .'* Compute-optimized'."\n" + .'* Memory-optimized'."\n" + .'* Big data'."\n" + .'* Local SSDs'."\n" + .'* High Clock Speed'."\n" + .'* Enhanced'."\n" + .'* Shared'."\n" + .'* Compute-optimized with GPU'."\n" + .'* Visual Compute-optimized'."\n" + .'* Heterogeneous Service'."\n" + .'* Compute-optimized with FPGA'."\n" + .'* Compute-optimized with NPU'."\n" + .'* ECS Bare Metal'."\n" + .'* Super Computing Cluster'."\n" + .'* High Performance Compute'."\n", + 'type' => 'string', + 'example' => 'Big data', + ], + 'CpuArchitecture' => [ + 'description' => 'The CPU architecture. Valid values:'."\n" + ."\n" + .'* X86'."\n" + .'* ARM'."\n", + 'type' => 'string', + 'example' => 'X86', + ], + 'GPUMemorySize' => [ + 'title' => '', + 'description' => 'The amount of GPU memory per GPU. Unit: GiB'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '32', + ], + 'NetworkCardQuantity' => [ + 'description' => 'The maximum number of network cards that the instance type supports.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'NetworkCards' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NetworkCardInfo' => [ + 'description' => 'The information about the network cards.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the network card.'."\n", + 'type' => 'object', + 'properties' => [ + 'NetworkCardIndex' => [ + 'description' => 'The index of the network card.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + ], + ], + ], + ], + ], + 'SupportedBootModes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SupportedBootMode' => [ + 'description' => 'The boot modes supported by the instance type.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The boot mode. Valid values:'."\n" + ."\n" + .'* BIOS'."\n" + .'* UEFI'."\n", + 'type' => 'string', + 'example' => 'BIOS', + ], + ], + ], + ], + 'EnhancedNetwork' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'SriovSupport' => [ + 'description' => '> This parameter is not publicly available.', + 'type' => 'boolean', + 'example' => 'true', + ], + 'VfQueueNumberPerEni' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'RssSupport' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + 'CpuOptions' => [ + 'description' => 'The CPU options.'."\n", + 'type' => 'object', + 'properties' => [ + 'SupportedTopologyTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SupportedTopologyType' => [ + 'description' => 'The CPU topology types of the instance type.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The CPU topology type of the instance type. Valid values:'."\n" + ."\n" + .'* ContinuousCoreToHTMapping: The Hyper-Threading (HT) technology allows continuous threads to run on the same core.'."\n" + .'* DiscreteCoreToHTMapping: The HT technology allows discrete threads to run on the same core.'."\n", + 'type' => 'string', + 'example' => 'ContinuousCoreToHTMapping', + ], + ], + ], + ], + 'ThreadsPerCore' => [ + 'description' => 'The number of threads per CPU core.'."\n" + ."\n" + .'> `If the value of CpuOptions.ThreadPerCore is 1, Hyper-Threading (HT) is disabled.`'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Core' => [ + 'description' => 'The number of CPU cores.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'CoreFactor' => [ + 'description' => 'The CPU option step size.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'HyperThreadingAdjustable' => [ + 'description' => 'Indicates whether HT can be enabled or disabled.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + 'JumboFrameSupport' => [ + 'description' => 'Indicates whether jumbo frames are supported.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Clock' => [ + 'description' => 'The clock supported by the specification.'."\n", + 'type' => 'object', + 'properties' => [ + 'PtpSupport' => [ + 'description' => 'Whether PTP is supported. Possible values:'."\n" + ."\n" + .'* supported'."\n" + .'* unsupported'."\n", + 'type' => 'string', + 'example' => 'unsupported', + ], + ], + ], + 'Attributes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Attribute' => [ + 'description' => 'The list of specification attributes.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The attribute of the specification.'."\n", + 'type' => 'object', + 'properties' => [ + 'Name' => [ + 'description' => 'The name of the attribute.'."\n", + 'type' => 'string', + 'example' => 'VirtualIntelSpeedSelectTechnologySupport', + ], + 'Value' => [ + 'description' => 'The attribute value.'."\n", + 'type' => 'string', + 'example' => '1', + ], + ], + ], + ], + ], + ], + 'NetworkInfo' => [ + 'type' => 'object', + 'properties' => [ + 'BandwidthWeighting' => [ + 'type' => 'object', + 'properties' => [ + 'WeightingInfos' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'WeightingInfo' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'VpcBandwidth' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'EbsBurstBandwidth' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'EbsBandwidth' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'VpcBurstBandwidth' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'Name' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'NextToken' => [ + 'description' => 'The query token returned in this call.', + 'type' => 'string', + 'example' => 'e71d8a535bd9cc11', + ], + ], + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"00827261-20B7-4562-83F2-4DF39876A45A\\",\\n \\"InstanceTypes\\": {\\n \\"InstanceType\\": [\\n {\\n \\"EniTotalQuantity\\": 0,\\n \\"LocalStorageCategory\\": \\"local_ssd_pro\\",\\n \\"PrimaryEniQueueNumber\\": 4,\\n \\"MemorySize\\": 16,\\n \\"LocalStorageCapacity\\": 5000,\\n \\"InstanceFamilyLevel\\": \\"EnterpriseLevel\\",\\n \\"InstancePpsRx\\": 500000,\\n \\"EniIpv6AddressQuantity\\": 1,\\n \\"MaximumQueueNumberPerEni\\": 4,\\n \\"InstanceTypeId\\": \\"ecs.g6.large\\",\\n \\"InstanceBandwidthRx\\": 1024000,\\n \\"SecondaryEniQueueNumber\\": 4,\\n \\"GPUSpec\\": \\"NVIDIA V100\\",\\n \\"InstanceBandwidthTx\\": 1024000,\\n \\"QueuePairNumber\\": 22,\\n \\"EriQuantity\\": 0,\\n \\"GPUAmount\\": 0,\\n \\"TotalEniQueueQuantity\\": 12,\\n \\"NvmeSupport\\": \\"unsupported\\",\\n \\"DiskQuantity\\": 17,\\n \\"InitialCredit\\": 120,\\n \\"LocalStorageAmount\\": 1,\\n \\"BaselineCredit\\": 4,\\n \\"InstancePpsTx\\": 500000,\\n \\"EniPrivateIpAddressQuantity\\": 10,\\n \\"CpuCoreCount\\": 4,\\n \\"InstanceTypeFamily\\": \\"ecs.g6\\",\\n \\"EniQuantity\\": 3,\\n \\"EniTrunkSupported\\": true,\\n \\"CpuSpeedFrequency\\": 2.7,\\n \\"CpuTurboFrequency\\": 3.5,\\n \\"PhysicalProcessorModel\\": \\"Intel Xeon(Ice Lake) Platinum 8369B\\",\\n \\"NetworkEncryptionSupport\\": true,\\n \\"InstanceCategory\\": \\"Big data\\",\\n \\"CpuArchitecture\\": \\"X86\\",\\n \\"GPUMemorySize\\": 32,\\n \\"NetworkCardQuantity\\": 1,\\n \\"NetworkCards\\": {\\n \\"NetworkCardInfo\\": [\\n {\\n \\"NetworkCardIndex\\": 1\\n }\\n ]\\n },\\n \\"SupportedBootModes\\": {\\n \\"SupportedBootMode\\": [\\n \\"BIOS\\"\\n ]\\n },\\n \\"EnhancedNetwork\\": {\\n \\"SriovSupport\\": true,\\n \\"VfQueueNumberPerEni\\": 5,\\n \\"RssSupport\\": true\\n },\\n \\"CpuOptions\\": {\\n \\"SupportedTopologyTypes\\": {\\n \\"SupportedTopologyType\\": [\\n \\"ContinuousCoreToHTMapping\\"\\n ]\\n },\\n \\"ThreadsPerCore\\": 2,\\n \\"Core\\": 2,\\n \\"CoreFactor\\": 2,\\n \\"HyperThreadingAdjustable\\": true\\n },\\n \\"JumboFrameSupport\\": true,\\n \\"Clock\\": {\\n \\"PtpSupport\\": \\"unsupported\\"\\n },\\n \\"Attributes\\": {\\n \\"Attribute\\": [\\n {\\n \\"Name\\": \\"VirtualIntelSpeedSelectTechnologySupport\\",\\n \\"Value\\": \\"1\\"\\n }\\n ]\\n },\\n \\"NetworkInfo\\": {\\n \\"BandwidthWeighting\\": {\\n \\"WeightingInfos\\": {\\n \\"WeightingInfo\\": [\\n {\\n \\"VpcBandwidth\\": 20480000,\\n \\"EbsBurstBandwidth\\": 20000000,\\n \\"EbsBandwidth\\": 10000000,\\n \\"VpcBurstBandwidth\\": 25600000,\\n \\"Name\\": \\"Default\\"\\n }\\n ]\\n }\\n }\\n }\\n }\\n ]\\n },\\n \\"NextToken\\": \\"e71d8a535bd9cc11\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 00827261-20B7-4562-83F2-4DF39876A45A\\n \\n \\n \\n 500000\\n unsupported\\n 4\\n 12\\n true\\n ecs.g6\\n 500000\\n 0\\n 1024000\\n 1024000\\n 4\\n \\n \\n ecs.g6.xlarge\\n 16\\n 4\\n 1\\n 5\\n 4\\n 3\\n 0\\n 17\\n 22\\n EnterpriseLevel\\n 10\\n 2.7\\n 3.5\\n Intel Xeon(Ice Lake) Platinum 8369B\\n 120\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeInstanceTypes', + 'description' => '* **Paged query**: You can set MaxResults to specify the maximum number of entries to return in a single call. If the number of entries to return exceeds the specified MaxResults value, the response includes a NextToken value. You can set NextToken to the return value and specify MaxResults in your next request to DescribeInstanceTypes to retrieve the next page of results.'."\n" + .'* When you call this operation, if you do not set NextToken to paginate the results, only the first page of results is returned by default and includes a maximum of 100 entries. To retrieve further pages of results, set NextToken or pass filter conditions in your requests to DescribeInstanceTypes.'."\n" + ."\n" + .'> MaxResults specifies the maximum number of entries per page. The maximum value of this parameter is changed from 1600 to 100 for all users as of November 15, 2023. If you called the DescribeInstanceTypes operation in 2022, you can use 1600 as the maximum value before November 15, 2023.'."\n" + ."\n" + .'* The DescribeInstanceTypes operation is used to query only the specifications and performance information of instance types. To query instance types that are available in a specific region, call the [DescribeAvailableResource](~~66186~~) operation.'."\n" + .'* To use special instance types such as instance types that are unavailable for purchase, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n", + ], + 'DescribeInstanceAttribute' => [ + 'summary' => 'Queries the attributes of a specific Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28946', + 'abilityTreeNodes' => [ + 'FEATUREecsQDYV10', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-uf6f5trc95ug8t33****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the instance. Valid values:'."\n" + ."\n" + .'* Pending: The instance is being created.'."\n" + .'* Running: The instance is running.'."\n" + .'* Starting: The instance is being started.'."\n" + .'* Stopping: The instance is being stopped.'."\n" + .'* Stopped: The instance is stopped.'."\n", + 'type' => 'string', + 'example' => 'Running', + ], + 'SerialNumber' => [ + 'description' => 'The serial number of the instance.'."\n", + 'type' => 'string', + 'example' => '51d1353b-22bf-4567-a176-8b3e12e4****', + ], + 'CreationTime' => [ + 'description' => 'The time when the instance was created. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'example' => '2017-12-10T04:04Z', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'Description' => [ + 'description' => 'The description of the instance.'."\n", + 'type' => 'string', + 'example' => 'testDescription', + ], + 'InstanceName' => [ + 'description' => 'The instance name.'."\n", + 'type' => 'string', + 'example' => 'testInstanceName', + ], + 'InstanceNetworkType' => [ + 'description' => 'The network type of the instance. Valid values:'."\n" + ."\n" + .'* classic: classic network'."\n" + .'* vpc: VPC'."\n", + 'type' => 'string', + 'example' => 'vpc', + ], + 'Memory' => [ + 'description' => 'The memory size of the instance. Unit: MiB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '16384', + ], + 'ImageId' => [ + 'description' => 'The ID of the image that the instance is running.'."\n", + 'type' => 'string', + 'example' => 'm-bp1h46wfpjsjastc****', + ], + 'ClusterId' => [ + 'description' => 'The ID of the cluster to which the instance belongs.'."\n" + ."\n" + .'> This parameter will be removed in the future. To ensure future compatibility, we recommend that you use other parameters.'."\n", + 'type' => 'string', + 'example' => 'cls-bp67acfmxazb4p****', + ], + 'VlanId' => [ + 'description' => 'The virtual LAN (VLAN) ID of the instance.'."\n" + ."\n" + .'> This parameter will be removed in the future. To ensure future compatibility, we recommend that you use other parameters.'."\n", + 'type' => 'string', + 'example' => '10', + ], + 'StoppedMode' => [ + 'description' => 'Indicates whether the system implements billing after the instance is stopped. Valid values:'."\n" + ."\n" + .'* KeepCharging: The instance is stopped in standard mode. The billing of the instance continues after the instance is stopped, and resources are retained for the instance.'."\n" + .'* StopCharging: The instance is stopped in economical mode. The billing of some resources of the instance stops after the instance is stopped. When the instance is stopped, its resources such as vCPUs, memory, and public IP address are released. The instance may be unable to start again if some required resources are out of stock in the current region.'."\n" + .'* Not-applicable: The instance does not support economical mode.'."\n", + 'type' => 'string', + 'example' => 'KeepCharging', + ], + 'HostName' => [ + 'description' => 'The hostname of the instance.'."\n", + 'type' => 'string', + 'example' => 'testHostName', + ], + 'InstanceId' => [ + 'description' => 'The instance ID'."\n", + 'type' => 'string', + 'example' => 'i-uf6f5trc95ug8t33****', + ], + 'InstanceType' => [ + 'description' => 'The instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'InternetMaxBandwidthIn' => [ + 'description' => 'The maximum inbound public bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '50', + ], + 'InternetMaxBandwidthOut' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'RegionId' => [ + 'description' => 'The ID of the region in which the instance resides.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription.'."\n" + .'* PostPaid: pay-as-you-go'."\n", + 'type' => 'string', + 'example' => 'PrePaid', + ], + 'IoOptimized' => [ + 'description' => 'Indicates whether the ECS instance is I/O optimized. Valid values:'."\n" + ."\n" + .'* optimized: The ECS instance is I/O optimized.'."\n" + .'* none: The ECS instance is not I/O optimized.'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'Cpu' => [ + 'description' => 'The number of vCPUs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the instance expires. The time follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'example' => '2017-12-10T04:04Z', + ], + 'ZoneId' => [ + 'description' => 'The ID of the zone in which the instance resides.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-g', + ], + 'InternetChargeType' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth'."\n" + .'* PayByTraffic'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method is used for network usage, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios in which demands exceed resource supplies, the maximum bandwidths may not be reached. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + 'CreditSpecification' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard: the standard mode. For more information, see the [Performance modes](~~59977#section-svb-w9d-dju~~) section of the "Overview of burstable instances" topic.'."\n" + .'* Unlimited: the unlimited mode. For more information, see the [Performance modes](~~59977#section-svb-w9d-dju~~) section of the "Overview of burstable instances" topic.'."\n", + 'type' => 'string', + 'example' => 'Standard', + ], + 'SecurityGroupIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The IDs of the security groups to which the instance belongs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The IDs of the security groups to which the instance belongs.'."\n", + 'type' => 'string', + 'example' => 'sg-bp1fg655nh68xyz9i****', + ], + ], + ], + ], + 'PublicIpAddress' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The public IP address of the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The public IP address of the instance.'."\n", + 'type' => 'string', + 'example' => '121.40.**.**', + ], + ], + ], + ], + 'InnerIpAddress' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The internal IP address of the instance located in the classic network.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The internal IP address of the instance located in the classic network.'."\n", + 'type' => 'string', + 'example' => '192.168.**.**', + ], + ], + ], + ], + 'VpcAttributes' => [ + 'description' => 'The VPC attributes of the instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC.'."\n", + 'type' => 'string', + 'example' => 'vpc-wz9e4e9pmbcnj6ki6****', + ], + 'NatIpAddress' => [ + 'description' => 'The NAT IP address of the instance. It is used by ECS instances in different VPCs for communication.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which the instance is connected.'."\n", + 'type' => 'string', + 'example' => 'vsw-uf6ixacqz8osrwnqb****', + ], + 'PrivateIpAddress' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The private IP address of the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The private IP address of the instance.'."\n", + 'type' => 'string', + 'example' => '192.168.**.**', + ], + ], + ], + ], + ], + ], + 'EipAddress' => [ + 'description' => 'The elastic IP address (EIP) associated with the instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'InternetChargeType' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth'."\n" + .'* PayByTraffic'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method is used for network usage, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios in which demands exceed resource supplies, the maximum bandwidths may not be reached. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + 'IpAddress' => [ + 'description' => 'The ID of the elastic IP address (EIP).'."\n", + 'type' => 'string', + 'example' => '30.21.**.**', + ], + 'Bandwidth' => [ + 'description' => 'The maximum public bandwidth of the EIP. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8', + ], + 'AllocationId' => [ + 'description' => 'The ID of the EIP.'."\n", + 'type' => 'string', + 'example' => 'eip-wz9uilio26dfscamm****', + ], + ], + ], + 'DedicatedHostAttribute' => [ + 'description' => 'Details about the dedicated host. It is an array that consists of the DedicatedHostClusterId, DedicatedHostId, and DedicatedHostName parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'DedicatedHostName' => [ + 'description' => 'The name of the dedicated host.'."\n", + 'type' => 'string', + 'example' => 'ecs-autoui-create-ddh-temp', + ], + 'DedicatedHostId' => [ + 'description' => 'The ID of the dedicated host.'."\n", + 'type' => 'string', + 'example' => 'dh-2ze7qrzz6lvbfhr0****', + ], + ], + ], + 'OperationLocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LockReason' => [ + 'description' => 'The reason why the instance was locked. Valid values:'."\n" + ."\n" + .'* financial: The dedicated host was locked due to overdue payments.'."\n" + .'* security: The instance was locked due to security reasons.'."\n" + .'* recycling: The spot instance was locked and pending release.'."\n" + .'* dedicatedhostfinancial: The instance was locked due to overdue payments for the dedicated host.'."\n" + .'* refunded: The instance was locked because a refund was made for the instance.', + 'type' => 'array', + 'items' => [ + 'description' => 'The reason why the instance was locked. Valid values:'."\n" + ."\n" + .'* financial: The dedicated host was locked due to overdue payments.'."\n" + .'* security: The instance was locked due to security reasons.'."\n" + .'* recycling: The spot instance was locked and pending release.'."\n" + .'* dedicatedhostfinancial: The instance was locked due to overdue payments for the dedicated host.'."\n" + .'* refunded: The instance was locked because a refund was made for the instance.', + 'type' => 'object', + 'properties' => [ + 'LockReason' => [ + 'description' => 'The reason why the instance was locked. Valid values:'."\n" + ."\n" + .'* financial: The instance was locked due to overdue payments.'."\n" + .'* security: The instance was locked due to security reasons.'."\n" + .'* recycling: The spot instance was locked and pending release.'."\n" + .'* dedicatedhostfinancial: The instance was locked due to overdue payments for the dedicated host.'."\n" + .'* refunded: The instance was locked because a refund is made for the instance.', + 'type' => 'string', + 'example' => 'financial', + ], + ], + ], + ], + ], + ], + 'EnableJumboFrame' => [ + 'description' => 'Indicates whether the Jumbo Frame feature is enabled for the instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'For more information, see [MTUs](~~200512~~).'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'EnableNetworkEncryption' => [ + 'description' => '', + 'type' => 'boolean', + 'example' => 'True', + ], + 'NetworkOptions' => [ + 'description' => 'Details about network options.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableJumboFrame' => [ + 'description' => '', + 'type' => 'boolean', + 'example' => 'false', + ], + 'EnableNetworkEncryption' => [ + 'description' => '', + 'type' => 'boolean', + 'example' => 'False', + ], + 'BandwidthWeighting' => [ + 'description' => 'The bandwidth weight.'."\n" + ."\n" + .'The supported values vary with instance types. You can query the bandwidth weights supported by the current instance type by using the DescribeInstanceTypes.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Vpc-L1.'."\n" + .'* Vpc-L2.'."\n" + .'* Ebs-L1.'."\n" + .'* Ebs-L2.'."\n" + .'* Default.'."\n", + 'type' => 'string', + 'enumValueTitles' => [ + 'Vpc-L1' => 'Vpc-L1', + 'Vpc-L2' => 'Vpc-L2', + 'Ebs-L1' => 'Ebs-L1', + 'Ebs-L2' => 'Ebs-L2', + 'Default' => 'Default', + ], + 'example' => 'Vpc-L1', + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Status\\": \\"Running\\",\\n \\"SerialNumber\\": \\"51d1353b-22bf-4567-a176-8b3e12e4****\\",\\n \\"CreationTime\\": \\"2017-12-10T04:04Z\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"Description\\": \\"testDescription\\",\\n \\"InstanceName\\": \\"testInstanceName\\",\\n \\"InstanceNetworkType\\": \\"vpc\\",\\n \\"Memory\\": 16384,\\n \\"ImageId\\": \\"m-bp1h46wfpjsjastc****\\",\\n \\"ClusterId\\": \\"cls-bp67acfmxazb4p****\\",\\n \\"VlanId\\": \\"10\\",\\n \\"StoppedMode\\": \\"KeepCharging\\",\\n \\"HostName\\": \\"testHostName\\",\\n \\"InstanceId\\": \\"i-uf6f5trc95ug8t33****\\",\\n \\"InstanceType\\": \\"ecs.g5.large\\",\\n \\"InternetMaxBandwidthIn\\": 50,\\n \\"InternetMaxBandwidthOut\\": 5,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"InstanceChargeType\\": \\"PrePaid\\",\\n \\"IoOptimized\\": \\"optimized\\",\\n \\"Cpu\\": 8,\\n \\"ExpiredTime\\": \\"2017-12-10T04:04Z\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\",\\n \\"InternetChargeType\\": \\"PayByTraffic\\",\\n \\"CreditSpecification\\": \\"Standard\\",\\n \\"SecurityGroupIds\\": {\\n \\"SecurityGroupId\\": [\\n \\"sg-bp1fg655nh68xyz9i****\\"\\n ]\\n },\\n \\"PublicIpAddress\\": {\\n \\"IpAddress\\": [\\n \\"121.40.**.**\\"\\n ]\\n },\\n \\"InnerIpAddress\\": {\\n \\"IpAddress\\": [\\n \\"192.168.**.**\\"\\n ]\\n },\\n \\"VpcAttributes\\": {\\n \\"VpcId\\": \\"vpc-wz9e4e9pmbcnj6ki6****\\",\\n \\"NatIpAddress\\": \\"172.17.**.**\\",\\n \\"VSwitchId\\": \\"vsw-uf6ixacqz8osrwnqb****\\",\\n \\"PrivateIpAddress\\": {\\n \\"IpAddress\\": [\\n \\"192.168.**.**\\"\\n ]\\n }\\n },\\n \\"EipAddress\\": {\\n \\"InternetChargeType\\": \\"PayByTraffic\\",\\n \\"IpAddress\\": \\"30.21.**.**\\",\\n \\"Bandwidth\\": 8,\\n \\"AllocationId\\": \\"eip-wz9uilio26dfscamm****\\"\\n },\\n \\"DedicatedHostAttribute\\": {\\n \\"DedicatedHostName\\": \\"ecs-autoui-create-ddh-temp\\",\\n \\"DedicatedHostId\\": \\"dh-2ze7qrzz6lvbfhr0****\\"\\n },\\n \\"OperationLocks\\": {\\n \\"LockReason\\": [\\n {\\n \\"LockReason\\": \\"financial\\"\\n }\\n ]\\n },\\n \\"EnableJumboFrame\\": false,\\n \\"EnableNetworkEncryption\\": true,\\n \\"NetworkOptions\\": {\\n \\"EnableJumboFrame\\": false,\\n \\"EnableNetworkEncryption\\": true,\\n \\"BandwidthWeighting\\": \\"Vpc-L1\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n Running\\n 51d1353b-22bf-4567-a176-8b3e12e4****\\n 2017-12-10T04:04Z\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n testDescription\\n testInstanceName\\n vpc\\n 16384\\n m-bp1h46wfpjsjastc****\\n cls-bp67acfmxazb4p****\\n 10\\n KeepCharging\\n testHostName\\n i-uf6f5trc95ug8t33****\\n ecs.g5.large\\n 50\\n 5\\n cn-hangzhou\\n PrePaid\\n true\\n 8\\n 2017-12-10T04:04Z\\n cn-hangzhou-g\\n PayByTraffic\\n Standard\\n sg-bp1fg655nh68xyz9i****\\n 121.40.**.**\\n 192.168.**.**\\n \\n vpc-wz9e4e9pmbcnj6ki6****\\n 172.17.**.**\\n vsw-uf6ixacqz8osrwnqb****\\n 192.168.**.**\\n \\n \\n PayByTraffic\\n 30.21.**.**\\n 8\\n eip-wz9uilio26dfscamm****\\n \\n \\n ecs-autoui-create-ddh-temp\\n dh-2ze7qrzz6lvbfhr0****\\n \\n \\n financial\\n \\n false\\n","errorExample":""}]', + 'title' => 'DescribeInstanceAttribute', + ], + 'ModifyInstanceAttribute' => [ + 'summary' => 'Modifies the attributes of an Elastic Compute Service (ECS) instance, such as the password, name, description, hostname, security groups, maximum transmission unit (MTU), and user data of the instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29069', + 'abilityTreeNodes' => [ + 'FEATUREecs7AL3YP', + 'FEATUREecs860TU5', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Password', + 'in' => 'query', + 'schema' => [ + 'description' => 'The password of the instance. The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. Special characters include **( ) \\` ~ ! @ # $ % ^ & \\* - \\_ + = | { } \\[ ] : ; \' < > , . ? /** The password of a Windows instance cannot start with a forward slash (/). Take note of the following items:'."\n" + ."\n" + .'* The instance cannot be in the Starting (`Starting`) state.'."\n" + .'* The parameter takes effect after the instance is restarted. You can restart an instance in the ECS console. For more information, see [Restart an instance](~~25440~~). You can also call the [RebootInstance](~~25502~~) operation to restart the instance. The parameter cannot take effect if you restart an instance within the operating system.'."\n" + ."\n" + .'> For security reasons, we recommend that you use HTTPS to send requests if `Password` is specified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test123456', + ], + ], + [ + 'name' => 'HostName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The hostname of the instance. Take note of the following items:'."\n" + ."\n" + .'* The instance cannot be in the Creating (`Pending`) or Starting (`Starting`) state. Otherwise, the new hostname and the configurations in the `/etc/hosts` file may not take effect. You can call the [DescribeInstances](~~25506~~) operation to query the status of the instance.'."\n" + .'* The parameter takes effect after the instance is restarted. You can restart an instance in the ECS console. For more information, see [Restart an instance](~~25440~~). You can also call the [RebootInstance](~~25502~~) operation to restart the instance. The parameter cannot take effect if you restart an instance within the operating system.'."\n" + ."\n" + .'The following limits apply to the hostnames of instances that run different operating systems:'."\n" + ."\n" + .'* For Windows Server, the hostname must be 2 to 15 characters in length and can contain letters, digits, and hyphens (-). The hostname cannot start or end with a hyphen (-), contain consecutive hyphens (-), or contain only digits.'."\n" + .'* For other operating systems such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate a hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-). The hostname cannot contain consecutive periods (.) or hyphens (-). The hostname cannot start or end with a period (.) or a hyphen (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testHostName', + ], + ], + [ + 'name' => 'InstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testInstanceName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the instance. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testInstanceDescription', + ], + ], + [ + 'name' => 'UserData', + 'in' => 'query', + 'schema' => [ + 'description' => 'The user data of the instance. We recommend that you encode the data in Base64. Take note of the following items:'."\n" + ."\n" + .'* The instance must meet the limits for user data. For more information, see [Initialize an instance by using instance user data](~~49121~~).'."\n" + .'* After you restart the instance, the new user data is displayed but not run as scripts.'."\n" + ."\n" + .'> The maximum size of the raw data before encoding is 32 KB. We recommend that you do not pass in confidential information such as passwords and private keys in plaintext. If you must pass in confidential information, we recommend that you encrypt and Base64-encode the information before you pass it in. Then, you can decode and decrypt the information in the same way within the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ZWNobyBoZWxsbyBlY3Mh', + ], + ], + [ + 'name' => 'Recyclable', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'CreditSpecification', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard'."\n" + .'* Unlimited'."\n" + ."\n" + .'For more information about the performance modes of burstable instances, see [Overview](~~59977~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'DeletionProtection', + 'in' => 'query', + 'schema' => [ + 'description' => 'The release protection attribute of the instance. This parameter specifies whether you can use the ECS console or call the [DeleteInstance](~~25507~~) operation to release the instance.'."\n" + ."\n" + .'> This parameter is applicable only to pay-as-you-go instances. The release protection attribute can protect instances against manual releases, but not against automatic releases.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'NetworkInterfaceQueueNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of queues supported by the primary elastic network interface (ENI) of the instance. Take note of the following items:'."\n" + ."\n" + .'* The instance must be in the Stopped (`Stopped`) state.'."\n" + .'* The number of queues supported by an ENI cannot exceed the maximum number of queues that the instance type allows for each ENI. The total number of queues on all ENIs on the instance cannot exceed the queue quota that the instance type supports. To query the maximum number of queues that an instance type allows for each ENI and the queue quota for the instance type, call the [DescribeInstanceTypes](~~25620~~) operation.'."\n" + .'* If you set this parameter to -1, the value is reset to the default value for the instance type. To query the default number of queues of an ENI of each instance type, call the [DescribeInstanceTypes](~~25620~~) operation.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '-1', + 'example' => '8', + ], + ], + [ + 'name' => 'SecurityGroupIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the new security groups to which to assign the instance. Take note of the following items:'."\n" + ."\n" + .'* The security group IDs in the array cannot be duplicate. The length of the array is related to the quota of security groups to which the instance can be assigned. For more information, see the [Security group limits](~~25412#SecurityGroupQuota1~~) section in the "Limits and quotas" topic.'."\n" + .'* The instance is moved from the current security groups to the replacement security groups. If you want the instance to remain in the current security groups, add the IDs of the current security groups to the array.'."\n" + .'* You can move the instance to security groups of a different type. However, the array cannot contain the IDs of both basic and advanced security groups.'."\n" + .'* The security groups and the instance must belong to the same VPC.'."\n" + .'* Security groups of instances in the classic network cannot be changed.'."\n" + ."\n" + .'> New security groups become valid for the instance after a short delay.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7o****', + ], + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7o****', + 'maxItems' => 51, + ], + ], + [ + 'name' => 'RemoteConnectionOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.', + 'type' => 'object', + 'properties' => [ + 'Password' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.', + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'Type' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'EnableJumboFrame', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the Jumbo Frames feature for the instance. Valid values:'."\n" + ."\n" + .'* true: The Jumbo Frame feature is enabled for the instance.'."\n" + .'* false: The Jumbo Frame feature is disabled for the instance.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The instance must be in the Running (`Running`) or Stopped (`Stopped`) state.'."\n" + .'* The instance must reside in a VPC.'."\n" + .'* After the Jumbo Frames feature is enabled, the MTU value of the instance is set to 8500. After the Jumbo Frames feature is disabled, the MTU value of the instance is set to 1500. You can enable the Jumbo Frames feature only for specific instance types. For more information, see [Jumbo Frames](~~200512~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'CpuOptions.Core', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of CPU cores. This parameter cannot be specified but only uses its default value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'CpuOptions.ThreadsPerCore', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of threads per CPU core. The following formula is used to calculate the number of vCPUs of the instance: `CpuOptions.Core` value × `CpuOptions.ThreadsPerCore` value.'."\n" + ."\n" + .'* If `CpuOptionsThreadPerCore` is set to 1, Hyper-Threading (HT) is disabled.'."\n" + .'* This parameter is applicable only to specific instance types.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'CpuOptions.TopologyType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The CPU topology type of the instance. Valid values:'."\n" + ."\n" + .'* ContinuousCoreToHTMapping: The Hyper-Threading (HT) technology allows continuous threads to run on the same core in the CPU topology of the instance.'."\n" + .'* DiscreteCoreToHTMapping: The HT technology allows discrete threads to run on the same core.'."\n" + ."\n" + .'This parameter is left empty by default.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The instance must be in the Stopped (`Stopped`) state.'."\n" + ."\n" + .'> This parameter is supported only for specific instance families. For information about the supported instance families, see [View and modify CPU topologies](~~2636059~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'DiscreteCoreToHTMapping', + ], + ], + [ + 'name' => 'PrivateDnsNameOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The private domain name options of the ECS instance.'."\n" + ."\n" + .'For information about private domain name resolution, see [ECS private DNS resolution](~~2844797~~).'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableInstanceIdDnsARecord' => [ + 'description' => 'Specifies whether DNS Resolution from the Instance ID-based Hostname to the Instance Primary Private IPv4 Address (A Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'EnableInstanceIdDnsAAAARecord' => [ + 'description' => 'Specifies whether DNS Resolution from the Instance ID-based Hostname to the Instance Primary Private IPv6 Address (AAAA Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'EnableIpDnsARecord' => [ + 'description' => 'Specifies whether DNS Resolution from the IP Address-based Hostname to the Instance Primary Private IPv4 Address (A Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'EnableIpDnsPtrRecord' => [ + 'description' => 'Specifies whether Reverse DNS Resolution from the Instance Primary Private IPv4 Address to the IP Address-based Hostname (PTR Record) is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'HostnameType' => [ + 'description' => 'The type of the hostname. Valid values:'."\n" + ."\n" + .'* Custom: custom hostname.'."\n" + .'* IpBased: IP address-based hostname.'."\n" + .'* InstanceIdBased: instance ID-based hostname.'."\n" + ."\n" + .'Default value: Custom.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Custom', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'EnableNetworkEncryption', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceName.Malformed', + 'errorMessage' => 'The specified parameter "InstanceName" is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter "Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidRemoteConnectionOptions.Password', + 'errorMessage' => 'The remote connection password is invalid.', + ], + [ + 'errorCode' => 'InvalidRemoteConnectionOptions.Type', + 'errorMessage' => 'The remote connection type is invalid.', + ], + [ + 'errorCode' => 'InstanceType.ValueNotSupported', + 'errorMessage' => 'The instance type not supported.', + ], + [ + 'errorCode' => 'OSType.ValueNotSupported', + 'errorMessage' => 'The OS type is not supported.', + ], + [ + 'errorCode' => 'InvalidHostPassword.Malformed', + 'errorMessage' => 'The specified parameter "Password" is not valid.', + ], + [ + 'errorCode' => 'InvalidHostName.Malformed', + 'errorMessage' => 'The specified parameter "HostName" is not valid.', + ], + [ + 'errorCode' => 'InvalidPassword.Malformed', + 'errorMessage' => 'The specified parameter "Password" is not valid.', + ], + [ + 'errorCode' => 'InvalidUserData.SizeExceeded', + 'errorMessage' => 'The specified parameter "UserData" exceeds the size.', + ], + [ + 'errorCode' => 'InvalidUserData.NotSupported', + 'errorMessage' => 'TThe specified parameter "UserData" only support the vpc and IoOptimized Instance.', + ], + [ + 'errorCode' => 'ImageNotSupportCloudInit', + 'errorMessage' => 'The specified image does not support cloud-init.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'Pay-As-You-Go instances do not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter.RecycleBin', + 'errorMessage' => 'You do not have permission to set recyclable properties.', + ], + [ + 'errorCode' => 'InvalidParameter.CreditSpecification', + 'errorMessage' => 'The specified CreditSpecification is not supported in this region.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.CreditSpecRestricted', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.NotRunning', + 'errorMessage' => 'The current status of the resource is invalid, you can only do this operation when instance is running.', + ], + [ + 'errorCode' => 'InvalidNetworkType.NotSupported', + 'errorMessage' => 'The classic networkType does not support to modify security group', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => '=The maximum number of eni in a enterprise security group is exceeded.', + ], + [ + 'errorCode' => 'JoinedGroupLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.NotSupportJumboFrame', + 'errorMessage' => 'Not support jumbo frame.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceStatusNotSupport', + 'errorMessage' => 'The instance status is not support modify mtu config.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceStatusUnsupported', + 'errorMessage' => 'The specified instance status does not support modification of cpu topology type.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsTopologyType', + 'errorMessage' => 'The specified parameter CpuOptions.TopologyType: %s is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportCpuOptionsTopologyType', + 'errorMessage' => 'The specified instance type does not support CpuOptions.TopologyType: %s.', + ], + [ + 'errorCode' => 'InvalidAdditionalInfoPvdConfig.SizeExceeded', + 'errorMessage' => 'The specified parameter AdditionalInfo.PvdConfig exceeds the size.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportHighDensityMode', + 'errorMessage' => 'The specified instance type does not support the use of the high density mode.', + ], + [ + 'errorCode' => 'InvalidStatus.StoppedRequired', + 'errorMessage' => 'The current state of the resource does not support this operation, it can only be operated in a stopped state.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsTurboMode', + 'errorMessage' => 'The specified parameter TurboMode is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.EnableNVSUnsupported', + 'errorMessage' => 'The specified instance type does not support EnableNVS.', + ], + [ + 'errorCode' => 'InvalidInstanceType.EnableVISSTUnsupported', + 'errorMessage' => 'The specified instance type does not support EnableVISST.', + ], + [ + 'errorCode' => 'InvalidInstanceType.EnableVRDTUnsupported', + 'errorMessage' => 'The specified instance type does not support EnableVRDT.', + ], + [ + 'errorCode' => 'InvalidInstanceType.SingleCoreMaxModeUnsupported', + 'errorMessage' => 'The specified instance type does not support TurboMode: "SINGLE CORE MAX".', + ], + [ + 'errorCode' => 'InvalidInstanceType.GpuOptionsConfidentialComputingUnsupported', + 'errorMessage' => 'The specified instance type does not support the confidential computing mode.', + ], + [ + 'errorCode' => 'InvalidParameter.GpuOptionsConfidentialComputing', + 'errorMessage' => 'The specified parameter confidential computing mode is not valid.', + ], + [ + 'errorCode' => 'InvalidParameterAuthorized.GpuOptionsConfidentialComputing', + 'errorMessage' => 'The specified parameter confidential computing mode is unauthorized.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The instance amount in the specified SecurityGroup reach its limit.', + ], + [ + 'errorCode' => 'InvalidUserData.Forbidden', + 'errorMessage' => 'User not authorized to input the parameter "UserData"please apply for permission "UserData"', + ], + [ + 'errorCode' => 'InvalidUserData.Base64FormatInvalid', + 'errorMessage' => 'The specified UserData is not valid', + ], + [ + 'errorCode' => 'InvalidChargeType.ValueNotSupported', + 'errorMessage' => 'Deletion protection is only valid for postPaid instance, not for prePaid or spot instance.', + ], + [ + 'errorCode' => 'InvalidUser.Unauthorized', + 'errorMessage' => 'The user is not authorized', + ], + [ + 'errorCode' => 'EnterpriseGroupLimited.MutliGroupType', + 'errorMessage' => 'The specified instance can not join multi SecurityGroup types.', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InstanceNotInSecurityGroup', + 'errorMessage' => 'The instance not in the group.', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidRegion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidEniQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueueNumberExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ExceedInstanceTypeQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportHighPerformanceTrafficMode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidQueuePairNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueuePairNumberExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniQueuePairNumberOverflow', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AclLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.CpuOptionsThreadsPerCoreUnsupported', + 'errorMessage' => 'The current instance type does not support setting or modifying the CpuOptions.ThreadsPerCore parameter.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsCore', + 'errorMessage' => 'The specified parameter CpuOptions.Core is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.CpuOptionsThreadsPerCore', + 'errorMessage' => 'The specified parameter CpuOptions.ThreadsPerCore is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.UserNotSupportNetworkEncryption', + 'errorMessage' => 'User not support network encryption.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportNetworkEncryption', + 'errorMessage' => 'The specified instance type does not support network encryption.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'Credit.NotFound', + 'errorMessage' => 'The specified credit information does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.NeedRestart', + 'errorMessage' => 'The current status of the resource is invalid, you can only do this operation after instance is restarted.', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupIdRepeated', + 'errorMessage' => 'The specified security group ids has repeated.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupType.NotSupportClassic', + 'errorMessage' => 'The specified SecurityGroupIds have classic group type.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupVpc.NotBelongToOneVpc', + 'errorMessage' => 'The specified SecurityGroupIds are belong to different vpc.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"E69EF3CC-94CD-42E7-8926-F133B86387C0\\",\\n \\"HostId\\": \\"ecs.aliyuncs.com\\",\\n \\"Code\\": \\"InvalidInstanceStatus.CreditSpecRestricted\\",\\n \\"Message\\": \\"The current status of the resource does not support this operation.\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n E69EF3CC-94CD-42E7-8926-F133B86387C0\\n ecs.aliyuncs.com\\n InvalidInstanceStatus.CreditSpecRestricted\\n The current status of the resource does not support this operation.\\n"}]', + 'title' => 'ModifyInstanceAttribute', + 'description' => 'You cannot call this operation to modify the attributes of the ECS instances that are locked for security reasons. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceClockOptions' => [ + 'summary' => 'Modifies the instance clock options.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '271586', + 'abilityTreeNodes' => [ + 'FEATUREecs7AL3YP', + ], + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'PtpStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'PTP status value. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: disabled.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'enabled', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized Resource Access Management (RAM) users, and missing parameter values. Otherwise, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The returned information.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TaskId' => [ + 'description' => 'The ID of the modification task.'."\n" + ."\n" + .'You can call the [DescribeTasks](~~25622~~) operation to query the modification results.'."\n", + 'type' => 'string', + 'example' => 't-bp1hvgwromzv32iq****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.ClientToken', + 'errorMessage' => 'The parameter ClientToken is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.PtpStatus', + 'errorMessage' => 'The specified parameter PtpStatus: %s is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportEnablePtp', + 'errorMessage' => 'The specified instance type does not support enable PTP.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Abs.InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.PtpStatusAlreadyEnabled', + 'errorMessage' => 'The specified instance already has PTP enabled.', + ], + [ + 'errorCode' => 'InvalidOperation.PtpStatusAlreadyDisabled', + 'errorMessage' => 'The specified instance does not have PTP enabled.', + ], + [ + 'errorCode' => 'OperationDenied.HardwareNotSupportEnablePtp', + 'errorMessage' => 'The hardware of the instance does not support enable PTP.', + ], + [ + 'errorCode' => 'OperationDenied.ClockPtpNoStock', + 'errorMessage' => 'The resource of PTP is out of usage.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TaskId\\": \\"t-bp1hvgwromzv32iq****\\"\\n}","type":"json"}]', + 'title' => 'ModifyInstanceClockOptions', + 'description' => 'When you call this operation, note that:'."\n" + ."\n" + .'* This is an asynchronous operation. The ID of the asynchronous task is returned after the call. Query the asynchronous task result to determine whether the execution is complete.'."\n" + .'* To modify the PtpStatus parameter, you must specify the parameter. The instance types that are supported. You can query the instance type list ([DescribeInstanceTypes](~~25620~~) ).'."\n", + ], + 'ModifyInstanceNetworkOptions' => [ + 'summary' => 'Modifies instance network configurations.', + 'path' => '', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => [ + 'FEATUREecs7AL3YP', + 'FEATUREecs860TU5', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance whose network bandwidth weight is to be modified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'BandwidthWeighting', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bandwidth weight.'."\n" + ."\n" + .'The supported values vary with instance types. You can query the bandwidth weights supported by the current instance type by using the [DescribeInstanceTypes](~~2679699~~).'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Vpc-L1: Vpc-L1.'."\n" + .'* Vpc-L2: Vpc-L2.'."\n" + .'* Ebs-L1: Ebs-L1.'."\n" + .'* Ebs-L2: Ebs-L2.'."\n" + .'* Default: the Default.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'Vpc-L1' => 'Vpc-L1', + 'Vpc-L2' => 'Vpc-L2', + 'Ebs-L1' => 'Ebs-L1', + 'Ebs-L2' => 'Ebs-L2', + 'Default' => 'Default', + ], + 'example' => 'Vpc-L1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TaskId' => [ + 'description' => 'The ID of the task for which the bandwidth weight is modified.'."\n" + ."\n" + .'You can use the [DescribeTaskAttribute](~~2679968~~) interface to modify the bandwidth weight result.'."\n", + 'type' => 'string', + 'example' => 't-bp198jigq7l0h5ac****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The request uses the same client token as a previous, but non-identical request. Do not reuse a client token with different requests, unless the requests are identical.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NetworkOptionsBandwidthWeightingUnsupported', + 'errorMessage' => 'The current instance type does not support setting or modifying the BandwidthWeighting parameter.', + ], + [ + 'errorCode' => 'InvalidParameter.NetworkOptionsBandwidthWeighting', + 'errorMessage' => 'The specified parameter BandwidthWeighting is not valid.The correct value should be in [%s].', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'Specified instance does not exist.', + ], + ], + 503 => [ + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TaskId\\": \\"t-bp198jigq7l0h5ac****\\"\\n}","type":"json"}]', + 'title' => 'ModifyInstanceNetworkOptions', + 'description' => 'When you call this operation, note that:'."\n" + ."\n" + .'* This is an asynchronous operation. The ID of the asynchronous task is returned after the call. Query the asynchronous task result to determine whether the execution is complete.'."\n" + .'* You can modify only one attribute at a time. If you modify multiple attributes, call this operation multiple times.'."\n" + .'* To modify the BandwidthWeighting, you must specify the specifications of the instance. You can use the [DescribeInstanceTypes](~~2679699~~) to query whether the current instance type supports bandwidth weights and the supported bandwidth weights.'."\n", + ], + 'ModifyInstanceChargeType' => [ + 'summary' => 'Changes the billing method of Elastic Compute Service (ECS) instances in batches.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29072', + 'abilityTreeNodes' => [ + 'FEATUREecs7AL3YP', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance IDs. The value can be a JSON array that consists of up to 20 instance IDs. Separate the instance IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '["i-bp67acfmxazb4p****","i-bp67acfmxazb4d****"]', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The renewal duration of the subscription instance. If the instance is hosted on a dedicated host, the renewal duration of the instance cannot exceed the subscription duration of the dedicated host. Valid values:'."\n" + ."\n" + .'Valid values when `PeriodUnit` is set to Month: `1, 2, 3, 4, 5, 6, 7, 8, 9, and 12`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the renewal duration specified by `Period`. Valid values:'."\n" + ."\n" + .'Month'."\n" + ."\n" + .'Default value: Month.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'IncludeDataDisks', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to change the billing method of all data disks on the instance from pay-as-you-go to subscription. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized Resource Access Management (RAM) users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically complete the payment. Valid values:'."\n" + ."\n" + .'* true: enables automatic payment. Maintain a sufficient account balance. Otherwise, your order becomes invalid and is canceled.'."\n" + .'* false: disables automatic payment. An order is generated but no payment is made.'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'> If your account balance is insufficient, you can set AutoPay to false to generate an unpaid order. Then, you can log on to the ECS console to pay for the order.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'true', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new billing method of the instance. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription'."\n" + .'* PostPaid: pay-as-you-go'."\n" + ."\n" + .'Default value: PrePaid.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + 'default' => 'PrePaid', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'IsDetailFee', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to return cost details of the order after the billing method is changed from subscription to pay-as-you-go. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'string', + 'example' => '20413515388****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'B61C08E5-403A-46A2-96C1-F7B1216DB10C', + ], + 'FeeOfInstances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'FeeOfInstance' => [ + 'description' => 'Details about the charges for the order.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + 'Currency' => [ + 'description' => 'The unit of currency for the bill.'."\n" + ."\n" + .'Alibaba Cloud China site (aliyun.com): CNY.'."\n" + ."\n" + .'Alibaba Cloud International site (alibabacloud.com): USD.'."\n", + 'type' => 'string', + 'example' => 'CNY', + ], + 'Fee' => [ + 'description' => 'The cost value.'."\n", + 'type' => 'string', + 'example' => '0', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstance.UnpaidOrder', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling, try again later.', + ], + [ + 'errorCode' => 'InstanceHasProcessingConvertOrder', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InstanceIds', + 'errorMessage' => 'The specified InstanceIds are invalid.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidStatus.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSpotStrategy', + 'errorMessage' => 'The specified spotStrategy is not valid.', + ], + [ + 'errorCode' => 'ExpiredInstance', + 'errorMessage' => 'The specified instance has expired.', + ], + [ + 'errorCode' => 'InstancesIdQuotaExceed', + 'errorMessage' => 'The maximum number of Instances is exceeded.', + ], + [ + 'errorCode' => 'InvalidClientToken.ValueNotSupported', + 'errorMessage' => 'The ClientToken provided is invalid.', + ], + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ReleaseTimeHaveBeenSet', + 'errorMessage' => 'The specified instance has been set released time.', + ], + [ + 'errorCode' => 'QuotaExceed.AfterpayInstance', + 'errorMessage' => 'The maximum number of Pay-As-You-Go instances is exceeded: %s.', + ], + [ + 'errorCode' => 'InvalidParameter.Bandwidth', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.RufundVcpu', + 'errorMessage' => 'The maximum number of refund vcpu is exceeded: %s.', + ], + [ + 'errorCode' => 'InvalidPeriod.UnitMismatch', + 'errorMessage' => 'The specified Period must be correlated with the PeriodUnit.', + ], + [ + 'errorCode' => 'InvalidImageType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededDedicatedHost', + 'errorMessage' => 'Instance expired date can\'t exceed dedicated host expired date.', + ], + [ + 'errorCode' => 'InvalidMarketImageChargeType.NotSupport', + 'errorMessage' => 'The specified chargeType of marketImage is unsupported.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAccountStatus.PayAmountLimitExceeded', + 'errorMessage' => 'Your account is being restricted, due to no default payment method is set or you has not being authorized.', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => 'The specified instance has no system disk.', + ], + [ + 'errorCode' => 'AccountForbidden.ProductCreationLimited', + 'errorMessage' => 'The commodity must be officially operated by Aliyun and in pay-as-you-go billing method.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'InvalidPeriod', + 'errorMessage' => 'The specified period is not valid.', + ], + [ + 'errorCode' => 'DISK_IN_DEDICATED_BLOCK_STORAGE_CLUSTER', + 'errorMessage' => 'The disk in dedicated block storage cluster is not allowed to do this operation.', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'NoPermission.Refund', + 'errorMessage' => 'The operation requires refund permission. Please apply for permission from your main account.', + ], + [ + 'errorCode' => 'QuotaExceeded.InternetBandwidth', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'DiskExpiredOrInArrears', + 'errorMessage' => 'Your account has an overdue payment for the specified instance.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidInstance.TempBandwidthUpgrade', + 'errorMessage' => 'Cannot switch to Pay-As-You-Go during the period of temporary bandwidth upgrade.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InstanceType.Offline', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has an outstanding payment.', + ], + [ + 'errorCode' => 'InvalidParameter.NotMatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAction', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.PostPaidDisk', + 'errorMessage' => 'Living postPaid disks quota exceeded.', + ], + [ + 'errorCode' => 'ImageNotSupportInstanceType', + 'errorMessage' => 'The specified instanceType is not supported by instance with marketplace image.', + ], + [ + 'errorCode' => 'InvalidInstanceType.PhasedOut', + 'errorMessage' => 'This instanceType is no longer offered.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededDedicatedHost', + 'errorMessage' => 'Instance expired date can\'t exceed dedicated host expired date.', + ], + [ + 'errorCode' => 'RealNameAuthenticationError', + 'errorMessage' => 'Your account has not passed the real-name authentication yet.', + ], + [ + 'errorCode' => 'InvalidOperation.NotSupport', + 'errorMessage' => 'Instance on dedicated host not support modify charge type.', + ], + [ + 'errorCode' => 'QuotaExceed.ElasticQuota', + 'errorMessage' => 'No additional quota is available for the specified ECS instance type.', + ], + [ + 'errorCode' => 'PeriodNotSupported.InstanceOnManagedPrivateSpace', + 'errorMessage' => 'The instance on ManagedPrivateSpace is not supported to modify chargeType.', + ], + [ + 'errorCode' => 'UnsupportedIspChargeType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.StoppedModeUnsupported', + 'errorMessage' => 'The specified instance is StopCharging.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + ], + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [ + 'ecs:Instance:ChargeTypeChanged', + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"OrderId\\": \\"20413515388****\\",\\n \\"RequestId\\": \\"B61C08E5-403A-46A2-96C1-F7B1216DB10C\\",\\n \\"FeeOfInstances\\": {\\n \\"FeeOfInstance\\": [\\n {\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"Currency\\": \\"CNY\\",\\n \\"Fee\\": \\"0\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 20413515388****\\n B61C08E5-403A-46A2-96C1-F7B1216DB10C\\n \\n i-bp67acfmxazb4p****\\n CNY\\n 0\\n \\n","errorExample":""}]', + 'title' => 'ModifyInstanceChargeType', + 'description' => '### [](#)Precautions'."\n" + ."\n" + .'* Before you call this operation, make sure that you are familiar with the [subscription](~~56220~~) and [pay-as-you-go](~~40653~~) billing methods and [pricing](https://www.alibabacloud.com/product/ecs#pricing) of ECS.'."\n" + .'* The instances must be in the **Running** (`Running`) or **Stopped** (`Stopped`) state, and you have no overdue payments for the instances.'."\n" + .'* After you change the billing method, the payment is automatically completed. Make sure that the balance in your account is sufficient. Otherwise, your order becomes invalid and is canceled. If your account balance is insufficient, you can set `AutoPay` to `false` to generate an unpaid order. Then, you can log on to the [ECS console](https://ecs.console.aliyun.com/) to pay for the order.'."\n" + ."\n" + .'### [](#)Considerations'."\n" + ."\n" + .'* **Change the billing method from subscription to pay-as-you-go**:'."\n" + ."\n" + .' * After you change the billing method of an instance from subscription to pay-as-you-go, the new billing method remains in effect for the remaining lifecycle of the instance. The price difference is refunded to the payment account that you used. Vouchers that have been redeemed are not refundable.'."\n" + .' * **Refund rule**: You have a quota for the total refund amount each month, and unused balance of this quota is not carried forward into the next month. After you use up the refund quota of the current month, you can change the billing method only in the next month. The refund amount incurred when you change the billing method is calculated based on the following formula: **Number of vCPUs × (Number of remaining days × 24 ± Number of remaining or elapsed hours)**. For more information, see [Change the billing method of an instance from subscription to pay-as-you-go](~~85517~~).'."\n" + ."\n" + .'* **Change the billing method from pay-as-you-go to subscription**:'."\n" + ."\n" + .' * You can change the billing method of all data disks attached to an instance from pay-as-you-go to subscription.'."\n" + .' * This operation cannot be called for a pay-as-you-go instance that has an automatic release time set. For more information, see [Change the billing method of an instance from subscription to pay-as-you-go](~~49884~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceSpec' => [ + 'summary' => 'Changes the instance type or public bandwidth of a pay-as-you-go Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29077', + 'abilityTreeNodes' => [ + 'FEATUREecsGR65E9', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new instance type. For more information, see [Overview of instance families](~~25378~~) or call the [DescribeInstanceTypes](~~25620~~) operation to query the most recent instance type list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g6.large', + ], + ], + [ + 'name' => 'InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s. Valid values: 0 to 100.'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method for network usage is used, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios where demand outstrips resource supplies, these maximum bandwidth values may not be reached. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'InternetMaxBandwidthIn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum inbound public bandwidth. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* When the purchased outbound public bandwidth is less than or equal to 10 Mbit/s, the valid value of this parameter ranges from 1 to 10 and the default value is 10.'."\n" + .'* When the purchased outbound public bandwidth is greater than 10 Mbit/s, the valid values of this parameter are 1 to the `InternetMaxBandwidthOut` value and the default value is the `InternetMaxBandwidthOut` value.'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method for network usage is used, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios where demand outstrips resource supplies, these maximum bandwidth values may not be reached. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '200', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'Temporary.StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'Temporary.EndTime', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'Temporary.InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '0', + ], + ], + [ + 'name' => 'Async', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to submit an asynchronous request. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'AllowMigrateAcrossZone', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to allow cross-cluster instance type upgrade. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'When you set `AllowMigrateAcrossZone` to true and upgrade the instance based on the returned information, take note of the following items:'."\n" + ."\n" + .'Instance that resides in the classic network:'."\n" + ."\n" + .'* For [retired instance types](~~55263~~), when a non-I/O optimized instance is upgraded to an I/O optimized instance, the private IP address, disk device names, and software authorization codes of the instance change. For a Linux instance, basic disks (`cloud`) are identified as xvd\\* such as **xvda** and **xvdb**, and ultra disks (`cloud_efficiency`) and standard SSDs (`cloud_ssd`) are identified as vd\\* such as **vda** and **vdb**.'."\n" + .'* For [instance families available for purchase](~~25378~~), when the instance type of an instance is changed, the private IP address of the instance changes.'."\n" + ."\n" + .'Instance that resides in a virtual private cloud (VPC): For [retired instance types](~~55263~~), when a non-I/O optimized instance is upgraded to an I/O optimized instance, the disk device names and software authorization codes of the instance change. For a Linux instance, basic disks (`cloud`) are identified as xvd\\* such as **xvda** and **xvdb**, and ultra disks (`cloud_efficiency`) and standard SSDs (`cloud_ssd`) are identified as vd\\* such as **vda** and **vdb**.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'SystemDisk.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + ."\n" + .'> This parameter takes effect only when you upgrade a non-I/O optimized instance of [a retired instance type](~~55263~~) to an I/O optimized instance of [an instance type available for purchase](~~25378~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'ModifyMode', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + 'enum' => [ + 'Online', + 'Offline', + ], + ], + ], + [ + 'name' => 'Disk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.', + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.', + 'type' => 'object', + 'properties' => [ + 'DiskId' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.', + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Category' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.', + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'PerformanceLevel' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.', + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 128, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, service limits, and unavailable ECS resources. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false (default): performs a dry run and performs the actual request.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => 'The specified InternetChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter "InternetMaxBandwidthOut" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Mismatch', + 'errorMessage' => 'Too many parameters in one request.', + ], + [ + 'errorCode' => 'BandwidthUpgradeDenied.EipBoundInstance', + 'errorMessage' => 'The specified VPC instance has bound EIP, temporary bandwidth upgrade is denied.', + ], + [ + 'errorCode' => 'InvalidTemporary.StartTime', + 'errorMessage' => 'The specifed Temporary.StartTime is not valid.', + ], + [ + 'errorCode' => 'InvalidTemporary.EndTime', + 'errorMessage' => 'The specifed Temporary.EndTime is not valid.', + ], + [ + 'errorCode' => 'Downgrade.NotSupported', + 'errorMessage' => 'Downgrade operation is not supported.', + ], + [ + 'errorCode' => 'DependencyViolation.InstanceType', + 'errorMessage' => 'The current InstanceType cannot be changed to the specified InstanceType.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has an outstanding payment.', + ], + [ + 'errorCode' => 'InvalidParameter.Bandwidth', + 'errorMessage' => 'The specified parameter Bandwidth is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The specified image does not support the specified instance type.', + ], + [ + 'errorCode' => 'InvalidParameter.AllowMigrateAcrossZone', + 'errorMessage' => 'The specified parameter CanMigrateAcrossZone is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.SystemDiskCategory', + 'errorMessage' => 'The specified param SystemDisk.Category is not valid.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling, please try again after 5 minutes.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.NotStopped', + 'errorMessage' => 'The specified Instance status is not stopped.', + ], + [ + 'errorCode' => 'InvalidAction', + 'errorMessage' => 'Specified action is not valid.', + ], + [ + 'errorCode' => 'IdempotenceParamNotMatch', + 'errorMessage' => 'There is a idempotence signature mismatch between this and last request.', + ], + [ + 'errorCode' => 'InvalidClientToken.ValueNotSupported', + 'errorMessage' => 'The ClientToken provided is invalid.', + ], + [ + 'errorCode' => 'Price.PricePlanResultNotFound', + 'errorMessage' => 'The internetMaxBandwidthIn or internetMaxBandwidthOut provided is invalid.', + ], + [ + 'errorCode' => 'InvalidAction.NotSupport', + 'errorMessage' => 'The ecs on dedicatedHost not support modify instanceType.', + ], + [ + 'errorCode' => 'InvalidMarketImageStatus.NotSupported', + 'errorMessage' => 'The status of specified market image does not support this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.VpcHasEnabledAdvancedNetworkFeature', + 'errorMessage' => 'The specified vpc has enabled advanced network feature.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'InstanceTypeNotSupported.TooManyDisksAttached', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The upgrade operation of instance does not support this category of disk.', + ], + [ + 'errorCode' => 'InvalidParameter.CloudboxNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.DiskCapacity', + 'errorMessage' => 'The used capacity of disk type has exceeded the quota in the zone, %s.', + ], + [ + 'errorCode' => 'InvalidParam.Async', + 'errorMessage' => 'The specified parameter async is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.DiskCategory', + 'errorMessage' => 'The specified parameter Disk.Category can not be null when Disk.DiskId is specified.', + ], + [ + 'errorCode' => 'InvalidParameter.DiskCategory', + 'errorMessage' => 'The specified parameter Disk.Category is not valid.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.Malformed', + 'errorMessage' => 'The specified parameter Disk.n.PerformanceLevel is not valid.', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'InvalidParameter.DedicatedRegionNotSupported', + 'errorMessage' => 'The specified action is rejected because the specified ECS instance in the dedicated region does not support public IP.', + ], + [ + 'errorCode' => 'InvalidOperation.OnlineModificationUnsupported', + 'errorMessage' => 'Online modification of instance type is not supported for the specified instance due to its CPU topology.', + ], + [ + 'errorCode' => 'QuotaExceeded.InternetBandwidth', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportRss', + 'errorMessage' => 'The ECS instance type does not support Rss.', + ], + ], + 403 => [ + [ + 'errorCode' => 'CategoryViolation', + 'errorMessage' => 'The specified instance does not support this operation because of its disk category.', + ], + [ + 'errorCode' => 'InvalidStatus.ValueNotSupported', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified instance is out of usage.', + ], + [ + 'errorCode' => 'LastTokenProcessing', + 'errorMessage' => 'The last token request is processing.', + ], + [ + 'errorCode' => 'InvalidInstance.UnpaidOrder', + 'errorMessage' => 'The specified instance has unpaid order.', + ], + [ + 'errorCode' => 'InstanceSpecModification.NotEffective', + 'errorMessage' => 'The specified instance has been reserved for making a spec modification and not taken effective in the current contract period.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified zone does not offer the specified instancetype.', + ], + [ + 'errorCode' => 'ImageNotSupportInstanceType', + 'errorMessage' => 'The specified image do not support the InstanceType instance.', + ], + [ + 'errorCode' => 'InstanceType.Offline', + 'errorMessage' => 'The specified InstanceType has been offline.', + ], + [ + 'errorCode' => 'InvalidParameter.NotMatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.EipNotSupport', + 'errorMessage' => 'The specified instance with eip is not supported, please unassociate eip first.', + ], + [ + 'errorCode' => 'InvalidInstance.NatPortMapNotSupport', + 'errorMessage' => 'The special instance with nat port map not support operate, please remove nat port map first.', + ], + [ + 'errorCode' => 'InvalidOperation.StarterPackage', + 'errorMessage' => 'StarterPackage not support modification.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The resource is out of usage.', + ], + [ + 'errorCode' => 'OperationDenied.UnpaidOrder', + 'errorMessage' => 'The specified instance has unpaid order.', + ], + [ + 'errorCode' => 'InvalidOperation.EipNotSupport', + 'errorMessage' => 'The special instance with eip not support operate, please unassociate eip first.', + ], + [ + 'errorCode' => 'InvalidParameter.InternetMaxBandwidthOut', + 'errorMessage' => 'The specified parameter InternetMaxBandwidthOut is invalid.', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceWithEipNotSupport', + 'errorMessage' => 'The special instance with eip not support operate, please unassociate eip first.', + ], + [ + 'errorCode' => 'SecurityRisk.3DVerification', + 'errorMessage' => 'We have detected a security risk with your default credit or debit card. Please proceed with verification via the link in your email.', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => 'The specified instance has no system disk.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportDiskCategory', + 'errorMessage' => 'The instanceType of the specified instance does not support this disk category.', + ], + [ + 'errorCode' => 'QuotaExceed.ElasticQuota', + 'errorMessage' => 'No additional quota is available for the specified ECS instance type.', + ], + [ + 'errorCode' => 'InvalidResourceType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.NotAllowed', + 'errorMessage' => 'The specified vpc %s has enabled senior network feature.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportEniTrunking', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueueNumberExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ExceedInstanceTypeQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidEniQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportHighPerformanceTrafficMode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniQueuePairNumberOverflow', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceEniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueuePairNumberExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxModifyOnlineNumberExceeded', + 'errorMessage' => 'The specified instance has reached the maximum number of modify online attempts and needs to be rebooted.', + ], + [ + 'errorCode' => 'InvalidOperation.RebootingRequired', + 'errorMessage' => 'The specified instance needs to be rebooted.', + ], + [ + 'errorCode' => 'InvalidOperation.OSTypeNotSupported', + 'errorMessage' => 'The specified OS type is not supported.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter SystemDisk.Category is not valid.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified Category of Data Disk is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The upgrade operation of instance does not support this category of disk.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'MissingTemporary.StartTime', + 'errorMessage' => 'Temporary.StartTime is not specified.', + ], + [ + 'errorCode' => 'MissingTemporary.EndTime', + 'errorMessage' => 'Temporary.EndTime is not specified.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The InstanceChargeType does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + 503 => [ + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"E69EF3CC-94CD-42E7-8926-F133B86387C0\\",\\n \\"HostId\\": \\"ecs.aliyuncs.com\\",\\n \\"Code\\": \\"InvalidInstance.UnpaidOrder\\",\\n \\"Message\\": \\"The specified instance has unpaid order.\\"\\n}"},{"type":"xml","example":"\\n 04F0F334-1335-436C-A1D7-6C044FE73368\\n","errorExample":"\\n E69EF3CC-94CD-42E7-8926-F133B86387C0\\n ecs.aliyuncs.com\\n InvalidInstance.UnpaidOrder\\n The specified instance has unpaid order.\\n"}]', + 'title' => 'ModifyInstanceSpec', + 'description' => '**Before you call this operation, familiarize yourself with the billing and [pricing](https://www.alibabacloud.com/zh/pricing-calculator#/commodity/vm_intl) of ECS resources.**'."\n" + ."\n" + .'Before you [change the instance type of a pay-as-you-go instance](~~60051~~), call the [DescribeResourcesModification](~~66187~~) operation to query compatible instance types.'."\n" + ."\n" + .'**Considerations**'."\n" + ."\n" + .'* Make sure that you have no overdue payments in your account.'."\n" + .'* You can change only the instance type or only the public bandwidth of an ECS instance at a time. The instance type and the public bandwidth of an ECS instance cannot be changed together.'."\n" + .'* You can change the public bandwidth of an ECS instance only when the instance is in the **Running** (`Running`) or **Stopped** (`Stopped`) state. The change immediately takes effect.'."\n" + .'* You can change the instance type of an ECS instance only when the instance is in the **Stopped** (`Stopped`) state. You must [start the instance](~~25441~~) for the change to take effect.'."\n" + ."\n" + .'> A limit is imposed on the sum of public bandwidths of all ECS instances that use the pay-by-bandwidth billing method for network usage per region in an Alibaba Cloud account. For more information, see the [Public bandwidth limits](~~25412#BandwidthQuota~~) section of the "Limits and quotas" topic.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyPrepayInstanceSpec' => [ + 'summary' => 'Changes the instance type of a subscription Elastic Compute Service (ECS) instance. You can upgrade or downgrade the instance type. The new instance type takes effect for the entire lifecycle of the subscription ECS instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29088', + 'abilityTreeNodes' => [ + 'FEATUREecsY77CXF', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new instance type. For information about available instance types, see [Instance families](~~25378~~) or call the [DescribeInstanceTypes](~~25620~~) operation.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecs.g5.xlarge', + ], + ], + [ + 'name' => 'OperatorType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the change to the instance. Valid values:'."\n" + ."\n" + .'> This parameter is optional. The system can automatically determine whether the instance change is an upgrade or a downgrade. If you want to specify this parameter, refer to the following valid values of the parameter.'."\n" + ."\n" + .'* upgrade: upgrades the instance type. Make sure that the balance in your account is sufficient.'."\n" + .'* downgrade: downgrades the instance type. When the new instance type specified by the `InstanceType` parameter has lower specifications than the current instance type, set `OperatorType` to downgrade.'."\n" + ."\n" + .'> You can refer to the preceding usage notes on how to upgrade or downgrade the instance type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'upgrade', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that you want to use to ensure the idempotency of the request. You can use the client to generate the value, but make sure that the value is unique among different requests. This value allows only ASCII characters and is up to 64 characters in length. For more information, see [How do I ensure the idempotence of a request?](~~25693~~)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payment when you upgrade the instance type. Valid values:'."\n" + ."\n" + .'* true: The payment is automatically completed.'."\n" + .'* false: An order is generated but no payment is made.'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* Make sure that your account balance is sufficient. Otherwise, your order becomes invalid and must be canceled.'."\n" + ."\n" + .'* If your account balance is insufficient, you can set `AutoPay` to `false` to generate an unpaid order. Then, you can log on to the ECS console to pay for the order.'."\n" + ."\n" + .'* If you set `OperatorType` to `downgrade`, `AutoPay` is ignored.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'true', + ], + ], + [ + 'name' => 'MigrateAcrossZone', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to allow cross-cluster instance type upgrade. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'When you set `MigrateAcrossZone` to `true` and you upgrade the instance type of an instance based on the returned information, take note of the following items:'."\n" + ."\n" + .'Instance that resides in the classic network:'."\n" + ."\n" + .'* For [retired instance types](~~55263~~), when a non-I/O optimized instance is upgraded to an I/O optimized instance, the private IP address, disk device names, and software authorization codes of the instance change. For a Linux instance, basic disks (cloud) are identified as xvd\\* such as xvda and xvdb, and ultra disks (cloud_efficiency) and standard SSDs (cloud_ssd) are identified as vd\\* such as vda and vdb.'."\n" + .'* For [instance families available for purchase](~~25378~~), when the instance type of an instance is changed, the private IP address of the instance changes.'."\n" + ."\n" + .'Instance that resides in a virtual private cloud (VPC): For [retired instance types](~~55263~~), when a non-I/O optimized instance is upgraded to an I/O optimized instance, the disk device names and software authorization codes of the instance change. For a Linux instance, basic disks (cloud) are identified as xvd\\* such as xvda and xvdb, and ultra disks (cloud_efficiency) and standard SSDs (cloud_ssd) are identified as vd\\* such as vda and vdb.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'SystemDisk.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: utra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + ."\n" + .'> This parameter takes effect on an instance only when you change from a [retired instance type](~~55263~~) to an instance type in an [instance family available for purchase](~~25378~~) and upgrade the instance from a non-I/O optimized instance type to an I/O optimized instance type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_efficiency', + ], + ], + [ + 'name' => 'RebootTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The restart time of the instance. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2018-01-01T12:05Z', + ], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The end time of the temporary change. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2018-01-01T12:05Z', + ], + ], + [ + 'name' => 'RebootWhenFinished', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to restart the instance immediately after the instance type is changed. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> If the instance is in the **Stopped** state, the instance remains in the Stopped state and no operations are performed, regardless of whether `RebootWhenFinished` is set to true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ModifyMode', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + 'enum' => [ + 'Online', + 'Offline', + ], + ], + ], + [ + 'name' => 'Disk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'DiskId' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Category' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'PerformanceLevel' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 128, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The ID of the order.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidBillingMethod.ValueNotSupported', + 'errorMessage' => 'The operation is not permitted due to an invalid billing method of the instance.', + ], + [ + 'errorCode' => 'InvalidInstance.PurchaseNotFound', + 'errorMessage' => 'The specified instance has no purchase history.', + ], + [ + 'errorCode' => 'InvalidInstance.UnpaidOrder', + 'errorMessage' => 'The specified instance has unpaid order.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified InstanceType is not Supported.', + ], + [ + 'errorCode' => 'OrderCreationFailed', + 'errorMessage' => 'Order creation failed, please check your params and try it again later.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'You have made too many requests within a short time; your request is denied due to request throttling.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has an outstanding payment.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidRebootTime.MalFormed', + 'errorMessage' => 'The specified rebootTime is not valid.', + ], + [ + 'errorCode' => 'InvalidRebootTime.ValueNotSupported', + 'errorMessage' => 'The specified RebootTime is not valid.', + ], + [ + 'errorCode' => 'IdempotenceParamNotMatch', + 'errorMessage' => 'Request uses a client token in a previous request but is not identical to that request.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidStatus.NotStopped', + 'errorMessage' => 'Instance status must be stopped.', + ], + [ + 'errorCode' => 'InvalidAction', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InstanceDowngrade.QuotaExceed', + 'errorMessage' => 'Quota of instance downgrade is exceed.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The current user does not support this operation.', + ], + [ + 'errorCode' => 'LastOrderProcessing', + 'errorMessage' => 'The previous order is still processing, please try again later.', + ], + [ + 'errorCode' => 'InvalidOperation.VpcHasEnabledAdvancedNetworkFeature', + 'errorMessage' => 'The specified vpc has enabled advanced network feature.', + ], + [ + 'errorCode' => 'InvalidAction.WithActiveElasticUpgrade', + 'errorMessage' => 'The instance has active Elastic Upgrade.', + ], + [ + 'errorCode' => 'InstanceTypeNotSupported.TooManyDisksAttached', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.DiskCapacity', + 'errorMessage' => 'The used capacity of disk type has exceeded the quota in the zone, %s.', + ], + [ + 'errorCode' => 'MissingParameter.DiskCategory', + 'errorMessage' => 'The specified parameter Disk.Category can not be null when Disk.DiskId is specified.', + ], + [ + 'errorCode' => 'InvalidParameter.DiskCategory', + 'errorMessage' => 'The specified parameter Disk.Category is not valid.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.Malformed', + 'errorMessage' => 'The specified parameter Disk.n.PerformanceLevel is not valid.', + ], + [ + 'errorCode' => 'InvalidSystemDiskCategory.NotMatchInstanceType', + 'errorMessage' => 'The system disk category does not match the instance type.', + ], + [ + 'errorCode' => 'QuotaExceed.RufundVcpu', + 'errorMessage' => 'The maximum number of refunded vcpu is exceeded: %s .', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'NoPermission.Refund', + 'errorMessage' => 'The operation requires refund permission. Please apply for permission from your main account.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus', + 'errorMessage' => 'The current status of the instance does not support this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceRenewWithDowngradeInPlan', + 'errorMessage' => 'The operation is denied due to the specified instance has renew with downgrade record in plan.', + ], + [ + 'errorCode' => 'InvalidOperation.OnlineModificationUnsupported', + 'errorMessage' => 'Online modification of instance type is not supported for the specified instance due to its CPU topology.', + ], + ], + 403 => [ + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The specified instance is out of usage.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidUser.PassRoleForbidden', + 'errorMessage' => 'The RAM user does not have privilege to pass a role.', + ], + [ + 'errorCode' => 'ImageNotSupportInstanceType', + 'errorMessage' => 'The specified image does not support the specified InstanceType.', + ], + [ + 'errorCode' => 'InstanceType.Offline', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'You have made too many requests within a short time; your request is denied due to request throttling.', + ], + [ + 'errorCode' => 'InvalidParameter.InstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceStatus', + 'errorMessage' => 'The current status of the instance does not support this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.StarterPackage', + 'errorMessage' => 'StarterPackage not support modification.', + ], + [ + 'errorCode' => 'InvalidInstance.PreInstanceExpired', + 'errorMessage' => 'Instance business status is not Expired.', + ], + [ + 'errorCode' => 'InvalidInstance.EipNotSupport', + 'errorMessage' => 'The special instance with eip not support operate, please unassociate eip first.', + ], + [ + 'errorCode' => 'OperationDenied.ImageNotValid', + 'errorMessage' => 'The specified image is not authorized.', + ], + [ + 'errorCode' => 'OperationDenied.LocalDiskUnsupported', + 'errorMessage' => 'The configuration change is not allowed when the specified instance has local disks mounted.', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => 'The specified instance has no system disk.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportDiskCategory', + 'errorMessage' => 'The instanceType of the specified instance does not support this disk category.', + ], + [ + 'errorCode' => 'QuotaExceed.ElasticQuota', + 'errorMessage' => 'No additional quota is available for the specified ECS instance type.', + ], + [ + 'errorCode' => 'InvalidResourceType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueueNumberExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ExceedInstanceTypeQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidEniQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'InvalidOperation.MaxModifyOnlineNumberExceeded', + 'errorMessage' => 'The specified instance has reached the maximum number of modify online attempts and needs to be rebooted.', + ], + [ + 'errorCode' => 'InvalidOperation.RebootingRequired', + 'errorMessage' => 'The specified instance needs to be rebooted.', + ], + [ + 'errorCode' => 'InvalidOperation.OSTypeNotSupported', + 'errorMessage' => 'The specified OS type is not supported.', + ], + [ + 'errorCode' => 'OperationDenied.UnpaidOrder', + 'errorMessage' => 'The specified instance has unpaid order.', + ], + [ + 'errorCode' => 'InvalidDisk.DetachedSystemDisk', + 'errorMessage' => 'The specified resource is/has a detached system disk %s , not support current operation.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified Category of Data Disk is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The upgrade operation of instance does not support this category of disk.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'BillingMethodNotFound', + 'errorMessage' => 'The account has not chosen any billing method.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'ImageOrderFailed', + 'errorMessage' => 'Create marketplace image order failed.', + ], + ], + 503 => [ + [ + 'errorCode' => 'LimitedOperation.ServiceUnavailable', + 'errorMessage' => 'The service is currently unavailable. Please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"OrderId\\": \\"1234567890\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"E69EF3CC-94CD-42E7-8926-F133B86387C0\\",\\n \\"HostId\\": \\"ecs.aliyuncs.com\\",\\n \\"Code\\": \\"InvalidBillingMethod.ValueNotSupported\\",\\n \\"Message\\": \\"The operation is not permitted due to an invalid billing method of the instance.\\"\\n}"},{"type":"xml","example":"\\n 04F0F334-1335-436C-A1D7-6C044FE73368\\n 1234567890\\n","errorExample":"\\n E69EF3CC-94CD-42E7-8926-F133B86387C0\\n ecs.aliyuncs.com\\n InvalidBillingMethod.ValueNotSupported\\n The operation is not permitted due to an invalid billing method of the instance.\\n"}]', + 'title' => 'ModifyPrepayInstanceSpec', + 'description' => '**Before you call this operation, make sure that you are familiar with the billing methods, [prices](https://www.alibabacloud.com/zh/pricing-calculator#/commodity/vm_intl), and [rules for unsubscribing from resources](~~476339~~) of ECS.**'."\n" + ."\n" + .'ModifyPrepayInstanceSpec is an asynchronous operation. After a request is sent, wait for 5 to 10 seconds for the instance type change to complete. Before you change the instance type of a subscription ECS instance, call the [DescribeResourcesModification](~~66187~~) operation to query the instance types to which you can change the instance.'."\n" + ."\n" + .'**Considerations**'."\n" + ."\n" + .'* Before you change the instance type of an expired instance, you must renew the instance.'."\n" + ."\n" + .'* When you downgrade the instance type of a subscription ECS instance, take note of the following items:'."\n" + ."\n" + .' * The instance must be in the **Stopped** (`Stopped`) state.'."\n" + .' * The price difference is refunded to the payment account that you used. Redeemed vouchers are not refundable.'."\n" + .' * The new instance type takes effect only after you [start the instance](~~25441~~).'."\n" + ."\n" + .'* When you upgrade the instance type of a subscription ECS instance, take note of the following items:'."\n" + ."\n" + .' * The instance must be in the **Stopped** (`Stopped`) or **Running** (`Running`) state.'."\n" + .' * The new instance type takes effect only after you [start the instance](~~25441~~) or [restart the instance](~~25440~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceAutoReleaseTime' => [ + 'summary' => 'Changes the automatic release time of a pay-as-you-go or spot instance or cancels the automatic release of the instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29070', + 'abilityTreeNodes' => [ + 'FEATUREecs5LFNWC', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp1env7nl3mijm2t****', + ], + ], + [ + 'name' => 'AutoReleaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The automatic release time of the instance. Specify the time in the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC+0.'."\n" + ."\n" + .'* If the value of seconds (`ss`) is not `00`, the time is automatically rounded to the nearest minute based on the value of minutes (`mm`).'."\n" + .'* The release time must be at least 30 minutes later than the current time.'."\n" + .'* The release time must be at most three years later than the current time.'."\n" + ."\n" + .'If `AutoReleaseTime` is not configured, the automatic release feature is disabled, and the instance will not be automatically released.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2018-01-01T01:02:03Z', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'InstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidAutoReleaseTime.Malformed', + 'errorMessage' => 'The specified paramter autoReleaseTime is not valid.', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => 'The parameters is unsupported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + ], + [ + [ + 'errorCode' => 'NoSuchResource', + 'errorMessage' => 'The specified resource is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'ModifyInstanceAutoReleaseTime', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AttachInstanceRamRole' => [ + 'summary' => 'Attaches an instance Resource Access Management (RAM) role to Elastic Compute Service (ECS) instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '28791', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RamRoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance RAM role. You can call the [ListRoles](~~28713~~) operation provided by RAM to query the instance RAM roles that you created.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'testRamRoleName', + ], + ], + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of ECS instances. You can specify 1 to 100 ECS instances.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '[“i-bp14ss25xca5ex1u****”, “i-bp154z5o1qjalfse****”, “i-bp10ws62o04ubhvi****”…]', + ], + ], + [ + 'name' => 'Policy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The additional policy. When you attach an instance RAM role to instances, you can specify an additional policy to further limit the permissions of the role. For more information, see [Policy overview](~~93732~~). The value of this parameter must be 1 to 1,024 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RamRoleName' => [ + 'description' => 'The name of the instance RAM role.'."\n", + 'type' => 'string', + 'example' => 'testRamRoleName', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'D9553E4C-6C3A-4D66-AE79-9835AF705639', + ], + 'TotalCount' => [ + 'description' => 'The total number of instances to which you attempted to attach the instance RAM role.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'FailCount' => [ + 'description' => 'The number of instances to which the instance RAM role failed to be attached.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'AttachInstanceRamRoleResults' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AttachInstanceRamRoleResult' => [ + 'description' => 'Details about the results of attaching the instance RAM role.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The type of the instance RAM role.'."\n", + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'Indicates whether the instance RAM role was attached. If the instance RAM role was attached, 200 is returned. If the instance RAM role failed to be attached, any other value is returned. For more information, see the "Error codes" section.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'Indicates whether the instance RAM role was attached. If the instance RAM role was attached, success is returned. If the instance RAM role failed to be attached, any other value is returned. For more information, see the "Error codes" section.'."\n", + 'type' => 'string', + 'example' => 'success', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp10ws62o04ubhvi****', + ], + 'Success' => [ + 'description' => 'Indicates whether the instance RAM role was attached.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceIds.Malformed', + 'errorMessage' => 'The specified instanceIds are not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidNetworkType.MismatchRamRole', + 'errorMessage' => 'Ram role cannot be applied to instances of Classic network type.', + ], + [ + 'errorCode' => 'InvalidUser.PassRoleForbidden', + 'errorMessage' => 'The RAM user does not have the privilege to pass a RAM role.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidRamRole.NotFound', + 'errorMessage' => 'The specified RAMRoleName does not exist.', + ], + [ + 'errorCode' => 'InvalidRamRole.NotEcsRole', + 'errorMessage' => 'The specified ram role is not authorized for ecs, please check your role policy.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RamRoleName\\": \\"testRamRoleName\\",\\n \\"RequestId\\": \\"D9553E4C-6C3A-4D66-AE79-9835AF705639\\",\\n \\"TotalCount\\": 1,\\n \\"FailCount\\": 0,\\n \\"AttachInstanceRamRoleResults\\": {\\n \\"AttachInstanceRamRoleResult\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"success\\",\\n \\"InstanceId\\": \\"i-bp10ws62o04ubhvi****\\",\\n \\"Success\\": true\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"D9553E4C-6C3A-4D66-AE79-9835AF705639\\",\\n \\"AttachInstanceRamRoleResults\\": {\\n \\"AttachInstanceRamRoleResult\\": [\\n {\\n \\"Message\\": \\"success\\",\\n \\"InstanceId\\": \\"i-instance1\\",\\n \\"Code\\": \\"200\\"\\n }\\n ]\\n },\\n \\"TotalCount\\": 1,\\n \\"FailCount\\": 0,\\n \\"RamRoleName\\": \\"RamRoleTest\\"\\n}"},{"type":"xml","example":"\\n E6352369-5C2B-41CD-AB50-471550C8F674\\n \\n \\n i-bp10ws62o04ubhvi****\\n 200\\n success\\n \\n \\n 1\\n 0\\n testRamRoleName\\n","errorExample":"\\n E6352369-5C2B-41CD-AB50-471550C8F674\\n \\n \\n i-instance1\\n 200\\n success\\n \\n \\n 1\\n 0\\n RamRoleTest\\n"}]', + 'title' => 'AttachInstanceRamRole', + 'description' => 'You can call the [DescribeInstanceRamRole](~~2679686~~) operation to query the [instance RAM roles](~~61175~~) that are attached to ECS instances.'."\n" + ."\n" + .'> If an ECS instance already has an instance RAM role, an error is returned when you attach another instance RAM role to the instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstanceRamRole' => [ + 'summary' => 'Queries the instance Resource Access Management (RAM) roles that are attached to Elastic Compute Service (ECS) instances based on the instance IDs, or queries the ECS instances to which a specific instance RAM role is attached based on the name of the instance RAM role.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28953', + 'abilityTreeNodes' => [ + 'FEATUREecsXDMPW4', + ], + ], + 'parameters' => [ + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 50.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance RAM role. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of ECS instances. You can specify up to 50 instance IDs in a single request.'."\n" + ."\n" + .'> You must specify at least one parameter from `InstanceIds` and `RamRoleName`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["i-bp67acfmxazb1p****", "i-bp67acfmxazb2p****", "bp67acfmxazb3p****"…]', + ], + ], + [ + 'name' => 'RamRoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance RAM role. If you specify this parameter, all ECS instances to which the instance RAM role is attached are returned in the response. You can call the [ListRoles](~~28713~~) operation of RAM to query the names of available instance RAM roles.'."\n" + ."\n" + .'> You must specify at least one parameter from `InstanceIds` and `RamRoleName`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsServiceRole-EcsDocGuideTest', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The number of ECS instances returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RegionId' => [ + 'description' => 'The region ID of the ECS instances.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'InstanceRamRoleSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceRamRoleSet' => [ + 'description' => 'The IDs of the ECS instances and the names of the corresponding instance RAM roles.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RamRoleName' => [ + 'description' => 'The name of the instance RAM role.'."\n", + 'type' => 'string', + 'example' => 'EcsServiceRole-EcsDocGuideTest', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceIds.Malformed', + 'errorMessage' => 'The specified instanceIds are not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidNetworkType.MismatchRamRole', + 'errorMessage' => 'Ram role cannot be applied to instances of Classic network type.', + ], + [ + 'errorCode' => 'InvalidParameter.AllEmpty', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instanceId does not exist', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"InstanceRamRoleSets\\": {\\n \\"InstanceRamRoleSet\\": [\\n {\\n \\"RamRoleName\\": \\"EcsServiceRole-EcsDocGuideTest\\",\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"540CFF28-407A-40B5-B6A5-74Bxxxxxxxxx\\", \\n \\"HostId\\": \\"ecs.aliyuncs.com\\",\\n \\"Code\\": \\"IncompleteSignature\\",\\n \\"Message\\": \\"The request signature does not conform to Aliyun standards.\\"\\n}"},{"type":"xml","example":"\\n 8F4CAE3F-7892-4662-83A5-2C2FFD639553\\n \\n \\n i-bp67acfmxazb4p****\\n EcsServiceRole-EcsDocGuideTest\\n \\n \\n 1\\n 1\\n 1\\n","errorExample":"\\n 540CFF28-407A-40B5-B6A5-74Bxxxxxxxxx\\n ecs.aliyuncs.com\\n IncompleteSignature\\n The request signature does not conform to Aliyun standards.\\n"}]', + 'title' => 'DescribeInstanceRamRole', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'When you call the API operation by using Alibaba Cloud CLI, you must specify request parameter values of different data types in the required formats. For more information, see [Parameter formats](~~110340~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DetachInstanceRamRole' => [ + 'summary' => 'Detaches instance Resource Access Management (RAM) roles from Elastic Compute Service (ECS) instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29021', + 'abilityTreeNodes' => [ + 'FEATUREecsT6V7S4', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RamRoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance RAM role. You can call the [ListRoles](~~28713~~) operation of RAM to query the names of available instance RAM roles.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RamRoleTest', + ], + ], + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of ECS instances. You can specify 1 to 100 instance IDs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["i-bp67acfmxazb4p****", "i-bp67acfmxazb5p****", "i-bp67acfmxazb6p****"…]', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RamRoleName' => [ + 'description' => 'The name of the instance RAM role.'."\n", + 'type' => 'string', + 'example' => 'RamRoleTest', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of ECS instances from which you attempted to detach instance RAM roles.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'FailCount' => [ + 'description' => 'The number of ECS instances from which instance RAM roles failed to be detached.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'DetachInstanceRamRoleResults' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DetachInstanceRamRoleResult' => [ + 'description' => 'The results of the instance RAM role detachment, which include the names of the instance RAM roles and the IDs of the ECS instances from which you attempted to detach the instance RAM roles.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'Indicates whether the instance RAM role was detached. If 200 is returned, the instance RAM role was detached. If any other value is returned, the instance RAM role failed to be detached. For more information, see the "Error codes" section.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'Indicates whether the instance RAM role was detached. If success is returned, the instance RAM role was detached. If any other value is returned, the instance RAM role failed to be detached. For more information, see the "Error codes" section.'."\n", + 'type' => 'string', + 'example' => 'Success', + ], + 'InstanceId' => [ + 'description' => 'The ID of the ECS instance from which you attempted to detach the instance RAM role.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + 'Success' => [ + 'description' => 'Indicates whether the instance RAM role was detached.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'InstanceRamRoleSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceRamRoleSet' => [ + 'description' => 'The name of the instance RAM role and the ID of the ECS instance.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RamRoleName' => [ + 'description' => 'The name of the instance RAM role.'."\n", + 'type' => 'string', + 'example' => 'RamRoleTest', + ], + 'InstanceId' => [ + 'description' => 'The ID of the ECS instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceIds.Malformed', + 'errorMessage' => 'The specified instanceIds are not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidNetworkType.MismatchRamRole', + 'errorMessage' => 'Ram role cannot be applied to instances of Classic network type.', + ], + [ + 'errorCode' => 'InvalidUser.PassRoleForbidden', + 'errorMessage' => 'The RAM user does not have the privilege to pass a RAM role.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instanceId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RamRoleName\\": \\"RamRoleTest\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"FailCount\\": 0,\\n \\"DetachInstanceRamRoleResults\\": {\\n \\"DetachInstanceRamRoleResult\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"Success\\",\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"Success\\": true,\\n \\"InstanceRamRoleSets\\": {\\n \\"InstanceRamRoleSet\\": [\\n {\\n \\"RamRoleName\\": \\"RamRoleTest\\",\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"E6352369-5C2B-41CD-AB50-471550C8F674\\",\\n \\"DetachInstanceRamRoleResults\\": {\\n \\"DetachInstanceRamRoleResult\\": [\\n {\\n \\"Message\\": \\"success\\",\\n \\"InstanceId\\": \\"i-instance1\\",\\n \\"Code\\": \\"200\\"\\n }\\n ]\\n },\\n \\"TotalCount\\": 1,\\n \\"FailCount\\": 0,\\n \\"RamRoleName\\": \\"RamRoleTest\\"\\n}"},{"type":"xml","example":"\\n 1\\n \\n \\n success\\n i-bp16qng6jnvt6g7t****\\n 200\\n \\n i-bp16qng6jnvt6g7t****\\n RamRoleTest\\n \\n \\n \\n 14D5B163-CE6C-4489-B979-DBE5D0495A63\\n \\n 0\\n","errorExample":"\\n E6352369-5C2B-41CD-AB50-471550C8F674\\n \\n \\n i-instance1\\n 200\\n success\\n \\n \\n 1\\n 0\\n RamRoleTest\\n\\n"}]', + 'title' => 'DetachInstanceRamRole', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstanceVncUrl' => [ + 'summary' => 'Queries the Virtual Network Computing (VNC) logon address of an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28961', + 'abilityTreeNodes' => [ + 'FEATUREecsHM5DW1', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp1hzoinajzkh91h****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'VncUrl' => [ + 'description' => 'The VNC logon address.'."\n" + ."\n" + .'> The VNC logon address returned is valid only for 15 seconds. If a connection is not established within 15 seconds after a successful call, the VNC logon address expires and you must call the DescribeInstanceVncUrl operation to obtain a new logon address.'."\n", + 'type' => 'string', + 'example' => 'wss%3A%2F%2Fhz01-vncproxy.aliyun.com%2Fwebsockify%2F%3Fs%3DDvh%252FIA%252BYc73gWO48cBx2gBxUDVzaAnSKr74pq30mzqUYgeUMcB%252FbkNixDxdEA996', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegionInstance', + 'errorMessage' => 'The specified InstanceId does not exist in given region.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceNotReady', + 'errorMessage' => 'The specified instance is not ready for use', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VncUrl\\": \\"wss%3A%2F%2Fhz01-vncproxy.aliyun.com%2Fwebsockify%2F%3Fs%3DDvh%252FIA%252BYc73gWO48cBx2gBxUDVzaAnSKr74pq30mzqUYgeUMcB%252FbkNixDxdEA996\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n wss%3A%2F%2Fhz01-vncproxy.aliyun.com%2Fwebsockify%2F%3Fs%3DDvh%252FIA%252BYc73gWO48cBx2gBxUDVzaAnSKr74pq30mzqUYgeUMcB%252FbkNixDxdEA996\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'DescribeInstanceVncUrl', + 'description' => '* You cannot directly use the VNC logon address (VncUrl) in the response to log on to an ECS instance. To log on to the ECS instance, you can use the **web management terminal URL** that contains the VNC logon address.'."\n" + ."\n" + .'> To construct a web management terminal URL, add the `vncUrl=\\*\\*\\*\\*`, `instanceId=****`, and `isWindows=true/false` parameters at the end of `https://g.alicdn.com/aliyun/ecs-console-vnc2/0.0.8/index.html?`. Separate each parameter with an ampersand (`&`). Parameter description:'."\n" + ."\n" + .'* `vncUrl`: the VNC logon address.'."\n" + ."\n" + .'* `instanceId`: the instance ID.'."\n" + ."\n" + .'* `isWindows`: specifies whether the operating system of your ECS instance is Windows. A value of `true` specifies that the operating system is Windows. A value of `false` specifies that the operating system is not Windows.'."\n" + ."\n" + .'* You can connect to an ECS instance without using a VNC logon password. Therefore, you do not need to specify the `password` parameter.'."\n" + ."\n" + .'* The keepalive time of a connection to a VNC management terminal is 300 seconds. If you do not interact with the VNC management terminal within 300 seconds, the VNC management terminal is automatically disconnected.'."\n" + .'* If the connection is interrupted, you must call the DescribeInstanceVncUrl operation to obtain a new VNC logon address (`VncUrl`) and use the new logon address to construct a new web management terminal URL that you can use to reconnect to the VNC management terminal. You can reconnect to a VNC management terminal up to 30 times per minute.'."\n" + ."\n" + .'Sample web management terminal URL:'."\n" + ."\n" + .' https://g.alicdn.com/aliyun/ecs-console-vnc2/0.0.8/index.html?vncUrl=ws%3A%2F%****&instanceId=i-wz9hhwq5a6tm****&isWindows=true'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceVncPasswd' => [ + 'summary' => 'Changes the Virtual Network Computing (VNC) password of an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29078', + 'abilityTreeNodes' => [ + 'FEATUREecs28367R', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECS instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VncPassword', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new VNC password of the ECS instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'Ecs123', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'IncorrectVncPassword.Malformed', + 'errorMessage' => 'The specified parameter VncPassword is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceNotReady', + 'errorMessage' => 'Temporarily unable to connect the specified instance,please try later.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'NoSuchResource', + 'errorMessage' => 'The specified resource is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"E69EF3CC-94CD-42E7-8926-F133B86387C0\\",\\n \\"HostId\\": \\"ecs.aliyuncs.com\\",\\n \\"Code\\": \\"IncorrectInstanceStatus\\",\\n \\"Message\\": \\"The current status of the resource does not support this operation.\\"\\n}"},{"type":"xml","example":"\\n FDB6C963-9CE8-4B7F-BCA3-845F6BD29AFC\\n","errorExample":"\\n E69EF3CC-94CD-42E7-8926-F133B86387C0\\n ecs.aliyuncs.com\\n IncorrectInstanceStatus\\n The current status of the resource does not support this operation.\\n"}]', + 'title' => 'ModifyInstanceVncPasswd', + 'description' => '* The VNC password must be six characters in length and can contain uppercase letters, lowercase letters, and digits.'."\n" + ."\n" + .'* After you modify the VNC password of an ECS instance, take note of the following items:'."\n" + ."\n" + .' * If the instance is I/O optimized, the new password takes effect immediately without the need to restart the instance.'."\n" + .' * If the instance is not I/O optimized, you must [restart the instance](~~25440~~) in the ECS console or by calling the [RebootInstance](~~25502~~) operation for the new password to take effect.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceMetadataOptions' => [ + 'summary' => 'Modifies the metadata access configurations of instances in a specific region, including whether to enable the metadata access channel and whether to forcefully use the security hardening mode to access instance metadata.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29075', + 'abilityTreeNodes' => [ + 'FEATUREecs860TU5', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxaz****', + ], + ], + [ + 'name' => 'HttpEndpoint', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the access channel for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: enabled.'."\n" + ."\n" + .'> For information about instance metadata, see [Obtain instance metadata](~~49122~~).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'enabled', + ], + ], + [ + 'name' => 'HttpTokens', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully use the security hardening mode (IMDSv2) to access instance metadata. Valid values:'."\n" + ."\n" + .'* optional: does not forcefully use the security hardening mode (IMDSv2).'."\n" + .'* required: forcefully uses the security hardening mode (IMDSv2). After you set this parameter to required, you cannot access instance metadata in normal mode.'."\n" + ."\n" + .'Default value: optional.'."\n" + ."\n" + .'> For more information about modes of accessing instance metadata, see [Obtain instance metadata](~~150575~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optional', + ], + ], + [ + 'name' => 'HttpPutResponseHopLimit', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'InstanceMetadataTags', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the access channel for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: disabled.'."\n" + ."\n" + .'> The tag key must be a combination of letters, digits, @, colons (:), underscores (\\_), hyphens (-), periods (.), equal signs (=), and commas (,). The tag key cannot be "." or "..". Otherwise, the tag key cannot be accessed in the metadata.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [], + 'example' => 'null', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidHttpEndpoint.NotSupported', + 'errorMessage' => 'The specified HttpEndpoint not supported, you can use enabled(default) or disabled.', + ], + [ + 'errorCode' => 'InvalidHttpTokens.NotSupported', + 'errorMessage' => 'The specified HttpTokens not supported, you can use optional(default) or required.', + ], + [ + 'errorCode' => 'InvalidHttpPutResponseHopLimit.NotSupported', + 'errorMessage' => 'The specified HttpPutResponseHopLimit not supported, more than 1 and less than 64 is reasonable.', + ], + [ + 'errorCode' => 'InvalidInstanceMetadataTags.NotSupported', + 'errorMessage' => 'The specified InstanceMetadataTags not supported.', + ], + [ + 'errorCode' => 'InvalidImdsAccessPolicyId.NotFound', + 'errorMessage' => 'The specified parameter ImdsAccessPolicyId is not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Ecs::2014-05-26::DescribeInstances', + 'callbackInterval' => 10000, + 'maxCallbackTimes' => 30, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\r\\n ","errorExample":""}]', + 'title' => 'ModifyInstanceMetadataOptions', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeUserData' => [ + 'summary' => 'Queries the user data of an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '29011', + 'abilityTreeNodes' => [ + 'FEATUREecsYLNQGM', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp14bnftyqhxg9ij****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'InstanceId' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'example' => 'i-bp14bnftyqhxg9ij****', + ], + 'UserData' => [ + 'description' => 'The user data of the instance.'."\n" + ."\n" + .'> If no user data is configured for the instance, an empty string is returned.'."\n", + 'type' => 'string', + 'example' => 'ZWNobyBoZWxsbyBlY321ABC', + ], + 'RegionId' => [ + 'description' => 'The region ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"InstanceId\\": \\"i-bp14bnftyqhxg9ij****\\",\\n \\"UserData\\": \\"ZWNobyBoZWxsbyBlY321ABC\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n i-bp14bnftyqhxg9ij****\\n ZWNobyBoZWxsbyBlY321ABC\\n cn-hangzhou\\n","errorExample":""}]', + 'title' => 'DescribeUserData', + 'description' => '* If no user data is configured for the ECS instance, an empty string is returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RenewInstance' => [ + 'summary' => 'Renews a subscription Elastic Compute Service (ECS) instance. You can specify a renewal period or renew the instance to a unified expiration date.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29158', + 'abilityTreeNodes' => [ + 'FEATUREecsOZYITJ', + ], + ], + 'parameters' => [ + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance that you want to renew.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The renewal period of the subscription instance. If `DedicatedHostId` is specified, the value of Period cannot exceed the subscription period of the specified dedicated host.'."\n" + ."\n" + .'Valid values when PeriodUnit is set to Month: 1, 2, 3, 4, 5, 6, 7, 8, 9, and 12.'."\n" + ."\n" + .'> The renewal period-related parameter pair (`Period` and `PeriodUnit`) and `ExpectedRenewDay` are mutually exclusive.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the renewal period. Valid values:'."\n" + ."\n" + .'Month'."\n" + ."\n" + .'Default value: Month.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'ExpectedRenewDay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies the [unified expiration date](~~63396~~). Valid values: 1 to 28.'."\n" + ."\n" + .'To use this parameter, you must [specify a unified expiration date for the ECS instance](~~63396#694cb636c0rp6~~). The value of this parameter must be the same as the specified unified expiration date. Otherwise, the call fails.'."\n" + ."\n" + .'> You must specify the renewal period-related parameter pair (`Period` and `PeriodUnit`) or `ExpectedRenewDay`, but not both.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => 'The specified InternetChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified InstanceType is not Supported.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter "InternetMaxBandwidthOut" is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The InstanceChargeType does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRebootTime.Malformed', + 'errorMessage' => 'The specified RebootTime is not valid.', + ], + [ + 'errorCode' => 'InvalidRebootTime.ValueNotSupported', + 'errorMessage' => 'The specified RebootTime is out of the permitted range.', + ], + [ + 'errorCode' => 'IdempotenceParamNotMatch', + 'errorMessage' => 'Request uses a client token in a previous request but is not identical to that request.', + ], + [ + 'errorCode' => 'InvalidClientToken.ValueNotSupported', + 'errorMessage' => 'The ClientToken provided is invalid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidInstanceType.codeUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidInternetChargeType.InstanceNotSupported', + 'errorMessage' => 'The specified instance which is in vpc is not support the parameter InternetChargeType.', + ], + [ + 'errorCode' => 'InvalidPeriod', + 'errorMessage' => 'The specified period is not valid.', + ], + [ + 'errorCode' => 'MissingParamter', + 'errorMessage' => 'The specified parameter "Period" is not null.', + ], + [ + 'errorCode' => 'Upgrade.NotSupported', + 'errorMessage' => 'Upgrade operation is not supported.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Specified instance is in VPC.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'DependencyViolation.InstanceType', + 'errorMessage' => 'Current instancetype cannot be changed to the specified one.', + ], + [ + 'errorCode' => 'InvalidPeriodUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PeriodUnit is not valid.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified DedicatedHostId does not exist.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostStatus.NotSupport', + 'errorMessage' => 'Operation denied due to dedicated host status.', + ], + [ + 'errorCode' => 'IncorrectDedicatedHostStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededDedicatedHost', + 'errorMessage' => 'Instance expired date can\'t exceed dedicated host expired date.', + ], + [ + 'errorCode' => 'InvalidStatus.Upgrading', + 'errorMessage' => 'The instance is upgrading; please try again later.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededMaximumExpirationDate', + 'errorMessage' => 'The specified renewal period cannot exceed the maximum expiration date. We recommend you try shortening the renewal period at next attempt.', + ], + [ + 'errorCode' => 'LastOrderProcessing', + 'errorMessage' => 'The previous order is still processing, please try again later.', + ], + [ + 'errorCode' => 'Idempotence.Processing', + 'errorMessage' => 'The previous request is still processing, please try again later.', + ], + [ + 'errorCode' => 'InvalidLoanOrderStatus.Uncompleted', + 'errorMessage' => 'Any unpaid order must be cancelled before you try this action again. The scheduled unpaid order is a loan order that cannot be auto cancelled. For more information, visit the loan management center.', + ], + [ + 'errorCode' => 'OperationDenied.UnfinishedOrder', + 'errorMessage' => 'The current instance has unfinished refundOrder, this operation is denied.', + ], + [ + 'errorCode' => 'InvalidPeriod.NotFound', + 'errorMessage' => 'The specified period and expectedRenewDay cannot both be empty.', + ], + [ + 'errorCode' => 'InvalidExpectedRenewDay.StarterPackageNotSupported', + 'errorMessage' => 'The specified starterPackage cannot support renew with expectedRenewDay.', + ], + [ + 'errorCode' => 'InvalidParam.ExpectedRenewDay', + 'errorMessage' => 'The specified param ExpectedRenewDay is not valid.', + ], + [ + 'errorCode' => 'QuotaExceed.AlignInstance', + 'errorMessage' => 'The maximum number of align operations is exceeded.', + ], + [ + 'errorCode' => 'InvalidExpectedRenewDay.Conflict', + 'errorMessage' => 'The specified expectedRenewDay is in conflict with period.', + ], + [ + 'errorCode' => 'InvalidExpectedRenewDay.ValueNotSupported', + 'errorMessage' => 'The specified parameter ExpectedRenewDay is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.AbnormalInstanceInfo', + 'errorMessage' => 'The current renewable operation is not supported due to abnormal information of the instance, please submit ticket to process.', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'InvalidOperation.ClassicNetworkTypeNotSupported', + 'errorMessage' => 'The classic network instance does not support this operation.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + [ + 'errorCode' => 'Diskcategory.Mismatch', + 'errorMessage' => 'The disk specified to convert to portable is not allowed due to the disk category does not support.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceSpecModification.NotEffective', + 'errorMessage' => 'The specified instance has been reserved for making a spec modification and not taken effective in the current contract period.', + ], + [ + 'errorCode' => 'LastTokenProcessing', + 'errorMessage' => 'The last token request is processing.', + ], + [ + 'errorCode' => 'Instance.UnPaidOrder', + 'errorMessage' => 'The specified instance has unpaid order.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InvalidDisk.NotAllowed', + 'errorMessage' => 'The specified disk is not allowed to be converted to portable.', + ], + [ + 'errorCode' => 'InstanceTypeNotSupported', + 'errorMessage' => 'The specified zone does not offer the specified instancetype.', + ], + [ + 'errorCode' => 'InvalidChargeType.NotSupported', + 'errorMessage' => 'The chargeType of the instance does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone, try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'OperationDenied.ImageNotValid', + 'errorMessage' => 'The specified image is not authorized.', + ], + [ + 'errorCode' => 'InvalidPeriod.StarterPackage', + 'errorMessage' => 'This instance was created by using a Starter Package plan and can only be renewed monthly, not yearly.', + ], + [ + 'errorCode' => 'RenewDateNotSupported.StarterPackage', + 'errorMessage' => 'This instance was created by using a Starter Package plan and can only be renewed three days before it expires.', + ], + [ + 'errorCode' => 'PrePaidInstance.Expired', + 'errorMessage' => 'The prePaid instance has expired.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"OrderId\\": \\"1234567890\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 1234567890\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'RenewInstance', + 'description' => '**Before you call this operation, make sure that you are familiar with the billing methods and [pricing](https://www.alibabacloud.com/product/ecs#pricing) of ECS**.'."\n" + ."\n" + .'* Make sure that your account balance or credit balance is sufficient.'."\n" + .'* Only subscription instances are supported. If you call this operation for a pay-as-you-go instance, an error is returned.'."\n" + .'* You must specify the renewal period-related parameter pair (`Period` and `PeriodUnit`) or `ExpectedRenewDay`, but not both.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstanceAutoRenewAttribute' => [ + 'summary' => 'Queries the auto-renewal attribute of subscription Elastic Compute Service (ECS) instances, including whether auto-renewal is enabled for the instances and the auto-renewal durations of the instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28947', + 'abilityTreeNodes' => [ + 'FEATUREecsQDYV10', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of the instances. You can specify up to 100 subscription instance IDs in a single request. Separate multiple instance IDs with commas (,).'."\n" + ."\n" + .'> `InstanceId` and `RenewalStatus` cannot be empty at the same time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp18x3z4hc7bixhx****,i-bp1g6zv0ce8oghu7****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RenewalStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal state of the instance. Valid values:'."\n" + ."\n" + .'* AutoRenewal: Auto-renewal is enabled for the instance.'."\n" + .'* Normal: Auto-renewal is disabled for the instance.'."\n" + .'* NotRenewal: The instance is not to be renewed. The system sends no more expiration reminders, but sends only a non-renewal reminder three days before the expiration date. For an instance that is not to be renewed, you can call the [ModifyInstanceAutoRenewAttribute](~~52843~~) operation to change its auto-renewal status to `Normal`. Then, you can manually renew the instance or enable auto-renewal for the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AutoRenewal', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10', + 'pattern' => '^\\d+$', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + 'pattern' => '^\\d+$', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The total number of queried instances.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '6', + ], + 'InstanceRenewAttributes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceRenewAttribute' => [ + 'description' => 'The renewal attributes of instances.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PeriodUnit' => [ + 'description' => 'The unit of the auto-renewal duration.'."\n", + 'type' => 'string', + 'example' => 'week', + ], + 'Duration' => [ + 'description' => 'The auto-renewal duration.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RenewalStatus' => [ + 'description' => 'The auto-renewal state of the instance. Valid values:'."\n" + ."\n" + .'* AutoRenewal: Auto-renewal is enabled for the instance.'."\n" + .'* Normal: Auto-renewal is disabled for the instance.'."\n" + .'* NotRenewal: The instance is not to be renewed. The system sends no more expiration reminders, but sends only a non-renewal reminder three days before the expiration date. For an instance that is not to be renewed, you can call the [ModifyInstanceAutoRenewAttribute](~~52843~~) operation to change its auto-renewal status to `Normal`. Then, you can manually renew the instance or enable auto-renewal for the instance.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp18x3z4hc7bixhx****', + ], + 'AutoRenewEnabled' => [ + 'description' => 'Indicates whether auto-renewal is enabled.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'EnableExpectedRenewDay' => [ + 'type' => 'boolean', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling.', + ], + ], + 403 => [ + [ + 'errorCode' => 'MissingParameter.InstanceId', + 'errorMessage' => 'InstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.ToManyInstanceIds', + 'errorMessage' => 'InstanceId should be less than 100.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'Pay-As-You-Go instances do not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter.RenewalStatus', + 'errorMessage' => 'The specified parameter RenewalStatus is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.RenewalStatusInstanceId', + 'errorMessage' => 'The parameter RenewalStatus and InstanceId can not be both empty.', + ], + [ + 'errorCode' => 'InvalidParameter.PageSize', + 'errorMessage' => 'The specified parameter PageSize is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.PageNumber', + 'errorMessage' => 'The specified parameter PageNumber is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidInstanceId', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 6,\\n \\"InstanceRenewAttributes\\": {\\n \\"InstanceRenewAttribute\\": [\\n {\\n \\"PeriodUnit\\": \\"week\\",\\n \\"Duration\\": 1,\\n \\"RenewalStatus\\": \\"Normal\\",\\n \\"InstanceId\\": \\"i-bp18x3z4hc7bixhx****\\",\\n \\"AutoRenewEnabled\\": false,\\n \\"EnableExpectedRenewDay\\": true\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"540CFF28-407A-40B5-B6A5-74Bxxxxxxxxx\\", \\n \\"HostId\\": \\"ecs.aliyuncs.com\\",\\n \\"Code\\": \\"IncompleteSignature\\",\\n \\"Message\\": \\"The request signature does not conform to Aliyun standards.\\"\\n}"},{"type":"xml","example":"\\n 1\\n 1\\n \\n \\n AutoRenewal\\n 1\\n i-bp18x3z4hc7bixhx****\\n true\\n Week\\n \\n \\n 1\\n DAE023B4-A78F-4B39-8860-96F17B54F772\\n","errorExample":"\\n 540CFF28-407A-40B5-B6A5-74Bxxxxxxxxx\\n ecs.aliyuncs.com\\n IncompleteSignature\\n The request signature does not conform to Aliyun standards.\\n"}]', + 'title' => 'DescribeInstanceAutoRenewAttribute', + 'description' => '* Only subscription instances are supported. If you call this operation for a pay-as-you-go instance, an error is returned.'."\n" + .'* Before you configure auto-renewal or manual renewal for subscription instances, you can query the auto-renewal status of the instances.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceAutoRenewAttribute' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29071', + 'abilityTreeNodes' => [ + 'FEATUREecs7AL3YP', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance. You can specify up to 100 subscription instance IDs. Separate the instance IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4ph****,i-bp67acfmxazb4pi****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Duration', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal period of the instance.'."\n" + ."\n" + .'* Valid values of `Duration` when `PeriodUnit` is set to `Year`: 1, 2, 3, 4, and 5.'."\n" + .'* Valid values of `Duration` when `PeriodUnit` is set to `Month`: 1, 2, 3, 6, 12, 24, 36, 48, and 60.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal.'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'false', + ], + ], + [ + 'name' => 'RenewalStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal status of the instance. Valid values:'."\n" + ."\n" + .'* AutoRenewal: Auto-renewal is enabled for the instance.'."\n" + .'* Normal: Auto-renewal is disabled for the instance.'."\n" + .'* NotRenewal: The instance is not renewed. The system no longer sends an expiration notification but sends only a renewal notification three days before the instance expires. You can change the value of this parameter from NotRenewal to `Normal` for an instance, and then manually renew the instance. Alternatively, you can set the RenewalStatus parameter to AutoRenewal.'."\n" + ."\n" + .'> `RenewalStatus` takes precedence over `AutoRenew`. If you do not specify `RenewalStatus`, `AutoRenew` is used by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AutoRenewal', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the renewal period (`Duration`). Valid values:'."\n" + ."\n" + .'* Month (default)'."\n" + .'* Year'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.StarterPackage', + 'errorMessage' => 'Instance created with a Starter Package plan can not set auto renew.', + ], + ], + 403 => [ + [ + 'errorCode' => 'MissingParameter.InstanceId', + 'errorMessage' => 'InstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.ToManyInstanceIds', + 'errorMessage' => 'InstanceId should be less than 100.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidInstanceId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'Pay-As-You-Go instances do not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter.Duration', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.RenewalStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidPeriodUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PeriodUnit is not valid.', + ], + [ + 'errorCode' => 'InvalidPeriod.StarterPackage', + 'errorMessage' => 'This instance was created by using a Starter Package plan and can only be renewed monthly, not yearly.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'ModifyInstanceAutoRenewAttribute', + 'summary' => 'Configures auto-renewal for subscription instances to help reduce the maintenance workloads on instance expiration.', + 'description' => '**Before you call this operation, make sure that you are familiar with the billing methods and [pricing](https://www.alibabacloud.com/product/ecs#pricing) of Elastic Compute Service (ECS)**.'."\n" + ."\n" + .'* Make sure that your account balance or credit balance is sufficient.'."\n" + .'* Only subscription instances are supported. If you call this operation for a pay-as-you-go instance, an error is returned.'."\n" + .'* The payment for auto-renewal of an instance is automatically deducted at 08:00:00 (UTC+8) nine days before the instance expires.'."\n" + .'* If the deduction fails, Alibaba Cloud attempts to deduct the payment every day until the payment is deducted or until the instance is locked on expiration.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ReActivateInstances' => [ + 'summary' => 'Reactivates a pay-as-you-go Elastic Compute Service (ECS) instance that has expired or has been reclaimed due to overdue payments.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29131', + 'abilityTreeNodes' => [ + 'FEATUREecsST66ZD', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance that you want to reactivate.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '51AB7717-6E1A-4D1D-A44D-54CB123ABC', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ReopenInstance.InstanceNotEnoughBalance', + 'errorMessage' => 'Reopen instance must have enough account balance.', + ], + [ + 'errorCode' => 'ReopenInstance.ImageNotEnoughBalance', + 'errorMessage' => 'Reopen instance must have enough cash balance.', + ], + [ + 'errorCode' => 'ReopenInstance.InstanceStatusNotValid', + 'errorMessage' => 'Instance status is not Expired, ImageExpired or EcsAndImageExpired.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InsufficientBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidPayType.NotSupport', + 'errorMessage' => 'The specified pre pay instance not support.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"51AB7717-6E1A-4D1D-A44D-54CB123ABC\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 51AB7717-6E1A-4D1D-A44D-54CB123ABC\\n","errorExample":""}]', + 'title' => 'ReActivateInstances', + 'description' => 'After you complete the overdue payment for a pay-as-you-go ECS instance, you do not need to call this operation to reactivate the instance. The system automatically reactivates the instance to restore the instance to the status before the payment became overdue. Automatic reactivation occasionally fails. Take note of the status of automatic reactivation. If the automatic reactivation fails, call this operation to manually reactivate the instance.'."\n" + ."\n" + .'* The instance must be in the **Expired** `(Stopped)` state.'."\n" + .'* You cannot call this operation to start ECS instances that are locked for security reasons. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSpotPriceHistory' => [ + 'summary' => 'Queries the historical prices of spot instances within up to the previous 30 days. You can set the maximum price of a spot instance based on the historical prices.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29294', + 'abilityTreeNodes' => [ + 'FEATUREecs2UXJI2', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the spot instance.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the spot instance.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The spot price (market price) of the spot instance.', + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the spot instance. Valid values:'."\n" + ."\n" + .'* classic: classic network'."\n" + .'* vpc: Virtual Private Cloud (VPC)', + 'type' => 'string', + 'required' => true, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The beginning of the time range to query. Specify the time in the [ISO 8601](~~25696~~) standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC. The specified time can be up to 30 days earlier than the specified EndTime value.'."\n" + ."\n" + .'This parameter is empty by default. If this parameter is empty, the time that is 3 hours earlier than the specified EndTime value is used.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecs.t1.xsmall', + ], + ], + [ + 'name' => 'SpotDuration', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Default value: 1. Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance runs for 1 hour. The system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released. Spot instances are billed by second. We recommend that you specify a protection period based on your business requirements.'."\n" + ."\n" + .'> This parameter takes effect only if you set SpotStrategy to SpotWithPriceLimit or SpotAsPriceGo.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the instance is I/O optimized. Valid values:'."\n" + ."\n" + .'* optimized: The instance is I/O optimized.'."\n" + .'* none: The instance is not I/O optimized.'."\n" + ."\n" + .'For instances of generation I instance families, the default value is none.'."\n" + ."\n" + .'For instances of other instance families, the default value is optimized.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optimized', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The beginning of the time range to query. The value of this parameter and the value of EndTime can be up to 30 days apart. Specify the time in the [ISO 8601 standard](~~25696~~) in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC.'."\n" + ."\n" + .'This parameter is left empty by default. If this parameter is empty, the time that is 3 hours earlier than the value of EndTime is used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-08-22T08:45:08Z', + ], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The end of the time range to query. Specify the time in the [ISO 8601 standard](~~25696~~) in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC.'."\n" + ."\n" + .'This parameter is empty by default. If this parameter is empty, the current time is used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-08-22T08:45:08Z', + ], + ], + [ + 'name' => 'OSType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the operating system platform. Valid values:'."\n" + ."\n" + .'- linux'."\n" + .'- windows', + 'type' => 'string', + 'required' => false, + 'example' => 'linux', + ], + ], + [ + 'name' => 'Offset', + 'in' => 'query', + 'schema' => [ + 'description' => 'The line from which the query starts.'."\n" + ."\n" + .'Default value: 0'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The instance type of the spot instance.', + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'Currency' => [ + 'description' => 'The instance type of the spot instance.', + 'type' => 'string', + 'example' => 'CNY', + ], + 'NextOffset' => [ + 'description' => 'The network type of the spot instance.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1000', + ], + 'SpotPrices' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SpotPriceType' => [ + 'description' => 'The zone ID of the spot instance.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'IoOptimized' => [ + 'description' => 'Details about the price history of the spot instance.', + 'type' => 'string', + 'example' => 'optimized', + ], + 'ZoneId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-c', + ], + 'SpotPrice' => [ + 'description' => 'The price for a pay-as-you-go instance that has the same configurations as the spot instance.', + 'type' => 'number', + 'format' => 'float', + 'example' => '0.036', + ], + 'Timestamp' => [ + 'description' => 'The currency unit of the price.'."\n" + ."\n" + .'Alibaba Cloud China site (aliyun.com): CNY.'."\n" + ."\n" + .'Alibaba Cloud International site (alibabacloud.com): USD.'."\n", + 'type' => 'string', + 'example' => '2019-11-19T06:00:00Z', + ], + 'NetworkType' => [ + 'description' => 'Queries the price history of a spot instance within the last 30 days.', + 'type' => 'string', + 'example' => 'vpc', + ], + 'InstanceType' => [ + 'description' => 'The instance type of the spot instance.', + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'OriginPrice' => [ + 'description' => 'The price for a pay-as-you-go instance that has the same configuration as the specified spot instance.', + 'type' => 'number', + 'format' => 'float', + 'example' => '0.354', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.StartTime', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.EndTime', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.Abs.InvalidSpotInstanceUID', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.NetworkType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.IoOptimized', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.OSType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.IoOptimized.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The specified zone does not exist.', + ], + [ + 'errorCode' => 'InvalidParams.ZoneId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.InstanceType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.PageSize', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.Offset', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'DependencyViolation.IoOptimized', + 'errorMessage' => 'The specified instancetype must be IoOptimized instance.', + ], + [ + 'errorCode' => 'InvalidSpotDuration', + 'errorMessage' => 'The specified SpotDuration is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.QueryFail', + 'errorMessage' => 'Query spot price fail, please retry later.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbedden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.RegionIdNotSupported', + 'errorMessage' => 'region not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.FlavorNotSupported', + 'errorMessage' => 'flavor not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.TimestampNotSupported', + 'errorMessage' => 'timestamp not support spot duration instance.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"Currency\\": \\"CNY\\",\\n \\"NextOffset\\": 1000,\\n \\"SpotPrices\\": {\\n \\"SpotPriceType\\": [\\n {\\n \\"IoOptimized\\": \\"optimized\\",\\n \\"ZoneId\\": \\"cn-hangzhou-c\\",\\n \\"SpotPrice\\": 0.036,\\n \\"Timestamp\\": \\"2019-11-19T06:00:00Z\\",\\n \\"NetworkType\\": \\"vpc\\",\\n \\"InstanceType\\": \\"ecs.g5.large\\",\\n \\"OriginPrice\\": 0.354\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"540CFF28-407A-40B5-B6A5-74Bxxxxxxxxx\\", \\n \\"HostId\\": \\"ecs.aliyuncs.com\\",\\n \\"Code\\": \\"IncompleteSignature\\",\\n \\"Message\\": \\"The request signature does not conform to Aliyun standards.\\"\\n}"},{"type":"xml","example":"\\n 5E2D59BA-4EB0-45C4-A0D7-D98C1A4B320B\\n \\n \\n optimized\\n 0.354\\n vpc\\n cn-hangzhou-g\\n 2019-11-19T06:00:00Z\\n 0.036\\n ecs.g5.large\\n \\n \\n optimized\\n 0.354\\n vpc\\n cn-hangzhou-g\\n 2019-11-19T07:00:00Z\\n 0.036\\n ecs.g5.large\\n \\n \\n CNY\\n","errorExample":"\\n 540CFF28-407A-40B5-B6A5-74Bxxxxxxxxx\\n ecs.aliyuncs.com\\n IncompleteSignature\\n The request signature does not conform to Aliyun standards.\\n"}]', + 'title' => 'DescribeSpotPriceHistory', + 'description' => '* This operation is applicable only to I/O optimized spot instances.'."\n" + .'* The data returned by the interface may be paginated. If the returned data contains the `NextOffset` parameter, you can set the `Offset` parameter in the request to the value of the `NextOffset` parameter for subsequent data query.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSpotAdvice' => [ + 'summary' => 'Queries information about spot instances in a region in the previous 30 days. The information includes the average release rate of spot instances and the percentage of the average spot instance price relative to the pay-as-you-go instance price.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29001', + 'abilityTreeNodes' => [ + 'FEATUREecs2UXJI2', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Cores', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of vCPUs of the instance type. For more information, see [Instance families](~~25378~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'Memory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The memory size of the instance type. Unit: GiB. For more information, see [Instance families](~~25378~~).'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '8.0', + ], + ], + [ + 'name' => 'MinCores', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum number of vCPUs of the instance type. For more information, see [Instance families](~~25378~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'MinMemory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum memory size of the instance type. For more information, see [Instance families](~~25378~~).'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '8.0', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID.'."\n" + ."\n" + .'This parameter is left empty by default, which indicates that all zones in the specified region are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-i', + ], + ], + [ + 'name' => 'InstanceTypeFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance family. For more information, see [Instance families](~~25378~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.c5', + ], + ], + [ + 'name' => 'InstanceFamilyLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The level of the instance family. Valid values:'."\n" + ."\n" + .'* EntryLevel.'."\n" + .'* EnterpriseLevel.'."\n" + .'* CreditEntryLevel. For more information, see [Overview of burstable instances](~~59977~~).'."\n" + ."\n" + .'This parameter is left empty by default, which indicates that instance families at all levels are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EntryLevel', + ], + ], + [ + 'name' => 'GpuSpec', + 'in' => 'query', + 'schema' => [ + 'description' => 'The GPU type. Valid values:'."\n" + ."\n" + .'* NVIDIA P4'."\n" + .'* NVIDIA T4'."\n" + .'* NVIDIA P100'."\n" + .'* NVIDIA V100'."\n" + ."\n" + .'This parameter is left empty by default, which indicates that all GPU types are queried. For more information, see [GPU-accelerated compute-optimized and vGPU-accelerated instance families](~~108496~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'NVIDIA T4', + ], + ], + [ + 'name' => 'GpuAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of GPUs that a GPU-accelerated instance has. For information about the valid values, see [GPU-accelerated compute optimized instance types](~~108496~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'InstanceTypes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The instance types. You can specify up to 10 instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The instance type. For more information, see [Instance families](~~25378~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.c5.large', + ], + 'required' => false, + 'example' => 'ecs.c5.large', + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RegionId' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'AvailableSpotZones' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AvailableSpotZone' => [ + 'description' => 'Details about spot instances in the zones of the specified region.'."\n" + ."\n" + .'> The return values are sorted based on the historical percentages of average spot instance prices relative to pay-as-you-go instance prices for instance types.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => 'The zone ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-i', + ], + 'AvailableSpotResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AvailableSpotResource' => [ + 'description' => 'Details about spot instances in the previous 30 days, including the release rate of spot instances and percentages of average spot instance prices relative to pay-as-you-go instance prices.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'InterruptRateDesc' => [ + 'description' => 'The release rate range of spot instances in the previous 30 days, which corresponds to the `InterruptionRate` value. Valid values:'."\n" + ."\n" + .'* 0-3%'."\n" + .'* 3-5%'."\n" + .'* 5-10%'."\n" + .'* 10-100%', + 'type' => 'string', + 'example' => '0-3%', + ], + 'AverageSpotDiscount' => [ + 'description' => 'The percentage of the average spot instance price relative to the pay-as-you-go instance price in the previous 30 days. Unit: %. Valid values: 1 to 100.'."\n" + ."\n" + .'You can calculate the average spot instance price based on the return value. For example, if the pay-as-you-go instance price is 1 and the return value of this parameter is 20, the average spot instance price in the previous 30 days is 0.2.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'InstanceType' => [ + 'description' => 'The instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs.c5.large', + ], + 'InterruptionRate' => [ + 'description' => 'The average release rate of spot instances in the previous 30 days. Unit: %.', + 'type' => 'number', + 'format' => 'float', + 'example' => '0', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Invalid.SaleStrategy', + 'errorMessage' => 'The specified saleStrategy is not valid.', + ], + [ + 'errorCode' => 'Invalid.Param', + 'errorMessage' => 'The input parameter DestinationResource that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified DedicatedHostId does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidParam.TypeAndCpuMem.Conflict', + 'errorMessage' => 'The specified \'InstanceType\' and \'Cores\',\'Memory\' are not blank at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Cores', + 'errorMessage' => 'The specified parameter \'Cores\' should not be empty', + ], + [ + 'errorCode' => 'InvalidParam.Memory', + 'errorMessage' => 'The specified parameter \'Memory\' should not be empty', + ], + [ + 'errorCode' => 'OperationDenied.RegionIdNotSupported', + 'errorMessage' => 'region not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.FlavorNotSupported', + 'errorMessage' => 'flavor not support spot duration instance.', + ], + [ + 'errorCode' => 'OperationDenied.TimestampNotSupported', + 'errorMessage' => 'timestamp not support spot duration instance.', + ], + ], + [ + [ + 'errorCode' => 'Invalid.RegionId', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'Unavailable.Regions', + 'errorMessage' => 'The available regions does not exists', + ], + [ + 'errorCode' => 'Invalid.ResourceType', + 'errorMessage' => 'The ResourceType provided does not exist in our records.', + ], + [ + 'errorCode' => 'Invalid.DestinationResource', + 'errorMessage' => 'The specified DestinationResource is not valid.', + ], + [ + 'errorCode' => 'Invalid.IoOptimized', + 'errorMessage' => 'The specified IoOptimized is not valid.', + ], + [ + 'errorCode' => 'Invalid.NetworkType', + 'errorMessage' => 'The specified NetworkType is not valid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"AvailableSpotZones\\": {\\n \\"AvailableSpotZone\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-i\\",\\n \\"AvailableSpotResources\\": {\\n \\"AvailableSpotResource\\": [\\n {\\n \\"InterruptRateDesc\\": \\"0-3%\\",\\n \\"AverageSpotDiscount\\": 20,\\n \\"InstanceType\\": \\"ecs.c5.large\\",\\n \\"InterruptionRate\\": 0\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n \\n \\n cn-hangzhou-i\\n \\n \\n \\n \\n 0-3%\\n ecs.c5.large\\n 20\\n 0\\n \\n \\n \\n \\n cn-hangzhou\\n","errorExample":""}]', + 'title' => 'DescribeSpotAdvice', + 'description' => '* This operation is applicable only to I/O optimized spot instances that reside in virtual private clouds (VPCs).'."\n" + ."\n" + .'* You can use one of the following methods to call this operation:'."\n" + ."\n" + .' * Specify `Cores` and `Memory` or `MinCores` and `MinMemory` to query information about the instance types that meet the specified vCPU and memory requirements.'."\n" + .' * Specify `InstanceTypes.N` to query information about the specified instance types.'."\n" + .' * Specify `Cores` and `Memory` or `MinCores` and `MinMemory`, and then specify `InstanceTypeFamily` or `InstanceFamilyLevel` to query information about the instance types that meet the specified vCPU and memory requirements within the specified instance family or at a specified instance family level.'."\n" + ."\n" + .'* You can calculate the average price of spot instances based on the percentage of the average spot instance price relative to the pay-as-you-go instance price and the pay-as-you-go instance price.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateImage' => [ + 'summary' => 'Creates a custom image. After you call this operation to create a custom image, you can call the RunInstances operation to create Elastic Compute Service (ECS) instances from the custom image or call the ReplaceSystemDisk operation to replace system disks by using the custom image.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28829', + 'abilityTreeNodes' => [ + 'FEATUREecsJ8B02D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the custom image that you want to create. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot from which to create the custom image.'."\n" + ."\n" + .'> To create a custom image from only a system disk snapshot of an ECS instance, you can specify this parameter or `DiskDeviceMapping.N.SnapshotId` to specify the snapshot ID. If you add data disk snapshots, you can use only `DiskDeviceMapping.N.SnapshotId` to specify snapshots.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp17441ohwkdca0****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECS instance from which to create the custom image. To create a custom image from an ECS instance, you must specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp1g6zv0ce8oghu7****', + ], + ], + [ + 'name' => 'ImageName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the custom image. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with http:// or https://. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestCentOS', + ], + ], + [ + 'name' => 'ImageFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image family. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with acs: or aliyun. The name cannot contain http:// or https://. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hangzhou-daily-update', + ], + ], + [ + 'name' => 'ImageVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The image version.'."\n" + ."\n" + .'> If you specify an ECS instance that runs an Alibaba Cloud Marketplace image or a custom image derived from an Alibaba Cloud Marketplace image by using `InstanceId`, you must leave this parameter empty or set this parameter to the `ImageVersion` value of the image run by the specified ECS instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017011017', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The image description. The description must be 2 to 256 characters in length and cannot start with [http:// or https://.](http://https://。)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ImageTestDescription', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system distribution for the system disk in the custom image. If you specify a data disk snapshot to create the system disk of the custom image, use Platform to specify the operating system distribution for the system disk. Valid values:'."\n" + ."\n" + .'* Aliyun'."\n" + .'* Anolis'."\n" + .'* CentOS'."\n" + .'* Ubuntu'."\n" + .'* CoreOS'."\n" + .'* SUSE'."\n" + .'* Debian'."\n" + .'* OpenSUSE'."\n" + .'* FreeBSD'."\n" + .'* RedHat'."\n" + .'* Kylin'."\n" + .'* UOS'."\n" + .'* Fedora'."\n" + .'* Fedora CoreOS'."\n" + .'* CentOS Stream'."\n" + .'* AlmaLinux'."\n" + .'* Rocky Linux'."\n" + .'* Gentoo'."\n" + .'* Customized Linux'."\n" + .'* Others Linux'."\n" + .'* Windows Server 2022'."\n" + .'* Windows Server 2019'."\n" + .'* Windows Server 2016'."\n" + .'* Windows Server 2012'."\n" + .'* Windows Server 2008'."\n" + .'* Windows Server 2003'."\n" + ."\n" + .'Default value: Others Linux.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CentOS', + ], + ], + [ + 'name' => 'BootMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The boot mode of the image. Valid values:'."\n" + ."\n" + .'* BIOS: BIOS mode'."\n" + .'* UEFI: Unified Extensible Firmware Interface (UEFI) mode'."\n" + .'* UEFI-Preferred (default): BIOS mode and UEFI mode'."\n" + ."\n" + .'> Before you specify this parameter, make sure that you are familiar with the boot modes supported by the image. If you specify a boot mode that is not supported by the image, ECS instances created from the image cannot start as expected. For information about the boot modes of images, see the [Boot modes of images](~~2244655#b9caa9b8bb1wf~~) section of the "Best practices for ECS instance boot modes" topic.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'BIOS' => 'BIOS', + 'UEFI' => 'UEFI', + 'UEFI-Preferred' => 'UEFI-Preferred', + ], + 'example' => 'BIOS', + ], + ], + [ + 'name' => 'Architecture', + 'in' => 'query', + 'schema' => [ + 'description' => 'The system architecture of the system disk. If you specify a data disk snapshot to create the system disk of the custom image, use Architecture to specify the system architecture of the system disk. Valid values:'."\n" + ."\n" + .'* i386'."\n" + .'* x86\\_64'."\n" + .'* arm64'."\n" + ."\n" + .'Default value: x86\\_64.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'x86_64', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 value of **ClientToken** can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the custom image. If you leave this parameter empty, the image is assigned to the default resource group.'."\n" + ."\n" + .'> If you call the CreateImage operation as a Resource Access Management (RAM) user who does not have permissions on the default resource group and leave `ResourceGroupId` empty, the `Forbidden: User not authorized to operate on the specified resource` error message is returned. You must specify the ID of a resource group on which the RAM user has permissions or grant the RAM user permissions on the default resource group, and then call the CreateImage operation again.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DiskDeviceMapping', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'Details of the disks and snapshots from which the custom image is created. If you want to create a custom image based on a system disk snapshot and data disk snapshots, use this parameter to specify the snapshots.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details of the disk and snapshot from which the custom image is created.'."\n", + 'type' => 'object', + 'properties' => [ + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp17441ohwkdca0****', + ], + 'Size' => [ + 'description' => 'The size of disk N in the custom image. Unit: GiB. The valid values and default value of DiskDeviceMapping.N.Size vary based on the value of DiskDeviceMapping.N.SnapshotId.'."\n" + ."\n" + .'* If you leave DiskDeviceMapping.N.SnapshotId empty, DiskDeviceMapping.N.Size has the following valid values and default values:'."\n" + ."\n" + .' * For basic disks, the valid values range from 5 to 2000, and the default value is 5.'."\n" + .' * For other disks, the valid values range from 20 to 32768, and the default value is 20.'."\n" + ."\n" + .'* If you specify DiskDeviceMapping.N.SnapshotId, the value of DiskDeviceMapping.N.Size must be greater than or equal to the size of the specified snapshot. The default value of DiskDeviceMapping.N.Size is the size of the specified snapshot.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + 'Device' => [ + 'description' => 'The device name of disk N in the custom image. Valid values:'."\n" + ."\n" + .'* The device name of the system disk must be /dev/xvda.'."\n" + .'* The device names of the data disks are unique and range from /dev/xvdb to /dev/xvdz in alphabetical order.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '/dev/vdb', + ], + 'DiskType' => [ + 'description' => 'The type of disk N in the custom image. You can specify this parameter to create the system disk of the custom image from a data disk snapshot. If you do not specify this parameter, the disk type is determined by the corresponding snapshot. Valid values:'."\n" + ."\n" + .'* system: system disk. You can specify only one snapshot to use to create the system disk in the custom image.'."\n" + .'* data: data disk. You can specify up to 16 snapshots to use to create data disks in the custom image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'system', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 17, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the tag.'."\n", + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The tag key of the custom image.'."\n" + ."\n" + .'> This parameter will be deprecated in the future. We recommend that you use the Tag.N.key parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Key' => [ + 'description' => 'The key of tag N of the custom image. Valid values of N: 1 to 20. 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:`. The tag key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeyTest', + ], + 'Value' => [ + 'description' => 'The value of tag N of the custom image. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot start with `acs:`. The tag value cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ValueTest', + ], + 'value' => [ + 'description' => 'The tag value of the custom image.'."\n" + ."\n" + .'> This parameter will be deprecated in the future. We recommend that you use the Tag.N.Value parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'DetectionStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The mode in which to check the custom image. If you do not specify this parameter, the image is not checked. Only the standard check mode is supported.'."\n" + ."\n" + .'> This parameter is supported for most Linux and Windows operating system versions. For information about image check items and operating system limits for image check, see [Overview of image check](~~439819~~) and [Operating system limits for image check](~~475800~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'Features', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The attributes of the custom image.'."\n", + 'type' => 'object', + 'properties' => [ + 'ImdsSupport' => [ + 'description' => 'The image metadata access mode. Valid values:'."\n" + ."\n" + .'* v1: You cannot set the image metadata access mode to security hardening when you create instances from the image.'."\n" + .'* v2: You can set the image metadata access mode to security hardening when you create instances from the image.'."\n" + ."\n" + .'When you use a snapshot to create instances, the default value is set to 1. If you use an instance to create an image, the value of the ImdsSupport parameter is used by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'v2', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'ImageId' => [ + 'description' => 'The image ID.'."\n", + 'type' => 'string', + 'example' => 'm-bp146shijn7hujku****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C8B26B44-0189-443E-9816-*******', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidImageName.Malformed', + 'errorMessage' => 'The specified Image name is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidImageName.Duplicated', + 'errorMessage' => 'The specified image name is already in use.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidImageVersion.Malformed', + 'errorMessage' => 'The specified ImageVersion is wrongly formed.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the instance does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InvalidDevice.Malformed', + 'errorMessage' => 'The specified parameter DiskDeviceMapping.n.Device is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter SnapshotId or InstanceId or DiskDeviceMapping that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidSize.ValueNotSupported', + 'errorMessage' => 'The specified parameter DiskDeviceMapping.n.Size beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidDevice.InUse', + 'errorMessage' => 'The specified parameter DiskDeviceMapping.n.Device has been occupied.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified parameter DiskDeviceMapping.n.SnapshotId does not contain system disk snapshot.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.CreateImage', + 'errorMessage' => 'The specified diskCategory is not allowed to create image.', + ], + [ + 'errorCode' => 'InvalidArchitecture.Malformed', + 'errorMessage' => 'The specified Architecture is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidPlatform.Malformed', + 'errorMessage' => 'The specified Platform is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidParameter.AllEmpty', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.DiskType', + 'errorMessage' => 'The specified disk type which has kms key can\'t convert to system disk.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => 'The specified instance does not have system disk.', + ], + [ + 'errorCode' => 'InvalidImageFamily.Malformed', + 'errorMessage' => 'The format of the specified image family is invalid.', + ], + [ + 'errorCode' => 'ImageQuotaExceed.ImageFamily', + 'errorMessage' => 'The specified image family exceeds the maximum number of images for one image family.', + ], + [ + 'errorCode' => 'ImageFamilyQuotaExceed', + 'errorMessage' => 'The number of image families exceeds the limit in the region.', + ], + [ + 'errorCode' => 'InvalidDiskType.ValueNotSupported', + 'errorMessage' => 'The specified disk type is not supported.', + ], + [ + 'errorCode' => 'IdempotenceParamNotMatch', + 'errorMessage' => 'Request uses a client token in a previous request but is not identical to that request.', + ], + [ + 'errorCode' => 'InvalidBootMode.NotSupport', + 'errorMessage' => 'The specified parameter BootMode is not supported for current image architecture.', + ], + [ + 'errorCode' => 'InvalidParameter.FeaturesImdsSupport', + 'errorMessage' => 'The specified parameter Features.ImdsSupport is not supported.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskCategoryUnsupported', + 'errorMessage' => 'The current category of the disk does not support this operation.', + ], + [ + 'errorCode' => 'AccountForbidden.CreateOrder', + 'errorMessage' => 'Order cannot be created due to abnormal account.', + ], + [ + 'errorCode' => 'InvalidBootMode.Malformed', + 'errorMessage' => 'The specified parameter BootMode is invalid. Valid options are BIOS, UEFI, and UEFI-Preferred.', + ], + [ + 'errorCode' => 'InvalidDetectionStrategy.Malformed', + 'errorMessage' => 'The specified value for parameter DetectionStrategy is not supported. Please refer to the documentation for accepted values.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectDiskStatus.NeverAttached', + 'errorMessage' => 'The specified disk has never been attached to instance.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The current status of the DiskDeviceMapping.n.SnapshotId or SnapshotId does not support this operation.', + ], + [ + 'errorCode' => 'InvalidSnapshot.TooOld', + 'errorMessage' => 'This operation is denied because the specified snapshot by DiskDeviceMapping.n.SnapshotId or SnapshotId is created before 2013-07-15.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified snapshot is not allowed to create image.', + ], + [ + 'errorCode' => 'QuotaExceed.Image', + 'errorMessage' => 'The Image Quota exceeds.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified same token is trying to make requests with different parameters.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in the white list of create image by data disk snapshot.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.Invalid', + 'errorMessage' => 'Device status is invalid, please restart instance and try again.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidSnapshotCategory', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.Snapshot', + 'errorMessage' => 'The snapshot quota exceeds.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.Transferring', + 'errorMessage' => 'The specified device is transferring, you can retry after the process is finished.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidSystemSnapshot.Missing', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.CreatingSnapshot', + 'errorMessage' => 'A previous snapshot creation is in process.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'QuotaExceed.Tags', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSnapshotCategory.NotSupportImageCreation', + 'errorMessage' => 'The specified snapshot category does not support create image.', + ], + [ + 'errorCode' => 'TooManySnapshot.Unfinished', + 'errorMessage' => 'There are too many snapshots being created, please wait for them to be created done.', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'SnapshotNotReady', + 'errorMessage' => 'The specified snapshot is not ready.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus.NeedRestart', + 'errorMessage' => 'The instance needs to be restarted after adding a disk in a shutdown status.', + ], + [ + 'errorCode' => 'QuotaExceed.ConcurrentSnapshotQuota', + 'errorMessage' => 'The number of snapshots being created for the disk %s has exceeded the concurrent quota (%s). Please wait for the previous snapshots to complete before trying again.', + ], + [ + 'errorCode' => 'InvalidOperation.SnapshotStorageLocationUnsupported', + 'errorMessage' => 'Snapshots with storage location in CloudBox do not support the current operation.', + ], + [ + 'errorCode' => 'AccountEnterpriseStatusInvalid', + 'errorMessage' => 'Your enterprise registration is marked as revoked/deregistered in the National Enterprise Credit Information Publicity System. Account transaction features (purchase/renewal/recharge) are disabled. Please update real-name certification via Account Center. Restrictions will auto-remove after verification.', + ], + [ + 'errorCode' => 'InvalidOperation.DefaultFreeSnapshotNotSupport', + 'errorMessage' => 'The specified snapshot is a default free snapshot and does not support this operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified SnapshotId does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instance %s does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The process of creating snapshot has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"ImageId\\": \\"m-bp146shijn7hujku****\\",\\n \\"RequestId\\": \\"C8B26B44-0189-443E-9816-*******\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C8B26B44-0189-443E-9816-*******\\n m-bp146shijn7hujku****\\n","errorExample":""}]', + 'title' => 'CreateImage', + 'description' => '### [](#)Considerations'."\n" + ."\n" + .'* This operation is an asynchronous operation. After a request to create a custom image is sent, an image ID is returned but the creation of the custom image is in progress. You can call the [DescribeImage](~~2679797~~) operation to query the status of the custom image. When the status of the custom image is `Available` in the response, the image is created and available. For more information, see [Overview of custom images](~~172789~~).'."\n" + .'* If the response contains {"OperationLocks": {"LockReason" : "security"}} when you query information about an ECS instance, the instance is locked for security reasons, and you cannot create a custom image from the instance.'."\n" + .'* To optimize the image, we recommend that you specify `DetectionStrategy` when you create a custom image. For information about the image check feature, see [Overview](~~439819~~).'."\n" + ."\n" + .'You can call the CreateImage operation to create a custom image by using one of the following methods. The following request parameters are prioritized in descending order: InstanceId, DiskDeviceMapping, and SnapshotId. If your request contains two or more of these parameters, the custom image is created based on the parameter that has a higher priority.'."\n" + ."\n" + .'* **Create a custom image from an instance**. Specify an instance ID (`InstanceId`).'."\n" + ."\n" + .' * The ECS instance must be in the Running (`Running`) or Stopped (`Stopped`) state.'."\n" + .' * After the CreateImage operation is called, a snapshot is created for each cloud disk of the instance.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** When you create a custom image from a running ECS instance, cache data may not be written to disks. In this case, the data of the custom image may be slightly different from the data of the instance. Before you create a custom image from the instance, we recommend that you stop the instance by calling the StopInstancesoperation.'."\n" + ."\n" + .'* **Create a custom image from a snapshot. The specified snapshot must be created after July 15, 2013.**'."\n" + ."\n" + .' * **Create a custom image from a system disk snapshot of an ECS instance**. You need to only specify the ID of the system disk snapshot by using `SnapshotId`.'."\n" + ."\n" + .' * **Create a custom image from a system disk snapshot and data disk snapshots of an ECS instance**. You need to establish data association between the disks by specifying `DiskDeviceMapping`.'."\n" + ."\n" + .' * You can specify only one snapshot to create the system disk in the custom image.'."\n" + .' * You can specify up to 16 snapshots to use to create data disks in the custom image. If you do not specify `DiskDeviceMapping.N.SnapshotId`, an empty data disk with the default capacity is created.'."\n" + ."\n" + .'> When an ECS instance is released, the system disk of the instance is converted to a pay-as-you-go data disk. You cannot create a custom image from the snapshot of this disk. You must create a custom image from the snapshot of this disk before the instance is released.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeImages' => [ + 'summary' => 'Queries image resources that you can use. You can specify parameters, such as ImageId, ActionType, and Filter, in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28942', + 'abilityTreeNodes' => [ + 'FEATUREecsJ8B02D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the image. By default, if you do not specify this parameter, only images in the Available state are returned. Valid values:'."\n" + ."\n" + .'* Creating: The image is being created.'."\n" + .'* Waiting: The image is waiting to be processed.'."\n" + .'* Available: The image is available.'."\n" + .'* UnAvailable: The image is unavailable.'."\n" + .'* CreateFailed: The image fails to be created.'."\n" + .'* Deprecated: The image is no longer used.'."\n" + ."\n" + .'Default value: Available. You can specify multiple values for this parameter. Separate the values with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Available', + 'default' => 'Available', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image.'."\n" + ."\n" + .'**Naming rules for image IDs**'."\n" + ."\n" + .'* IDs of public images are named after the operating system version numbers, architectures, languages, and release dates of the images. For example, the ID of a Windows Server 2008 R2 Enterprise 64-bit (English) public image is win2008r2\\_64\\_ent_sp1\\_en-us\\_40G_alibase\\_20190318.vhd.'."\n" + .'* IDs of custom images, shared images, Alibaba Cloud Marketplace images, and community images start with m.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'm-bp1g7004ksh0oeuc****', + ], + ], + [ + 'name' => 'ShowExpired', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the subscription image has expired.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot used to create the custom image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp17ot2q7x72ggtw****', + ], + ], + [ + 'name' => 'ImageName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The image name. Fuzzy match is supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testImageName', + ], + ], + [ + 'name' => 'ImageFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image family. You can set this parameter to query images of the specified image family.'."\n" + ."\n" + .'This parameter is empty by default.'."\n" + ."\n" + .'> For information about image families that are associated with Alibaba Cloud official images, see [Overview of public images](~~108393~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hangzhou-daily-update', + ], + ], + [ + 'name' => 'ImageOwnerAlias', + 'in' => 'query', + 'schema' => [ + 'description' => 'The image source. Valid values:'."\n" + ."\n" + .'* system: images that are provided by Alibaba Cloud and are not released in Alibaba Cloud Marketplace, which are different from public images in the Elastic Compute Service (ECS) console.'."\n" + ."\n" + .'* self: your custom images'."\n" + ."\n" + .'* others: shared images (images shared by other Alibaba Cloud accounts) and community images (publicly available custom images that are published by other Alibaba Cloud accounts). Take note of the following items:'."\n" + ."\n" + .' * To query community images, you must set IsPublic to true.'."\n" + .' * To query shared images, you must set IsPublic to false or leave IsPublic empty.'."\n" + ."\n" + .'* marketplace: images released by Alibaba Cloud or independent software vendors (ISVs) in the Alibaba Cloud Marketplace, which must be purchased together with ECS instances. Take note of the billing details of the images.'."\n" + ."\n" + .'This parameter is empty by default.'."\n" + ."\n" + .'> By default, this parameter is empty, which indicates that the following images are queried: public images provided by Alibaba Cloud, custom images in your repository, shared images from other Alibaba Cloud accounts, and community images that are published by other Alibaba Cloud accounts.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'self', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type for which the image can be used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'IsSupportIoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the image can be used on I/O optimized instances.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'IsSupportCloudinit', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the image supports cloud-init.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'OSType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system type of the image. Valid values:'."\n" + ."\n" + .'* windows'."\n" + .'* linux'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'linux', + ], + ], + [ + 'name' => 'Architecture', + 'in' => 'query', + 'schema' => [ + 'description' => 'The architecture of the image. Valid values:'."\n" + ."\n" + .'* i386'."\n" + .'* x86\\_64'."\n" + .'* arm64'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i386', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number to return.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '1', + 'default' => '10', + ], + ], + [ + 'name' => 'Usage', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the image is running on an Elastic Compute Service (ECS) instance. Valid values:'."\n" + ."\n" + .'* instance: The image is already in use and running on an ECS instance.'."\n" + .'* none: The image is idle.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'instance', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run without performing the actual request.'."\n" + ."\n" + .'* true: performs only a dry run. The system checks whether your AccessKey pair is valid, whether RAM users are granted required permissions, and whether the required parameters are specified. If the request fails the dry run, an error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ActionType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The scenario in which the image is used. Valid values:'."\n" + ."\n" + .'* CreateEcs: instance creation'."\n" + .'* ChangeOS: replacement of the system disk or OS'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreateEcs', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the custom image belongs. If you specify this parameter to query resources, up to 1,000 resources that belong to the specified resource group can be returned.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of whether you specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Information about the tag.'."\n", + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The image tag key.'."\n" + ."\n" + .'**'."\n" + ."\n" + .'This parameter will be removed in the future. We recommend that you use the **Tag.N.Key** parameter to ensure future compatibility.``'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Key' => [ + 'description' => 'The tag N key of the image. Valid values of N: 1 to 20.'."\n" + ."\n" + .'Up to 1,000 resources that match the specified tags can be returned in the response. To query more than 1,000 resources that match the specified tags, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The tag value of the image. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The tag value of the custom image.'."\n" + ."\n" + .'> This parameter will be removed in the future. To ensure future compatibility, we recommend that you use the `Tag.N.Value` parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The filter conditions used to query resources.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Filter N used to query resources.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of filter N used to query resources. Valid values:'."\n" + ."\n" + .'* If you set this parameter to `CreationStartTime`, you can query the resources that were created after the point in time specified by `Filter.N.Value`.'."\n" + .'* If you set this parameter to `CreationEndTime`, you can query the resources that were created before the point in time specified by `Filter.N.Value`.'."\n" + .'* If you set this parameter to `NetworkType`, you can query resources of the specified network type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationStartTime', + ], + 'Value' => [ + 'description' => 'The value of filter N used to query resources. Valid values:'."\n" + ."\n" + .'* When `Filter.N.Key` is set to `CreationStartTime` or `CreationEndTime`, the format is `yyyy-MM-ddTHH:mmZ` in the UTC+0 time zone.'."\n" + .'* When `Filter.N.Key` is set to `NetworkType`, the valid values can be `vpc` or `classic`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-05T22:40Z', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'IsPublic', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to query published community images. Valid values:'."\n" + ."\n" + .'* true: queries published community images. When you set this parameter to true, you must set ImageOwnerAlias to others.'."\n" + .'* false: queries image types other than the community images type. The specific image types to be queried are determined by the ImageOwnerAlias value.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ImageOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the image belongs. This parameter takes effect only if you query shared images or community images.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1234567890', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageNumber' => [ + 'description' => 'The page number returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '66189103-EDB2-43E2-BB60-BFF2B62F4EB8', + ], + 'TotalCount' => [ + 'description' => 'The total number of images.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RegionId' => [ + 'description' => 'The region ID of the image.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Images' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Image' => [ + 'description' => 'The information of the images.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information of the image.'."\n", + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the image was created.'."\n", + 'type' => 'string', + 'example' => '2019-11-15T06:07:05Z', + ], + 'Status' => [ + 'description' => 'The state of the image. Valid values:'."\n" + ."\n" + .'* UnAvailable: The image is unavailable.'."\n" + .'* Available: The image is available.'."\n" + .'* Creating: The image is being created.'."\n" + .'* CreateFailed: The image failed to be created.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'ImageFamily' => [ + 'description' => 'The name of the image family.'."\n", + 'type' => 'string', + 'example' => 'hangzhou-daily-update', + ], + 'Progress' => [ + 'description' => 'The creation progress of the image. Unit: percent (%).'."\n", + 'type' => 'string', + 'example' => '100%', + ], + 'IsCopied' => [ + 'description' => 'Indicates whether the image is a copy of another image.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'IsSupportIoOptimized' => [ + 'description' => 'Indicates whether the image can be used on I/O optimized instances.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ImageOwnerAlias' => [ + 'description' => 'The source of the image. Valid values:'."\n" + ."\n" + .'* system: a public image provided by Alibaba Cloud'."\n" + .'* self: a custom image that you created'."\n" + .'* others: a shared image from another Alibaba Cloud account or a community image published by another Alibaba Cloud account'."\n" + .'* marketplace: an Alibaba Cloud Marketplace image'."\n", + 'type' => 'string', + 'example' => 'self', + ], + 'IsSupportCloudinit' => [ + 'description' => 'Indicates whether the image supports cloud-init.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ImageVersion' => [ + 'description' => 'The version of the image.'."\n", + 'type' => 'string', + 'example' => '2', + ], + 'Usage' => [ + 'description' => 'Indicates whether the image was used to create ECS instances. Valid values:'."\n" + ."\n" + .'* instance: The image was used to create one or more ECS instances.'."\n" + .'* none: The image was not used to create ECS instances.'."\n", + 'type' => 'string', + 'example' => 'none', + ], + 'IsSelfShared' => [ + 'description' => 'Indicates whether the custom image was shared to other Alibaba Cloud accounts.'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'Description' => [ + 'description' => 'The description of the image.'."\n", + 'type' => 'string', + 'example' => 'Archive log for Oracle', + ], + 'Size' => [ + 'description' => 'The size of the image. Unit: GiB.'."\n" + ."\n" + .'> If the image contains data disk snapshots, this parameter indicates only the size of the system disk snapshot contained in the image.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '60', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the image belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'Platform' => [ + 'description' => 'The operating system platform.'."\n", + 'type' => 'string', + 'example' => 'Windows Server 2016', + ], + 'OSNameEn' => [ + 'description' => 'The display name of the operating system in English.'."\n", + 'type' => 'string', + 'example' => 'Windows Server 2016 Data Center Edition 64bit Chinese Edition', + ], + 'ImageName' => [ + 'description' => 'The name of the image.'."\n", + 'type' => 'string', + 'example' => 'testImageName', + ], + 'OSName' => [ + 'description' => 'The display name of the operating system in Chinese.'."\n", + 'type' => 'string', + 'example' => 'Windows Server 2016 Datacenter Edition 64-bit (Simplified Chinese)'."\n", + ], + 'ImageId' => [ + 'description' => 'The ID of the image.'."\n", + 'type' => 'string', + 'example' => 'm-bp1g7004ksh0oeuc****', + ], + 'OSType' => [ + 'description' => 'The type of the operating system. Valid values:'."\n" + ."\n" + .'* windows'."\n" + .'* linux'."\n", + 'type' => 'string', + 'example' => 'windows', + ], + 'IsSubscribed' => [ + 'description' => 'Indicates whether you accepted the Terms of Service of the image service that corresponds to the product code.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ProductCode' => [ + 'description' => 'The Alibaba Cloud Marketplace product code of the image.'."\n", + 'type' => 'string', + 'example' => 'test000****', + ], + 'Architecture' => [ + 'description' => 'The architecture of the image. Valid values:'."\n" + ."\n" + .'* i386'."\n" + .'* x86\\_64'."\n" + .'* arm64'."\n", + 'type' => 'string', + 'example' => 'x86_64', + ], + 'BootMode' => [ + 'description' => 'The boot mode of the image. Valid values:'."\n" + ."\n" + .'* BIOS: Basic Input/Output System (BIOS)'."\n" + .'* UEFI: Unified Extensible Firmware Interface (UEFI)'."\n" + .'* UEFI-Preferred: BIOS and UEFI'."\n" + ."\n" + .'For information about the image boot modes, see [Image boot modes](~~2244655#b9caa9b8bb1wf~~).'."\n", + 'type' => 'string', + 'example' => 'BIOS', + ], + 'DiskDeviceMappings' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DiskDeviceMapping' => [ + 'description' => 'The mappings between disks and snapshots in the image.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The mapping between the disk and the snapshot in the image.'."\n", + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The type of the image.'."\n", + 'type' => 'string', + 'example' => 'system', + ], + 'ImportOSSBucket' => [ + 'description' => 'The Object Storage Service (OSS) bucket that contains the imported image file.'."\n", + 'type' => 'string', + 'example' => 'testEcsImport', + ], + 'Progress' => [ + 'description' => 'The progress of the image copy task.'."\n", + 'type' => 'string', + 'example' => '32%', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot.'."\n", + 'type' => 'string', + 'example' => 's-bp17ot2q7x72ggtw****', + ], + 'ImportOSSObject' => [ + 'description' => 'The OSS object that corresponds to the imported image file.'."\n", + 'type' => 'string', + 'example' => 'imageImport', + ], + 'Device' => [ + 'description' => 'The device name of the disk. Example: /dev/xvdb.'."\n", + 'type' => 'string', + 'example' => '/dev/xvda', + ], + 'Size' => [ + 'description' => 'The size of the disk. Unit: GiB.'."\n", + 'type' => 'string', + 'example' => '60', + ], + 'RemainTime' => [ + 'description' => 'The remaining time of the image copy task. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '233', + ], + 'Format' => [ + 'description' => 'The format of the image.'."\n", + 'type' => 'string', + 'example' => 'qcow2', + ], + 'Encrypted' => [ + 'description' => '> This parameter is in invitational preview.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the image.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Information about the tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value of the image.'."\n", + 'type' => 'string', + 'example' => 'Oracle', + ], + 'TagKey' => [ + 'description' => 'The tag key of the image.'."\n", + 'type' => 'string', + 'example' => 'DTS', + ], + ], + ], + ], + ], + ], + 'IsPublic' => [ + 'description' => 'Indicates whether the image is publicly available. Publicly available images include public images provided by Alibaba Cloud and custom images published as community images. Valid values:'."\n" + ."\n" + .'* true: The image is publicly available.'."\n" + .'* false: The image is publicly unavailable.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ImageOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the image belongs. This parameter takes effect only if you query shared images or community images.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1234567890', + ], + 'LoginAsNonRootSupported' => [ + 'description' => 'Indicates whether the image supports logons of non-root users. Valid values:'."\n" + ."\n" + .'* true: The image supports logons of non-root users.'."\n" + .'* false: The image does not support logons of non-root users.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'SupplierName' => [ + 'description' => 'The name of the supplier that published the community image.'."\n", + 'type' => 'string', + 'example' => 'TestName', + ], + 'DetectionOptions' => [ + 'description' => 'Details about the check performed on the image.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The state of the image check task. Valid values:'."\n" + ."\n" + .'* Processing'."\n" + .'* Finished'."\n", + 'type' => 'string', + 'example' => 'Processing', + ], + 'Items' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Item' => [ + 'description' => 'The check items.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Information about the check items.'."\n", + 'type' => 'object', + 'properties' => [ + 'Name' => [ + 'description' => 'The name of the check item.'."\n", + 'type' => 'string', + 'example' => 'Nvme', + ], + 'Value' => [ + 'description' => 'The result of the check item.'."\n", + 'type' => 'string', + 'example' => 'Supported', + ], + 'RiskLevel' => [ + 'description' => 'The severity of the risk that the check item of the imported custom image has. If the check item is at risk, this parameter is returned. If the check item is not at risk, this parameter is not returned.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* High: The check item is a high-risk item that may affect the startup of the instance. We recommend that you handle the risk.'."\n" + .'* Medium: The check item is a medium-risk item that may affect the startup performance or configurations of the instance. We recommend that you handle the risk.'."\n", + 'type' => 'string', + 'example' => 'High', + ], + 'RiskCode' => [ + 'description' => 'The risk that the check item may have.'."\n", + 'type' => 'string', + 'example' => 'NVMe.NotInstallded', + ], + ], + ], + ], + ], + ], + ], + ], + 'Features' => [ + 'description' => 'The feature attributes of the image.'."\n", + 'type' => 'object', + 'properties' => [ + 'NvmeSupport' => [ + 'description' => 'Indicates whether the image supports the Non-Volatile Memory Express (NVMe) protocol. Valid values:'."\n" + ."\n" + .'* supported: The image supports the NVMe protocol. Instances created from the image also support the NVMe protocol.'."\n" + .'* unsupported: The image does not support the NVMe protocol. Instances created from the image do not support the NVMe protocol.'."\n", + 'type' => 'string', + 'example' => 'supported', + ], + 'ImdsSupport' => [ + 'description' => 'The image metadata access mode. Valid values:'."\n" + ."\n" + .'* v1: You cannot set the image metadata access mode to security hardening when you create instances from the image.'."\n" + .'* v2: You can set the image metadata access mode to security hardening when you create instances from the image.'."\n" + ."\n" + .'[Overview of instance metadata](~~108460~~).'."\n", + 'type' => 'string', + 'example' => 'v2', + ], + 'CpuOnlineUpgrade' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'supported', + ], + 'CpuOnlineDowngrade' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'supported', + ], + 'MemoryOnlineUpgrade' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'unsupported', + ], + 'MemoryOnlineDowngrade' => [ + 'description' => '', + 'type' => 'string', + 'example' => 'unsupported', + ], + ], + ], + 'LicenseType' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidImageOwnerAlias.ValueNotSupported', + 'errorMessage' => 'The specified ImageOwnerAlias value is not supported.', + ], + [ + 'errorCode' => 'InvalidParamter', + 'errorMessage' => 'Invalid Parameter.', + ], + [ + 'errorCode' => 'InvalidTag.Mismatch', + 'errorMessage' => 'The specified Tag.n.Key and Tag.n.Value are not match.', + ], + [ + 'errorCode' => 'InvalidTagCount', + 'errorMessage' => 'The specified tags are beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified instance type %s does not exist. You can use the DescribeInstanceTypes API to query the available instance types.', + ], + [ + 'errorCode' => 'InvalidFilterValue.NetworkType', + 'errorMessage' => 'The specified networkType value in the Filter is invalid.', + ], + [ + 'errorCode' => 'InvalidOperation.ImageOwnerIdUnsupported', + 'errorMessage' => 'The parameter "ImageOwnerId" is not supported in this context, it is only valid when querying shared images or community images.', + ], + [ + 'errorCode' => 'InvalidImageOwnerAlias.PublicImageUnsupported', + 'errorMessage' => 'When querying images, the parameter ImageOwnerAlias should be others while specified parameter IsPublic is true.', + ], + ], + 403 => [ + [ + 'errorCode' => 'CurrentAccount.NotSupportPublicImage', + 'errorMessage' => 'Public image is not supported for current account.', + ], + ], + [ + [ + 'errorCode' => 'InvalidFilterKey.NotFound', + 'errorMessage' => 'The specified Filter Key is not found.', + ], + [ + 'errorCode' => 'InvalidFilterValue', + 'errorMessage' => 'The specified Filter Value is not valid.', + ], + [ + 'errorCode' => 'InvalidUsage', + 'errorMessage' => 'The specified Usage is not valid.', + ], + [ + 'errorCode' => 'InvalidOSType', + 'errorMessage' => 'The specified OSType is not valid.', + ], + [ + 'errorCode' => 'InvalidArchitecture', + 'errorMessage' => 'The specified Architecture is not valid.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 1,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"66189103-EDB2-43E2-BB60-BFF2B62F4EB8\\",\\n \\"TotalCount\\": 1,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"Images\\": {\\n \\"Image\\": [\\n {\\n \\"CreationTime\\": \\"2019-11-15T06:07:05Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"ImageFamily\\": \\"hangzhou-daily-update\\",\\n \\"Progress\\": \\"100%\\",\\n \\"IsCopied\\": false,\\n \\"IsSupportIoOptimized\\": true,\\n \\"ImageOwnerAlias\\": \\"self\\",\\n \\"IsSupportCloudinit\\": true,\\n \\"ImageVersion\\": \\"2\\",\\n \\"Usage\\": \\"none\\",\\n \\"IsSelfShared\\": \\"true\\",\\n \\"Description\\": \\"Archive log for Oracle\\",\\n \\"Size\\": 60,\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"Platform\\": \\"Windows Server 2016\\",\\n \\"OSNameEn\\": \\"Windows Server 2016 Data Center Edition 64bit Chinese Edition\\",\\n \\"ImageName\\": \\"testImageName\\",\\n \\"OSName\\": \\"Windows Server 2016 数据中心版 64位中文版\\",\\n \\"ImageId\\": \\"m-bp1g7004ksh0oeuc****\\",\\n \\"OSType\\": \\"windows\\",\\n \\"IsSubscribed\\": false,\\n \\"ProductCode\\": \\"test000****\\",\\n \\"Architecture\\": \\"x86_64\\",\\n \\"BootMode\\": \\"BIOS\\",\\n \\"DiskDeviceMappings\\": {\\n \\"DiskDeviceMapping\\": [\\n {\\n \\"Type\\": \\"system\\",\\n \\"ImportOSSBucket\\": \\"testEcsImport\\",\\n \\"Progress\\": \\"32%\\",\\n \\"SnapshotId\\": \\"s-bp17ot2q7x72ggtw****\\",\\n \\"ImportOSSObject\\": \\"imageImport\\",\\n \\"Device\\": \\"/dev/xvda\\",\\n \\"Size\\": \\"60\\",\\n \\"RemainTime\\": 233,\\n \\"Format\\": \\"qcow2\\",\\n \\"Encrypted\\": true\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"Oracle\\",\\n \\"TagKey\\": \\"DTS\\"\\n }\\n ]\\n },\\n \\"IsPublic\\": false,\\n \\"ImageOwnerId\\": 1234567890,\\n \\"LoginAsNonRootSupported\\": false,\\n \\"SupplierName\\": \\"TestName\\",\\n \\"DetectionOptions\\": {\\n \\"Status\\": \\"Processing\\",\\n \\"Items\\": {\\n \\"Item\\": [\\n {\\n \\"Name\\": \\"Nvme\\",\\n \\"Value\\": \\"Supported\\",\\n \\"RiskLevel\\": \\"High\\",\\n \\"RiskCode\\": \\"NVMe.NotInstalled\\"\\n }\\n ]\\n }\\n },\\n \\"Features\\": {\\n \\"NvmeSupport\\": \\"supported\\",\\n \\"ImdsSupport\\": \\"v2\\",\\n \\"CpuOnlineUpgrade\\": \\"supported\\",\\n \\"CpuOnlineDowngrade\\": \\"supported\\",\\n \\"MemoryOnlineUpgrade\\": \\"unsupported\\",\\n \\"MemoryOnlineDowngrade\\": \\"unsupported\\"\\n },\\n \\"LicenseType\\": \\"\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 1\\n 66189103-EDB2-43E2-BB60-BFF2B62F4EB8\\n 1\\n \\n \\n self\\n true\\n Archive log for Oracle\\n Windows Server 2016\\n rg-bp67acfmxazb4p****\\n 60\\n false\\n BIOS\\n Windows Server 2016 数据中心版 64位中文版\\n false\\n m-bp1g7004ksh0oeuc****\\n \\n \\n supported\\n \\n Windows Server 2016 Data Center Edition 64bit Chinese Edition\\n \\n \\n DTS\\n Oracle\\n \\n \\n false\\n Available\\n 100%\\n none\\n x86_64\\n test000****\\n false\\n hangzhou-daily-update\\n true\\n true\\n testImageName\\n \\n \\n s-bp17ot2q7x72ggtw****\\n system\\n 32%\\n qcow2\\n /dev/xvda\\n 60\\n testEcsImport\\n imageImport\\n \\n \\n 2\\n windows\\n 2019-11-15T06:07:05Z\\n \\n \\n cn-hangzhou\\n","errorExample":""}]', + 'title' => 'DescribeImages', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'* You can query your custom images, public images provided by Alibaba Cloud, Alibaba Cloud Marketplace images, and shared images from other Alibaba Cloud accounts.'."\n" + .'* This is a paginated query. The response contains the total number of available images and the images on the returned page. By default,10 entries are displayed on each page.'."\n" + .'* When you call an API operation by using Alibaba Cloud CLI, you must specify request parameter values of different data types in the required formats. For more information, see [Parameter formats](~~110340~~).'."\n" + .'* If you set ImageOwnerAlias to system or others when you call the DescribeImages operation to query public images that are provided by Alibaba Cloud or shared images, Resource Access Management (RAM) policies are ignored in the request. For more information, see [RAM authorization](~~25497~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyImageAttribute' => [ + 'summary' => 'Modifies the attributes of a custom image, such as the image family, name, boot mode, and status and whether the image supports the Non-Volatile Memory Express (NVMe) protocol. When you call this operation, you can specify parameters, such as ImageId and ImageFamily, in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '29065', + 'abilityTreeNodes' => [ + 'FEATUREecsIN21Q0', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the custom image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the custom image.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'm-bp18ygjuqnwhechc****', + ], + ], + [ + 'name' => 'ImageName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the custom image. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with acs: or aliyun. [It cannot contain http:// or https://. It can contain letters, digits, periods (.), colons (:), underscores (\\_), and hyphens (-).](http://https://。、(.)、(:)、(\\_)(-)。)'."\n" + ."\n" + .'By default, this parameter is empty. In this case, the original name is retained.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testImageName', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new state of the custom image. Valid values:'."\n" + ."\n" + .'* Deprecated: puts the image into the Deprecated state. If the custom image is shared, you must unshare it before you can put it into the Deprecated state. Images in the Deprecated state cannot be shared or copied, but can be used to create instances or replace system disks.'."\n" + .'* Available: puts the image into the Available state. You can restore an image from the Deprecated state to the Available state.'."\n" + ."\n" + .'> If you want to roll back a custom image in the image family to a previous version, you can put the latest available custom image into the Deprecated state. If no custom images are in the Available state within the image family, an image family cannot be used to create instances. Proceed with caution if only a single custom image is in the Available state within the image family.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Deprecated', + ], + ], + [ + 'name' => 'ImageFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image family. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with acs: or aliyun. [It cannot contain http:// or https://. It can contain letters, digits, periods (.), colons (:), underscores (\\_), and hyphens (-).](http://https://。、(.)、(:)、(\\_)(-)。)'."\n" + ."\n" + .'By default, this parameter is empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hangzhou-daily-update', + ], + ], + [ + 'name' => 'BootMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new boot mode of the image. Valid values:'."\n" + ."\n" + .'* BIOS: BIOS mode'."\n" + .'* UEFI: Unified Extensible Firmware Interface (UEFI) mode'."\n" + .'* UEFI-Preferred: BIOS mode and UEFI mode'."\n" + ."\n" + .'> Before you change this parameter, make sure that you are familiar with the boot modes supported by the image. If you specify a boot mode that is not supported by the image, ECS instances created from the image cannot start as expected. For information about the boot modes of images, see the [Boot modes of custom images](~~2244655#b9caa9b8bb1wf~~) section of the "Best practices for ECS instance boot modes" topic.'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [ + 'BIOS' => 'BIOS', + 'UEFI' => 'UEFI', + 'UEFI-Preferred' => 'UEFI-Preferred', + ], + 'example' => 'BIOS', + ], + ], + [ + 'name' => 'LicenseType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the license that is used to activate the operating system after the image is imported. Set the value to BYOL.'."\n" + ."\n" + .'BYOL: The license that comes with the source operating system is used. When you use the BYOL license, make sure that your license key is supported by Alibaba Cloud.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Auto', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the custom image. The description must be 2 to 256 characters in length It cannot start with [http:// or https://.](http://https://。)'."\n" + ."\n" + .'This parameter is empty by default, which specifies that the original description is retained.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'Features', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The attributes of the custom image.'."\n", + 'type' => 'object', + 'properties' => [ + 'NvmeSupport' => [ + 'description' => 'Specifies whether the image supports the Non-Volatile Memory Express (NVMe) protocol. Valid values:'."\n" + ."\n" + .'* supported: The image supports the NVMe protocol. Instances created from the image also support the NVMe protocol.'."\n" + .'* unsupported: The image does not support the NVMe protocol. Instances created from the image do not support the NVMe protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'supported', + ], + 'ImdsSupport' => [ + 'description' => 'The image metadata access mode. Valid values:'."\n" + ."\n" + .'* v1: You cannot set the image metadata access mode to security hardening when you create instances from the image.'."\n" + ."\n" + .'* v2: You can set the image metadata access mode to security hardening when you create instances from the image.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** You cannot change the value of ImdsSupport from v2 to v1 for an image. To change the value of ImdsSupport from v2 to v1 for an image, use the snapshots associated with the image to create an image and set ImdsSupport to v1 for the new image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'v2', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidImageName.Malformed', + 'errorMessage' => 'Image names must be between 2 and 128 characters long, using either English or Chinese characters. The name must start with a letter or a Chinese character, and can include numbers, colons, underscores and hyphens.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "RegionId" that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidImageName.Duplicated', + 'errorMessage' => 'The specified Image name has already bean used.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'ImageQuotaFull.ImageFamily', + 'errorMessage' => 'The specified image family has exceeded max number of images for one image family.', + ], + [ + 'errorCode' => 'InvalidImageFamily.Malformed', + 'errorMessage' => 'The specified parameter "ImageFamily" is malformed.', + ], + [ + 'errorCode' => 'ImageFamilyQuotaFull', + 'errorMessage' => 'The specified region has exceeded max number of image family.', + ], + [ + 'errorCode' => 'InvalidBootMode.NotSupport', + 'errorMessage' => 'The specified parameter BootMode is not supported.', + ], + [ + 'errorCode' => 'InvalidLicenseType.NotSupported', + 'errorMessage' => 'The specified parameter LicenseType is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.FeaturesImdsSupport', + 'errorMessage' => 'The specified parameter Features.ImdsSupport is not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ImageStatus.NotAvailable', + 'errorMessage' => 'The specified image status is not available.', + ], + [ + 'errorCode' => 'ImageStatus.NotDeprecated', + 'errorMessage' => 'The specified image status is not deprecated.', + ], + [ + 'errorCode' => 'ImageUseShared', + 'errorMessage' => 'The specified image has been shared to others, please remove shared accounts first.', + ], + [ + 'errorCode' => 'OperationDeined.ImageUsingByInstance', + 'errorMessage' => 'The boot mode of the image cannot be modified because it has associated instances.', + ], + [ + 'errorCode' => 'InvalidOperation.FeaturesImdsSupportNotMatch', + 'errorMessage' => 'The specified parameter Features.ImdsSupport can not be set to v1 from v2.', + ], + [ + 'errorCode' => 'InvalidStatus.ImageIsCreating', + 'errorMessage' => 'The operation cannot be performed because the image is creating. Please wait until the creation is complete and try again.', + ], + [ + 'errorCode' => 'InvalidOperation.PublicImageUnsupported', + 'errorMessage' => 'The community image\'s publisher is not the current account. Modification is not permitted.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'ModifyImageAttribute', + ], + 'DeleteImage' => [ + 'summary' => 'Deletes a custom image. When you call this operation, you can specify ImageId and Force in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28869', + 'abilityTreeNodes' => [ + 'FEATUREecsJ8B02D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the custom image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image. If the specified custom image does not exist, the request is ignored.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'm-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully delete the custom image. Valid values:'."\n" + ."\n" + .'* true: forcefully deletes the custom image, regardless of whether the image is being used by instances.'."\n" + .'* false: verifies that the custom image is not being used by instances and then deletes the image.'."\n" + ."\n" + .'Default value: false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'ImageUsingByInstance', + 'errorMessage' => 'The specified image has been used to create instances. You can use the DescribeInstances API to query these instances, or you can use the force parameter to proceed.', + ], + [ + 'errorCode' => 'ImageUseShared', + 'errorMessage' => 'The specified image has been shared to others. You can use the DescribeImageSharePermission API to query the users who have been shared.', + ], + [ + 'errorCode' => 'OperationDenied.ImageCopying', + 'errorMessage' => 'The image is being copied. Please use the CancelCopyImage API.', + ], + [ + 'errorCode' => 'ImageIsImporting', + 'errorMessage' => 'The specified Image is importing.', + ], + [ + 'errorCode' => 'ImageIsExporting', + 'errorMessage' => 'The specified image is currently being exported. You can use the DescribeTasks API to check the status of related tasks and cancel them if needed.', + ], + [ + 'errorCode' => 'ImageIsPublic', + 'errorMessage' => 'You can not delete public image, please modify it to private.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}"},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n"}]', + 'title' => 'DeleteImage', + 'description' => 'For information about scenarios in which you cannot delete a custom image and the considerations related to custom image deletion, see [Delete a custom image](~~25466~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeImageFromFamily' => [ + 'summary' => 'Queries available custom images that are most recently created in a specific image family.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28939', + 'abilityTreeNodes' => [ + 'FEATUREecs2Z790V', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the custom image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The family name of the image that you want to use to create the instances.'."\n" + ."\n" + .'You can configure image families for custom images, public images, community images, and shared images. For more information, see [Overview of image families](~~174241~~).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'hangzhou-daily-update', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'Image' => [ + 'description' => 'The image information.'."\n", + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the image was created.'."\n", + 'type' => 'string', + 'example' => '2018-01-10T01:01:10Z', + ], + 'Status' => [ + 'description' => 'The state of the image. Valid values:'."\n" + ."\n" + .'* UnAvailable'."\n" + .'* Available'."\n" + .'* Creating'."\n" + .'* CreateFailed'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'ImageFamily' => [ + 'description' => 'The name of the image family.'."\n", + 'type' => 'string', + 'example' => 'testImageFamily', + ], + 'Progress' => [ + 'description' => 'The image creation progress in percentage.'."\n", + 'type' => 'string', + 'example' => '100', + ], + 'IsCopied' => [ + 'description' => 'Indicates whether the image is a copy of another image.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'IsSupportIoOptimized' => [ + 'description' => 'Indicates whether the image can be used on I/O optimized instances.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ImageOwnerAlias' => [ + 'description' => 'The alias of the image owner. Valid values:'."\n" + ."\n" + .'* system: public images provided by Alibaba Cloud'."\n" + .'* self: your custom images'."\n" + .'* others: shared images from other Alibaba Cloud accounts'."\n" + .'* marketplace: Alibaba Cloud Marketplace images'."\n", + 'type' => 'string', + 'example' => 'self', + ], + 'IsSupportCloudinit' => [ + 'description' => 'Indicates whether cloud-init is supported.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ImageVersion' => [ + 'description' => 'The image version.'."\n", + 'type' => 'string', + 'example' => '2', + ], + 'Usage' => [ + 'description' => 'Indicates whether the image has been used to create ECS instances. Valid values:'."\n" + ."\n" + .'* instance: The image was used to create one or more ECS instances.'."\n" + .'* none: The image was not used to create ECS instances.'."\n", + 'type' => 'string', + 'example' => 'none', + ], + 'IsSelfShared' => [ + 'description' => 'Indicates whether the custom image was shared to other Alibaba Cloud accounts.'."\n", + 'type' => 'string', + 'example' => 'true', + ], + 'Description' => [ + 'description' => 'The description of the volume.'."\n", + 'type' => 'string', + 'example' => 'testDescription', + ], + 'Size' => [ + 'description' => 'The size of the image. Unit: GiB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '80', + ], + 'Platform' => [ + 'description' => 'The operating system.'."\n", + 'type' => 'string', + 'example' => 'Aliyun', + ], + 'ImageName' => [ + 'description' => 'The name of the image.'."\n", + 'type' => 'string', + 'example' => 'testImageName', + ], + 'OSName' => [ + 'description' => 'The display name of the operating system in Chinese.'."\n", + 'type' => 'string', + 'example' => 'Alibaba Cloud Linux 2.1903', + ], + 'ImageId' => [ + 'description' => 'The image ID.'."\n", + 'type' => 'string', + 'example' => 'm-bp1g7004ksh0oeuc****', + ], + 'OSType' => [ + 'description' => 'The type of the operating system. Valid values:'."\n" + ."\n" + .'* windows'."\n" + .'* linux'."\n", + 'type' => 'string', + 'example' => 'linux', + ], + 'IsSubscribed' => [ + 'description' => 'Indicates whether you have subscribed to the service terms of the image product corresponding to the image product code.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ProductCode' => [ + 'description' => 'The product code of the Alibaba Cloud Marketplace image.'."\n", + 'type' => 'string', + 'example' => 'jxsc00****', + ], + 'Architecture' => [ + 'description' => 'The architecture of the image. Valid values:'."\n" + ."\n" + .'* i386'."\n" + .'* x86\\_64'."\n", + 'type' => 'string', + 'example' => 'x86_64', + ], + 'DiskDeviceMappings' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DiskDeviceMapping' => [ + 'description' => 'The mappings between the disk and the snapshot in the image.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Type' => [ + 'description' => 'The image type.'."\n", + 'type' => 'string', + 'example' => 'custom', + ], + 'ImportOSSBucket' => [ + 'description' => 'The OSS bucket that contains the imported image file.'."\n", + 'type' => 'string', + 'example' => 'testEcsImport', + ], + 'SnapshotId' => [ + 'description' => 'The snapshot ID.'."\n", + 'type' => 'string', + 'example' => 's-bp17ot2q7x72ggtw****', + ], + 'ImportOSSObject' => [ + 'description' => 'The OSS object to which the imported image belongs.'."\n", + 'type' => 'string', + 'example' => 'imageImport', + ], + 'Size' => [ + 'description' => 'The size of the disk. Unit: GiB.'."\n", + 'type' => 'string', + 'example' => '80', + ], + 'Device' => [ + 'description' => 'The device name of the disk. Example: /dev/xvdb.'."\n" + ."\n" + .'> This parameter will be removed in the future. To ensure compatibility, we recommend that you use other parameters.'."\n", + 'type' => 'string', + 'example' => '/dev/xvdb', + ], + 'Format' => [ + 'description' => 'The image format.'."\n", + 'type' => 'string', + 'example' => 'qcow2', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the image.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value of the custom image.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key of the custom image.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidUser.Unauthorized', + 'errorMessage' => 'The user is not authorized.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"Image\\": {\\n \\"CreationTime\\": \\"2018-01-10T01:01:10Z\\",\\n \\"Status\\": \\"Available\\",\\n \\"ImageFamily\\": \\"testImageFamily\\",\\n \\"Progress\\": \\"100\\",\\n \\"IsCopied\\": false,\\n \\"IsSupportIoOptimized\\": true,\\n \\"ImageOwnerAlias\\": \\"self\\",\\n \\"IsSupportCloudinit\\": true,\\n \\"ImageVersion\\": \\"2\\",\\n \\"Usage\\": \\"none\\",\\n \\"IsSelfShared\\": \\"true\\",\\n \\"Description\\": \\"testDescription\\",\\n \\"Size\\": 80,\\n \\"Platform\\": \\"Aliyun\\",\\n \\"ImageName\\": \\"testImageName\\",\\n \\"OSName\\": \\"Alibaba Cloud Linux 2.1903\\",\\n \\"ImageId\\": \\"m-bp1g7004ksh0oeuc****\\",\\n \\"OSType\\": \\"linux\\",\\n \\"IsSubscribed\\": false,\\n \\"ProductCode\\": \\"jxsc00****\\",\\n \\"Architecture\\": \\"x86_64\\",\\n \\"DiskDeviceMappings\\": {\\n \\"DiskDeviceMapping\\": [\\n {\\n \\"Type\\": \\"custom\\",\\n \\"ImportOSSBucket\\": \\"testEcsImport\\",\\n \\"SnapshotId\\": \\"s-bp17ot2q7x72ggtw****\\",\\n \\"ImportOSSObject\\": \\"imageImport\\",\\n \\"Size\\": \\"80\\",\\n \\"Device\\": \\"/dev/xvdb\\",\\n \\"Format\\": \\"qcow2\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n E39053A7-C3E6-41FA-8F8D-F5BD8063E61C\\n \\n self\\n Available\\n \\n \\n testDescription\\n \\n x86_64\\n CentOS\\n \\n 40\\n false\\n false\\n testImageFamily\\n CentOS 8.0 64位\\n true\\n true\\n testImageName\\n \\n \\n s-bp1ejhb4r1lyu55t****\\n system\\n \\n 40\\n /dev/xvda\\n \\n \\n \\n \\n \\n linux\\n m-bp1ejhb4r1lyu55t****\\n 2020-03-17T06:19:19Z\\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeImageFromFamily', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'If no available image exists in a specific image family, the response is empty.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeImageSupportInstanceTypes' => [ + 'summary' => 'Queries the Elastic Compute Service (ECS) instance types supported by an image.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28944', + 'abilityTreeNodes' => [ + 'FEATUREecsJ8B02D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'Details about the instance types that are supported by the image.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'm-o6w3gy99qf89rkga****', + ], + ], + [ + 'name' => 'ActionType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The scenario in which the image is used. Valid values:'."\n" + ."\n" + .'* CreateEcs (default): instance creation'."\n" + .'* ChangeOS: replacement of the system disk or operating system'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreateEcs', + ], + ], + [ + 'name' => 'Filter', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The number of vCPUs of the instance type.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The filters used to filter instance types.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'Filter N used to filter instance types.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'imageId', + ], + 'Value' => [ + 'description' => 'The ID of the image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'm-o6w3gy99qf89rkga****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => ' 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'ImageId' => [ + 'description' => 'The key of filter N. Only the image ID can be used to filter instance types. Valid values:'."\n" + ."\n" + .'* imagId: image ID'."\n" + .'* filter: image ID'."\n", + 'type' => 'string', + 'example' => 'm-o6w3gy99qf89rkga****', + ], + 'RegionId' => [ + 'description' => '{'."\n" + .' "RequestId": "CF661E2D-4AFE-4BCD-959A-A65E14416B44",'."\n" + .' "RegionId": "cn-hangzhou",'."\n" + .' "ImageId": "ubuntu_16_0402_64_20G_alibase_20180409.vhd",'."\n" + .' "InstanceTypes": {'."\n" + .' "InstanceType": [{'."\n" + .' "InstanceTypeId": "ecs.t1.xsmall",'."\n" + .' "CpuCoreCount": 1,'."\n" + .' "MemorySize": 0.5,'."\n" + .' "InstanceTypeFamily": "ecs.t1"'."\n" + .' },'."\n" + .' {'."\n" + .' "InstanceTypeId": "ecs.t1.small",'."\n" + .' "CpuCoreCount": 1,'."\n" + .' "MemorySize": 1,'."\n" + .' "InstanceTypeFamily": "ecs.t1"'."\n" + .' }]'."\n" + .' }'."\n" + .'}', + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'InstanceTypes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceType' => [ + 'description' => '{'."\n" + .' "RequestId": "CF661E2D-4AFE-4BCD-959A-A65E14416B44",'."\n" + .' "RegionId": "cn-hangzhou",'."\n" + .' "ImageId": "ubuntu_16_0402_64_20G_alibase_20180409.vhd",'."\n" + .' "InstanceTypes": {'."\n" + .' "InstanceType": [{'."\n" + .' "InstanceTypeId": "ecs.t1.xsmall",'."\n" + .' "CpuCoreCount": 1,'."\n" + .' "MemorySize": 0.5,'."\n" + .' "InstanceTypeFamily": "ecs.t1"'."\n" + .' },'."\n" + .' {'."\n" + .' "InstanceTypeId": "ecs.t1.small",'."\n" + .' "CpuCoreCount": 1,'."\n" + .' "MemorySize": 1,'."\n" + .' "InstanceTypeFamily": "ecs.t1"'."\n" + .' }]'."\n" + .' }'."\n" + .'}', + 'type' => 'array', + 'items' => [ + 'description' => ''."\n" + .' CF661E2D-4AFE-4BCD-959A-A65E14416B44'."\n" + .' cn-hangzhou'."\n" + .' ubuntu_16_0402_64_20G_alibase_20180409.vhd'."\n" + .' '."\n" + .' '."\n" + .' ecs.t1.xsmall'."\n" + .' 1'."\n" + .' 0.5'."\n" + .' ecs.t1'."\n" + .' '."\n" + .' '."\n" + .' ecs.t1.small'."\n" + .' 1'."\n" + .' 1'."\n" + .' ecs.t1'."\n" + .' '."\n" + .' '."\n" + .'', + 'type' => 'object', + 'properties' => [ + 'InstanceTypeId' => [ + 'description' => 'Queries the instance types supported by an image.'."\n", + 'type' => 'string', + 'example' => 'ecs.t1.xsmall', + ], + 'InstanceTypeFamily' => [ + 'description' => 'DescribeImageSupportInstanceTypes', + 'type' => 'string', + 'example' => 'ecs.t1', + ], + 'CpuCoreCount' => [ + 'description' => 'The number of vCPUs of the instance type.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'MemorySize' => [ + 'description' => 'The memory size of the instance type. Unit: GiB.', + 'type' => 'number', + 'format' => 'float', + 'example' => '1024', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParamter', + 'errorMessage' => 'Invalid Parameter.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidUsage', + 'errorMessage' => 'The specifed Usage is not valid.', + ], + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified image %s does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\" 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"ImageId\\": \\"m-o6w3gy99qf89rkga****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"InstanceTypes\\": {\\n \\"InstanceType\\": [\\n {\\n \\"InstanceTypeId\\": \\"ecs.t1.xsmall\\",\\n \\"InstanceTypeFamily\\": \\"ecs.t1\\",\\n \\"CpuCoreCount\\": 1,\\n \\"MemorySize\\": 1024\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n CF661E2D-4AFE-4BCD-959A-A65E14416B44\\n cn-hangzhou\\n ubuntu_16_0402_64_20G_alibase_20180409.vhd\\n \\n \\n ecs.t1.xsmall\\n 1\\n 0.5\\n ecs.t1\\n \\n \\n ecs.t1.small\\n 1\\n 1\\n ecs.t1\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeImageSupportInstanceTypes', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeImageSharePermission' => [ + 'summary' => 'Queries the accounts with which a custom image is shared. When you call this operation, you can specify parameters, such as RegionId and ImageId, in the request. The response can be displayed by page. By default, 10 entries are displayed on each page.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28943', + 'abilityTreeNodes' => [ + 'FEATUREecsKVA4YC', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the custom image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the custom image.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'm-bp1caf3yicx5jlfl****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'ImageId' => [ + 'description' => 'The ID of the custom image.'."\n", + 'type' => 'string', + 'example' => 'm-bp1caf3yicx5jlfl****', + ], + 'RegionId' => [ + 'description' => 'The region ID of the custom image.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'ShareGroups' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ShareGroup' => [ + 'description' => 'The shared groups.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Group' => [ + 'description' => 'The shared group.'."\n", + 'type' => 'string', + 'example' => 'all', + ], + ], + ], + ], + ], + ], + 'Accounts' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Account' => [ + 'description' => 'The Alibaba Cloud accounts.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'AliyunId' => [ + 'description' => 'The ID of the Alibaba Cloud account.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + 'SharedTime' => [ + 'description' => 'The time when the image was shared. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2023-01-01T12:05:00Z', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "RegionId "that is mandatory for processing this request is not supplied.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified image %s does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10,\\n \\"TotalCount\\": 1,\\n \\"ImageId\\": \\"m-bp1caf3yicx5jlfl****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"ShareGroups\\": {\\n \\"ShareGroup\\": [\\n {\\n \\"Group\\": \\"all\\"\\n }\\n ]\\n },\\n \\"Accounts\\": {\\n \\"Account\\": [\\n {\\n \\"AliyunId\\": \\"123456****\\",\\n \\"SharedTime\\": \\"2023-01-01T12:05:00Z\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n all\\n \\n \\n \\n \\n 123456****\\n \\n \\n m-bp1caf3yicx5jlfl****\\n 1\\n 10\\n cn-qingdao\\n 1\\n 9AD96F49-0BE5-4868-A66A-22435254****\\n","errorExample":""}]', + 'title' => 'DescribeImageSharePermission', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyImageSharePermission' => [ + 'summary' => 'Modifies the share permissions on an image. You can share your custom images with other Alibaba Cloud accounts or publish the images as community images.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29067', + 'abilityTreeNodes' => [ + 'FEATUREecsKVA4YC', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the custom image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the shared custom image.'."\n" + ."\n" + .'> You can share images encrypted by using CMKs but cannot share images encrypted by using service keys. When you share an image encrypted by using a service key, an error is reported.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'm-bp18ygjuqnwhechc****', + ], + ], + [ + 'name' => 'LaunchPermission', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'AddAccount', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of Alibaba Cloud accounts to which you want to share the custom image. Valid values of N: 1 to 10. If you specify more than 10 Alibaba Cloud account IDs, the system processes only the first 10 account IDs. The excess account IDs are ignored.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of Alibaba Cloud account N to which you want to share the custom image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1234567890', + ], + 'required' => false, + 'example' => '1234567890', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'RemoveAccount', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of Alibaba Cloud accounts from which you want to unshare the custom image. Valid values of N: 1 to 10. If you specify more than 10 Alibaba Cloud account IDs, the system processes only the first 10 account IDs. The excess account IDs are ignored.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of Alibaba Cloud account N from which you want to unshare the custom image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1234567890', + ], + 'required' => false, + 'example' => '1234567890', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'IsPublic', + 'in' => 'query', + 'schema' => [ + 'title' => '发布为社区镜像', + 'description' => 'Specifies whether to publish or unpublish a community image. Valid values:'."\n" + ."\n" + .'* true: publishes the custom image as a community image.'."\n" + .'* false: unpublishes a community image. The unpublish operation takes effect only on community images.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "RegionId" that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidGroup.Malformed', + 'errorMessage' => 'The specified Group is wrongly formed.', + ], + [ + 'errorCode' => 'UnnecessaryParameter.LaunchPermission', + 'errorMessage' => 'The specified parameter "LaunchPermission" is unnecessary if paramter "AddAccounts" or "RemoveAccounts" exist.', + ], + [ + 'errorCode' => 'InvalidParameter.LaunchPermission', + 'errorMessage' => 'The specified parameter "LaunchPermission" is invalid.', + ], + [ + 'errorCode' => 'ForbiddenParameter.LaunchPermission', + 'errorMessage' => 'The specified parameter "LaunchPermission" is forbidden for current account.', + ], + ], + 403 => [ + [ + 'errorCode' => 'AssumeRoleError', + 'errorMessage' => 'Requires a RAM role of AliyunECSShareEncryptImageDefaultRole before sharing encrypted image.', + ], + [ + 'errorCode' => 'ImageDescription.ContainsSensitiveWords', + 'errorMessage' => 'The specified image description contains sensitive words.', + ], + [ + 'errorCode' => 'ImageName.ContainsSensitiveWords', + 'errorMessage' => 'The specified image name contains sensitive words.', + ], + [ + 'errorCode' => 'Image.Public', + 'errorMessage' => 'The specified image is public image.', + ], + [ + 'errorCode' => 'CurrentRegion.NotSupportPublicImage', + 'errorMessage' => 'Public image is not supported for current region.', + ], + [ + 'errorCode' => 'Image.NotPublic', + 'errorMessage' => 'The specified image is not public image.', + ], + [ + 'errorCode' => 'OperationDeined.FullImage', + 'errorMessage' => 'The encrypted image contains multiple snapshots, which do not support share.', + ], + [ + 'errorCode' => 'QuotaExceed.ShareImage', + 'errorMessage' => 'The shared Image Quota exceeds.', + ], + [ + 'errorCode' => 'QuotaExceed.ShareImageUser', + 'errorMessage' => 'The shared Image user Quota exceeds.', + ], + [ + 'errorCode' => 'InvalidImageId.BidMismatch', + 'errorMessage' => 'Cannot share the image with users %s of other sites.', + ], + [ + 'errorCode' => 'OperationDeined.EncryptedSnapshot', + 'errorMessage' => 'The image contains encrypted snapshots, which do not support share.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidImageStatus', + 'errorMessage' => 'The specified image cannot be shared when it is deprecated.', + ], + [ + 'errorCode' => 'PublicImageAgreement.NotSigned', + 'errorMessage' => 'The current account has not signed "Community Image Terms of Service".', + ], + [ + 'errorCode' => 'InvalidParameter.IsPublic', + 'errorMessage' => 'The specified parameter IsPublic is conflicted with other parameters.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidOperation.ServiceKeyEncryptedImageUnsupported', + 'errorMessage' => 'The specified service key encrypted image is not supported for this operation. Please switch to a CMK (Customer Master Key) encrypted image and retry.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + [ + 'errorCode' => 'InvalidAccount.NotFound', + 'errorMessage' => 'The specified account %s in parameter "AddAccount.n" or "RemoveAccount.n" does not exist.', + ], + [ + 'errorCode' => 'InvalidAccount.Forbbiden', + 'errorMessage' => 'The specified Account does not yourself.', + ], + [ + 'errorCode' => 'InvalidKMSKeyId.NotFound', + 'errorMessage' => 'The KMS key used by the disk does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"C8B26B44-0189-443E-9816-D951F59623A9\\"\\n}"},{"type":"xml","example":"\\n C8B26B44-0189-443E-9816-D951F59623A9\\n","errorExample":"\\n C8B26B44-0189-443E-9816-D951F59623A9\\n"}]', + 'title' => 'ModifyImageSharePermission', + 'description' => 'Before you call this operation, read [Share a custom image](~~25463~~).'."\n" + ."\n" + .'When you call this operation, take note of the following sharing rules:'."\n" + ."\n" + .'* **Sharing limits**: You can share only the custom images created in your Alibaba Cloud account to other Alibaba Cloud accounts. A custom image can be shared to up to 50 Alibaba Cloud accounts. You can share a custom image to up to 10 Alibaba Cloud accounts at a time.'."\n" + .'* **Impacts on an instance**: If an instance was created ([RunInstances](~~63440~~)) from a shared image, you cannot re-initialize the system disk of the instance ([ReInitDisk](~~25519~~)) after the image owner unshares or deletes the image ([DeleteImage](~~25537~~)).'."\n" + ."\n" + .'> You can share images encrypted by using customer master keys (CMKs) but cannot share images encrypted by using service keys. When you share an image encrypted by using a service key, an error is reported. If you want to share an image encrypted by using a service key, call the CopyImage operation to copy the image and change the encryption key of the image copy to a CMK.'."\n" + ."\n" + .'When you publish or unpublish a community image, take note of the following items:'."\n" + ."\n" + .'* **Responsibilities and agreement**: Alibaba Cloud provides only the platform on which community images can be published and managed. The owner of a community image is responsible for the quality and updates of the image. Make sure that you acknowledge and agree to the Community Image Agreement. Otherwise, you cannot publish community images. For more information, see [Publish a community image](~~208370~~).'."\n" + .'* **Encryption limits**: You cannot publish encrypted images as community images.'."\n" + .'* **Openness**: Community images are publicly available. A community image is available to all Alibaba Cloud accounts in the region where the image resides.'."\n" + .'* **Feature limits**: You cannot share, export, or copy community images.'."\n" + .'* **Unpublication impacts**: After you unpublish a community image, the image is no longer available to other Alibaba Cloud accounts. If an image is shared to other Alibaba Cloud accounts before it is unpublished, the image remains available to the accounts.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyImageShareGroupPermission' => [ + 'summary' => '修改镜像共享组权限', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => true, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29066', + 'abilityTreeNodes' => [ + 'FEATUREecsKVA4YC', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => true, + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => true, + ], + ], + [ + 'name' => 'AddGroup.1', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => false, + ], + ], + [ + 'name' => 'RemoveGroup.1', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "RegionId" that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + [ + 'errorCode' => 'InvalidGroup.Malformed', + 'errorMessage' => 'The specified parameter "AddGroup.n" or "RemoveGroup.n" does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'substitutions' => [ + 'Ecs::2014-05-26::ModifyImageSharePermission', + ], + ], + 'responseDemo' => '', + ], + 'ImportImage' => [ + 'summary' => 'Imports an on-premise image to Elastic Compute Service (ECS). The imported image exists as a custom image in the destination region. You can use the imported image to create ECS instances by calling the RunInstances operation or replace the system disk of an ECS instance by calling the ReplaceSystemDisk operation.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29034', + 'abilityTreeNodes' => [ + 'FEATUREecsZ3BT05', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the source image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The image name. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `acs:` or `aliyun`. The name cannot contain `http://` or `https://`. The name can contain letters, digits, periods (.), colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ImageTestName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The image description. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestDescription', + ], + ], + [ + 'name' => 'Architecture', + 'in' => 'query', + 'schema' => [ + 'description' => 'The system architecture. Valid values:'."\n" + ."\n" + .'* i386'."\n" + .'* x86\\_64'."\n" + .'* arm64'."\n" + ."\n" + .'Default value: x86\\_64.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'x86_64', + ], + ], + [ + 'name' => 'OSType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system platform. Valid values:'."\n" + ."\n" + .'* windows'."\n" + .'* linux'."\n" + ."\n" + .'Default value: linux.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'linux', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system distribution. Valid values:'."\n" + ."\n" + .'* Aliyun'."\n" + .'* Anolis'."\n" + .'* CentOS'."\n" + .'* Ubuntu'."\n" + .'* CoreOS'."\n" + .'* SUSE'."\n" + .'* Debian'."\n" + .'* OpenSUSE'."\n" + .'* FreeBSD'."\n" + .'* RedHat'."\n" + .'* Kylin'."\n" + .'* UOS'."\n" + .'* Fedora'."\n" + .'* Fedora CoreOS'."\n" + .'* CentOS Stream'."\n" + .'* AlmaLinux'."\n" + .'* Rocky Linux'."\n" + .'* Gentoo'."\n" + .'* Customized Linux'."\n" + .'* Others Linux'."\n" + .'* Windows Server 2022'."\n" + .'* Windows Server 2019'."\n" + .'* Windows Server 2016'."\n" + .'* Windows Server 2012'."\n" + .'* Windows Server 2008'."\n" + .'* Windows Server 2003'."\n" + ."\n" + .'Default value: Others Linux.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Aliyun', + ], + ], + [ + 'name' => 'BootMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The boot mode of the image. Valid values:'."\n" + ."\n" + .'* BIOS'."\n" + .'* UEFI'."\n" + ."\n" + .'Default value: BIOS. If you set `Architecture` to arm64, set this parameter to UEFI.'."\n" + ."\n" + .'> Make sure that you are aware of the boot modes supported by the specified image, as thehe modified boot mode needs to be supported by the image. This way, instances that use this image can start.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BIOS', + ], + ], + [ + 'name' => 'RoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the RAM role used to import the image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AliyunECSImageImportDefaultRole', + ], + ], + [ + 'name' => 'LicenseType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the license used to activate the operating system after the image is imported. Valid values:'."\n" + ."\n" + .'* Auto: ECS checks the operating system of the image and allocates a license to the operating system. ECS first checks whether the operating system distribution specified by `Platform` has a license allocated through an official Alibaba Cloud channel. If yes, the allocated license is used. If no, the license that comes with the source operating system is used.'."\n" + .'* Aliyun: The license allocated through an official Alibaba Cloud channel is used for the operating system distribution specified by `Platform`.'."\n" + .'* BYOL: The license that comes with the source operating system is used. In this case, make sure that your license key is eligible for use in Alibaba Cloud.'."\n" + ."\n" + .'Default value: Auto.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Auto', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DiskDeviceMapping', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'Details about the custom images.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the custom image.'."\n", + 'type' => 'object', + 'properties' => [ + 'DiskImSize' => [ + 'description' => 'The size of disk N in the custom image. Unit: GiB.'."\n" + ."\n" + .'You can use this parameter to specify the sizes of the system disk and data disks in the custom image. When you specify the size of the system disk, make sure that the specified size is greater than or equal to the size of the imported image file. Unit: GiB. Valid values:'."\n" + ."\n" + .'* When the N value is 1, this parameter specifies the size of the system disk in the custom image. Valid values: 1 to 2048.'."\n" + .'* When the N value is an integer in the range of 2 to 17, this parameter specifies the size of a data disk in the custom image. Valid values: 1 to 2048.'."\n" + ."\n" + .'After the image file is uploaded to an OSS bucket, you can view the size of the image file in the OSS bucket.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use `DiskDeviceMapping.N.DiskImageSize` to ensure future compatibility.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '80', + ], + 'Device' => [ + 'description' => 'The device name of disk N in the custom image.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you do not use this parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'OSSBucket' => [ + 'description' => 'The Object Storage Service (OSS) bucket where the image file is stored.'."\n" + ."\n" + .'> Before you import images for the first time, you must use RAM to authorize ECS to access your OSS buckets. If ECS is not authorized to access your OSS buckets, the `NoSetRoletoECSServiceAcount` error code is returned when you call the ImportImage operation. For more information, see **Usage notes**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecsimageos', + ], + 'Format' => [ + 'description' => 'The format of the source image. Valid values:'."\n" + ."\n" + .'* RAW'."\n" + .'* VHD'."\n" + .'* QCOW2'."\n" + .'* VMDK (invitational preview)'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the system checks the image format and uses the check result as the value of this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'QCOW2', + ], + 'OSSObject' => [ + 'description' => 'The name (key) of the object that the image file is stored as in the OSS bucket.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CentOS_5.4_32.raw', + ], + 'DiskImageSize' => [ + 'description' => 'The size of disk N in the custom image after the source image is imported.'."\n" + ."\n" + .'You can use this parameter to specify the sizes of the system disk and data disks in the custom image. When you specify the size of the system disk, make sure that the specified size is greater than or equal to the size of the imported image file. Unit: GiB. Valid values:'."\n" + ."\n" + .'* When the N value is 1, this parameter specifies the size of the system disk in the custom image. Valid values: 1 to 2048.'."\n" + .'* When the N value is an integer in the range of 2 to 17, this parameter specifies the size of a data disk in the custom image. Valid values: 1 to 2048.'."\n" + ."\n" + .'After the image file is uploaded to an OSS bucket, you can view the size of the image file in the OSS bucket.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '80', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 17, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The image tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the image. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the image. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'DetectionStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The mode in which to check the image. If you do not specify this parameter, the image is not checked. Only the standard check mode is supported.'."\n" + ."\n" + .'> This parameter is supported for most Linux and Windows operating system versions. For more information about image check items and operating system limits for image check, see [Overview](~~439819~~) and [Operating system limits for image check](~~475800~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'StorageLocationArn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Alibaba Cloud Resource Name (ARN) of the cloud box, which is used to uniquely identify a storage location in the cloud.'."\n" + ."\n" + .'> Specify this parameter only if you import an image from OSS on CloudBox. Otherwise, you do not need to specify this parameter. For more information, see [What is OSS on CloudBox?](~~430190~~)'."\n" + ."\n" + .'The ARN must be in the following format: `arn:acs:cloudbox:{RegionId}:{AliUid}:cloudbox/{CloudBoxId}`. Replace `{RegionId}` with the region ID of the cloud box, `{AliUid}` with the ID of the Alibaba Cloud account to which the cloud box belongs, and `{CloudBoxId}` with the ID of the cloud box.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'arn:acs:cloudbox:cn-hangzhou:123456:cloudbox/cb-xx***123', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized RAM users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Features', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The attributes of the image.'."\n", + 'type' => 'object', + 'properties' => [ + 'NvmeSupport' => [ + 'description' => 'Specifies whether the image supports the Non-Volatile Memory Express (NVMe) protocol. Valid values:'."\n" + ."\n" + .'* supported: The image supports the NVMe protocol. Instances created from the image also support the NVMe protocol.'."\n" + .'* unsupported: The image does not support the NVMe protocol. Instances created from the image do not support the NVMe protocol.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'supported', + ], + 'ImdsSupport' => [ + 'description' => 'The metadata access mode version of the image. Valid values:'."\n" + ."\n" + .'* v1: You cannot set the metadata access mode to security hardening when you create instances from the image.'."\n" + .'* v2: You can set the metadata access mode to security hardening when you create instances from the image.'."\n" + ."\n" + .'Default value: v1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'v2', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'ImageId' => [ + 'description' => 'The image ID.'."\n", + 'type' => 'string', + 'example' => 'm-bp67acfmxazb4p****', + ], + 'TaskId' => [ + 'description' => 'The image import task ID.'."\n", + 'type' => 'string', + 'example' => 't-bp67acfmxazb4p****', + ], + 'RegionId' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedSuffix.OSSObject', + 'errorMessage' => 'The specified OSS object suffix is not supported.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'An input parameter "RegionId" that is mandatory for processing the request is not supplied.', + ], + [ + 'errorCode' => 'InvalidImageName.Malformed', + 'errorMessage' => 'The specified Image name is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidOSSObject.Malformed', + 'errorMessage' => 'The specified OSS object is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.Malformed', + 'errorMessage' => 'The specified OSS bucket is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidOSSObject.Size', + 'errorMessage' => 'The specified OSS object size is zero.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Image description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidArchitecture.Malformed', + 'errorMessage' => 'The specified Architecture is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidPlatform.Malformed', + 'errorMessage' => 'The specified Platform is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidOSType.Malformed', + 'errorMessage' => 'The specified OSType is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidImageName.Duplicated', + 'errorMessage' => 'The destination image is exist.', + ], + [ + 'errorCode' => 'InvalidImageSize', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidDataDiskSize', + 'errorMessage' => 'The specified DiskDeviceMapping.N.DiskImSize should be in the specified range.', + ], + [ + 'errorCode' => 'InvalidImageFormat.Malformed', + 'errorMessage' => 'The specified Image Format is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support image import or export.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.NotFound', + 'errorMessage' => 'The specified OSS bucket does not exist in this region.', + ], + [ + 'errorCode' => 'InvalidOSSObject.NotFound', + 'errorMessage' => 'The specified OSS object does not exist in this region.', + ], + [ + 'errorCode' => 'InvalidOSSObject.NeedRestore', + 'errorMessage' => 'The specified OSS object is a archive object, need restore first.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.NotMatched', + 'errorMessage' => 'The specified OSS bucket is incorrect, %s.', + ], + [ + 'errorCode' => 'InvalidLicenseType.NotSupported', + 'errorMessage' => 'The specified LicenseType is not supported.', + ], + [ + 'errorCode' => 'InvalidLicenseType.BYOLOnly', + 'errorMessage' => 'Only BYOL LicenseType is supported for the current platform provided.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.FlowLimit', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageFormat.RegionNotSupported', + 'errorMessage' => 'The specified image format is not supported in current region.', + ], + [ + 'errorCode' => 'InvalidBootMode.Malformed', + 'errorMessage' => 'The specified parameter "BootMode" is malformed.', + ], + [ + 'errorCode' => 'InvalidParameter.DetectionStrategy', + 'errorMessage' => 'The specified parameter DetectionStrategy is invalid.', + ], + [ + 'errorCode' => 'InvalidBootMode.NotSupport', + 'errorMessage' => 'The specified parameter BootMode is not supported for current image architecture.', + ], + [ + 'errorCode' => 'DRYRUN.SUCCESS', + 'errorMessage' => 'This request is a dryrun request with successful result.', + ], + [ + 'errorCode' => 'InvalidClientToken.Malformed', + 'errorMessage' => 'The specified parameter clientToken is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.FeaturesImdsSupport', + 'errorMessage' => 'The specified parameter Features.ImdsSupport is not supported.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has an outstanding payment.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ImageIsImporting', + 'errorMessage' => 'The specified Image is importing.', + ], + [ + 'errorCode' => 'QuotaExceed.Image', + 'errorMessage' => 'The Image Quota exceeds.', + ], + [ + 'errorCode' => 'ImportImageFailed', + 'errorMessage' => 'Importing image is failed, Please contact the administrator.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in the white list of importing image.', + ], + [ + 'errorCode' => 'NoSetRoletoECSServiceAcount', + 'errorMessage' => 'ECS service account Have no right to access your OSS.please attach a role of access your oss to ECS service account.', + ], + [ + 'errorCode' => 'InvalidParameter.Malformed', + 'errorMessage' => 'The specified parameter "DiskDeviceMapping.n.Device " is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.DiskDeviceMapping', + 'errorMessage' => 'The specified parameter DiskDeviceMapping is not supplied.', + ], + [ + 'errorCode' => 'InvalidOSS.NotAuthorized', + 'errorMessage' => 'The specified OSS bucket or object is not allowed to access.', + ], + [ + 'errorCode' => 'InvalidBlockSize.NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageFormat.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ImageCheckUnsupported.WindowsImage', + 'errorMessage' => 'Image check is unsupported for windows image.', + ], + [ + 'errorCode' => 'InvalidVHDImage.IncorrectSize', + 'errorMessage' => 'The specified size of the VHD image does not meet the \'header.MaxTableEntries * header.BlockSize\' specification.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.EncryptUnsupported', + 'errorMessage' => 'Accessing objects from encrypted OSS bucket is not supported.', + ], + [ + 'errorCode' => 'InvalidArchitecture.PlatformUnsupported', + 'errorMessage' => 'The OS platform you selected does not support the specified architecture.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.OSSDisabled', + 'errorMessage' => 'OSS is disabled due to invalid account status.', + ], + [ + 'errorCode' => 'InvalidStorageLocation.NotFound', + 'errorMessage' => 'The specified cloud box storage location %s could not be found.', + ], + [ + 'errorCode' => 'InvalidOperation.CloudBoxImageImportRoleRequired', + 'errorMessage' => 'The role for cloud box image import is not set to the ECS service.', + ], + [ + 'errorCode' => 'InvalidOperation.CloudBoxImageImportUnsupported', + 'errorMessage' => 'Importing cloud box images is not supported.', + ], + [ + 'errorCode' => 'TagKey.Duplication', + 'errorMessage' => 'The TagKey has duplication with others, case-insensitive.', + ], + ], + [ + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"ImageId\\": \\"m-bp67acfmxazb4p****\\",\\n \\"TaskId\\": \\"t-bp67acfmxazb4p****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n m-bp67acfmxazb4p****\\n t-bp67acfmxazb4p****\\n cn-hangzhou\\n","errorExample":""}]', + 'title' => 'ImportImage', + 'description' => '### [](#)Usage notes'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Before you import an image, you must upload the image to an Object Storage Service (OSS) bucket. For more information, see [Upload objects](~~31886~~).'."\n" + ."\n" + .'* In specific scenarios, you may want to create a custom image based on the operating system data of a source server, import the image to Alibaba Cloud, and then create an ECS instance from the image. The source server can be a physical server, a virtual machine, or a cloud host. If the virtio driver is not installed on the source server, the created ECS instance may be unable to start. To prevent this issue, verify that the virtio driver is installed on the source server before you import the image to Alibaba Cloud. For more information, see [Install the virtio driver](~~62423~~).'."\n" + ."\n" + .'* Before you import images for the first time, you must use Resource Access Management (RAM) to authorize ECS to access your OSS buckets. If ECS is not authorized to access your OSS buckets, the `NoSetRoletoECSServiceAccount` or `InvalidOperation.CloudBoxImageImportRoleRequired` error code is returned when you call the ImportImage operation. The authorization configuration varies based on whether the image files are imported from a cloud box.'."\n" + ."\n" + .' * **If the image files are not imported from a cloud box**, you can complete the authorization on the [Cloud Resource Access Authorization](https://ram.console.aliyun.com/?spm=5176.2020520101image.0.0.2ffa4df57kSoHX#/role/authorize?request=%7B%22Requests%22%3A%20%7B%22request1%22%3A%20%7B%22RoleName%22%3A%20%22AliyunECSImageImportDefaultRole%22%2C%20%22TemplateId%22%3A%20%22ECSImportRole%22%7D%2C%20%22request2%22%3A%20%7B%22RoleName%22%3A%20%22AliyunECSImageExportDefaultRole%22%2C%20%22TemplateId%22%3A%20%22ECSExportRole%22%7D%7D%2C%20%22ReturnUrl%22%3A%20%22https%3A//ecs.console.aliyun.com/%22%2C%20%22Service%22%3A%20%22ECS%22%7D) page of the RAM console. You can also complete the authorization by using a RAM role and RAM policies. The following example shows the policies and permissions required for specific steps in the authorization procedure. For more information, see [Control access to ECS resources by using RAM users](~~25481~~).'."\n" + ."\n" + .' 1. Create a RAM role named `AliyunECSImageImportDefaultRole`. You must use this exact role name. Otherwise, the image cannot be imported. Configure the following trust policy for the role:'."\n" + ."\n" + .' {'."\n" + .' "Statement": ['."\n" + .' {'."\n" + .' "Action": "sts:AssumeRole",'."\n" + .' "Effect": "Allow",'."\n" + .' "Principal": {'."\n" + .' "Service": ['."\n" + .' "ecs.aliyuncs.com"'."\n" + .' ]'."\n" + .' }'."\n" + .' }'."\n" + .' ],'."\n" + .' "Version": "1"'."\n" + .' }'."\n" + ."\n" + .' 2. Attach the `AliyunECSImageImportRolePolicy` system policy to the RAM role. You can also create a custom policy that contains the following content and attach the policy to the role:'."\n" + ."\n" + .' ```'."\n" + ."\n" + .' {'."\n" + .' "Version": "1",'."\n" + .' "Statement": ['."\n" + .' {'."\n" + .' "Action": ['."\n" + .' "oss:GetObject",'."\n" + .' "oss:GetBucketLocation",'."\n" + .' "oss:GetBucketInfo"'."\n" + .' ],'."\n" + .' "Resource": "*",'."\n" + .' "Effect": "Allow"'."\n" + .' }'."\n" + .' ]'."\n" + .' }'."\n" + .' ```'."\n" + ."\n" + .' * **If the image files are imported from a cloud box**, you can complete the authorization on the [Cloud Resource Access Authorization](https://ram.console.aliyun.com/role/authorize?request=%7B%22ReturnUrl%22%3A%22https%3A%2F%2Fecs.console.aliyun.com%2F%22%2C%22Services%22%3A%5B%7B%22Roles%22%3A%5B%7B%22RoleName%22%3A%22AliyunECSCloudBoxImageImportDefaultRole%22%2C%22TemplateId%22%3A%22AliyunECSCloudBoxImageImportDefaultRole%22%7D%5D%2C%22Service%22%3A%22ECS%22%7D%5D%7D) page of the RAM console. You can also complete the authorization by using a RAM role and RAM policies. The following example shows the policies and permissions required for specific steps in the authorization procedure. For more information, see [Control access to ECS resources by using RAM users](~~25481~~).'."\n" + ."\n" + .' 1. Create a RAM role named `AliyunECSCloudBoxImageImportDefaultRole`. You must use this exact role name. Otherwise, the image cannot be imported. Configure the following trust policy for the role:'."\n" + ."\n" + .' {'."\n" + .' "Statement": ['."\n" + .' {'."\n" + .' "Action": "sts:AssumeRole",'."\n" + .' "Effect": "Allow",'."\n" + .' "Principal": {'."\n" + .' "Service": ['."\n" + .' "ecs.aliyuncs.com"'."\n" + .' ]'."\n" + .' }'."\n" + .' }'."\n" + .' ],'."\n" + .' "Version": "1"'."\n" + .' }'."\n" + ."\n" + .' 2. Attach the `AliyunECSCloudBoxImageImportRolePolicy` system policy to the RAM role. You can also create a custom policy that contains the following content and attach the policy to the role:'."\n" + ."\n" + .' ```'."\n" + ."\n" + .' {'."\n" + .' "Version": "1",'."\n" + .' "Statement": ['."\n" + .' {'."\n" + .' "Action": ['."\n" + .' "oss-cloudbox:GetObject",'."\n" + .' "oss-cloudbox:GetBucketLocation",'."\n" + .' "oss-cloudbox:GetBucketInfo"'."\n" + .' ],'."\n" + .' "Resource": "*",'."\n" + .' "Effect": "Allow"'."\n" + .' }'."\n" + .' ]'."\n" + .' }'."\n" + .' ```'."\n" + ."\n" + .'* You cannot delete an image that is being imported. However, you can call the [CancelTask](~~25624~~) operation to cancel the image import task.'."\n" + ."\n" + .'* You can import an image only to the same region as the OSS bucket to which the image file is uploaded.'."\n" + ."\n" + .'* The valid values of N in `DiskDeviceMapping.N` range from 1 to 17. When N is set to 1, the disk is a system disk. When N is set to a value from 2 to 17, the disk is a data disk. When N is set to a value greater than 17, parameters prefixed with DiskDeviceMapping.N are ignored.'."\n" + ."\n" + .'* When you set `Architecture` to `arm64` or when you set `Platform` to `CentOS Stream`, `Anolis`, `AlmaLinux`, `UOS`, `Kylin`, or `Rocky Linux`, take note of the following items:'."\n" + ."\n" + .' * To ensure that the password can be set or the key pair can be modified for an imported image, make sure that the image meets the following requirements before you import it:'."\n" + ."\n" + .' * The kernel of the operating system supports the `CONFIG_FW_CFG_SYSFS` feature. By default, Linux community kernel 4.6 and later and CentOS kernel 3.10.0-826.el7 and later support the CONFIG_FW_CFG_SYSFS feature. You can run the `grep -nr CONFIG_FW_CFG_SYSFS /boot/config-$(uname -r)` command on the source server of the image. If the command output contains `CONFIG_FW_CFG_SYSFS=y`, the kernel of the image supports the `CONFIG_FW_CFG_SYSFS` feature.'."\n" + .' * Alibaba Cloud cloud-init of the latest version is installed on the operating system. If the version of cloud-init is 19.1, the minor version must be 19.1.3 or later. If the version of cloud-init is 0.7.6a in some early versions of operating systems, the minor version must be 0.7.6a15 or later. For more information, see [Install cloud-init](~~57803~~).'."\n" + .' * The operating system supports the SHA-512 encryption algorithm.'."\n" + ."\n" + .' * If you want an imported image to support the resizing of disks and file systems, make sure that the image meets the following requirements before you import it:'."\n" + ."\n" + .' * The kernel version of the operating system is later than 3.6.'."\n" + .' * The image supports the growpart command. To support this command, you must install the `cloud-utils-growpart` package. The methods of installing the package vary based on operating systems. For more information, see [Extend the partitions and file systems of disks on a Linux instance](~~25451~~).'."\n" + .' * The image supports the resize2fs command. To support this command, you must install the `e2fsprogs` package. By default, the package is installed on the operating system. If the package is not installed, install it.'."\n" + .' * Alibaba Cloud cloud-init of the latest version is installed on the operating system. If the version of cloud-init is 19.1, the minor version must be 19.1.3 or later. If the version of cloud-init is 0.7.6a in some early versions of operating systems, the minor version must be 0.7.6a15 or later. For more information, see [Install cloud-init](~~57803~~).'."\n" + ."\n" + .'* If the image that you want to import uses the Arm64 architecture, configure the real-time clock (RTC) to use the Coordinated Universal Time (UTC) time standard. For more information, see [Linux time and time zones](~~405080~~).'."\n" + ."\n" + .'* When you import images, we recommend that you specify DetectionStrategy. This way, you can optimize the images based on the image check results. For more information, see [Overview of image check](~~439819~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ExportImage' => [ + 'summary' => 'Exports a custom image to an Object Storage Service (OSS) bucket in the same region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '29030', + 'abilityTreeNodes' => [ + 'FEATUREecsZ3BT05', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the custom image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The custom image ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'm-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'OSSBucket', + 'in' => 'query', + 'schema' => [ + 'description' => 'The OSS bucket in which you want to store the exported custom image.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'testexportImage', + ], + ], + [ + 'name' => 'OSSPrefix', + 'in' => 'query', + 'schema' => [ + 'description' => 'The prefix for the name of the OSS object. The prefix must be 1 to 30 characters in length and can contain digits and letters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsExport', + ], + ], + [ + 'name' => 'ImageFormat', + 'in' => 'query', + 'schema' => [ + 'description' => 'The format in which you want to export the custom image. Valid values:'."\n" + ."\n" + .'* raw'."\n" + .'* vhd'."\n" + .'* qcow2'."\n" + .'* vmdk'."\n" + .'* vdi'."\n" + ."\n" + .'Default value: raw.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'raw', + ], + ], + [ + 'name' => 'RoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the RAM role that you want to use to export the custom image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AliyunECSImageExportDefaultRole', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'type' => 'boolean', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C8B26B44-0189-443E-9816-D951F596****', + ], + 'TaskId' => [ + 'description' => 'The ID of the task that is used to export the custom image.'."\n", + 'type' => 'string', + 'example' => 'tsk-bp67acfmxazb4p****', + ], + 'RegionId' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'An input parameter "RegionId" that is mandatory for processing the request is not supplied.', + ], + [ + 'errorCode' => 'InvalidImageName.Malformed', + 'errorMessage' => 'The specified Image name is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidOSSPrefix.Malformed', + 'errorMessage' => 'The specified OSSPrefix format is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support image import or export.', + ], + [ + 'errorCode' => 'IncorrectImageStatus', + 'errorMessage' => 'The specified Image is not available.', + ], + [ + 'errorCode' => 'InvalidImageFormat.Malformed', + 'errorMessage' => 'The specified Image Format is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.NotFound', + 'errorMessage' => 'The specified OSS bucket does not exist in this region.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified image contains the snapshot of the data disk,does not support this operation.', + ], + [ + 'errorCode' => 'InvalidImage.DiskAmountOrSize', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ImageNotSupported', + 'errorMessage' => 'The specified Image contains encrypted snapshots, do not support export.', + ], + [ + 'errorCode' => 'InvalidOSSObject.NeedRestore', + 'errorMessage' => 'The specified OSS object is a archive object, need restore first.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.NotMatched', + 'errorMessage' => 'The specified OSS bucket is incorrect, %s.', + ], + [ + 'errorCode' => 'InvalidImageFormat.RegionNotSupported', + 'errorMessage' => 'The specified image format is not supported in current region.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.ArchiveOssBucketNotSupported', + 'errorMessage' => 'Exporting an image to an OSS bucket with Archive, Cold Archive, or Deep Cold Archive storage class is not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ImageNotSupported', + 'errorMessage' => 'The specified image from the image market, do not support export image.', + ], + [ + 'errorCode' => 'ImageIsExporting', + 'errorMessage' => 'The specified Image is being exported. You can use the DescribeTasks API to check the status of existing tasks.', + ], + [ + 'errorCode' => 'ExportImageFailed', + 'errorMessage' => 'Exporting image is failed, Please contact the administrator.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in the white list of exporting image.', + ], + [ + 'errorCode' => 'NoSetRoletoECSServiceAcount', + 'errorMessage' => 'ECS service account Have no right to access your OSS.please attach a role of access your oss to ECS service account.', + ], + [ + 'errorCode' => 'InvalidOSS.NotAuthorized', + 'errorMessage' => 'The specified OSS bucket or object is not allowed to access.', + ], + [ + 'errorCode' => 'ConcurrentQuotaExceed.ExportImage', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'WeeklyQuotaExceed.ExportImage', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageLicense.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageCategory.NotSupported', + 'errorMessage' => 'The specified image category is not supported.', + ], + [ + 'errorCode' => 'InvalidOSSBucket.EncryptUnsupported', + 'errorMessage' => 'Accessing objects from encrypted OSS bucket is not supported.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"C8B26B44-0189-443E-9816-D951F596****\\",\\n \\"TaskId\\": \\"tsk-bp67acfmxazb4p****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C8B26B44-0189-443E-9816-D951F596****\\n tsk-bp67acfmxazb4p****\\n cn-hangzhou\\n","errorExample":""}]', + 'title' => 'ExportImage', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* Make sure that you are familiar with the prerequisites and considerations. For more information, see [Export a custom image](~~58181~~).'."\n" + ."\n" + .'* The `ImageFormat` parameter is available only for the following regions: Japan (Tokyo), Indonesia (Jakarta), Germany (Frankfurt), UAE (Dubai), US (Virginia), UK (London), Singapore, Malaysia (Kuala Lumpur), and US (Silicon Valley). By default, custom images are exported in the RAW format in regions where the ImageFormat parameter is unsupported.'."\n" + ."\n" + .'* Use Resource Access Management (RAM) to authorize Elastic Compute Service (ECS) to write data to OSS. To complete the authorization, perform the following operations:'."\n" + ."\n" + .' * Create a role named `AliyunECSImageExportDefaultRole` and attach the following policy to the role:'."\n" + ."\n" + .' {'."\n" + .' "Statement": ['."\n" + .' {'."\n" + .' "Action": "sts:AssumeRole",'."\n" + .' "Effect": "Allow",'."\n" + .' "Principal": {'."\n" + .' "Service": ['."\n" + .' "ecs.aliyuncs.com"'."\n" + .' ]'."\n" + .' }'."\n" + .' }'."\n" + .' ],'."\n" + .' "Version": "1"'."\n" + .' }'."\n" + ."\n" + .' * Attach the `AliyunECSImageExportRolePolicy` system policy, which is the default policy that grants ECS the permissions to export images, to the `AliyunECSImageExportDefaultRole` role. For more information, go to the [Cloud Resource Access Authorization](https://ram.console.aliyun.com/?spm=5176.2020520101.0.0.64c64df5dfpmdY#/role/authorize?request=%7B%22Requests%22:%20%7B%22request1%22:%20%7B%22RoleName%22:%20%22AliyunECSImageImportDefaultRole%22,%20%22TemplateId%22:%20%22ECSImportRole%22%7D,%20%22request2%22:%20%7B%22RoleName%22:%20%22AliyunECSImageExportDefaultRole%22,%20%22TemplateId%22:%20%22ECSExportRole%22%7D%7D,%20%22ReturnUrl%22:%20%22https:%2F%2Fecs.console.aliyun.com%2F%22,%20%22Service%22:%20%22ECS%22%7D) page. You can also create a custom policy that contains the following content and attach the policy to the role:'."\n" + ."\n" + .' {'."\n" + .' "Version": "1",'."\n" + .' "Statement": ['."\n" + .' {'."\n" + .' "Action": ['."\n" + .' "oss:GetObject",'."\n" + .' "oss:PutObject",'."\n" + .' "oss:DeleteObject",'."\n" + .' "oss:GetBucketLocation",'."\n" + .' "oss:GetBucketInfo",'."\n" + .' "oss:AbortMultipartUpload",'."\n" + .' "oss:ListMultipartUploads",'."\n" + .' "oss:ListParts"'."\n" + .' ],'."\n" + .' "Resource": "*",'."\n" + .' "Effect": "Allow"'."\n" + .' }'."\n" + .' ]'."\n" + .' }'."\n" + ."\n" + .'After you export the images, take note of the following items:'."\n" + ."\n" + .'Each exported custom image is stored in the specified OSS bucket. You can download the custom image. For more information, see [Download OSS objects by using simple download](~~31912~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CopyImage' => [ + 'summary' => 'Copies a custom image from one region to another region. You can copy custom images to deploy or copy Elastic Compute Service (ECS) instances across regions.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28811', + 'abilityTreeNodes' => [ + 'FEATUREecsZ3BT05', + ], + ], + 'parameters' => [ + [ + 'name' => 'DestinationImageName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the new image. The name must be 2 to 128 characters in length. The name must start with a letter and cannot contain `http://` or `https://`. The name cannot start with `acs:` or `aliyun`. The name can contain letters, digits, periods (.), colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'YourImageName', + ], + ], + [ + 'name' => 'DestinationDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the image copy. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is a description example.', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the source custom image.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'm-bp1h46wfpjsjastc****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the source custom image. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DestinationRegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the destination region to which the source custom image is copied.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-shanghai', + ], + ], + [ + 'name' => 'Encrypted', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to encrypt the new image.'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'KMSKeyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the key used to encrypt the image copy.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'e522b26d-abf6-4e0d-b5da-04b7******3c', + 'maxLength' => 64, + ], + ], + [ + 'name' => 'EncryptAlgorithm', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is unavailable.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the new image. If you do not specify this parameter, the new image is assigned to the default resource group.'."\n" + ."\n" + .'> If you call the CopyImage operation as a Resource Access Management (RAM) user who does not have the permissions to manage the default resource group and do not specify `ResourceGroupId`, the `Forbidden: User not authorized to operate on the specified resource` error message is returned. You must specify the ID of a resource group that the RAM user has the permissions to manage or grant the RAM user the permissions to manage the default resource group before you call the CopyImage operation again.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The list of tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'Value' => [ + 'description' => 'The value of tag N of the image copy. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot start with `acs:`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'Key' => [ + 'description' => 'The key of tag N of the image copy. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `aliyun` or `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Specifies whether to check the image used by the instance supports hot migration. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including invalid AccessKey pairs, unauthorized RAM users, and missing parameter values. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that you want to use to ensure the idempotence of the request. You can use the client to generate the value, but you ensure sure that the value is unique among different requests. **The token can contain only ASCII characters and cannot exceed 64 characters in length.** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'ImageId' => [ + 'description' => 'The ID of the image copy.'."\n", + 'type' => 'string', + 'example' => 'm-bp1h46wfpjsjastd****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified destination description is wrongly formed.', + ], + [ + 'errorCode' => 'SourceRegion.NotFound', + 'errorMessage' => 'The source region not found.', + ], + [ + 'errorCode' => 'DestinationRegion.NotFound', + 'errorMessage' => 'The destination region not found.', + ], + [ + 'errorCode' => 'IncorrectImageStatus', + 'errorMessage' => 'The image not available.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified SnapshotId does not exist.', + ], + [ + 'errorCode' => 'InvalidImageName.Duplicated', + 'errorMessage' => 'The specified image name is already in use in the target region. Please try a different one.', + ], + [ + 'errorCode' => 'InvalidParameter.EncryptedIllegal', + 'errorMessage' => 'The specified parameter Encrypted must be true when kmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchEncryptAlgorithm', + 'errorMessage' => 'The specified parameter Encrypted must be true when EncryptAlgorithm is not empty.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is not valid.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchKmsKeyId', + 'errorMessage' => 'The specified parameter Encrypted must be true when KmsKeyId is not empty.', + ], + [ + 'errorCode' => 'OperationDenied.CommunityImage', + 'errorMessage' => 'Community image does not support copy.', + ], + [ + 'errorCode' => 'InvalidImageName.Malformed', + 'errorMessage' => 'The specified destination image name is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'The specified operation need enable KMS.', + ], + [ + 'errorCode' => 'OperationDenied.ImageCopyConflict', + 'errorMessage' => 'The same image cannot be copied concurrently. Please wait until the last copy is completed before performing the next operation.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has an outstanding payment.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + ], + [ + [ + 'errorCode' => 'InvalidAliUid.IsNull', + 'errorMessage' => 'The aliUid must not be null.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbbiden', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InvalidOperation.CopyingDataFromThisRegionUnsupported', + 'errorMessage' => 'Data transfer from the current region to other regions is not supported.', + ], + [ + 'errorCode' => 'InvalidOperation.CopyingDataToThisRegionUnsupported', + 'errorMessage' => 'Only Some Regions %s can copy data to this region.', + ], + [ + 'errorCode' => 'QuotaExceed.Image', + 'errorMessage' => 'The number of images exceeds the limit (%s).', + ], + [ + 'errorCode' => 'QuotaExceed.Snapshot', + 'errorMessage' => 'The snapshot quota exceeds.', + ], + [ + 'errorCode' => 'OperationDenied.ImageCopying', + 'errorMessage' => 'The image is currently being copied. Please try again later.', + ], + [ + 'errorCode' => 'RegionNotSupportCopy', + 'errorMessage' => 'The region not support copy.', + ], + [ + 'errorCode' => 'InvalidSnapshot.TooOld', + 'errorMessage' => 'This operation is denied because the specified snapshot is created before 2013-07-15.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified snapshot is not allowed to create image.', + ], + [ + 'errorCode' => 'IncorrectDestinationRegion', + 'errorMessage' => 'The destination region is not equal the target region.', + ], + [ + 'errorCode' => 'OperationDeined.EncryptedSnapshot', + 'errorMessage' => 'The image contains encrypted snapshots, which do not support copying.', + ], + [ + 'errorCode' => 'OperationDenied.SameRegionOnly', + 'errorMessage' => 'The image shared from others can not be copied to another region directly.', + ], + [ + 'errorCode' => 'OperationDenied.NotPublished', + 'errorMessage' => 'The operation is denied because corresponding marketplace image is not published in destination region.', + ], + [ + 'errorCode' => 'OperationDenied.NotAuthorized', + 'errorMessage' => 'The operation is denied because corresponding marketplace image is not authorized to current user.', + ], + [ + 'errorCode' => 'OperationDenied.EncryptSnapshotAcrossRegion', + 'errorMessage' => 'The image do not contain encrypted snapshots, which do not support copying to encrypted ones.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support byok.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in byok white list.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportEncryptAlgorithm', + 'errorMessage' => 'The current region does not support creating encrypted disks with EncryptAlgorithm.', + ], + [ + 'errorCode' => 'OperationDenied.KmsServiceUnauthorized', + 'errorMessage' => 'The account is not authorized to kms service, please authorize it.', + ], + [ + 'errorCode' => 'OperationDenied.NonCompliantDestinationRegion', + 'errorMessage' => 'The copy operation to the destination region is not in compliance with regulations.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchDiskDefaultEncryption', + 'errorMessage' => 'The specified parameter Encrypted not match for your account default encryption settings.', + ], + [ + 'errorCode' => 'InvalidParameter.DataEncryptedKeyCreateFailed', + 'errorMessage' => 'Create kms data encrypted key fail. If you need further assistance, you can contact the KMS Technical Support.', + ], + [ + 'errorCode' => 'SizeExceed.Image', + 'errorMessage' => 'The image exceeds the maximum size. You can use the CopySnapshot API to copy your snapshots of the image and then create a new image from them.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + [ + 'errorCode' => 'InvalidOperation.VhdImageUnsupported', + 'errorMessage' => 'The specified vhd image is not supported for this operation. Please switch to a raw image and retry.', + ], + [ + 'errorCode' => 'InvalidOperation.CloudBoxImageCopyUnsupported', + 'errorMessage' => 'Copying CloudBox images is not supported.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 409 => [ + [ + 'errorCode' => 'InvalidOperation.Conflict', + 'errorMessage' => 'Request was denied due to conflict with a previous request, please try again later.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"ImageId\\": \\"m-bp1h46wfpjsjastd****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"C8B26B44-0189-443E-9816-D951F59623A9\\",\\n \\"ImageId\\": \\"Img-231234567\\"\\n}"},{"type":"xml","example":"\\n C8B26B44-0189-443E-9816-D951F59623A9\\n m-bp1h46wfpjsjastd****\\n","errorExample":"\\n C8B26B44-0189-443E-9816-D951F59623A9\\n Img-231234567\\n"}]', + 'title' => 'CopyImage', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'After you copy a custom image to the destination region, you can use the image copy (new image) to create ECS instances by calling the RunInstances operation or replace the system disks of instances by calling the ReplaceSystemDisk operation in the destination region.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Only custom images that are in the `Available` state can be copied.'."\n" + .'* Custom images that belong to your Alibaba Cloud account can be copied across regions. Images that are shared with you by others can be copied only within the regions where the images reside.'."\n" + .'* When an image is being copied, the new image cannot be deleted by calling the [DeleteImage](~~25537~~) operation. However, you can cancel the ongoing image copy task by calling the [CancelCopyImage](~~25539~~) operation.'."\n" + .'* A region supports only up to five concurrent image copy tasks. Excess image copy tasks are queued for execution.'."\n" + .'* You can configure `ResourceGroupId` to specify the resource group to which to assign the new image. If you do not configure `ResourceGroupId`, the new image is assigned to the default resource group.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CancelCopyImage' => [ + 'summary' => 'Cancels an ongoing image copy task.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '28800', + 'abilityTreeNodes' => [ + 'FEATUREecsZ3BT05', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image copy. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image that is being copied.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'm-bp1caf3yicx5jlfl****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'ImageCreatedNotFromCopy', + 'errorMessage' => 'The specified image is not the target image of a copy action.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'IncorrectImageStatus', + 'errorMessage' => 'The specified snapshot is not coping.', + ], + [ + 'errorCode' => 'CancelNotSupported', + 'errorMessage' => 'The specified image coping can not be cancelled.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"C8B26B44-0189-443E-9816-D951F59623A9\\"\\n}"},{"type":"xml","example":"\\n C8B26B44-0189-443E-9816-D951F59623A9\\n","errorExample":"\\n C8B26B44-0189-443E-9816-D951F59623A9\\n"}]', + 'title' => 'CancelCopyImage', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* After you cancel an image copy task, the image copy created in the destination region is deleted, and the copied image remains unchanged.'."\n" + .'* If the image copy task is complete, the CancelCopyImage operation fails, and an error is returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateImageComponent' => [ + 'summary' => 'Creates an image component. Image components are used to store the builder template commands that are commonly used when you create images.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'create', + 'abilityTreeCode' => '29251', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain [http:// or https://](http://https://。). The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain [http:// or https://](http://https://。). The tag value cannot start with acs:.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image component. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with http:// or https://. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'> If you do not specify `Name`, the return value of `ImageComponentId` is used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testComponent', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description. The description must be 2 to 256 characters in length and cannot start with [http:// or https://](http://https://。).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'SystemType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the operating system supported by the image component.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Linux'."\n" + .'* Windows'."\n" + ."\n" + .'Default value: Linux.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Linux', + ], + ], + [ + 'name' => 'ComponentType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the image component. Only image building components and image test components are supported.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Build'."\n" + .'* Test'."\n" + ."\n" + .'Default value: Build.'."\n" + ."\n" + .'> Image building components can be used only in image building templates. Image test components can be used only in image test templates.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Build', + ], + ], + [ + 'name' => 'Content', + 'in' => 'query', + 'schema' => [ + 'description' => 'The content of the image component. The image component consists of multiple commands. The command content cannot exceed 16 KB in size. For information about the commands supported by Image Builder and the formats of the commands, see [Commands supported by Image Builder](~~200206~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RUN yum update -y', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotency of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The **token** can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ComponentVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The version number of the image component, which is used together with the name of the image component. The version number is in the \\.\\.\\ format. Set \\, \\, and \\ to non-negative integers.'."\n" + ."\n" + .'Default value: (x + 1).0.0, in which x is the maximum major version number of the image component.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'ImageComponentId' => [ + 'description' => 'The ID of the image component.'."\n", + 'type' => 'string', + 'example' => 'ic-bp67acfmxazb4p****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidCommand.Component', + 'errorMessage' => 'Image component does not support component command.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSystemType.NotSupportedValue', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidComponentType.NotSupportedValue', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidContent.LengthExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageTemplateCommandSize.ExceededMaxNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageTemplateCommand.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.RUN', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.ENV', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.WORKDIR', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.COPY', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.USER', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.CMD', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.ENTRYPOINT', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter.Content', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EmptyCommandContent.RUN', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.ENV', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.LABEL', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.COPY', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.ENTRYPOINT', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.CMD', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'NotEmptyCommandContent.RESTART', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.WORKDIR', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.USER', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'QuotaExceed.ImageComponent', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParameter.Content', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidImage.OsTypeUnsupported', + 'errorMessage' => 'The specified base image does not support image building.', + ], + [ + 'errorCode' => 'InvalidParameter.ComponentVersion', + 'errorMessage' => 'The specified ComponentVersion is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidComponentVersion.Exist', + 'errorMessage' => 'The specified ComponentVersion does exist with the specified Name.', + ], + [ + 'errorCode' => 'InvalidOperation.NoPermissionCreateServiceLinkedRole', + 'errorMessage' => 'You are not authorized to create Service-linked role. The system will automatically create it when the API is called for the first time. Check your RAM policies, and ensure that you are using the correct credentials.', + ], + ], + [ + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + [ + 'errorCode' => 'NotSupportedCommand.FROM', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"ImageComponentId\\": \\"ic-bp67acfmxazb4p****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n ic-bp67acfmxazb4p****\\n","errorExample":""}]', + 'title' => 'CreateImageComponent', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You can create only custom image components.'."\n" + .'* Each version number of an image component must be unique. When you add a version of an image component to an image template, you can specify the component by its name and version number.'."\n" + .'* The content size of an image component cannot exceed 16 KB. For information about the commands supported by Image Builder, see [Commands supported by Image Builder](~~200206~~).'."\n" + ."\n" + .'For more information, see [Image Builder](~~197410~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeImageComponents' => [ + 'summary' => 'Queries the details of one or more image components.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '29277', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image component. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the image component.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image component. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image component. You must specify an exact name to search for the image component.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testComponent', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of `NextToken`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAAdDWBF2****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page. Valid values: 1 to 500.'."\n" + ."\n" + .'Default value: 50.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'minimum' => '1', + 'example' => '50', + 'default' => '50', + ], + ], + [ + 'name' => 'Owner', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the image component. Valid values:'."\n" + ."\n" + .'* SELF: the custom component that you created.'."\n" + .'* ALIYUN: the system component provided by Alibaba Cloud.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SELF', + ], + ], + [ + 'name' => 'ImageComponentId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of image components. Valid values of N: 1 to 20.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of image component N. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ic-bp67acfmxazb4p****', + ], + 'required' => false, + 'example' => 'ic-bp67acfmxazb4p****', + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ComponentType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the image component.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Build'."\n" + .'* Test'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'SystemType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the operating system supported by the image component.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Linux'."\n" + .'* Windows'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'ComponentVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The version number of the image component in the \\.\\.\\ format. You can set \\, \\, and \\ to non-negative integers, or set one of \\, \\, and \\ to the wildcard (\\*) and the other two to non-negative integers.'."\n" + ."\n" + .'> This parameter takes effect only if you specify Name.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. For information about how to use the returned value, see the "Usage notes" section of this topic.'."\n", + 'type' => 'string', + 'example' => 'AAAAAdDWBF2****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of image components returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'MaxResults' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '50', + ], + 'ImageComponent' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ImageComponentSet' => [ + 'description' => 'The information about the image components.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the image component was created.'."\n", + 'type' => 'string', + 'example' => '2020-11-24T06:00:00Z', + ], + 'Description' => [ + 'description' => 'The description of the image component.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'SystemType' => [ + 'description' => 'The type of the operating system supported by the image component.'."\n", + 'type' => 'string', + 'example' => 'Linux', + ], + 'ImageComponentId' => [ + 'description' => 'The ID of the image component.'."\n", + 'type' => 'string', + 'example' => 'ic-bp67acfmxazb4p****', + ], + 'ComponentType' => [ + 'description' => 'The type of the image component.'."\n", + 'type' => 'string', + 'example' => 'Build', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the image component belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'Name' => [ + 'description' => 'The name of the image component.'."\n", + 'type' => 'string', + 'example' => 'testComponent', + ], + 'Content' => [ + 'description' => 'The content of the image component.'."\n", + 'type' => 'string', + 'example' => 'RESTART', + ], + 'Owner' => [ + 'description' => 'The type of the image component. Valid values:'."\n" + ."\n" + .'* SELF: the custom component that you created.'."\n" + .'* ALIYUN: the system component provided by Alibaba Cloud.'."\n", + 'type' => 'string', + 'example' => 'SELF', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the image component.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The value of the tag.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The key of the tag.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'ComponentVersion' => [ + 'description' => 'The version number of the image component.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'Parameters' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Parameter' => [ + 'description' => 'The parameters contained in the image component.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Name' => [ + 'description' => 'The name of the parameter.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'Type' => [ + 'description' => 'The type of the parameter.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* String'."\n" + .'* Number'."\n" + .'* Boolean'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'DefaultValue' => [ + 'description' => 'The default value of the parameter.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Owner', + 'errorMessage' => 'The specified parameter \\"Owner\\" is not valid.', + ], + [ + 'errorCode' => 'InvalidImageComponentIdSize.ExceededMaxNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSystemType.NotSupportedValue', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidComponentType.NotSupportedValue', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParameter.ComponentVersion', + 'errorMessage' => 'The specified ComponentVersion is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Invalid.NextToken', + 'errorMessage' => 'The specified NextToken is not valid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 50,\\n \\"ImageComponent\\": {\\n \\"ImageComponentSet\\": [\\n {\\n \\"CreationTime\\": \\"2020-11-24T06:00:00Z\\",\\n \\"Description\\": \\"This is description.\\",\\n \\"SystemType\\": \\"Linux\\",\\n \\"ImageComponentId\\": \\"ic-bp67acfmxazb4p****\\",\\n \\"ComponentType\\": \\"Build\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"Name\\": \\"testComponent\\",\\n \\"Content\\": \\"Tasks:\\\\n - Name: HelloWorld\\\\n Action: RunShellCommand\\\\n Properties:\\\\n commandContent: echo hello world\\\\n\\",\\n \\"Owner\\": \\"SELF\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"ComponentVersion\\": \\"1.0.0\\",\\n \\"Parameters\\": {\\n \\"Parameter\\": [\\n {\\n \\"Name\\": \\"paramName\\",\\n \\"Type\\": \\"String\\",\\n \\"DefaultValue\\": \\"paramDefaultValue\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n AAAAAdDWBF2****\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n \\n \\n Build\\n This is description.\\n rg-bp67acfmxazb4p****\\n SELF\\n RESTART\\n 2020-11-24T06:00:00Z\\n Linux\\n ic-bp67acfmxazb4p****\\n testComponent\\n \\n \\n \\n \\n TestKey\\n TestValue\\n \\n \\n \\n \\n 50\\n","errorExample":""}]', + 'title' => 'DescribeImageComponents', + 'description' => 'You can use `NextToken` to configure the query token. Set the value to the `NextToken` value that is returned in the previous call to the DescribeImageComponents operation. Then, use `MaxResults` to specify the maximum number of entries to return on each page.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteImageComponent' => [ + 'summary' => 'Deletes an image component. You can specify RegionId and ImageComponentId in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '29265', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image component. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image component. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImageComponentId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image component.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ic-bp67acfmxazb4p****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidImageComponent.InUse', + 'errorMessage' => '%s.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImageComponent.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\r\\n","errorExample":""}]', + 'title' => 'DeleteImageComponent', + 'description' => '* Only custom image components can be deleted.'."\n" + .'* When you delete a component, make sure that the component is not used in the template. Otherwise, the component fails to be deleted.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateImagePipeline' => [ + 'summary' => 'Creates an image template. Image templates can be used to create images.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '65905', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag to add to the template.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. Valid values of N: 1 to 20. You cannot specify empty strings as tag keys. The tag key must be 1 to 128 characters in length and cannot contain `http://` or `https://`. It cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value must be 0 to 128 characters in length. It cannot start with `acs:` or contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'AddAccount', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of Alibaba Cloud accounts to which to share the image that will be created based on the image template. You can specify up to 20 account IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of Alibaba Cloud account N to which to share the image that will be created based on the image template. Valid values of N: 1 to 20.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1234567890', + ], + 'required' => false, + 'example' => '1234567890', + 'maxItems' => 21, + ], + ], + [ + 'name' => 'ToRegionId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of regions to which you want to distribute the image that is created based on the image template. You can specify up to 20 region IDs.'."\n" + ."\n" + .'If you do not specify this parameter, the image is created only in the current region.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of region N to which to distribute the image that will be created based on the image template. Valid values of N: 1 to 20.'."\n" + ."\n" + .'If you do not specify this parameter, the image is created only in the current region.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + 'required' => false, + 'example' => 'cn-hangzhou', + 'maxItems' => 21, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'BaseImageType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the source image. Valid values:'."\n" + ."\n" + .'* IMAGE: image'."\n" + .'* IMAGE_FAMILY: image family'."\n" + .'* OSS: Object Storage Service (OSS) object'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'IMAGE', + ], + ], + [ + 'name' => 'BaseImage', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source image.'."\n" + ."\n" + .'* If you set `BaseImageType` to IMAGE, set BaseImage to the ID of a custom image.'."\n" + .'* If you set `BaseImageType` to IMAGE_FAMILY, set BaseImage to the name of an image family.'."\n" + .'* If you set `BaseImageType` to OSS, you do not need to specify BaseImage.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'm-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the launch template. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'> If you do not specify `Name`, the return value of `ImagePipelineId` is used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testImagePipeline', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the image template. The description must be 2 to 256 characters in length. It cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'ImageName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name prefix of the image created based on the image template.'."\n" + ."\n" + .'> This parameter is no longer used. We recommend that you use ImageOptions.ImageName.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'testImageName', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch.'."\n" + ."\n" + .'If you do not specify this parameter, a new VPC and vSwitch are created. Make sure that the VPC quota in your account is sufficient. For more information, see [Limits and quotas](~~27750~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type. You can call the [DescribeInstanceTypes](~~25620~~) to query instance types.'."\n" + ."\n" + .'If you do not configure this parameter, an instance type that provides the fewest vCPUs and memory resources is automatically selected. This configuration is subject to resource availability of instance types. For example, the ecs.g6.large instance type is automatically selected. If available ecs.g6.large resources are insufficient, the ecs.g6.xlarge instance type is selected.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g6.large', + ], + ], + [ + 'name' => 'SystemDiskSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The system disk size of the intermediate instance. Unit: GiB. Valid values: 20 to 500.'."\n" + ."\n" + .'Default value: 40.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '40', + ], + ], + [ + 'name' => 'InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the outbound public bandwidth for the intermediate instance. Unit: Mbit/s. Valid values: 0 to 100.'."\n" + ."\n" + .'Default value: 0.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + ], + [ + 'name' => 'DeleteInstanceOnFailure', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the intermediate instance when the image cannot be created. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'> If the intermediate instance cannot be started, the instance is released by default.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'BuildContent', + 'in' => 'query', + 'schema' => [ + 'description' => 'The build content in the image template. The content cannot exceed 16 KB in size. For information about the commands supported by Image Builder, see [Commands supported by Image Builder](~~200206~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'FROM IMAGE:m-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.**** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RepairMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The repair mode of the image template.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Standard: the standard mode.'."\n" + ."\n" + .' Supported check items in Linux operating systems:'."\n" + ."\n" + .' * GUESTOS.CloudInit'."\n" + .' * GUESTOS.Dhcp'."\n" + .' * GUESTOS.Virtio'."\n" + .' * GUESTOS.OnlineResizeFS'."\n" + .' * GUESTOS.Grub'."\n" + .' * GUESTOS.Fstab'."\n" + ."\n" + .' Supported check items in Windows operating systems:'."\n" + ."\n" + .' * GUESTOS.Virtio'."\n" + .' * GUESTOS.Update'."\n" + .' * GUESTOS.Hotfix'."\n" + .' * GUESTOS.Server'."\n" + ."\n" + .'> As the check and repair capabilities continue to improve, the number of check items may increase. For more information about check items, see [Overview of image check](~~439819~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'ImageFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The family of the image created based on the image template.'."\n" + ."\n" + .'> This parameter is no longer used. We recommend that you use ImageOptions.ImageFamily.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'TestContent', + 'in' => 'query', + 'schema' => [ + 'description' => 'The test content in the image template. The content cannot exceed 16 KB in size. For information about the commands supported by Image Builder, see [Commands supported by Image Builder](~~200206~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'ImportImageOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The attributes and settings of the image that you want to import. If you set `BaseImageType` to OSS, you must specify this parameter.'."\n", + 'type' => 'object', + 'properties' => [ + 'Architecture' => [ + 'description' => 'The system architecture of the system disk. If you specify a data disk snapshot to create the system disk of the image, use Architecture to specify the system architecture of the system disk. Valid values:'."\n" + ."\n" + .'* x86\\_64'."\n" + .'* arm64'."\n" + ."\n" + .'Default value: x86\\_64.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'x86_64', + ], + 'OSType' => [ + 'description' => 'The operating system type. Valid value:'."\n" + ."\n" + .'* windows'."\n" + .'* linux'."\n" + ."\n" + .'Default value: linux.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'linux', + ], + 'Platform' => [ + 'description' => 'The version of the operating system. Valid values:'."\n" + ."\n" + .'* Aliyun'."\n" + .'* Anolis'."\n" + .'* CentOS'."\n" + .'* Ubuntu'."\n" + .'* CoreOS'."\n" + .'* SUSE'."\n" + .'* Debian'."\n" + .'* OpenSUSE'."\n" + .'* FreeBSD'."\n" + .'* RedHat'."\n" + .'* Kylin'."\n" + .'* UOS'."\n" + .'* Fedora'."\n" + .'* Fedora CoreOS'."\n" + .'* CentOS Stream'."\n" + .'* AlmaLinux'."\n" + .'* Rocky Linux'."\n" + .'* Gentoo'."\n" + .'* Customized Linux'."\n" + .'* Others Linux'."\n" + .'* Windows Server 2022'."\n" + .'* Windows Server 2019'."\n" + .'* Windows Server 2016'."\n" + .'* Windows Server 2012'."\n" + .'* Windows Server 2008'."\n" + .'* Windows Server 2003'."\n" + .'* Other Windows'."\n" + ."\n" + .'Default value: Others Linux when the operating system type is linux, and Other Windows when the operating system type is windows.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Aliyun', + ], + 'BootMode' => [ + 'description' => 'The new boot mode of the image. Valid values:'."\n" + ."\n" + .'* BIOS: BIOS mode'."\n" + .'* UEFI: Unified Extensible Firmware Interface (UEFI) mode'."\n" + ."\n" + .'Default value: BIOS. If you set Architecture to `arm64`, set this parameter to UEFI.'."\n" + ."\n" + .'> Before you specify this parameter, make sure that you are familiar with the boot modes supported by the image. If you specify a boot mode that is not supported by the image, ECS instances created from the image cannot start as expected. For information about the boot modes of images, see the [Boot modes of images](~~2244655#b9caa9b8bb1wf~~) section of the "Best practices for ECS instance boot modes" topic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BIOS', + ], + 'LicenseType' => [ + 'description' => 'The type of the license to use to activate the operating system after the image is imported. Valid values:'."\n" + ."\n" + .'* Auto: ECS detects the operating system of the image and allocates a license to the operating system. In this mode, the system first checks whether a license allocated by an official Alibaba Cloud channel is available for the operating system version specified by `Platform`. If a license allocated by an official Alibaba Cloud channel is available for the operating system version, the system allocates the license to the imported image. If no such license is available, the Bring Your Own License (BYOL) mode is used.'."\n" + .'* Aliyun: The license allocated by an official Alibaba Cloud channel for the operating system version specified by `Platform` is used.'."\n" + .'* BYOL: The license that comes with the source operating system is used. When you use the BYOL license, make sure that your license key is supported by Alibaba Cloud.'."\n" + ."\n" + .'Default value: Auto.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Auto', + ], + 'DiskDeviceMappings' => [ + 'description' => 'The information of disks from which the custom images are created.'."\n" + ."\n" + .'* When the N value is 1, this parameter creates a custom image from the system disk.'."\n" + .'* When the N value is an integer in the range of 2 to 17, this parameter creates a custom image from a data disk.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'OSSBucket' => [ + 'description' => 'The Object Storage Service (OSS) bucket where the image file is stored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecsimageos', + ], + 'OSSObject' => [ + 'description' => 'The name (key) of the object that the image file is stored as in the OSS bucket.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CentOS_5.4_32.raw', + ], + 'Format' => [ + 'description' => 'The format of the source image. Valid values:'."\n" + ."\n" + .'* RAW'."\n" + .'* VHD'."\n" + .'* QCOW2'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the system checks the format of the image and uses the check result as the value of this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RAW', + ], + 'DiskImageSize' => [ + 'description' => 'The size of disk N in the custom image after the source image is imported.'."\n" + ."\n" + .'You can use this parameter to specify the sizes of the system disk and data disks in the custom image. When you specify the size of the system disk, make sure that the specified size is greater than or equal to the size of the source image file. Unit: GiB. Valid values:'."\n" + ."\n" + .'* When the N value is 1, this parameter specifies the size of the system disk in the custom image. Valid values: 1 to 2048.'."\n" + .'* When the N value is an integer in the range of 2 to 17, this parameter creates a custom image from a data disk. Valid values: 1 to 2048.'."\n" + ."\n" + .'After the image file is uploaded to an OSS bucket, you can view the size of the image file in the OSS bucket.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '40', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + ], + 'Features' => [ + 'description' => 'The attributes of the image.'."\n", + 'type' => 'object', + 'properties' => [ + 'NvmeSupport' => [ + 'description' => 'Specifies whether the imported source image supports the Non-Volatile Memory Express (NVMe) protocol. Valid value:'."\n" + ."\n" + .'* supported Instances created from the image also support the NVMe protocol.'."\n" + .'* unsupported Instances created from the image do not support the NVMe protocol.'."\n" + ."\n" + .'Default value: unsupported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'supported', + ], + 'ImdsSupport' => [ + 'type' => 'string', + 'required' => false, + ], + ], + 'required' => false, + ], + 'RetainImportedImage' => [ + 'description' => '> This parameter is in invitational preview.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'RetentionStrategy' => [ + 'type' => 'string', + 'required' => false, + ], + 'ImageName' => [ + 'type' => 'string', + 'required' => false, + ], + 'Description' => [ + 'type' => 'string', + 'required' => false, + ], + 'RoleName' => [ + 'type' => 'string', + 'required' => false, + ], + 'ImportImageTags' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'type' => 'string', + 'required' => false, + ], + 'Value' => [ + 'type' => 'string', + 'required' => false, + ], + ], + 'required' => false, + ], + 'required' => false, + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'NvmeSupport', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the image created based on the image template supports the NVMe protocol.'."\n" + ."\n" + .'> This parameter is no longer used. We recommend that you use ImageOptions.ImageFeatures.NvmeSupport.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'auto', + ], + ], + [ + 'name' => 'AdvancedOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The advanced settings.'."\n", + 'type' => 'object', + 'properties' => [ + 'RetainCloudAssistant' => [ + 'description' => 'Specifies whether to retain Cloud Assistant Agent that is installed during the image building process. During the image building process, the system automatically installs Cloud Assistant Agent on the intermediate instance to run commands. You can choose whether to retain Cloud Assistant Agent that is installed during the image building process in the new image. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> The setting of this parameter does not affect Cloud Assistant Agent that comes with your image.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'ImageNameSuffix' => [ + 'description' => 'Specifies whether to disable the feature that automatically adds a suffix to the name of the image created based on the image template. Valid value:'."\n" + ."\n" + .'* disable'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'disable', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'ImageOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The attributes of the image created based on the image template.'."\n", + 'type' => 'object', + 'properties' => [ + 'ImageName' => [ + 'description' => 'The prefix of the image name. The prefix must be 2 to 64 characters in length. The prefix must start with a letter and cannot start with `http://` or `https://`. The prefix can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'The system generates the final image name that consists of the specified prefix and the ID of the build task (`ExecutionId`) in the format of `{ImageName}_{ExecutionId}`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testImageName', + ], + 'ImageFamily' => [ + 'description' => 'The image family. The image family name must be 2 to 128 characters in length. The name must start with a letter and cannot start with acs: or aliyun. The name cannot contain http:// or https:// and can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'family', + ], + 'Description' => [ + 'description' => 'The description of the image. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + 'ImageFeatures' => [ + 'description' => 'The feature attributes of the image.'."\n", + 'type' => 'object', + 'properties' => [ + 'NvmeSupport' => [ + 'description' => 'Specifies whether the image created based on the image template supports the NVMe protocol. Valid values:'."\n" + ."\n" + .'* supported: The image supports the NVMe protocol. Instances created from the image also support the NVMe protocol.'."\n" + .'* unsupported: The image does not support the NVMe protocol. Instances created from the image do not support the NVMe protocol.'."\n" + .'* auto: The system automatically detects whether the image supports the NVMe protocol. The system automatically detects whether the NVMe driver is installed on your image before the new image is built. If you install or uninstall the NVMe driver during the image building process, the detection result may be incorrect. We recommend that you set the value to supported or unsupported based on the image building content.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'auto', + ], + ], + 'required' => false, + ], + 'ImageTags' => [ + 'description' => 'The tags to add to the image.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the image. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the image. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot start with `acs:`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + ], + ], + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'ImagePipelineId' => [ + 'description' => 'The ID of the image template.'."\n", + 'type' => 'string', + 'example' => 'ip-2ze5tsl5bp6nf2b3****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSourceInstance.NotFound', + 'errorMessage' => 'The specified source instance is not found.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageName.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidBaseImageType.NotSupportedValue', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.NotSupportedValue', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInternetMaxBandwidthOut.NotSupportedValue', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAddAccountSize.ExceededMaxNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidToRegionIdSize.ExceededMaxNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidBuildContent.LengthExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageTemplateCommandSize.ExceededMaxNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'DuplicatedCommand.FROM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandOrder.FROM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImageTemplateCommand.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.RUN', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.ENV', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.WORKDIR', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.COPY', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.USER', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.FROM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.CMD', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidCommandContent.ENTRYPOINT', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.ImagePipeline', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'NoPermission', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.LABEL', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.ENV', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.ENTRYPOINT', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.CMD', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.COPY', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.WORKDIR', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'NotEmptyCommandContent.RESTART', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.USER', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'EmptyCommandContent.RUN', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidImage.OsTypeUnsupported', + 'errorMessage' => 'The specified base image does not support image building.', + ], + [ + 'errorCode' => 'InvalidParameter.BuildContent', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParameter.TestContent', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidImageComponent.NotSupported', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParameterCombination', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParameter.RepairMode', + 'errorMessage' => 'The specified parameter RepairMode is invalid.', + ], + [ + 'errorCode' => 'InvalidImageFamily.Malformed', + 'errorMessage' => 'The format of the specified image family is invalid.', + ], + [ + 'errorCode' => 'InvalidImage.ImageOwnerAliasUnsupported', + 'errorMessage' => 'The specified base image does not support distributing.', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsArchitecture', + 'errorMessage' => 'The specified parameter ImportImageOptions.Architecture is invalid. The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsOSType', + 'errorMessage' => 'The specified parameter ImportImageOptions.OSType is invalid. The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsBootMode', + 'errorMessage' => 'The specified parameter ImportImageOptions.BootMode is invalid. The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidImportImageOptionsDiskDeviceMappings.LengthLimitExceeded', + 'errorMessage' => 'The length of the specified parameter ImportImageOptions.DiskDeviceMappings exceeds the limit(17).', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsDiskDeviceMappingsOSSObject', + 'errorMessage' => 'The specified parameter ImportImageOptions.DiskDeviceMappings.OSSObject is invalid. OSSObject supports up to 1023 characters, and cannot start with http:// or https://.', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsDiskDeviceMappingsOSSBucket', + 'errorMessage' => 'The specified parameter ImportImageOptions.DiskDeviceMappings.OSSBucket is invalid. OSSBucket supports up to 63 characters, only lowercase letters, numbers, and dashes are allowed, and cannot start or end with a dash.', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsPlatform', + 'errorMessage' => 'The specified parameter ImportImageOptions.Platform is invalid. The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsLicenseType', + 'errorMessage' => 'The specified parameter ImportImageOptions.LicenseType is invalid. The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsFeaturesNvmeSupport', + 'errorMessage' => 'The specified parameter ImportImageOptions.Features.NvmeSupport is invalid. The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidParameter.NvmeSupport', + 'errorMessage' => 'The specified parameter NvmeSupport is invalid. The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidParameter.ImportImageOptionsDiskDeviceMappingsFormat', + 'errorMessage' => 'The specified parameter ImportImageOptions.DiskDeviceMappings.Format is invalid. The correct value should be in [%s].', + ], + [ + 'errorCode' => 'InvalidOperation.DiskImageSizeExceeded', + 'errorMessage' => 'The disk size exceeds the limit. Please check the specified parameter ImportImageOptions.DiskDeviceMappings.DiskImageSize and ImportImageOptions.DiskDeviceMappings.OSSObject. Ensure that each of them is between 1 and 2048 in size.', + ], + [ + 'errorCode' => 'InvalidImageOptions.Description', + 'errorMessage' => 'The specified parameter ImageOptions.Description is invalid. The length should be between 2 to 256 characters, and cannot start with http:// or https://.', + ], + [ + 'errorCode' => 'InvalidImageName.Duplicated', + 'errorMessage' => 'The specified image name is already in use in the target region. Please try a different one.', + ], + [ + 'errorCode' => 'InvalidImage.NotSupportRepair', + 'errorMessage' => 'The specified base image does not support repair.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.N.Key is not valid. Tag keys cannot be empty or null, support up to 128 characters, cannot start with "aliyun" or "acs:", and cannot contain "http://" or "https://".', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.N.Value is not valid. Tag values support up to 128 characters, and cannot contain "http://" or "https://".', + ], + [ + 'errorCode' => 'InvalidAdvancedOptions.ImageNameSuffix', + 'errorMessage' => 'The specified parameter AdvancedOptions.ImageNameSuffix is invalid. The correct value should be in [%s].', + ], + ], + 403 => [ + [ + 'errorCode' => 'ImagePipeline.NotSupportWindowsInstance', + 'errorMessage' => 'Image pipeline does not support windows instance at this time.', + ], + [ + 'errorCode' => 'InvalidOSSObject.NotAuthorized', + 'errorMessage' => 'The specified ImportImageOptions.DiskDeviceMappings.OSSObject is not allowed to be accessed.', + ], + [ + 'errorCode' => 'InvalidOperation.NoPermissionCreateServiceLinkedRole', + 'errorMessage' => 'You are not authorized to create Service-linked role. The system will automatically create it when the API is called for the first time. Check your RAM policies, and ensure that you are using the correct credentials.', + ], + [ + 'errorCode' => 'InvalidOSSObject.NeedRestore', + 'errorMessage' => 'The specified ImportImageOptions.DiskDeviceMappings.OSSObject is an archived object and needs to be restored first.', + ], + [ + 'errorCode' => 'InvalidOperation.NoRightAccessOSS', + 'errorMessage' => 'ECS service is not authorized to access your OSS. Check your RAM roles and policies, and ensure that ecs.aliyuncs.com is authorized to assume AliyunECSImageImportDefaultRole.', + ], + [ + 'errorCode' => 'InvalidOperation.OSSObjectIsImporting', + 'errorMessage' => 'The specified ImportImageOptions.DiskDeviceMappings.OSSObject is importing.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImage.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + [ + 'errorCode' => 'ImageComponent.NotFound', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The specified instance type does not exist.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified VSwitchId does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImportImageOptionsDiskDeviceMappingsOSSObject.NotFound', + 'errorMessage' => 'The specified ImportImageOptions.DiskDeviceMappings.OSSObject is not found in this region.', + ], + [ + 'errorCode' => 'MissingParameter.RepairMode', + 'errorMessage' => 'The specified parameter RepairMode is missing.', + ], + [ + 'errorCode' => 'MissingParameter.ImportImageOptions', + 'errorMessage' => 'The specified parameter ImportImageOptions is missing.', + ], + [ + 'errorCode' => 'MissingParameter.ImportImageOptionsDiskDeviceMappingsOSSObject', + 'errorMessage' => 'The specified parameter ImportImageOptions.DiskDeviceMappings.OSSObject is missing.', + ], + [ + 'errorCode' => 'MissingParameter.ImportImageOptionsDiskDeviceMappingsOSSBucket', + 'errorMessage' => 'The specified parameter ImportImageOptions.DiskDeviceMappings.OSSBucket is missing.', + ], + [ + 'errorCode' => 'MissingParameter.ImageOptionsDiskDeviceMappings', + 'errorMessage' => 'The specified parameter ImportImageOptions.DiskDeviceMappings is missing.', + ], + [ + 'errorCode' => 'InvalidOssBucketName.NotFound', + 'errorMessage' => 'The specified parameter OssDeliveryConfig.BucketName does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"ImagePipelineId\\": \\"ip-2ze5tsl5bp6nf2b3****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n ip-2ze5tsl5bp6nf2b3****\\n","errorExample":""}]', + 'title' => 'CreateImagePipeline', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'You can use image templates to customize image content and create images across regions and accounts. Take note of the following items:'."\n" + ."\n" + .'* You can create only custom image templates.'."\n" + .'* You can specify only a public image, a custom image, a shared image, or an image family as the source image when you create an image template.'."\n" + .'* When you use an image template to create an image, multiple intermediate instances are created. You are charged for the intermediate instances on a pay-as-you-go basis. For more information, see [Pay-as-you-go](~~40653~~).'."\n" + ."\n" + .'When you use `BuildContent` to specify the build content in an image template, take note of the following items:'."\n" + ."\n" + .'* The `FROM` command is deprecated. Regardless of whether you specify the `FROM` command in `BuildContent`, the system uses the source image specified by `BaseImageType` and `BaseImage`. BaseImageType specifies the type of the source image and BaseImage specifies the source image.'."\n" + .'* The size of BuildContent cannot exceed 16 KB. For information about the commands supported by Image Builder, see [Commands supported by Image Builder](~~200206~~).'."\n" + ."\n" + .'For more information, see [Image Builder](~~197410~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeImagePipelines' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '29279', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the image template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The value of tag N of the image template. Valid values of N: 1 to 20.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testImagePipeline', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of `NextToken`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAAdDWBF2****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page. Valid values: 1 to 500'."\n" + ."\n" + .'Default value: 50.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'minimum' => '1', + 'example' => '50', + 'default' => '50', + ], + ], + [ + 'name' => 'ImagePipelineId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of image templates. Valid values of N: 1 to 20.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of image template N. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ip-2ze5tsl5bp6nf2b3****', + ], + 'required' => false, + 'example' => 'ip-2ze5tsl5bp6nf2b3****', + 'maxItems' => 21, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. For information about how to use the return value, see the "Usage notes" section of this topic.'."\n", + 'type' => 'string', + 'example' => 'AAAAAdDWBF2****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of image templates returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'MaxResults' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '50', + ], + 'ImagePipeline' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ImagePipelineSet' => [ + 'description' => 'Details of the image templates.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the image template was created.'."\n", + 'type' => 'string', + 'example' => '2020-11-24T06:00:00Z', + ], + 'DeleteInstanceOnFailure' => [ + 'description' => 'Indicates whether to release the intermediate instance when the image fails to be created.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'InstanceType' => [ + 'description' => 'The instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs.g6.large', + ], + 'InternetMaxBandwidthOut' => [ + 'description' => 'The size of the outbound public bandwidth for the intermediate instance. Unit: Mbit/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'ImagePipelineId' => [ + 'description' => 'The ID of the image template.'."\n", + 'type' => 'string', + 'example' => 'ip-2ze5tsl5bp6nf2b3****', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch in the virtual private cloud (VPC).'."\n", + 'type' => 'string', + 'example' => 'vsw-bp67acfmxazb4p****', + ], + 'SystemDiskSize' => [ + 'description' => 'The system disk size of the intermediate instance. Unit: GiB'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '40', + ], + 'Description' => [ + 'description' => 'The description of the image template.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'BaseImage' => [ + 'description' => 'The source image.'."\n" + ."\n" + .'* When `BaseImageType` is set to IMAGE, the value of this parameter is the ID of a custom image.'."\n" + .'* When `BaseImageType` is set to IMAGE_FAMILY, the value of this parameter is the name of an image family.'."\n", + 'type' => 'string', + 'example' => 'm-bp67acfmxazb4p****', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'ImageName' => [ + 'description' => 'The name prefix of the image created based on the image template.'."\n" + ."\n" + .'> This parameter is no longer used. We recommend that you use ImageOptions.ImageName.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'example' => 'testImageName', + ], + 'BaseImageType' => [ + 'description' => 'The type of the source image. Valid values:'."\n" + ."\n" + .'* IMAGE: custom image'."\n" + .'* IMAGE_FAMILY: image family'."\n", + 'type' => 'string', + 'example' => 'IMAGE', + ], + 'Name' => [ + 'description' => 'The name of the image template.'."\n", + 'type' => 'string', + 'example' => 'testImagePipeline', + ], + 'BuildContent' => [ + 'description' => 'The content of the image template.'."\n", + 'type' => 'string', + 'example' => 'FROM IMAGE:m-bp67acfmxazb4p****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the image template.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The value of the tag.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The key of the tag.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'ToRegionIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ToRegionId' => [ + 'description' => 'The IDs of regions to which to distribute the image that will be created based on the image template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the region to which to distribute the image that will be created based on the image template.'."\n", + 'type' => 'string', + 'example' => '["cn-hangzhou"]', + ], + ], + ], + ], + 'AddAccounts' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AddAccount' => [ + 'description' => 'The IDs of Alibaba Cloud accounts to which to share the image that will be created based on the image template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the Alibaba Cloud account to which to share the image that will be created based on the image template.'."\n", + 'type' => 'string', + 'example' => '["1234567890"]', + ], + ], + ], + ], + 'RepairMode' => [ + 'description' => 'The repair mode of the image template.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Standard: the standard mode'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'TestContent' => [ + 'description' => 'The content of the image test template.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'ImageFamily' => [ + 'description' => 'The family of the image created based on the image template.'."\n" + ."\n" + .'> This parameter is no longer used. We recommend that you use ImageOptions.ImageFamily.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'example' => 'null', + ], + 'NvmeSupport' => [ + 'description' => 'Indicates whether the image created based on the image template supports the Non-Volatile Memory Express (NVMe) protocol.'."\n" + ."\n" + .'> This parameter is no longer used. We recommend that you use ImageOptions.ImageFeatures.NvmeSupport.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'example' => 'auto', + ], + 'ImportImageOptions' => [ + 'description' => 'The attributes and settings of the imported image.'."\n", + 'type' => 'object', + 'properties' => [ + 'Architecture' => [ + 'description' => 'The operating system architecture. Valid values:'."\n" + ."\n" + .'* x86\\_64'."\n" + .'* arm64'."\n", + 'type' => 'string', + 'example' => 'x86_64', + ], + 'OSType' => [ + 'description' => 'The operating system type. Valid values:'."\n" + ."\n" + .'* windows: Windows operating systems'."\n" + .'* linux: Linux operating systems'."\n", + 'type' => 'string', + 'example' => 'linux', + ], + 'Platform' => [ + 'description' => 'The version of the operating system. Valid values:'."\n" + ."\n" + .'* Aliyun'."\n" + .'* Anolis'."\n" + .'* CentOS'."\n" + .'* Ubuntu'."\n" + .'* CoreOS'."\n" + .'* SUSE'."\n" + .'* Debian'."\n" + .'* OpenSUSE'."\n" + .'* FreeBSD'."\n" + .'* RedHat'."\n" + .'* Kylin'."\n" + .'* UOS'."\n" + .'* Fedora'."\n" + .'* Fedora CoreOS'."\n" + .'* CentOS Stream'."\n" + .'* AlmaLinux'."\n" + .'* Rocky Linux'."\n" + .'* Gentoo'."\n" + .'* Customized Linux'."\n" + .'* Others Linux'."\n" + .'* Windows Server 2022'."\n" + .'* Windows Server 2019'."\n" + .'* Windows Server 2016'."\n" + .'* Windows Server 2012'."\n" + .'* Windows Server 2008'."\n" + .'* Windows Server 2003'."\n" + .'* Other Windows'."\n", + 'type' => 'string', + 'example' => 'Aliyun', + ], + 'BootMode' => [ + 'description' => 'The boot mode of the image. Valid values:'."\n" + ."\n" + .'* BIOS: BIOS mode'."\n" + .'* UEFI: Unified Extensible Firmware Interface (UEFI) mode'."\n", + 'type' => 'string', + 'example' => 'BIOS', + ], + 'LicenseType' => [ + 'description' => 'The type of the license to use to activate the operating system after the image is imported. Valid values:'."\n" + ."\n" + .'* Auto: ECS detects the operating system of the image and allocates a license to the operating system In this mode, the system first checks whether a license allocated by an official Alibaba Cloud channel is specified in the `Platform`. If a license allocated by an official Alibaba Cloud channel is specified, the system allocates the license to the imported image. If no such license is specified, the Bring Your Own License (BYOL) mode is used.'."\n" + .'* Aliyun: The license allocated through an official Alibaba Cloud channel is used for the operating system distribution specified by `Platform`.'."\n" + .'* BYOL: The license that comes with the source operating system is used. When you use the BYOL license, make sure that your license key is supported by Alibaba Cloud.'."\n", + 'type' => 'string', + 'example' => 'Auto', + ], + 'DiskDeviceMappings' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DiskDeviceMapping' => [ + 'description' => 'The information of disks from which the custom images are created.'."\n" + ."\n" + .'* When the value of N is 1, a custom image is created from the system disk.'."\n" + .'* When the value of N is an integer in the range of 2 to 17, a custom image is created from a data disk.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'OSSBucket' => [ + 'description' => 'The Object Storage Service (OSS) bucket where the image file is stored.'."\n", + 'type' => 'string', + 'example' => 'ecsimageos', + ], + 'OSSObject' => [ + 'description' => 'The name (key) of the object that the image file is stored as in the OSS bucket.'."\n", + 'type' => 'string', + 'example' => 'CentOS_5.4_32.raw', + ], + 'Format' => [ + 'description' => 'The format of the image. Valid values:'."\n" + ."\n" + .'* RAW'."\n" + .'* VHD'."\n" + .'* QCOW2'."\n", + 'type' => 'string', + 'example' => 'RAW', + ], + 'DiskImageSize' => [ + 'description' => 'The size of disk N in the custom image after the image is imported.'."\n" + ."\n" + .'You can use this parameter to specify the sizes of the system disk and data disks in the custom image. When you specify the size of the system disk, make sure that the specified size is greater than or equal to the size of the source image file. Unit: GiB. Valid values:'."\n" + ."\n" + .'* When N is set to 1, this parameter indicates the size of the system disk in the custom image. Valid values: 1 to 2048.'."\n" + .'* When N is set to an integer in the range of 2 to 17, this parameter indicates the size of a data disk in the custom image. Valid values: 1 to 2048.'."\n" + ."\n" + .'After the image file is uploaded to an OSS bucket, you can view the size of the image file in the OSS bucket.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '40', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'Features' => [ + 'description' => 'The attributes of the custom image.'."\n", + 'type' => 'object', + 'properties' => [ + 'NvmeSupport' => [ + 'description' => 'Indicates whether the image supports the NVMe protocol. Valid values:'."\n" + ."\n" + .'* supported: The image supports the NVMe protocol. Instances created from the image also support the NVMe protocol.'."\n" + .'* unsupported: The image does not support the NVMe protocol. Instances created from the image do not support the NVMe protocol.'."\n", + 'type' => 'string', + 'example' => 'supported', + ], + 'ImdsSupport' => [ + 'type' => 'string', + ], + ], + ], + 'RetainImportedImage' => [ + 'description' => '> This parameter is in invitational preview.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'RetentionStrategy' => [ + 'type' => 'string', + ], + 'ImageName' => [ + 'type' => 'string', + ], + 'Description' => [ + 'type' => 'string', + ], + 'RoleName' => [ + 'type' => 'string', + ], + 'ImportImageTags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ImportImageTag' => [ + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'type' => 'string', + ], + 'Value' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + ], + 'AdvancedOptions' => [ + 'description' => 'The advanced settings.'."\n", + 'type' => 'object', + 'properties' => [ + 'RetainCloudAssistant' => [ + 'description' => 'Indicates whether to retain Cloud Assistant. During the image building process, the system automatically installs Cloud Assistant in the intermediate instance to run commands. You can choose whether to retain Cloud Assistant in the new image created based on the image template. Valid values:'."\n" + ."\n" + .'* true: retains Cloud Assistant.'."\n" + .'* false: does not retain Cloud Assistant.'."\n" + ."\n" + .'> This parameter does not affect Cloud Assistant that comes with your image.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'ImageNameSuffix' => [ + 'description' => 'Indicates whether to disable the feature that automatically adds a suffix to the name of the image created based on the image template. Valid value:'."\n" + ."\n" + .'* disable'."\n", + 'type' => 'string', + 'example' => 'disable', + ], + ], + ], + 'ImageOptions' => [ + 'description' => 'The attributes of the image created based on the image template.'."\n", + 'type' => 'object', + 'properties' => [ + 'ImageName' => [ + 'description' => 'The prefix of the image name.'."\n", + 'type' => 'string', + 'example' => 'imageName', + ], + 'ImageFamily' => [ + 'description' => 'The image family.'."\n", + 'type' => 'string', + 'example' => 'family', + ], + 'Description' => [ + 'description' => 'The description of the image.'."\n", + 'type' => 'string', + 'example' => 'description.', + ], + 'ImageFeatures' => [ + 'description' => 'The feature attributes of the image.'."\n", + 'type' => 'object', + 'properties' => [ + 'NvmeSupport' => [ + 'description' => 'Indicates whether the image supports the NVMe protocol. Valid values:'."\n" + ."\n" + .'* supported: The image supports the NVMe protocol. Instances created from the image also support the NVMe protocol.'."\n" + .'* unsupported: The image does not support the NVMe protocol. Instances created from the image do not support the NVMe protocol.'."\n" + .'* auto: The system automatically checks whether the image supports the NVMe protocol. The system automatically checks whether the NVMe driver is installed on your image before the image is built. If you install or uninstall the NVMe driver during the image building task, the check result may be incorrect. We recommend that you set the value to supported or unsupported based on the image building content.'."\n", + 'type' => 'string', + 'example' => 'auto', + ], + ], + ], + 'ImageTags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ImageTag' => [ + 'description' => 'The tags of the image.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagKey' => [ + 'description' => 'The tag key of the image.'."\n", + 'type' => 'string', + 'example' => 'testKey', + ], + 'TagValue' => [ + 'description' => 'The tag value of the image.'."\n", + 'type' => 'string', + 'example' => 'testValue', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidImagePipelineIdSize.ExceededMaxNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'Invalid.NextToken', + 'errorMessage' => 'The specified NextToken is not valid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 50,\\n \\"ImagePipeline\\": {\\n \\"ImagePipelineSet\\": [\\n {\\n \\"CreationTime\\": \\"2020-11-24T06:00:00Z\\",\\n \\"DeleteInstanceOnFailure\\": true,\\n \\"InstanceType\\": \\"ecs.g6.large\\",\\n \\"InternetMaxBandwidthOut\\": 0,\\n \\"ImagePipelineId\\": \\"ip-2ze5tsl5bp6nf2b3****\\",\\n \\"VSwitchId\\": \\"vsw-bp67acfmxazb4p****\\",\\n \\"SystemDiskSize\\": 40,\\n \\"Description\\": \\"This is description.\\",\\n \\"BaseImage\\": \\"m-bp67acfmxazb4p****\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"ImageName\\": \\"testImageName\\",\\n \\"BaseImageType\\": \\"IMAGE\\",\\n \\"Name\\": \\"testImagePipeline\\",\\n \\"BuildContent\\": \\"COMPONENT ic-bp12dvdzvr9k9*****\\\\nCOMPONENT acs:ecs:cn-hangzhou:18689161186*****:imagecomponent/ComponentName/1.*.*\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"ToRegionIds\\": {\\n \\"ToRegionId\\": [\\n \\"[\\\\\\"cn-hangzhou\\\\\\"]\\"\\n ]\\n },\\n \\"AddAccounts\\": {\\n \\"AddAccount\\": [\\n \\"[\\\\\\"1234567890\\\\\\"]\\"\\n ]\\n },\\n \\"RepairMode\\": \\"Standard\\",\\n \\"TestContent\\": \\"COMPONENT ic-bp12dvdzvr9k9*****\\\\nCOMPONENT acs:ecs:cn-hangzhou:18689161186*****:imagecomponent/ComponentName/1.*.*\\",\\n \\"ImageFamily\\": \\"family\\",\\n \\"NvmeSupport\\": \\"auto\\",\\n \\"ImportImageOptions\\": {\\n \\"Architecture\\": \\"x86_64\\",\\n \\"OSType\\": \\"linux\\",\\n \\"Platform\\": \\"Aliyun\\",\\n \\"BootMode\\": \\"BIOS\\",\\n \\"LicenseType\\": \\"Auto\\",\\n \\"DiskDeviceMappings\\": {\\n \\"DiskDeviceMapping\\": [\\n {\\n \\"OSSBucket\\": \\"ecsimageos\\",\\n \\"OSSObject\\": \\"CentOS_5.4_32.raw\\",\\n \\"Format\\": \\"RAW\\",\\n \\"DiskImageSize\\": 40\\n }\\n ]\\n },\\n \\"Features\\": {\\n \\"NvmeSupport\\": \\"supported\\",\\n \\"ImdsSupport\\": \\"\\"\\n },\\n \\"RetainImportedImage\\": false,\\n \\"RetentionStrategy\\": \\"\\",\\n \\"ImageName\\": \\"\\",\\n \\"Description\\": \\"\\",\\n \\"RoleName\\": \\"\\",\\n \\"ImportImageTags\\": {\\n \\"ImportImageTag\\": [\\n {\\n \\"Key\\": \\"\\",\\n \\"Value\\": \\"\\"\\n }\\n ]\\n }\\n },\\n \\"AdvancedOptions\\": {\\n \\"RetainCloudAssistant\\": true,\\n \\"ImageNameSuffix\\": \\"disable\\"\\n },\\n \\"ImageOptions\\": {\\n \\"ImageName\\": \\"imageName\\",\\n \\"ImageFamily\\": \\"family\\",\\n \\"Description\\": \\"description.\\",\\n \\"ImageFeatures\\": {\\n \\"NvmeSupport\\": \\"auto\\"\\n },\\n \\"ImageTags\\": {\\n \\"ImageTag\\": [\\n {\\n \\"TagKey\\": \\"testKey\\",\\n \\"TagValue\\": \\"testValue\\"\\n }\\n ]\\n }\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n AAAAAdDWBF2****\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 50\\n \\n \\n IMAGE\\n This is description.\\n rg-bp67acfmxazb4p****\\n 40\\n ip-2ze5tsl5bp6nf2b3****\\n vsw-bp67acfmxazb4p****\\n testImagePipeline\\n true\\n testImageName\\n 0\\n 2020-11-24T06:00:00Z\\n ecs.g6.large\\n FROM IMAGE:m-bp67acfmxazb4p****\\n m-bp67acfmxazb4p****\\n \\n \\n \\n \\n TestKey\\n TestValue\\n \\n \\n \\n \\n \\n [\\"1234567890\\"]\\n \\n \\n [\\"cn-hangzhou\\"]\\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeImagePipelines', + 'summary' => 'Queries the details of one or more image templates.', + 'description' => 'You can use `NextToken` to configure the query token. Set the value to the `NextToken` value that is returned in the previous call to the `DescribeImagePipelines` operation. Then, use `MaxResults` to specify the maximum number of entries to return on each page.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteImagePipeline' => [ + 'summary' => 'Deletes an image template.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '29266', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the image template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImagePipelineId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image template.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ip-2ze5tsl5bp6nf2b3****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidImagePipeline.HasRunningExecution', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidImagePipeline.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\r\\n","errorExample":""}]', + 'title' => 'DeleteImagePipeline', + 'description' => 'If an ongoing image building task is associated with an image template, you cannot delete the image template. You can delete the image template only if the image building task reaches the SUCCESS, FAILED, TEST_FAILED, PARTITION_SUCCESS, or CANCELLED state. You can call the DescribeImagePipelineExecutions operation to query the details of an image building task.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'StartImagePipelineExecution' => [ + 'summary' => 'Executes an image creation task (image building task) by using an image template.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29317', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'TemplateTag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Value' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + 'description' => '', + ], + 'deprecated' => true, + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length. The tag value cannot start with `acs:` or contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImagePipelineId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image template.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ip-2ze5tsl5bp6nf2b3****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 make sure that the token is unique among requests. **The token can contain only ASCII characters and cannot exceed 64 characters in length.** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'ExecutionId' => [ + 'description' => 'The ID of the image creation task.'."\n", + 'type' => 'string', + 'example' => 'exec-5fb8facb8ed7427c****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidImage.OsTypeUnsupported', + 'errorMessage' => 'The specified base image does not support image building.', + ], + [ + 'errorCode' => 'InvalidParameter.BuildContent', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParameter.TestContent', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidImageComponent.NotSupported', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.N.Key is not valid. Tag keys cannot be empty or null, support up to 128 characters, cannot start with "aliyun" or "acs:", and cannot contain "http://" or "https://".', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.N.Value is not valid. Tag values support up to 128 characters, and cannot contain "http://" or "https://".', + ], + [ + 'errorCode' => 'InvalidImageName.Duplicated', + 'errorMessage' => 'The specified image name is already in use.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidImagePipeline.HasRunningExecution', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImagePipeline.OSSObjectNotAuthorized', + 'errorMessage' => 'The ImportImageOptions.DiskDeviceMappings.OSSObject of the specified ImagePipeline is not allowed to access.', + ], + [ + 'errorCode' => 'InvalidImagePipeline.OSSObjectNeedRestore', + 'errorMessage' => 'The ImportImageOptions.DiskDeviceMappings.OSSObject of the specified ImagePipeline is an archived object and needs to be restored first.', + ], + [ + 'errorCode' => 'InvalidOperation.NoRightAccessOSS', + 'errorMessage' => 'ECS service is not authorized to access your OSS. Check your RAM roles and policies, and ensure that ecs.aliyuncs.com is authorized to assume AliyunECSImageImportDefaultRole.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImagePipeline.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotFound', + 'errorMessage' => 'The specified instance type does not exist.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified VSwitchId does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidImage.NotFound', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'ImageComponent.NotFound', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidImagePipeline.BaseImageNotFound', + 'errorMessage' => 'The BaseImage of the specified ImagePipeline is not found.', + ], + [ + 'errorCode' => 'InvalidImagePipeline.OSSObjectNotFound', + 'errorMessage' => 'The ImportImageOptions.DiskDeviceMappings.OSSObject of the specified ImagePipeline is not found in this region.', + ], + ], + 500 => [ + [ + 'errorCode' => 'StartImagePipelineExecution.Failed', + 'errorMessage' => 'Start image pipeline execution failed.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"ExecutionId\\": \\"exec-5fb8facb8ed7427c****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n exec-5fb8facb8ed7427c****\\n","errorExample":""}]', + 'title' => 'StartImagePipelineExecution', + 'description' => '* After you create an image template, you can call the StartImagePipelineExecution operation to create a pipeline task. The system creates, copies, and shares images based on the parameters configured in the image template.'."\n" + .'* You can execute only one pipeline task for each image template.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeImagePipelineExecutions' => [ + 'summary' => 'Queries the details of an image creation task.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29278', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the image creation task.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N of the image creation task.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the image creation task. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'null', + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ImagePipelineId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of tag N of the image creation task. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ip-2ze5tsl5bp6nf2b3****', + ], + ], + [ + 'name' => 'ExecutionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'null', + 'type' => 'string', + 'required' => false, + 'example' => 'exec-5fb8facb8ed7427c****', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'BUILDING', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image creation task.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAAdDWBF2****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the image creation task. You can specify multiple values. Separate the values with commas (,). Example: `BUILDING,DISTRIBUTING`. Valid values:'."\n" + ."\n" + .'* PREPARING: Resources, such as the intermediate instance, are being created.'."\n" + .'* REPAIRING: The source image is being repaired.'."\n" + .'* BUILDING: The user-defined commands are being run and an image is being created.'."\n" + .'* TESTING: The user-defined test commands are being run.'."\n" + .'* DISTRIBUTING: The created image is being copied and shared.'."\n" + .'* RELEASING: The temporary resources generated during the image creation process are being released.'."\n" + .'* SUCCESS: The image creation task is completed.'."\n" + .'* PARTITION_SUCCESS: The image creation task is partially completed. The image is created, but exceptions may occur when the image was copied or shared or when temporary resources were released.'."\n" + .'* FAILED: The image creation task fails.'."\n" + .'* TEST_FAILED: The image is created, but the test fails.'."\n" + .'* CANCELLING: The image creation task is being canceled.'."\n" + .'* CANCELLED: The image creation task is canceled.'."\n" + ."\n" + .'> If you leave this parameter empty, all image creation tasks are queried regardless of task status.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'minimum' => '1', + 'example' => '50', + 'default' => '50', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The pagination token that is used in the request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of `NextToken`.'."\n", + 'type' => 'string', + 'example' => 'AAAAAdDWBF2****', + ], + 'RequestId' => [ + 'description' => 'The maximum number of entries per page. Valid values: 1 to 500'."\n" + ."\n" + .'Default value: 50.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. If NextToken is empty, no next page exists. For information about how to use the returned value, see the "Usage notes" section in this topic.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'MaxResults' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '50', + ], + 'ImagePipelineExecution' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ImagePipelineExecutionSet' => [ + 'description' => 'The total number of returned image components.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The maximum number of entries per page.'."\n", + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'Details of the image creation tasks.'."\n", + 'type' => 'string', + 'example' => '2020-11-24T06:00:00Z', + ], + 'ImagePipelineId' => [ + 'description' => 'Details of the image creation task.'."\n", + 'type' => 'string', + 'example' => 'ip-2ze5tsl5bp6nf2b3****', + ], + 'Status' => [ + 'description' => 'The time when the image creation task was created.'."\n", + 'type' => 'string', + 'example' => 'BUILDING', + ], + 'ModifiedTime' => [ + 'description' => 'The ID of the image template.'."\n", + 'type' => 'string', + 'example' => '2020-11-25T06:00:00Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The status of the image creation task. Valid values:'."\n" + ."\n" + .'* PREPARING: Resources, such as intermediate instances, are being created.'."\n" + .'* REPAIRING: The source image is being repaired.'."\n" + .'* BUILDING: The user-defined commands are being run and an image is being created.'."\n" + .'* TESTING: The user-defined test commands are being run.'."\n" + .'* DISTRIBUTING: The created image is being copied and shared.'."\n" + .'* RELEASING: The temporary resources generated during the image creation process are being released.'."\n" + .'* SUCCESS The image creation task is completed.'."\n" + .'* PARTITION_SUCCESS: The image creation task is partially completed. The image is created, but exceptions may occur when the image was copied or shared or when temporary resources were released.'."\n" + .'* FAILED: The image creation task fails.'."\n" + .'* TEST_FAILED: The image is created, but the test fails.'."\n" + .'* CANCELLING: The image creation task is being canceled.'."\n" + .'* CANCELLED: The image creation task is canceled.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'Message' => [ + 'description' => 'The last modification time of the image creation task.'."\n", + 'type' => 'string', + 'example' => 'Create transition vpc "vpc-2ze70rc7093j9idu6****" success!', + ], + 'ImageId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'm-bp67acfmxazb4p****', + ], + 'ExecutionId' => [ + 'description' => 'The data returned.'."\n", + 'type' => 'string', + 'example' => 'exec-5fb8facb8ed7427c****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The ID of the image.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the image creation task.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tags of the image creation task.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + 'TagKey' => [ + 'description' => 'The tag of the image creation task.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Status', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter.ImagePipelineId', + 'errorMessage' => 'The specified parameter ImagePipelineId should not be empty.', + ], + [ + 'errorCode' => 'InvalidExecutionId.SizeExceeded', + 'errorMessage' => 'ExecutionId list exceeds maximum size of %s. Current size is %s.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Invalid.NextToken', + 'errorMessage' => 'The specified NextToken is not valid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidImagePipeline.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 50,\\n \\"ImagePipelineExecution\\": {\\n \\"ImagePipelineExecutionSet\\": [\\n {\\n \\"CreationTime\\": \\"2020-11-24T06:00:00Z\\",\\n \\"ImagePipelineId\\": \\"ip-2ze5tsl5bp6nf2b3****\\",\\n \\"Status\\": \\"BUILDING\\",\\n \\"ModifiedTime\\": \\"2020-11-25T06:00:00Z\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"Message\\": \\"Create transition vpc \\\\\\"vpc-2ze70rc7093j9idu6****\\\\\\" success!\\",\\n \\"ImageId\\": \\"m-bp67acfmxazb4p****\\",\\n \\"ExecutionId\\": \\"exec-5fb8facb8ed7427c****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestKey\\",\\n \\"TagKey\\": \\"TestValue\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n AAAAAdDWBF2****\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 50\\n \\n \\n BUILDING\\n rg-bp67acfmxazb4p****\\n Create transition vpc \\"vpc-2ze70rc7093j9idu6****\\" success!\\n 2020-11-25T06:00:00Z\\n ip-2ze5tsl5bp6nf2b3****\\n m-bp67acfmxazb4p****\\n 2020-11-24T06:00:00Z\\n exec-5fb8facb8ed7427c****\\n \\n \\n \\n \\n TestKey\\n TestValue\\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeImagePipelineExecutions', + 'description' => 'The status of the image creation task. Valid values:'."\n" + ."\n" + .'* PREPARING: Resources, such as intermediate instances, are being created.'."\n" + .'* REPAIRING: The source image is being repaired.'."\n" + .'* BUILDING: The user-defined commands are being run and an image is being created.'."\n" + .'* TESTING: The user-defined test commands are being run.'."\n" + .'* DISTRIBUTING: The created image is being copied and shared.'."\n" + .'* RELEASING: The temporary resources generated during the image creation process are being released.'."\n" + .'* SUCCESS The image creation task is completed.'."\n" + .'* PARTITION_SUCCESS: The image creation task is partially completed. The image is created, but exceptions may occur when the image was copied or shared or when temporary resources were released.'."\n" + .'* FAILED: The image creation task fails.'."\n" + .'* TEST_FAILED: The image is created, but the test fails.'."\n" + .'* CANCELLING: The image creation task is being canceled.'."\n" + .'* CANCELLED: The image creation task is canceled.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CancelImagePipelineExecution' => [ + 'summary' => 'Cancels an image building task.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29246', + 'abilityTreeNodes' => [ + 'FEATUREecs4FTFEV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'TemplateTag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Value' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ExecutionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image building task.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'exec-5fb8facb8ed7427c****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidStatus.CancelFailed', + 'errorMessage' => 'Failed to cancel execution,status is success, failed or cancelled.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidStatus.ImagePipelineExecution', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidImagePipelineExecution.NotFound', + 'errorMessage' => 'The specified image pipeline execution does not exist!', + ], + [ + 'errorCode' => 'InvalidImagePipelineExecutionId.NotFound', + 'errorMessage' => 'The specified ImagePipelineExecutionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\r\\n","errorExample":""}]', + 'title' => 'CancelImagePipelineExecution', + 'description' => 'Before you call the CancelImagePipelineExecution operation, make sure that the image building task to be canceled is in the BUILDING, PREPARING, or REPAIRING state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateDisk' => [ + 'summary' => 'Creates a pay-as-you-go or subscription data disk.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28822', + 'abilityTreeNodes' => [ + 'FEATUREecs70JNQP', + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the disk. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the zone in which to create the pay-as-you-go disk.'."\n" + ."\n" + .'* If you do not specify InstanceId, you must specify ZoneId.'."\n" + .'* You cannot specify both ZoneId and InstanceId in the same request.'."\n" + ."\n" + .'> You do not need to specify this parameter if you set DiskCategory to `cloud_regional_disk_auto` to create a Regional ESSD.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot to use to create the disk. Snapshots that were created on or before July 15, 2013 cannot be used to create disks.'."\n" + ."\n" + .'The following limits apply to `SnapshotId` and `Size`:'."\n" + ."\n" + .'* If the size of the snapshot specified by `SnapshotId` is larger than the value of `Size`, the size of the created disk is equal to the specified snapshot size.'."\n" + .'* If the size of the snapshot specified by `SnapshotId` is smaller than the value of `Size`, the size of the created disk is equal to the value of `Size`.'."\n" + .'* You cannot create elastic ephemeral disks from snapshots.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DiskName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the data disk. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-). The name must start with a letter.'."\n" + ."\n" + .'This parameter is left empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDiskName', + ], + ], + [ + 'name' => 'Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the data disk. Unit: GiB. This parameter is required. Valid values for different disk categories:'."\n" + ."\n" + .'* Valid values when DiskCategory is set to cloud: 5 to 2000.'."\n" + ."\n" + .'* Valid values when DiskCategory is set to cloud_efficiency: 20 to 32768.'."\n" + ."\n" + .'* Valid values when DiskCategory is set to cloud_ssd: 20 to 32768.'."\n" + ."\n" + .'* Valid values when DiskCategory is set to cloud_essd: vary based on the `PerformanceLevel` value.'."\n" + ."\n" + .' * Valid values when PerformanceLevel is set to PL0: 1 to 65536.'."\n" + .' * Valid values when PerformanceLevel is set to PL1: 20 to 65536.'."\n" + .' * Valid values when PerformanceLevel is set to PL2: 461 to 65536.'."\n" + .' * Valid values when PerformanceLevel is set to PL3: 1261 to 65536.'."\n" + ."\n" + .'* Valid values when DiskCategory is set to cloud_auto: 1 to 65536.'."\n" + ."\n" + .'* Valid values when DiskCategory is set to cloud_essd_entry: 10 to 32768.'."\n" + ."\n" + .'* Valid values when DiskCategory is set to cloud_regional_disk_auto: 10 to 65536.'."\n" + ."\n" + .'* Valid values when DiskCategory is set to elastic_ephemeral_disk_standard: 64 to 8192.'."\n" + ."\n" + .'* Valid values when DiskCategory is set to elastic_ephemeral_disk_premium: 64 to 8192.'."\n" + ."\n" + .'If you specify `SnapshotId`, the following limits apply to `SnapshotId` and `Size`:'."\n" + ."\n" + .'* If the size of the snapshot specified by `SnapshotId` is larger than the value of `Size`, the size of the created disk is equal to the size of the snapshot.'."\n" + .'* If the size of the snapshot specified by `SnapshotId` is smaller than the value of `Size`, the size of the created disk is equal to the value of `Size`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '262144', + 'minimum' => '1', + 'example' => '2000', + ], + ], + [ + 'name' => 'DiskCategory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the data disk. Valid values for different disk categories:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: utra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: ESSD'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* cloud_essd_entry: ESSD Entry disk'."\n" + .'* cloud_regional_disk_auto: Regional ESSD'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk'."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk'."\n" + ."\n" + .'Default value: cloud.'."\n" + ."\n" + .'Enumerated values:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: SSD'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* cloud_regional_disk_auto: Regional ESSD'."\n" + .'* cloud_essd: ESSD'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk.'."\n" + .'* cloud_essd: ESSD'."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [], + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the disk. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n" + ."\n" + .'This parameter is left empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'Encrypted', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to encrypt the disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The **token** can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the subscription instance to which to attach the subscription disk.'."\n" + ."\n" + .'* If you specify an instance ID, the following parameters are ignored: ResourceGroupId, Tag.N.Key, Tag.N.Value, ClientToken, and KMSKeyId.'."\n" + .'* You cannot specify both ZoneId and InstanceId in a request.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that a pay-as-you-go disk is created in the region and zone specified by RegionId and ZoneId.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp18pnlg1ds9rky4****', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to add the disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'KMSKeyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Key Management Service (KMS) key that is used for the disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40826X', + 'maxLength' => 64, + ], + ], + [ + 'name' => 'PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the disk if the disk is an ESSD. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'Default value: PL1.'."\n" + ."\n" + .'For information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + ], + [ + 'name' => 'AdvancedFeatures', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'StorageSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the storage set.'."\n" + ."\n" + .'> You cannot specify storage set-related parameters (`StorageSetId` and `StorageSetPartitionNumber`) and the dedicated block storage cluster-related parameter (`StorageClusterId`) at the same time. Otherwise, the operation cannot be called.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ss-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'EncryptAlgorithm', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'StorageSetPartitionNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of partitions in the storage set. The value must be greater than or equal to 2 but cannot exceed the quota obtained by calling the [DescribeAccountAttributes](~~73772~~)operation.'."\n" + ."\n" + .'Default value: 2.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '3', + ], + ], + [ + 'name' => 'StorageClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the dedicated block storage cluster in which to create the disk. To create a disk in a specific dedicated block storage cluster, you must specify this parameter.'."\n" + ."\n" + .'> You can specify the storage set-related parameters (`StorageSetId` and `StorageSetPartitionNumber`) or the dedicated block storage cluster-related parameter (`StorageClusterId`), but not both. If you specify a storage set-related parameter and a dedicated block storage cluster-related parameter in a request, the request fails.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dbsc-j5e1sf2vaf5he8m2****', + ], + ], + [ + 'name' => 'MultiAttach', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the multi-attach feature for the disk. Valid values:'."\n" + ."\n" + .'* Disabled'."\n" + .'* Enabled Set the value to `Enabled` only for ESSDs.'."\n" + ."\n" + .'Default value: Disabled.'."\n" + ."\n" + .'> Disks for which the multi-attach feature is enabled support only the pay-as-you-go billing method. When `MultiAttach` is set to Enabled, you cannot specify `InstanceId`. You can call the [AttachDisk](~~25515~~) operation to attach disks to instances after the disks are created. Disks for which the multi-attach feature is enabled can be attached only as data disks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Disabled', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the disk.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag to add to the disk.'."\n", + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The key of tag N to add to the disk.'."\n" + ."\n" + .'> We recommend that you use Tag.N.Key to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test', + ], + 'Key' => [ + 'description' => 'The key of tag N to add to the disk. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the disk. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The value of tag N to add to the disk.'."\n" + ."\n" + .'> We recommend that you use Tag.N.Value to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'Arn', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'RoleType' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'Rolearn' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'AssumeRoleFor' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1000000000', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'ProvisionedIops', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies the read/write IOPS that is provisioned for the ESSD AutoPL disk. Valid value:'."\n" + ."\n" + .'* Capacity (GiB) <= 3: not configurable'."\n" + .'* Capacity (GiB) >= 4: \\[0, min{(1,000'."\n" + ."\n" + .'IOPS/GiB × Capacity - Baseline IOPS), 50,000}]'."\n" + ."\n" + .'Baseline performance: max{min{1,800 + 50 × Capacity, 50,000}, 3,000}'."\n" + ."\n" + .'> This parameter is available only if you set `DiskCategory` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'minimum' => '0', + 'example' => '40000', + ], + ], + [ + 'name' => 'BurstingEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the performance burst feature. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'> This parameter is available only if you set `DiskCategory` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'DiskId' => [ + 'description' => 'The disk ID.'."\n", + 'type' => 'string', + 'example' => 'd-bp131n0q38u3a4zi****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'OrderId' => [ + 'description' => 'The order ID.'."\n" + ."\n" + .'> The order ID is returned only when you create a subscription disk.'."\n", + 'type' => 'string', + 'example' => '20413515388****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSize.ValueNotSupported', + 'errorMessage' => 'The specified parameter Size is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskName.Malformed', + 'errorMessage' => 'The specified disk name is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter either "SnapshotId" or "Size" should be specified.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not support.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has an outstanding payment.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DiskCategory" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified Zone is not available or not authorized.', + ], + [ + 'errorCode' => 'InvalidDiskSize.NotSupported', + 'errorMessage' => 'The specified parameter size is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskSizeOrCategory', + 'errorMessage' => 'The specified disk category or size is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.EncryptedIllegal', + 'errorMessage' => 'The specified parameter Encrypted must be true when kmsKeyId is not empty.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Arns', + 'errorMessage' => 'The specified Arns is not valid.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.Malformed', + 'errorMessage' => 'The specified parameter PerformanceLevel is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ConflictSnapshotCategory', + 'errorMessage' => 'The specified disk category conflict with snapshot category.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchEncryptAlgorithm', + 'errorMessage' => 'The specified parameter Encrypted must be true when EncryptAlgorithm is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchKmsKeyId', + 'errorMessage' => 'The specified parameter Encrypted must be true when KmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is different from the encrypt algorithm of the snapshot.', + ], + [ + 'errorCode' => 'InvalidKmsKeyId.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter KmsKeyId is different from the KmsKeyId of the snapshot.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is not valid.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.ValueNotSupported', + 'errorMessage' => 'The current ZoneId does not support PL0 of cloud_essd.', + ], + [ + 'errorCode' => 'InvalidKMSKeyId.NotSymmetric', + 'errorMessage' => 'The specified parameter KmsKeyId must be symmetric.', + ], + [ + 'errorCode' => 'InvalidStorageSetId.NotFound', + 'errorMessage' => 'The specified storage set does not exist.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.StatusNotSupport', + 'errorMessage' => 'The current status of the dedicated storage cluster cannot create a cloud disk yet.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.ConflictWithStorageSetId', + 'errorMessage' => 'The specified StorageClusterId is in conflict with storageSetId.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.ConflictWithInstanceId', + 'errorMessage' => 'The specified StorageClusterId is in conflict with instanceId.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.CategoryNotMatch', + 'errorMessage' => 'The current dedicated storage cluster cannot create this category of disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.PerformanceLevelNotMatch', + 'errorMessage' => 'The current dedicated storage cluster cannot create this performance level of disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.CapacityNotEnough', + 'errorMessage' => 'The remaining capacity of the current dedicated storage cluster is less than the size of disk.', + ], + [ + 'errorCode' => 'InvalidCloudBoxZone.EncryptedNotSupported', + 'errorMessage' => 'The cloud box zone does not support creating encrypted disks.', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => 'The specified instance has no system disk.', + ], + [ + 'errorCode' => 'ProvisionedIopsForDiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support provisioned iops.', + ], + [ + 'errorCode' => 'InvalidProvisionedIops.LimitExceed', + 'errorMessage' => 'The provisioned iops exceeds the limit.', + ], + [ + 'errorCode' => 'BurstingEnabledForDiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support bursting enabled.', + ], + [ + 'errorCode' => 'BurstingEnabledForMultiAttachDiskUnsupported', + 'errorMessage' => 'The multi attach disk does not support bursting enabled.', + ], + [ + 'errorCode' => 'ProvisionedIopsForDiskCategoryRequired', + 'errorMessage' => 'The provisioned iops is required for this disk category.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.RegionId', + 'errorMessage' => 'The specified region does not support creating encrypted disks with native snapshot encrypt.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.ZoneId', + 'errorMessage' => 'The specified zone does not support creating encrypted disks with native snapshot encrypt.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.ShareImage', + 'errorMessage' => 'Shared snapshot creating encrypted disks with native snapshot encrypt is not supported.', + ], + [ + 'errorCode' => 'NotSupport.SnapshotEncryptedAlgorithmConflict', + 'errorMessage' => 'Changing encrypt algorithm with encrypted snapshot is not supported.', + ], + [ + 'errorCode' => 'QuotaExceed.DiskCapacity', + 'errorMessage' => 'The used capacity of disk type has exceeded the quota in the zone, %s.', + ], + [ + 'errorCode' => 'InsufficientBalance.AgentAccount', + 'errorMessage' => 'The account balance is insufficient. Please contact your channel partner to recharge in time.', + ], + [ + 'errorCode' => 'InvalidParam.EncryptedMismatch', + 'errorMessage' => 'Creating encrypted disks with shared encrypted snapshots requires replacing encryption keys.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance, please contact your partner to increase your account balance.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnable', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidZoneId.DiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support setting the ZoneId.', + ], + [ + 'errorCode' => 'InvalidStorageSetId.DiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support setting the StorageSetId.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.DiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support setting the StorageClusterId.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted', + 'errorMessage' => 'Creating non-encrypted disks with encrypted snapshots is not supported.', + ], + [ + 'errorCode' => 'EncryptedOption.Conflict', + 'errorMessage' => 'Disk encryption attributes conflict.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.NotSupported', + 'errorMessage' => 'Specified disk category is not supported.', + ], + [ + 'errorCode' => 'InvalidBurstingEnabled.DiskSizeTooSmall', + 'errorMessage' => 'The disk size must be greater than 3 GiB to enable burst.', + ], + [ + 'errorCode' => 'OperationDenied.RiskIssue', + 'errorMessage' => 'Your action is denied by risk issue, please contact customer service.', + ], + [ + 'errorCode' => 'InvalidDiskSize.ExceedsMultiAttachLimit', + 'errorMessage' => 'The specified disk size exceeds the maximum limit 65536 for enabling multi-attach.', + ], + [ + 'errorCode' => 'InvalidStatus.ValueNotSupported', + 'errorMessage' => 'The specified instance status is not supported for this operation, expect status is Running or Stopped.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDataDiskCategory.NotSupported', + 'errorMessage' => 'Specified disk category is not supported.', + ], + [ + 'errorCode' => 'InstanceDiskCategoryLimitExceed', + 'errorMessage' => 'The total size of specified disk category in an instance exceeds.', + ], + [ + 'errorCode' => 'InvalidSnapshot.NotReady', + 'errorMessage' => 'The specified snapshot creation is not completed yet.', + ], + [ + 'errorCode' => 'InvalidSnapshot.TooOld', + 'errorMessage' => 'This operation is forbidden because the specified snapshot is created before 2013-07-15.', + ], + [ + 'errorCode' => 'InvalidSnapshot.TooLarge', + 'errorMessage' => 'The capacity of snapshot exceeds 2000GB.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified snapshot is not allowed to create disk.', + ], + [ + 'errorCode' => 'QuotaExceed.PortableCloudDisk', + 'errorMessage' => 'The quota of portable cloud disk exceeds.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueUnauthorized', + 'errorMessage' => 'The disk category is not authorized.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The specified snapshot has not completed yet.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotDataDiskSnapshot', + 'errorMessage' => 'The specified snapshot is system disk snapshot.', + ], + [ + 'errorCode' => 'InvalidDiskSize.TooSmall', + 'errorMessage' => 'Specified disk size is less than the size of snapshot.', + ], + [ + 'errorCode' => 'InvalidDiskSize.NotSupported', + 'errorMessage' => 'Disk size is not supported.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'InvalidPayMethod', + 'errorMessage' => 'The specified pay method is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not supported.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'QuotaExceed.PostPaidDisk', + 'errorMessage' => 'Living postPaid disks quota exceeded.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support byok.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'SecurityRisk.3DVerification', + 'errorMessage' => 'We have detected a security risk with your default credit or debit card. Please proceed with verification via the link in your email.', + ], + [ + 'errorCode' => 'InvalidParameter.AdvancedFeatures', + 'errorMessage' => 'The specified parameter AdvancedFeatures is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.ValueNotSupported', + 'errorMessage' => 'The InstanceChargeType does not support this action.', + ], + [ + 'errorCode' => 'InvalidStatus.Upgrading', + 'errorMessage' => 'The instance is upgrading; please try again later.', + ], + [ + 'errorCode' => 'InvalidParam.ZoneIdAndInstanceId.Conflict', + 'errorMessage' => 'The specified parameter \'ZoneId\' and \'InstanceId\' are not blank at the same time.', + ], + [ + 'errorCode' => 'OperationDenied.PerformanceLevelNotMatch', + 'errorMessage' => 'The specified PerformanceLevel and Size do not match.', + ], + [ + 'errorCode' => 'InvalidStorageSetName.Malformed', + 'errorMessage' => 'Specified parameter StorageSetName is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'Specified parameter Description is not valid.', + ], + [ + 'errorCode' => 'InvalidMaxPartitionNumber.Malformed', + 'errorMessage' => 'Specified parameter MaxPartitionNumber is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetPartitionNumber', + 'errorMessage' => 'Specified parameter StorageSetPartitionNumber is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetId', + 'errorMessage' => 'Specified parameter StorageSetId is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.StorageSetZoneId', + 'errorMessage' => 'Specified parameter StorageSetZoneId is not valid.', + ], + [ + 'errorCode' => 'QuotaExceed.Tags', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceeded.PostpaidDataDiskCapacity', + 'errorMessage' => 'The quota of postpaid data disk capacity exceeds.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportEncryptAlgorithm', + 'errorMessage' => 'The current region does not support creating encrypted disks with EncryptAlgorithm.', + ], + [ + 'errorCode' => 'OperationDenied.SnapshotNotAllowed', + 'errorMessage' => 'The specified snapshot is not allowed to create disk.', + ], + [ + 'errorCode' => 'LastTokenProcessing', + 'errorMessage' => 'The last token request is processing.', + ], + [ + 'errorCode' => 'InvalidParameter.MultiAttach', + 'errorMessage' => 'The specified param MultiAttach is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.MultiAttachAndInstanceIdConflict', + 'errorMessage' => 'The parameter MultiAttach and InstanceId are conflict.', + ], + [ + 'errorCode' => 'InvalidParameter.DiskCategoryAndMultiAttachConflict', + 'errorMessage' => 'The specified disk category does not support multi attach set.', + ], + [ + 'errorCode' => 'InvalidParameter.DiskCategoryAndMultiAttachNotMatch', + 'errorMessage' => 'The specified disk category does not support multi attach enabled.', + ], + [ + 'errorCode' => 'OperationDenied.ZoneNotSupportMultiAttachDisk', + 'errorMessage' => 'The specified zone does support multi attach disk.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.CouponAmountNotEnough', + 'errorMessage' => 'Your coupon balance is insufficient or has expired.', + ], + [ + 'errorCode' => 'InvalidOperation.CreateFromSnapshotUnsupported', + 'errorMessage' => 'The elastic ephemeral disk cannot be created from snapshot.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.DiskCategory', + 'errorMessage' => 'The specified disk category does not support creating encrypted system disks or creating encrypted data disks from snapshots. Check the DiskCategory or Encrypted parameter, or check your account for default encryption settings.', + ], + [ + 'errorCode' => 'InvalidParameter.DataEncryptedKeyCreateFailed', + 'errorMessage' => 'Create kms data encrypted key fail. If you need further assistance, you can contact the KMS Technical Support.', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => 'The resource in the specified zone is no longer available for sale. Please try other regions and zones.', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => 'You are not authorized to perform the operation in the specified region.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified Category of Data Disk is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.EncryptedNotSupported', + 'errorMessage' => 'The current disk category does not support encryption. If encryption is required, please switch to a different disk category.', + ], + [ + 'errorCode' => 'InvalidDataDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified disk size is beyond the permitted range, or the snapshot capacity exceeds the size limit for the specified disk category.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter Encrypted must be set to true when creating disks with encrypted snapshots.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchDiskDefaultEncryption', + 'errorMessage' => 'Enabling disk default encryption prevents the creation of non-encrypted disks.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus', + 'errorMessage' => 'The current status of the instance does not support this operation.', + ], + [ + 'errorCode' => 'InvalidDiskSize.NotSupportMultiAttachDisk', + 'errorMessage' => 'The specified disk size exceeds the maximum limit 65536 for enabling multi-attach.', + ], + [ + 'errorCode' => 'InstanceDiskLimitExceeded', + 'errorMessage' => 'The amount of the disk on instance reach its limits.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The specified zone does not exist.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified SnapshotId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.NotExist', + 'errorMessage' => 'The specified StorageClusterId does not exist in current region.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"DiskId\\": \\"d-bp131n0q38u3a4zi****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"OrderId\\": \\"20413515388****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n d-bp131n0q38u3a4zi****\\n","errorExample":""}]', + 'title' => 'CreateDisk', + 'description' => '* You can enable the multi-attach (`MultiAttach`) feature when you create a disk. Before you enable the multi-attach feature, we recommend that you familiarize yourself with the feature and the limits on the feature. For more information, see [NVMe protocol](~~256487~~) and [Use the multi-attach feature to attach a cloud disk to multiple ECS instances](~~262105~~).'."\n" + ."\n" + .'* You can create disks of the following disk categories: basic disks, ultra disks, standard SSDs, Enterprise SSDs (ESSDs), ESSD Entry disks, Regional ESSDs, ESSD AutoPL disks, standard elastic ephemeral disks, and premium elastic ephemeral disks.'."\n" + ."\n" + .'* Before you can create a disk, you must complete real-name verification. Complete real-name verification on the [Real-name Verification](https://account.console.aliyun.com/#/auth/home) page in the Alibaba Cloud Management Console.'."\n" + ."\n" + .'* When you create disks, you may be charged for the resources used. We recommend that you familiarize yourself with the billing methods of Elastic Compute Service (ECS) resources before you create a disk. For more information, see [Billing overview](~~25398~~).'."\n" + ."\n" + .'* When you call this operation to create a disk, specific parameters are automatically specified.'."\n" + ."\n" + .' * `DeleteAutoSnapshot` is automatically set to `true` when a disk is created. This indicates that the automatic snapshots of the disk are deleted when the disk is released. You can call the [DescribeDisks](~~2679767~~) operation to query the DeleteAutoSnapshot value for the disk and call the [ModifyDiskAttribute](~~25517~~) operation to change the DeleteAutoSnapshot value for the disk.'."\n" + .' * If you do not specify a performance level when you create an ESSD, the performance level of the ESSD is automatically set to PL1. To change the performance level of the ESSD, you can call the [ModifyDiskSpec](~~123780~~) operation.'."\n" + .' * `Portable` is automatically set to `true` when a disk is created, which indicates that the disk is a pay-as-you-go disk.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeDisks' => [ + 'summary' => 'Queries block storage devices that you created, including cloud disks, local disks, and elastic ephemeral disks.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28923', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the disk. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'DiskIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of cloud disks, local disks, or elastic ephemeral disks. The value is a JSON array that consists of up to 100 disk IDs. Separate the disk IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["d-bp67acfmxazb4p****", "d-bp67acfmxazb4g****", … "d-bp67acfmxazb4d****"]', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Elastic Compute Service (ECS) instance to which the disk is attached.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4q****', + ], + ], + [ + 'name' => 'DiskType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the disk. Valid values:'."\n" + ."\n" + .'* all: system disk and data disk'."\n" + .'* system: system disk'."\n" + .'* data: data disk'."\n" + ."\n" + .'Default value: all.'."\n" + ."\n" + .'> Elastic ephemeral disks cannot be used as system disks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'all', + ], + ], + [ + 'name' => 'Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The disk category. Valid values:'."\n" + ."\n" + .'* all: all disk categories'."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: Enterprise SSD (ESSD)'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* cloud_regional_disk_auto: Regional ESSD'."\n" + .'* cloud_essd_entry: ESSD Entry disk'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk'."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk'."\n" + .'* local_ssd_pro: I/O-intensive local disk'."\n" + .'* local_hdd_pro: throughput-intensive local disk'."\n" + .'* ephemeral: retired local disk'."\n" + .'* ephemeral_ssd: retired local SSD'."\n" + ."\n" + .'Default value: all.'."\n" + ."\n" + .'Enumerated values:'."\n" + ."\n" + .'* all: all disks categories'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* local_ssd_pro: I/O-intensive local disk'."\n" + .'* ephemeral: retired local disk'."\n" + .'* cloud_essd_entry: ESSD Entry disk'."\n" + .'* elastic_ephemeral_disk_premium: premium elastic ephemeral disk'."\n" + .'* cloud: basic disk'."\n" + .'* ephemeral_ssd: retired local SSD'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* cloud_regional_disk_auto: Regional ESSD'."\n" + .'* cloud_essd: ESSD'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk'."\n" + .'* local_hdd_pro: throughput-intensive local disk'."\n", + 'type' => 'string', + 'required' => false, + 'enumValueTitles' => [], + 'example' => 'all', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the disk. For more information, see [Disk states](~~25689~~). Valid values:'."\n" + ."\n" + .'* In_use'."\n" + .'* Available'."\n" + .'* Attaching'."\n" + .'* Detaching'."\n" + .'* Creating'."\n" + .'* ReIniting'."\n" + .'* All'."\n" + ."\n" + .'Default value: All.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'All', + ], + ], + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot from which you create the cloud disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Portable', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the disk is removable. Valid values:'."\n" + ."\n" + .'* true: The disk is removable. A removable disk can independently exist and can be attached to or detached from an instance within the same zone.'."\n" + .'* false: The disk is not removable. A disk that is not removable cannot independently exist or be attached to or detached from an instance within the same zone.'."\n" + ."\n" + .'The `Portable` attribute of the following types of disks is `false`, and these types of disks share the same lifecycle with their associated instances:'."\n" + ."\n" + .'* Local disks'."\n" + .'* Local SSDs'."\n" + .'* Subscription data disks'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DeleteWithInstance', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the disk is released when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true: The disk is released when the associated instance is released.'."\n" + .'* false: The disk is retained as a pay-as-you-go data disk when the associated instance is released.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DeleteAutoSnapshot', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to delete the automatic snapshots of the cloud disk after the disk is released.'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use `NextToken` and `MaxResults` for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use `NextToken` and `MaxResults` for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The query token. Set the value to the `NextToken` value that was returned in the last call to this operation.'."\n" + ."\n" + .'For more information about how to check the responses returned by this operation, see the preceding "Description" section.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAAdDWBF2****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page. Valid values: 10 to 500.'."\n" + ."\n" + .'Default value:'."\n" + ."\n" + .'* If you do not specify this parameter or you set this parameter to a value less than 10, the default value is 10.'."\n" + .'* If you set this parameter to a value greater than 500, the default value is 500.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'minimum' => '1', + 'example' => '50', + ], + ], + [ + 'name' => 'DiskName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the disk. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDiskName', + ], + ], + [ + 'name' => 'AutoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy that is applied to the cloud disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-m5e2w2jutw8bv31****', + ], + ], + [ + 'name' => 'EnableAutoSnapshot', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the automatic snapshot policy feature is enabled for the cloud disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'> This parameter is deprecated. By default, the automatic snapshot policy feature is enabled for cloud disks. You need to only apply an automatic snapshot policy to a cloud disk before you can use the automatic snapshot policy.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'EnableAutomatedSnapshotPolicy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether an automatic snapshot policy is applied to the cloud disk.'."\n" + ."\n" + .'* true: An automatic snapshot policy is applied to the cloud disk.'."\n" + .'* false: No automatic snapshot policy is applied to the cloud disk.'."\n" + ."\n" + .'Default value: false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DiskChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the disk. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription'."\n" + .'* PostPaid: pay-as-you-go'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'LockReason', + 'in' => 'query', + 'schema' => [ + 'description' => 'The reason why the disk is locked. Valid values:'."\n" + ."\n" + .'* financial: The disk is locked due to overdue payments.'."\n" + .'* security: The disk is locked due to security reasons.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'recycling', + ], + ], + [ + 'name' => 'Filter.1.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key of filter 1 used to query resources. Set the value to `CreationStartTime`. You can specify a time by setting both `Filter.1.Key` and `Filter.1.Value` to query resources that were created after the specified time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationStartTime', + ], + ], + [ + 'name' => 'Filter.2.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key of filter 2 used to query resources. Set the value to `CreationEndTime`. You can specify a time by setting both `Filter.2.Key` and `Filter.2.Value` to query resources that were created before the specified time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationEndTime', + ], + ], + [ + 'name' => 'Filter.1.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of filter 1 used to query resources. Set the value to a time. If you specify this parameter, you must also specify the `Filter.1.Key` parameter. Specify the time in the `yyyy-MM-ddTHH:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-05T22:40Z', + ], + ], + [ + 'name' => 'Filter.2.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of filter 2 used to query resources. Set the value to a time. If you specify this parameter, you must also specify the `Filter.2.Key` parameter. Specify the time in the `yyyy-MM-ddTHH:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-06T22:40Z', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the disk belongs. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of the value specified for this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'EnableShared', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the disk is a Shared Block Storage device.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Encrypted', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to query only encrypted cloud disks.'."\n" + ."\n" + .'* true: queries only encrypted cloud disks.'."\n" + .'* false: does not query encrypted cloud disks.'."\n" + ."\n" + .'Default value: false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The systems checks whether your AccessKey pair is valid, whether RAM users are granted permissions, and whether the required parameters are specified. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'KMSKeyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Key Management Service (KMS) key that is used by the cloud disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + ], + [ + 'name' => 'MultiAttach', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the multi-attach feature for the disk. Valid values:'."\n" + ."\n" + .'* Disabled'."\n" + .'* Enabled'."\n" + .'* LegacyShared: Shared Block Storage devices are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Disabled', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the disk.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The key of tag N of the disk.'."\n" + ."\n" + .'> We recommend that you use Tag.N.Key to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Key' => [ + 'description' => 'The key of tag N of the disk. Valid values of N: 1 to 20.'."\n" + ."\n" + .'If you specify a single tag to query resources, up to 1,000 resources to which the tag is added are returned. If you specify multiple tags to query resources, up to 1,000 resources to which all specified tags are added are returned. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the disk. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The value of tag N of the disk.'."\n" + ."\n" + .'> We recommend that you use Tag.N.Value to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'AdditionalAttributes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The additional attributes. Set the value to `Placement`, which indicates the data storage locations of the disk.'."\n" + ."\n" + .'> This attribute is valid only for Regional Enterprise SSDs (ESSDs).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The value of attribute N. Set the value to Placement, which indicates the data storage locations of the disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IOPS', + ], + 'required' => false, + 'example' => 'IOPS', + 'maxItems' => 5, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The returned pagination token which can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'AAAAAdDWBF2****', + ], + 'PageSize' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use `NextToken` and `MaxResults` for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageNumber' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use `NextToken` and `MaxResults` for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n" + ."\n" + .'> When using the `MaxResults` and `NextToken` parameters for a paginated query, the returned `TotalCount` parameter value is invalid.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '15', + ], + 'Disks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Disk' => [ + 'description' => 'Details about the disks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the disk.'."\n", + 'type' => 'object', + 'properties' => [ + 'SerialNumber' => [ + 'description' => 'The serial number of the disk.'."\n", + 'type' => 'string', + 'example' => 'bp18um4r4f2fve2****', + ], + 'CreationTime' => [ + 'description' => 'The time when the disk was created.'."\n", + 'type' => 'string', + 'example' => '2021-06-07T06:08:54Z', + ], + 'Status' => [ + 'description' => 'The status of the disk. Valid values:'."\n" + ."\n" + .'* In_use'."\n" + .'* Available'."\n" + .'* Attaching'."\n" + .'* Detaching'."\n" + .'* Creating'."\n" + .'* ReIniting'."\n", + 'type' => 'string', + 'example' => 'In_use', + ], + 'Type' => [ + 'description' => 'The type of the disk. Valid values:'."\n" + ."\n" + .'* system: system disk'."\n" + .'* data: data disk'."\n", + 'type' => 'string', + 'example' => 'system', + ], + 'PerformanceLevel' => [ + 'description' => 'The performance level of the ESSD. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n", + 'type' => 'string', + 'example' => 'PL0', + ], + 'BdfId' => [ + 'description' => 'This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'EnableAutoSnapshot' => [ + 'description' => 'Indicates whether the automatic snapshot policy feature is enabled for the cloud disk.'."\n" + ."\n" + .'> This parameter is deprecated. By default, the automatic snapshot policy feature is enabled for cloud disks. You need to only apply an automatic snapshot policy to a cloud disk before you can use the automatic snapshot policy.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'StorageSetId' => [ + 'description' => 'The ID of the storage set.'."\n", + 'type' => 'string', + 'example' => 'ss-i-bp1j4i2jdf3owlhe****', + ], + 'StorageSetPartitionNumber' => [ + 'description' => 'The maximum number of partitions in the storage set.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '11', + ], + 'DiskId' => [ + 'description' => 'The ID of the disk.'."\n", + 'type' => 'string', + 'example' => 'd-bp18um4r4f2fve24****', + ], + 'DeleteAutoSnapshot' => [ + 'description' => 'Indicates whether the automatic snapshots of the cloud disk are deleted when the cloud disk is released. Valid values:'."\n" + ."\n" + .'* true: The automatic snapshots of the cloud disk are deleted when the disk is released.'."\n" + .'* false: The automatic snapshots of the cloud disk are retained when the disk is released.'."\n" + ."\n" + .'Snapshots that were created in the ECS console or by calling the [CreateSnapshot](~~25524~~) operation are retained and not affected by this parameter.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'StorageClusterId' => [ + 'description' => 'The ID of the dedicated block storage cluster to which the cloud disk belongs. If your cloud disk belongs to the public block storage cluster, an empty value is returned.'."\n", + 'type' => 'string', + 'example' => 'dbsc-j5e1sf2vaf5he8m2****', + ], + 'Encrypted' => [ + 'description' => 'Indicates whether the cloud disk is encrypted.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'IOPSRead' => [ + 'description' => 'The maximum number of read operations per second.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2000', + ], + 'MountInstanceNum' => [ + 'description' => 'The number of instances to which the Shared Block Storage device is attached.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Description' => [ + 'description' => 'The description of the disk.'."\n", + 'type' => 'string', + 'example' => 'testDescription', + ], + 'Device' => [ + 'description' => 'The device name of the disk on the instance to which the disk is attached. Example: /dev/xvdb. Take note of the following items:'."\n" + ."\n" + .'* This parameter has a value only when the `Status` value is `In_use` or `Detaching`.'."\n" + .'* This parameter is empty for cloud disks for which the multi-attach feature is enabled. You can query the attachment information of the cloud disk based on the returned list of `Attachment` objects.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use other parameters to ensure future compatibility.'."\n", + 'type' => 'string', + 'example' => '/dev/xvdb', + ], + 'DiskName' => [ + 'description' => 'The name of the disk.'."\n", + 'type' => 'string', + 'example' => 'testDiskName', + ], + 'Portable' => [ + 'description' => 'Indicates whether the disk is removable.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ImageId' => [ + 'description' => 'The ID of the image that was used to create the instance. This parameter is empty unless the cloud disk was created from an image. The value of this parameter remains unchanged throughout the lifecycle of the cloud disk.'."\n", + 'type' => 'string', + 'example' => 'm-bp13aqm171qynt3u***', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key that is used for the cloud disk.'."\n", + 'type' => 'string', + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb408***', + ], + 'DeleteWithInstance' => [ + 'description' => 'Indicates whether the disk is released when the instance to which the disk is attached is released. Valid values:'."\n" + ."\n" + .'* true: The disk is released when the associated instance is released.'."\n" + .'* false: The disk is retained when the associated instance is released.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'DetachedTime' => [ + 'description' => 'The time when the disk was last detached.'."\n", + 'type' => 'string', + 'example' => '2021-06-07T21:01:22Z', + ], + 'SourceSnapshotId' => [ + 'description' => 'The ID of the snapshot that was used to create the cloud disk.'."\n" + ."\n" + .'This parameter is empty unless the cloud disk was created from a snapshot. The value of this parameter remains unchanged throughout the lifecycle of the cloud disk.'."\n", + 'type' => 'string', + 'example' => 's-bp67acfmxazb4p****', + ], + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy that is applied to the cloud disk.'."\n", + 'type' => 'string', + 'example' => 'sp-bp67acfmxazb4p****', + ], + 'EnableAutomatedSnapshotPolicy' => [ + 'description' => 'Indicates whether an automatic snapshot policy is applied to the cloud disk.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'IOPSWrite' => [ + 'description' => 'The maximum number of write operations per second.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2000', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance to which the disk is attached. Take note of the following items:'."\n" + ."\n" + .'* This parameter has a value only when the `Status` value is `In_use` or `Detaching`.'."\n" + .'* This parameter is empty for cloud disks for which the multi-attach feature is enabled. You can query the attachment information of the cloud disk based on the returned `Attachment` objects.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4q****', + ], + 'IOPS' => [ + 'description' => 'The maximum number of read and write operations per second.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '4000', + ], + 'RegionId' => [ + 'description' => 'The ID of the region to which the disk belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the subscription disk expires.'."\n", + 'type' => 'string', + 'example' => '2021-07-07T16:00Z', + ], + 'Size' => [ + 'description' => 'The size of the disk. Unit: GiB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '60', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the disk belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'DiskChargeType' => [ + 'description' => 'The billing method of the disk. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription'."\n" + .'* PostPaid: pay-as-you-go'."\n", + 'type' => 'string', + 'example' => 'PrePaid', + ], + 'ZoneId' => [ + 'description' => 'The ID of the zone to which the disk belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-i', + ], + 'AttachedTime' => [ + 'description' => 'The time when the disk was last attached. The time follows the ISO 8601 standard in the yyyy-MM-ddThh:mmZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-06-07T06:08:56Z', + ], + 'Category' => [ + 'description' => 'The category of the disk. Valid values:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: ESSD'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* local_ssd_pro: I/O-intensive local disk'."\n" + .'* local_hdd_pro: throughput-intensive local disk'."\n" + .'* cloud_essd_entry: ESSD Entry disk'."\n" + .'* elastic_ephemeral_disk_standard: standard elastic ephemeral disk'."\n" + .'* elastic_ephemeral_disk_premium: premium static ephemeral disk'."\n" + .'* ephemeral: retired local disk'."\n" + .'* ephemeral_ssd: retired local SSD'."\n", + 'type' => 'string', + 'example' => 'cloud_ssd', + ], + 'ProductCode' => [ + 'description' => 'The product code of the disk in Alibaba Cloud Marketplace.'."\n", + 'type' => 'string', + 'example' => 'jxsc000204', + ], + 'MultiAttach' => [ + 'description' => 'Indicates whether the multi-attach feature is enabled for the cloud disk.'."\n", + 'type' => 'string', + 'example' => 'Disabled', + ], + 'OperationLocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'OperationLock' => [ + 'description' => 'The reasons why the disk was locked.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The reasons why the disk is locked.'."\n", + 'type' => 'object', + 'properties' => [ + 'LockReason' => [ + 'description' => 'The reason why the disk was locked.'."\n", + 'type' => 'string', + 'example' => 'security', + ], + ], + ], + ], + ], + ], + 'MountInstances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'MountInstance' => [ + 'description' => 'The attachment information of the Shared Block Storage device.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The attachment information of the Shared Block Storage device.'."\n", + 'type' => 'object', + 'properties' => [ + 'AttachedTime' => [ + 'description' => 'The time when the disk was attached. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2017-12-05T2340:00Z', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance to which the disk is attached.'."\n", + 'type' => 'string', + 'example' => 'i-bp1j4i2jdf3owlhe****', + ], + 'Device' => [ + 'description' => 'The mount point of the disk.'."\n", + 'type' => 'string', + 'example' => '/dev/xvda', + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the disk.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags of the disk.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value of the disk.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key of the disk.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'Attachments' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Attachment' => [ + 'description' => 'The attachment information of the disk. The value is an array that consists of the `Attachment` values. This value is not returned when you query Shared Block Storage devices.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The attachment information of the cloud disk. The value is an array that consists of the `Attachment` values. However, this value is not returned when you query Shared Block Storage devices.'."\n", + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the instance to which the disk is attached.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4q****', + ], + 'Device' => [ + 'description' => 'The device name of the disk.'."\n", + 'type' => 'string', + 'example' => '/dev/xvda', + ], + 'AttachedTime' => [ + 'description' => 'The time when the disk was attached. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-06-07T06:08:56Z', + ], + ], + ], + ], + ], + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk. Valid values: 0 to min{50,000, 1,000 × *Capacity - Baseline IOPS}. Baseline IOPS = min{1,800 + 50 × *Capacity, 50,000}'."\n" + ."\n" + .'This parameter is available only if you set `Category` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '40000', + ], + 'BurstingEnabled' => [ + 'description' => 'Indicates whether the performance burst feature is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'This parameter is available only if you set `Category` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Throughput' => [ + 'description' => 'The amount of data that can be transferred per second. Unit: MB/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'ThroughputRead' => [ + 'description' => 'The amount of data that can be read per second. Unit: MB/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'ThroughputWrite' => [ + 'description' => 'The amount of data that can be written per second. Unit: MB/s.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'Placement' => [ + 'description' => 'The locations in which data is stored.'."\n" + ."\n" + .'This parameter is returned only if you specify `Placement` in the AdditionalAttributes.N request parameter.'."\n" + ."\n" + .'> This parameter is valid only for Regional ESSDs (cloud_regional_disk_auto).'."\n", + 'type' => 'object', + 'properties' => [ + 'ZoneIds' => [ + 'description' => 'The IDs of the zones in which data is stored.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-b'."\n" + .'cn-hangzhou-j', + ], + ], + ], + 'SourceDiskId' => [ + 'title' => '源磁盘 ID', + 'type' => 'string', + 'example' => 'd-123*********', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDiskType.ValueNotSupported', + 'errorMessage' => 'The specified disk type is not supported.', + ], + [ + 'errorCode' => 'InvalidCategory.ValueNotSupported', + 'errorMessage' => 'The specified disk category is not supported.', + ], + [ + 'errorCode' => 'InvalidStatus.ValueNotSupported', + 'errorMessage' => 'The specified disk status is not supported.', + ], + [ + 'errorCode' => 'InvalidTag.Mismatch', + 'errorMessage' => 'The specified Tag.n.Key and Tag.n.Value are not match.', + ], + [ + 'errorCode' => 'InvalidTagCount', + 'errorMessage' => 'The specified tags are beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidRegion.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The zoneId provided does not exist in our records.', + ], + [ + 'errorCode' => 'MissingParamter.RegionId', + 'errorMessage' => 'The regionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.DiskIds', + 'errorMessage' => 'The specified parameter diskIds is not valid.', + ], + [ + 'errorCode' => 'IncompleteParamter', + 'errorMessage' => 'Some fields can not be null in this request.', + ], + [ + 'errorCode' => 'InvalidParamter', + 'errorMessage' => 'Some parameters are invalid in this request.', + ], + [ + 'errorCode' => 'InvalidSnapshot.NotFound', + 'errorMessage' => 'The specified parameter SnapshotId is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDiskIds.Malformed', + 'errorMessage' => 'The amount of specified disk Ids exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidCategory.ValueNotSupported', + 'errorMessage' => 'The specified disk category is not supported.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in volume white list.', + ], + [ + 'errorCode' => 'InvalidParameter.MultiAttachAndEnableSharedNotMatch', + 'errorMessage' => 'The parameter MultiAttach and EnableShared are not match.', + ], + [ + 'errorCode' => 'InvalidParameter.MultiAttach', + 'errorMessage' => 'The specified param MultiAttach is not valid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidFilterKey.NotFound', + 'errorMessage' => 'The filter key is not found.', + ], + [ + 'errorCode' => 'InvalidFilterValue', + 'errorMessage' => 'The filter value is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskIds.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DiskIds" is not supported.', + ], + [ + 'errorCode' => 'InvalidDiskChargeType.NotFound', + 'errorMessage' => 'The DiskChargeType does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidLockReason.NotFound', + 'errorMessage' => 'The specified LockReason is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"PageSize\\": 1,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 15,\\n \\"Disks\\": {\\n \\"Disk\\": [\\n {\\n \\"SerialNumber\\": \\"bp18um4r4f2fve2****\\",\\n \\"CreationTime\\": \\"2021-06-07T06:08:54Z\\",\\n \\"Status\\": \\"In_use\\",\\n \\"Type\\": \\"system\\",\\n \\"PerformanceLevel\\": \\"PL0\\",\\n \\"BdfId\\": \\"null\\",\\n \\"EnableAutoSnapshot\\": false,\\n \\"StorageSetId\\": \\"ss-i-bp1j4i2jdf3owlhe****\\",\\n \\"StorageSetPartitionNumber\\": 11,\\n \\"DiskId\\": \\"d-bp18um4r4f2fve24****\\",\\n \\"DeleteAutoSnapshot\\": false,\\n \\"StorageClusterId\\": \\"dbsc-j5e1sf2vaf5he8m2****\\",\\n \\"Encrypted\\": false,\\n \\"IOPSRead\\": 2000,\\n \\"MountInstanceNum\\": 1,\\n \\"Description\\": \\"testDescription\\",\\n \\"Device\\": \\"/dev/xvdb\\",\\n \\"DiskName\\": \\"testDiskName\\",\\n \\"Portable\\": false,\\n \\"ImageId\\": \\"m-bp13aqm171qynt3u***\\",\\n \\"KMSKeyId\\": \\"0e478b7a-4262-4802-b8cb-00d3fb408***\\",\\n \\"DeleteWithInstance\\": true,\\n \\"DetachedTime\\": \\"2021-06-07T21:01:22Z\\",\\n \\"SourceSnapshotId\\": \\"s-bp67acfmxazb4p****\\",\\n \\"AutoSnapshotPolicyId\\": \\"sp-bp67acfmxazb4p****\\",\\n \\"EnableAutomatedSnapshotPolicy\\": false,\\n \\"IOPSWrite\\": 2000,\\n \\"InstanceId\\": \\"i-bp67acfmxazb4q****\\",\\n \\"IOPS\\": 4000,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"ExpiredTime\\": \\"2021-07-07T16:00Z\\",\\n \\"Size\\": 60,\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"DiskChargeType\\": \\"PrePaid\\",\\n \\"ZoneId\\": \\"cn-hangzhou-i\\",\\n \\"AttachedTime\\": \\"2021-06-07T06:08:56Z\\",\\n \\"Category\\": \\"cloud_ssd\\",\\n \\"ProductCode\\": \\"jxsc000204\\",\\n \\"MultiAttach\\": \\"Disabled\\",\\n \\"OperationLocks\\": {\\n \\"OperationLock\\": [\\n {\\n \\"LockReason\\": \\"security\\"\\n }\\n ]\\n },\\n \\"MountInstances\\": {\\n \\"MountInstance\\": [\\n {\\n \\"AttachedTime\\": \\"2017-12-05T2340:00Z\\",\\n \\"InstanceId\\": \\"i-bp1j4i2jdf3owlhe****\\",\\n \\"Device\\": \\"/dev/xvda\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"Attachments\\": {\\n \\"Attachment\\": [\\n {\\n \\"InstanceId\\": \\"i-bp67acfmxazb4q****\\",\\n \\"Device\\": \\"/dev/xvda\\",\\n \\"AttachedTime\\": \\"2021-06-07T06:08:56Z\\"\\n }\\n ]\\n },\\n \\"ProvisionedIops\\": 40000,\\n \\"BurstingEnabled\\": false,\\n \\"Throughput\\": 100,\\n \\"ThroughputRead\\": 100,\\n \\"ThroughputWrite\\": 100,\\n \\"Placement\\": {\\n \\"ZoneIds\\": \\"\\\\\\"[\\\\\\"cn-hangzhou-b\\\\\\",\\\\n\\\\\\"cn-hangzhou-j\\\\\\"]\\\\\\"\\"\\n },\\n \\"SourceDiskId\\": \\"d-123*********\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 15\\n AAAAAdDWBF2****\\n 1\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 1\\n \\n \\n \\n cloud_ssd\\n testDescription\\n \\n \\n \\n false\\n 40\\n false\\n PrePaid\\n Disabled\\n \\n \\n 2021-06-07T06:08:56Z\\n i-bp67acfmxazb4q****\\n /dev/xvda\\n \\n \\n 2021-07-07T16:00Z\\n m-bp13aqm171qynt3u***\\n \\n \\n \\n In_use\\n 2021-06-07T06:08:56Z\\n dbsc-j5e1sf2vaf5he8m2****\\n cn-hangzhou-i\\n i-bp67acfmxazb4q****\\n \\n \\n PL0\\n /dev/xvdb\\n true\\n false\\n false\\n sp-bp67acfmxazb4p****\\n testDiskName\\n \\n \\n \\n false\\n system\\n bp18um4r4f2fve2****\\n 2021-06-07T06:08:54Z\\n cn-hangzhou\\n d-bp18um4r4f2fve24****\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeDisks', + 'description' => '* You can specify multiple request parameters such as `RegionId`, `ZoneId`, `DiskIds`, and `InstanceId` as filters. The specified parameters are evaluated by using the "AND" operator. If you specify more than one filter, the records that match all filters are returned.'."\n" + .'* The value of `DiskIds` is a JSON array. If you do not specify DiskIds, the parameter is not used as a filter. If you set `DiskIds` to an empty JSON array, the parameter is regarded as a valid filter, and an empty result is returned.'."\n" + .'* Token-based paged query: Use `NextToken` to configure the query token. Set the value to the `NextToken` value returned in the previous call to the DescribeDisks operation. Then, use `MaxResults` to specify the maximum number of entries to return on each page.'."\n" + .'* You can attach a disk for which the multi-attach feature is enabled to multiple instances. You can query the attachment information of the disk based on the `Attachment` values in the response.'."\n" + ."\n" + .'When you call the API operation by using Alibaba Cloud CLI, you must specify request parameter values of different data types in the required formats. For more information, see [Parameter formats](~~110340~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AttachDisk' => [ + 'summary' => 'Attaches a pay-as-you-go data disk or a system disk to an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28790', + 'abilityTreeNodes' => [ + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance to which you want to attach the disk.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-bp1dq5lozx5f4pmd****', + ], + ], + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the disk. The disk specified by `DiskId` and the instance specified by `InstanceId` must reside in the same zone.'."\n" + ."\n" + .'> For information about the limits on attaching a data disk and a system disk, see the "Usage notes" section of this topic.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'd-bp1j4l5axzdy6ftk****', + ], + ], + [ + 'name' => 'Device', + 'in' => 'query', + 'schema' => [ + 'description' => 'The device name of the disk.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use other parameters to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDeviceName', + ], + ], + [ + 'name' => 'DeleteWithInstance', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the disk when the instance is released. Valid values:'."\n" + ."\n" + .'* true: releases the disk when the instance is released.'."\n" + .'* false: does not release the disk when the instance is released. The disk is retained as a pay-as-you-go data disk.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* If `OperationLocks` in the DescribeInstances response contains `"LockReason" : "security"` for the instance to which the disk is attached, the instance is locked for security reasons. Regardless of whether you set `DeleteWithInstance` to `false`, the DeleteWithInstance setting is ignored, and the disk is released when the instance is released.'."\n" + .'* If you want to attach an `elastic ephemeral disk`, you must set `DeleteWithInstance` to `true`.'."\n" + .'* You cannot specify DeleteWithInstance for disks for which the multi-attach feature is enabled.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Bootable', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to attach the disk as the system disk. Valid values:'."\n" + ."\n" + .'* true: attaches the disk as the system disk.'."\n" + .'* false: does not attach the disk as the system disk.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> You can set `Bootable` to true only if the instance does not have a system disk.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'Password', + 'in' => 'query', + 'schema' => [ + 'description' => 'The password that is set when you attach the system disk. The password is applicable only to the administrator and root users. The password must be 8 to 30 characters in length and must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The following special characters are supported:'."\n" + ."\n" + .' ()`~!@#$%^&*-_+=|{}[]:;\'<>,.?/'."\n" + ."\n" + .'For Windows instances, passwords cannot start with a forward slash (/).'."\n" + ."\n" + .'> If `Password` is configured, we recommend that you send requests over HTTPS to prevent password leaks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsV587!', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SSH key pair that you bind to the Linux instance when you attach the system disk.'."\n" + ."\n" + .'* Windows instances do not support logons based on SSH key pairs. The `Password` parameter takes effect even if the KeyPairName parameter is specified.'."\n" + .'* For Linux instances, the username and password-based logon method is disabled by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeyPairTestName', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to force attach the disk to the instance. Valid values:'."\n" + ."\n" + .'* true: force attaches the disk to the instance.'."\n" + .'* false: does not force attach the disk to the instance.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> You can set this parameter to true only for Regional Enterprise SSDs (ESSDs) (cloud_regional_disk_auto).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDevice.Malformed', + 'errorMessage' => 'The specified device is not valid.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The input parameter is mandatory for processing this request is empty.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupport', + 'errorMessage' => 'The instance type of the specified instance does not support hot attach disk.', + ], + [ + 'errorCode' => 'DiskCategory.OperationNotSupported', + 'errorMessage' => 'The operation is not supported to the specified disk due to its disk category.', + ], + [ + 'errorCode' => 'InvalidDisk.DiskNotBootable', + 'errorMessage' => 'The specified disk is not a bootable disk, can not be attached as system disk.', + ], + [ + 'errorCode' => 'InvalidInstance.NotOriginInstance', + 'errorMessage' => 'The specified disk can not attached to other instance as system disk.', + ], + [ + 'errorCode' => 'InvalidParameterForce.DiskCategoryNotSupported', + 'errorMessage' => 'The specified disk category does not support force attach operation.', + ], + [ + 'errorCode' => 'InvalidParameterForce.PrepaidDiskNotSupported', + 'errorMessage' => 'The prepaid disk does not support force attach operation.', + ], + [ + 'errorCode' => 'InvalidParameterForce.MultiAttachDiskNotSupported', + 'errorMessage' => 'The multi attach disk does not support force attach operation.', + ], + [ + 'errorCode' => 'InvalidParameterForce.RegionNotSupported', + 'errorMessage' => 'The specified region does not support force attach operation.', + ], + [ + 'errorCode' => 'OperationConflict.DisksAttachingParallellyExceed', + 'errorMessage' => 'The number of disks attaching parallelly exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified instanceType is not supported by the image architecture.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InstanceDiskLimitExceeded', + 'errorMessage' => 'The amount of the disk on instance in question reach its limits.', + ], + [ + 'errorCode' => 'InvalidDevice.InUse', + 'errorMessage' => 'The specified device has been occupied.', + ], + [ + 'errorCode' => 'DiskNotPortable', + 'errorMessage' => 'The specified disk is not a portable disk.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The instance is locked due to security.', + ], + [ + 'errorCode' => 'ResourcesNotInSameZone', + 'errorMessage' => 'The specified instance and disk are not in the same zone.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'DiskInArrears', + 'errorMessage' => 'The specified operation is denied as your disk owing fee.', + ], + [ + 'errorCode' => 'DiskError', + 'errorMessage' => 'IncorrectDiskStatus.', + ], + [ + 'errorCode' => 'DiskId.ValueNotSupported', + 'errorMessage' => 'The specified parameter diskid is not supported.', + ], + [ + 'errorCode' => 'DiskId.StatusNotSupported', + 'errorMessage' => 'The specified disk status is not supported.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus.NotSupportESSD', + 'errorMessage' => 'The operation is not supported in this status, please reboot the instance.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The operation is not supported in this status.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'DependencyViolation.WindowsInstance', + 'errorMessage' => 'The instance image is windows, cannot use ssh key pair to login.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportDiskCategory', + 'errorMessage' => 'The instanceType of the specified instance does not support this disk category.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportPL0', + 'errorMessage' => 'The instanceType of the specified instance does not support PL0 of cloud_essd.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NvmeRequired', + 'errorMessage' => 'The instanceType of the specified instance requires nvme protocol.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NvmeUnsupported', + 'errorMessage' => 'The instanceType of the specified instance does not support nvme protocol.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportMultiAttachDisk', + 'errorMessage' => 'The instanceType of the specified instance does not support multi attach disk.', + ], + [ + 'errorCode' => 'DiskAttachedNumberExceeded', + 'errorMessage' => 'The attaching times of the specified disk exceeded.', + ], + [ + 'errorCode' => 'InvalidOperation.CanNotAttachMultiAttachDiskAsSystemDisk', + 'errorMessage' => 'Multi attach disk can not be attached as system disk.', + ], + [ + 'errorCode' => 'DeleteWithInstance.Conflict', + 'errorMessage' => 'Multi attach disk cannot be set to DeleteWithInstance attribute.', + ], + [ + 'errorCode' => 'InvalidParameter.DeleteWithInstance', + 'errorMessage' => 'The DeleteWithInstance for the elastic ephemeral disk must be set to true.', + ], + [ + 'errorCode' => 'InvalidOperation.OtherInstanceUnsupported', + 'errorMessage' => 'The elastic ephemeral disk can only be attached to the instance it was last mounted on, please check the disk\'s system tag to get the last associated instance.', + ], + [ + 'errorCode' => 'InvalidInstance.ZoneConflict', + 'errorMessage' => 'The force attach operation is not supported when both the current and target instances are in the same zone.', + ], + [ + 'errorCode' => 'InvalidParameter.AllEmpty', + 'errorMessage' => 'The current operation requires either a password or a keyPairName to must be provided. Please ensure that at least one of them is not empty.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskQueueNumberNotEnough', + 'errorMessage' => 'The number of disk queues on the instance is not enough.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskAttachModeUnsupported', + 'errorMessage' => 'The instance type does not support the disk attach mode.', + ], + [ + 'errorCode' => 'OperationDenied.HpnZoneMismatch', + 'errorMessage' => 'Instance and disk must be in the same HPN zone for restricted HPN zones.', + ], + [ + 'errorCode' => 'OperationDenied.UnsupportedEncryptedDisk', + 'errorMessage' => 'The instance type does not support attaching encrypted disks.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidDisk.InUse', + 'errorMessage' => 'The specified disk has been occupied.', + ], + [ + 'errorCode' => 'DiskAttachedNumberExceeded', + 'errorMessage' => 'The attaching times of the specified disk exceeded.', + ], + [ + 'errorCode' => 'InvalidKMSKeyId.NotFound', + 'errorMessage' => 'The KMS key used by the disk does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n"}]', + 'title' => 'AttachDisk', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* The ECS instance and the disk must reside in the same zone.'."\n" + ."\n" + .'* The disk must be in the **Unattached** (`Available`) state.'."\n" + ."\n" + .'* When you attach the disk as a data disk to an ECS instance, take note of the following items:'."\n" + ."\n" + .' * The ECS instance must be in the **Running** (`Running`) or **Stopped** (`Stopped`) state.'."\n" + .' * If the disk was separately purchased, the billing method of the disk must be pay-as-you-go.'."\n" + .' * If the disk is a system disk that was detached from an ECS instance, no limits apply to the billing method of the disk.'."\n" + .' * If the disk is an elastic ephemeral disk that was detached from an ECS instance, the disk can be attached only to the instance.'."\n" + ."\n" + .'* When you attach the disk as the system disk to an ECS instance, take note of the following items:'."\n" + ."\n" + .' * The ECS instance must be the original instance from which the system disk was detached.'."\n" + .' * The ECS instance must be in the **Stopped** (`Stopped`) state.'."\n" + .' * You must configure logon credentials for the ECS instance.'."\n" + .' * The disk cannot be an elastic ephemeral disk.'."\n" + .' * For more information about how to attach a system disk, see [Detach or attach a system disk](~~146752~~).'."\n" + ."\n" + .'* If the response contains `{"OperationLocks": {"LockReason" : "security"}}` when you query information about an ECS instance, the instance is locked for security reasons. No operations are allowed on the instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DetachDisk' => [ + 'summary' => 'Detaches a pay-as-you-go data disk or a system disk from an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '29020', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECS instance from which you want to detach the disk.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the disk that you want to detach.'."\n" + ."\n" + .'* The disk that you want to detach must be attached to an ECS instance and in the In Use (`In_use`) state.'."\n" + .'* The instance from which you want to detach a data disk must be in the `Running` or `Stopped` state.'."\n" + .'* The instance from which you want to detach the system disk must be in the `Stopped` state.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'd-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DeleteWithInstance', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the system disk or data disk when the instance from which you want to detach the disk is released. Valid values:'."\n" + ."\n" + .'* true: releases the disk when the instance is released.'."\n" + .'* false: does not release the disk when the instance is released. The disk is retained as a pay-as-you-go data disk.'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You cannot specify this parameter for disks for which the multi-attach feature is enabled.'."\n" + .'* If a data disk is to be detached, the default value is `false`.'."\n" + .'* If you want to detach an `elastic ephemeral disk`, you must set `DeleteWithInstance` to `true`.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The input parameter is mandatory for processing this request is empty.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupport', + 'errorMessage' => 'The instance type of the specified instance does not support hot detach disk.', + ], + [ + 'errorCode' => 'DisksDetachingOnEcsExceeded', + 'errorMessage' => 'The number of disks detaching on the instance exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidInstanceId.Malformed', + 'errorMessage' => 'The specified parameter InstanceId is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'DiskNotPortable', + 'errorMessage' => 'The specified disk is not a portable disk.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The instance is locked due to security.', + ], + [ + 'errorCode' => 'DependencyViolation', + 'errorMessage' => 'The specified disk has not been attached on the specified instance.', + ], + [ + 'errorCode' => 'DiskTypeViolation', + 'errorMessage' => 'The specified disk is a system disk and cannot support the operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidInstance.ImageCategory', + 'errorMessage' => 'The image category of the specified instance does not support detaching system disk.', + ], + [ + 'errorCode' => 'DeleteWithInstance.Conflict', + 'errorMessage' => 'Multi attach disk cannot be set to DeleteWithInstance attribute.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskCategoryUnsupported', + 'errorMessage' => 'The DetachDisk operation is not supported for elastic ephemeral disk.', + ], + [ + 'errorCode' => 'InvalidParameter.DeleteWithInstance', + 'errorMessage' => 'The DeleteWithInstance for the elastic ephemeral disk must be set to true.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskDetachingFromThisEcs', + 'errorMessage' => 'The specified disk is detaching from this ecs.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidDisk.AlreadyDetached', + 'errorMessage' => 'The specified disk has been detached.', + ], + [ + 'errorCode' => 'InvalidDiskId.OperationNotSupported', + 'errorMessage' => 'The operation is not supported due to base image not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'DetachDisk', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* This operation is an asynchronous operation. After you call the operation to detach a disk from an ECS instance, the disk is detached in approximately 1 minute.'."\n" + .'* If `OperationLocks` in the response contains `"LockReason" : "security"` when you query information about an instance, the instance is locked for security reasons and all operations are prohibited on the instance.'."\n" + .'* If you want to attach an elastic ephemeral disk that you detached from an instance, you can attach the disk only to the instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ResizeDisk' => [ + 'summary' => 'Resizes a system disk or a data disk.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29165', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the disk. You can call the [DescribeDisks](~~25514~~) operation to query available disk IDs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'd-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Type', + 'in' => 'query', + 'schema' => [ + 'description' => 'The method that you want to use to resize the disk. Valid values:'."\n" + ."\n" + .'* offline (default): resizes the disk offline. After resizing a disk offline, you must [restart the instance](~~25440~~) in the console or call an API operation [RebootInstance](~~25502~~) make the operation take effect.'."\n" + .'* online: resizes the disk online without the need to restart the instance. You can resize ultra disks, standard SSDs, ESSDs, and elastic ephemeral disks online.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'offline', + 'default' => 'offline', + ], + ], + [ + 'name' => 'NewSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new disk capacity. Unit: GiB. Valid values:'."\n" + ."\n" + .'* System disk:'."\n" + ."\n" + .' * Basic disk (cloud): 20 to 500.'."\n" + ."\n" + .' * ESSD (cloud_essd): The valid values vary based on the performance level of the ESSD.'."\n" + ."\n" + .' * Valid values when SystemDisk.PerformanceLevel is set to PL0: 1 to 2048.'."\n" + .' * Valid values when SystemDisk.PerformanceLevel is set to PL1: 20 to 2048.'."\n" + .' * Valid values when SystemDisk.PerformanceLevel is set to PL2: 461 to 2048.'."\n" + .' * Valid values when SystemDisk.PerformanceLevel is set to PL3: 1261 to 2048.'."\n" + ."\n" + .' * ESSD AutoPL disk: 1 to 2048.'."\n" + ."\n" + .' * Other disk categories: 20 to 2048.'."\n" + ."\n" + .'* Data disk:'."\n" + ."\n" + .' * Ultra disk (cloud_efficiency): 20 to 32768.'."\n" + ."\n" + .' * Standard SSD (cloud_ssd): 20 to 32768.'."\n" + ."\n" + .' * ESSD (cloud_essd): The valid values vary based on the performance level of the ESSD.`` To query the performance level of an ESSD, call the [DescribeDisks](~~25514~~) operation to query disk information and check the `PerformanceLevel` value in the response.'."\n" + ."\n" + .' * PL0 ESSD: 1 to 65536.'."\n" + .' * PL1 ESSD: 20 to 65536.'."\n" + .' * PL2 ESSD: 461 to 65536.'."\n" + .' * PL3 ESSD: 1261 to 65536.'."\n" + ."\n" + .' * Basic disk (cloud): 5 to 2000.'."\n" + ."\n" + .' * ESSD AutoPL disk (cloud_auto): 1 to 65536.'."\n" + ."\n" + .' * Standard elastic ephemeral disk (elastic_ephemeral_disk_standard): 64 to 8192.'."\n" + ."\n" + .' * Premium elastic ephemeral disk (elastic_ephemeral_disk_premium): 64 to 8192.'."\n" + ."\n" + .'> The new disk capacity must be larger than the original disk capacity. Otherwise, an error is reported.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'maximum' => '262144', + 'minimum' => '1', + 'example' => '1900', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new disk capacity. Unit: GiB. Valid values:'."\n" + ."\n" + .'* For a system disk:'."\n" + ."\n" + .' * Basic disk (cloud): 20 to 500.'."\n" + ."\n" + .' * ESSD (cloud_essd): The valid values vary based on the performance level of the ESSD.'."\n" + ."\n" + .' * PL0 ESSD: 1 to 2048.'."\n" + .' * PL1 ESSD: 20 to 2048.'."\n" + .' * PL2 ESSD: 461 to 2048.'."\n" + .' * PL3 ESSD: 1261 to 2048.'."\n" + ."\n" + .' * ESSD AutoPL disk: 1 to 2048.'."\n" + ."\n" + .' * Other disk categories: 20 to 2048.'."\n" + ."\n" + .'* For a data disk:'."\n" + ."\n" + .' * Ultra disk (cloud_efficiency): 20 to 32768.'."\n" + ."\n" + .' * Standard SSD (cloud_ssd): 20 to 32768.'."\n" + ."\n" + .' * ESSD (cloud_essd): The valid values vary based on the performance level of the ESSD.`` To query the performance level of an ESSD, call the [DescribeDisks](~~25514~~) operation to query disk information and check the `PerformanceLevel` value in the response.'."\n" + ."\n" + .' * PL0 ESSD: 1 to 65536.'."\n" + .' * PL1 ESSD: 20 to 65536.'."\n" + .' * PL2 ESSD: 461 to 65536.'."\n" + .' * PL3 ESSD: 1261 to 65536.'."\n" + ."\n" + .' * Basic disk (cloud): 5 to 2000.'."\n" + ."\n" + .' * ESSD AutoPL disk (cloud_auto): 1 to 65536.'."\n" + ."\n" + .' * Standard elastic ephemeral disk (elastic_ephemeral_disk_standard): 64 to 8192.'."\n" + ."\n" + .' * Premium elastic ephemeral disk (elastic_ephemeral_disk_premium): 64 to 8192.'."\n" + ."\n" + .'> The new disk capacity must be larger than the original disk capacity. Otherwise, an error is reported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '20413515388****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'F3CD6886-D8D0-4FEE-B93E-1B732396****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDataDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncompleteParamter', + 'errorMessage' => 'Some fields can not be null in this request.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Type', + 'errorMessage' => 'The specified type is not supported.', + ], + [ + 'errorCode' => 'LastOrderProcessing', + 'errorMessage' => 'The previous order is still processing, please try again later.', + ], + [ + 'errorCode' => 'InvalidStatus.Upgrading', + 'errorMessage' => 'The instance which the disk attachs is upgrading; please try again later.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ImageNotSupportResize', + 'errorMessage' => 'The image of the instance does not support resize.', + ], + [ + 'errorCode' => 'InvalidDisk.DetachedSystemDisk', + 'errorMessage' => 'The specified disk is a detached system disk, does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.NotEnoughCapacity', + 'errorMessage' => 'The capacity of the current dedicated block storage cluster is not enough to expand.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.ReplicationStatusNotFound', + 'errorMessage' => 'Disk replication status not found.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.InReplication', + 'errorMessage' => 'Disk already in replication.', + ], + [ + 'errorCode' => 'QuotaExceed.DiskCapacity', + 'errorMessage' => 'The used capacity of disk type has exceeded the quota in the zone, %s.', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'NoPermission.Refund', + 'errorMessage' => 'The operation requires refund permission. Please apply for permission from your main account.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceRenewWithDowngradeInPlan', + 'errorMessage' => 'The operation is denied due to the specified instance has renew with downgrade record in plan.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified system disk size is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.UnfinishedOrder', + 'errorMessage' => 'The current instance has unfinished refundOrder, this operation is denied.', + ], + [ + 'errorCode' => 'AccountForbidden.CreateOrder', + 'errorMessage' => 'Order cannot be created due to abnormal account.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDataDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified DataDisk.n.Size beyond the permitted range, or the capacity of snapshot exceeds the size limit of the specified disk category.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The type of the disk does not support the operation.', + ], + [ + 'errorCode' => 'InvalidDiskSize.TooSmall', + 'errorMessage' => 'Specified new disk size is less than the original disk size.', + ], + [ + 'errorCode' => 'InvalidDiskSize.TooLarge', + 'errorMessage' => 'Specified new disk size is beyond the permitted range.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'DiskError', + 'errorMessage' => 'Incorrect disk status.', + ], + [ + 'errorCode' => 'DiskInArrears', + 'errorMessage' => 'The specified operation is denied as your disk owing fee.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'DiskCreatingSnapshot', + 'errorMessage' => 'The operation is denied due to a snapshot of the specified disk is not completed yet.', + ], + [ + 'errorCode' => 'InvalidDiskSize', + 'errorMessage' => 'Specified new disk size is less than or equal the original disk size.', + ], + [ + 'errorCode' => 'Operation.Conflict', + 'errorMessage' => 'The operation may conflicts with others.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The instance is locked due to security.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not supported.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support resize online.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.NotRunning', + 'errorMessage' => 'The status of instance to which the disk attachs must be running when resizing online.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportOnlineResize', + 'errorMessage' => 'The instance type of the specified instance does not support resize online.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'InstanceSpecModification.NotEffective', + 'errorMessage' => 'The instance which the disk attachs has been reserved for making a spec modification and not taken effective in the current contract period.', + ], + [ + 'errorCode' => 'InvalidDiskSize.NotSupportResizeOnline', + 'errorMessage' => 'The current size of the resource does not support resize online.', + ], + [ + 'errorCode' => 'SecurityRisk.3DVerification', + 'errorMessage' => 'We have detected a security risk with your default credit or debit card. Please proceed with verification via the link in your email.', + ], + [ + 'errorCode' => 'QuotaExceeded.PostpaidDataDiskCapacity', + 'errorMessage' => 'The quota of postpaid data disk capacity exceeds.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachDiskNotSupportResizeOnline', + 'errorMessage' => 'Multi attach disk does not support resize online.', + ], + [ + 'errorCode' => 'InvalidDataDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified Category of Data Disk is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskSize.NotSupportMultiAttachDisk', + 'errorMessage' => 'The specified disk size exceeds the maximum limit 65536 for enabling multi-attach.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"OrderId\\": \\"20413515388****\\",\\n \\"RequestId\\": \\"F3CD6886-D8D0-4FEE-B93E-1B732396****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 20413515388****\\n F3CD6886-D8D0-4FEE-B93E-1B732396****\\n","errorExample":""}]', + 'title' => 'ResizeDisk', + 'description' => '> Before you call this operation to resize a disk, you must check the partition format of the disk. If the format is MBR, you cannot resize the file to more than 2TiB. Otherwise, data loss may occur. If you want to resize an MBR partition, we recommend creating and mounting a data disk in the GPT partition format, and then copy the existing data to the new data disk. For more information, see [Resize a disk to extend the disk capacity](~~44986~~).'."\n" + ."\n" + .'* The disk types that can be resized include basic disks (`cloud` ), ultra disks (`cloud_efficiency` ), SSDs (`cloud_ssd` ), Enterprise SSDs (ESSDs)(`cloud_essd` ), ESSD AutoPL disks (cloud_auto), standard elastic ephemeral disks (elastic_ephemeral_disk_standard), premium elastic ephemeral disks (elastic_ephemeral_disk_premium), and Regional ESSDs (cloud_regional_disk_auto).'."\n" + ."\n" + .'* You cannot resize a cloud disk when a snapshot is being created for the disk. Wait until the snapshot is created before you resize the cloud disk.'."\n" + ."\n" + .'* You cannot call this operation to extend partitions or file systems. You must manually allocate partitions and file systems after the resize cloud disk capacity. For more information, see [Extend partitions and file systems (Linux)](~~2949817#bb3b1f02e51pj~~) and [Extend partitions and file systems (windows)](~~2932233#a9f9b78f3fujb~~).'."\n" + ."\n" + .'* If the multi-attach feature is enabled for a cloud disk, you can resize the disk online or offline. Make sure that the ECS instances to which the disk is attached meet the following requirements:'."\n" + ."\n" + .' * If you want to resize the disk online, the ECS instances must be in the **Running** state.``'."\n" + .' * If you want to resize the disk offline, the ECS instances must be in the **Running** or **Stopped** state.````'."\n" + ."\n" + .'* The cloud disk that you want to resize must meet the following requirements:'."\n" + ."\n" + .' * The disk is in the In Use (`In Use`) or Unattached (`Available`) state.'."\n" + .' * (Recommended) Snapshots are created for the disk to back up disk data. For information about how to create snapshots for a disk, see [Create a snapshot](~~25455~~).'."\n" + .' * If the disk is a new data disk, initialize the disk before you resize the disk. For more information, see [Overview](~~466323~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyDiskAttribute' => [ + 'summary' => 'Modifies the name, description, release behavior with ECS instance, snapshot deletion on disk removal, automatic snapshot policy feature, and performance burst feature for one or more block storage devices.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29056', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the disk whose attributes you want to modify.'."\n" + ."\n" + .'> You can specify `DiskId` or `DiskIds.N`, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd-bp1famypsnar20bv****', + ], + ], + [ + 'name' => 'DiskName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the disk. The name must be 2 to 128 characters in length and can contain Unicode characters under the Decimal Number category and the categories whose names contain Letter. The name can also contain colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'MyDiskName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the disk. The description must be 2 to 256 characters in length. It cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestDescription', + ], + ], + [ + 'name' => 'DeleteWithInstance', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the disk together with the associated instance. This parameter is empty by default, which indicates that the current value remains unchanged.'."\n" + ."\n" + .'An error is returned if you set `DeleteWithInstance` to `false` in one of the following cases:'."\n" + ."\n" + .'* The disk is a local disk.'."\n" + .'* The disk is a basic disk and is not removable. If the Portable attribute of a disk is set to false, the disk is not removable.'."\n" + ."\n" + .'**'."\n" + ."\n" + .'**Warning** If you set DeleteWithInstance to false and the instance to which the disk is attached is locked for security reasons, the DeleteWithInstance attribute of the disk is ignored and the disk is released together with the instance. If "LockReason" : "security" is displayed in the response when you query information about an instance, the instance is locked for security reasons.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DeleteAutoSnapshot', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to delete the automatic snapshots of the disk when the disk is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the current value remains unchanged.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'EnableAutoSnapshot', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the automatic snapshot policy feature. Valid values:'."\n" + ."\n" + .'* true: enables the automatic snapshot policy feature for the cloud disk.'."\n" + .'* false: disables the automatic snapshot policy feature for the cloud disk.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the current value remains unchanged.'."\n" + ."\n" + .'> This parameter is deprecated. By default, the automatic snapshot policy feature is enabled for cloud disks. You only need to apply an automatic snapshot policy to a cloud disk before you can use the automatic snapshot policy.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the command. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DiskIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the disks whose attributes you want to modify. Valid values of N: 0 to 100.'."\n" + ."\n" + .'> You can specify `DiskId` or `DiskIds.N`, but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of disk N. Valid values of N: 0 to 100.'."\n" + ."\n" + .'> You can specify `DiskId` or `DiskIds.N`, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd-bp1famypsnar20bv****', + ], + 'required' => false, + 'example' => 'd-bp1famypsnar20bv****', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'BurstingEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable performance burst for the disk if the disk supports performance burst. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'> An error is reported if you specify this parameter for a disk that does not support performance burst.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDiskName.Malformed', + 'errorMessage' => 'The specified disk name is wrongly formed.', + ], + [ + 'errorCode' => 'NoAttributeToModify', + 'errorMessage' => 'No attribute to be modified in this request.', + ], + [ + 'errorCode' => 'IncompleteParamter', + 'errorMessage' => 'Some fields can not be null in this request.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified RegionId is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.DiskIdOrDiskIds', + 'errorMessage' => 'Specified parameter DiskId or DiskIds is missing.', + ], + [ + 'errorCode' => 'ParameterConflict.DiskIdAndDiskIds', + 'errorMessage' => 'Specified parameter DiskId and DiskIds conflict, only one can be chosen.', + ], + [ + 'errorCode' => 'BurstingEnabledForDiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support bursting enabled.', + ], + [ + 'errorCode' => 'BurstingEnabledForMultiAttachDiskUnsupported', + 'errorMessage' => 'The multi attach disk does not support bursting enabled.', + ], + [ + 'errorCode' => 'BurstingEnabledForModifyingDiskUnsupported', + 'errorMessage' => 'The modifying disk does not support bursting enabled.', + ], + [ + 'errorCode' => 'InvalidBurstingEnabled.DiskSizeTooSmall', + 'errorMessage' => 'The disk size must be greater than 3 GiB to enable burst.', + ], + ], + 403 => [ + [ + 'errorCode' => 'QuotaExceed.Snapshot', + 'errorMessage' => 'The snapshot quota exceeds.', + ], + [ + 'errorCode' => 'DiskNotPortable', + 'errorMessage' => 'The specified disk is not a portable disk.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The operation is not supported in this status.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'DeleteWithInstance.Conflict', + 'errorMessage' => 'The specified image is from the image market, you cannot set DeleteWithInstance attribute to false.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'Specified attached instance does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n"}]', + 'title' => 'ModifyDiskAttribute', + 'description' => 'You can use `DiskId` to specify a block storage device and modify the attributes of the device, such as the name and description of the device and whether to release the device together with the associated instance. You can use `DiskIds.N` to specify multiple block storage devices and batch modify the attributes of the devices.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyDiskChargeType' => [ + 'summary' => 'Converts the billing method of a data disk attached to a subscription ECS instance between pay-as-you-go and subscription.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29057', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance to which disks are attached.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-bp1i778bq705cvx1****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DiskIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of disks. The value is a JSON array that consists of up to 16 disk IDs. Separate the disk IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => '[“d-bp67acfmxazb4ph****”, “d-bp67acfmxazb4pi****”, … “d-bp67acfmxazb4pj****”]', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically complete the payment. Valid values:'."\n" + ."\n" + .'* true (default): The payment is automatically completed. Maintain sufficient balance in your account. Otherwise, your order becomes invalid and must be canceled.'."\n" + .'* false: An order is generated but no payment is made. If your account balance is insufficient, you can set AutoPay to false to generate an unpaid order. Then, log on to the **Expenses and Costs console**, go to the [Orders page](https://usercenter2-intl.aliyun.com/order/list), and pay for the order.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'true', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [Ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DiskChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new billing method of the disk. Valid values:'."\n" + ."\n" + .'* PrePaid (default): changes the billing method from pay-as-you-go to subscription.'."\n" + .'* PostPaid: changes the billing method from subscription to pay-as-you-go.'."\n" + ."\n" + .'> When you change the billing method of a pay-as-you-go disk to subscription, the billing cycle of the disk is automatically synchronized with that of the associated ECS instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The ID of the order.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'RegionId should not be null.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceIdNotSupported', + 'errorMessage' => 'InstanceId should not be null.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + [ + 'errorCode' => 'InvalidInstanceId.Released', + 'errorMessage' => 'The specified Instance is not exist.', + ], + [ + 'errorCode' => 'InvalidInstance.PurchaseNotFound', + 'errorMessage' => 'The specified Instance has no purchase.', + ], + [ + 'errorCode' => 'InvalidInstance.UnPaidOrder', + 'errorMessage' => 'The specified Instance has unpaid order.', + ], + [ + 'errorCode' => 'InvalidClientToken.ValueNotSupported', + 'errorMessage' => 'The ClientToken provided is invalid.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has been in arrears.', + ], + [ + 'errorCode' => 'Idempotence.SignatureMismatch', + 'errorMessage' => 'There is a idempotence signature mismatch between this and last request.', + ], + [ + 'errorCode' => 'OrderCreationFailed', + 'errorMessage' => 'Create Order failed, please check your parameters and try it later.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling, please try again after 5 minutes.', + ], + [ + 'errorCode' => 'InstanceDowngrade.QuotaExceed', + 'errorMessage' => 'Quota of instance downgrade is exceed.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidDisk.DetachedSystemDisk', + 'errorMessage' => 'The specified disk is a detached system disk, does not support this operation.', + ], + [ + 'errorCode' => 'LastOrderProcessing', + 'errorMessage' => 'The previous order is still processing, please try again later.', + ], + [ + 'errorCode' => 'InvalidAction.WithActiveElasticUpgrade', + 'errorMessage' => 'The instance has active Elastic Upgrade.', + ], + [ + 'errorCode' => 'DISK_IN_DEDICATED_BLOCK_STORAGE_CLUSTER', + 'errorMessage' => 'The disk in dedicated block storage cluster is not allowed to do this operation.', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'NoPermission.Refund', + 'errorMessage' => 'The operation requires refund permission. Please apply for permission from your main account.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskMustAttachedToInstance', + 'errorMessage' => 'The specified data disks must have been attached to this instance.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'InvalidOrder.Overdue', + 'errorMessage' => 'The specified account has overdue orders.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the instance does not support this operation.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType is not supported.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling, please try again after 5 minutes.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotFound', + 'errorMessage' => 'The chargeType of the instance does not support this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachDisk', + 'errorMessage' => 'Multi attach disk does not support this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.UnpaidOrder', + 'errorMessage' => 'The specified instance has unpaid orders and does not support the current operation.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified InstanceType or Zone is not available or not authorized.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist.', + ], + [ + 'errorCode' => 'PaymentMethodNotFound', + 'errorMessage' => 'No billing method has been registered on the account.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The ZoneId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRamRole.NotFound', + 'errorMessage' => 'The specified parameter "RAMRoleName" does not exist.', + ], + [ + 'errorCode' => 'InvalidDiskIds.NotFound', + 'errorMessage' => 'Some of the specified data disks do not exist.', + ], + [ + 'errorCode' => 'InvalidDiskIds.NotPortable', + 'errorMessage' => 'The specified DiskId is not portable.', + ], + [ + 'errorCode' => 'InvalidDataDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified parameter "Size" is not supported.', + ], + [ + 'errorCode' => 'InvalidAction.NotSupported', + 'errorMessage' => 'The specified action is not supported.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.NotSupported', + 'errorMessage' => 'The status of the specified instance is invalid.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NOT_FOUND', + 'errorMessage' => 'The specified instance is not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"OrderId\\": \\"123456****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 123456****\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'ModifyDiskChargeType', + 'description' => 'For information about how to change the billing method of cloud disks, see [Change the billing methods of a disk](~~145018~~).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Only pay-as-you-go disks can be attached to pay-as-you-go instances, and the billing methods of the disks cannot be changed.'."\n" + .'* The instance to which data disks are attached cannot be in the Stopped state due to expiration.'."\n" + .'* The price difference is refunded to the payment account that you used. Vouchers that have been redeemed are nonrefundable.'."\n" + .'* You cannot change the billing method again within 5 minutes of a successful change.'."\n" + ."\n" + .'After you change the billing method, the payment (if any) is automatically completed. Maintain sufficient balance in your account. Otherwise, your order becomes invalid and must be canceled. If your account balance is insufficient, you can set AutoPay to false to generate an unpaid order. Then, log on to the **Expenses and Costs console**, go to the [Orders page](https://usercenter2-intl.aliyun.com/order/list), and pay for the order.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyDiskSpec' => [ + 'summary' => 'Changes the disk category of a cloud disk or the performance level of an Enterprise SSD (ESSD). You cannot change the disk categories of Regional ESSDs, basic disks, elastic ephemeral disks, and local disks.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29058', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The disk ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'd-bp131n0q38u3a4zi****', + ], + ], + [ + 'name' => 'PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new performance level of the ESSD. Valid values:'."\n" + ."\n" + .'* PL0: An ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: An ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: An ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: An ESSD delivers up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'Default value: PL1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL2', + ], + ], + [ + 'name' => 'DiskCategory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new disk category of the cloud disk. Valid values:'."\n" + ."\n" + .'* cloud_essd: ESSD'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_efficiency: utra disk'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the disk category is not changed.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* The preceding values are listed in descending order of disk performance. Subscription disks cannot be downgraded.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_essd', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, service limits, and insufficient ECS resources. If the request fails the dry run, an error message is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ProvisionedIops', + 'in' => 'query', + 'schema' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk.'."\n" + ."\n" + .'Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set `DiskCategory` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~) and [Modify the performance configurations of an ESSD AutoPL disk](~~413275~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'minimum' => '0', + 'example' => '50000', + ], + ], + [ + 'name' => 'PerformanceControlOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The disk performance specifications.'."\n", + 'type' => 'object', + 'properties' => [ + 'IOPS' => [ + 'description' => 'The new IOPS rate of the cloud disk. You can modify the IOPS rate of only cloud disks in dedicated block storage clusters.'."\n" + ."\n" + .'Valid values: 900 to maximum IOPS per disk (with an increment of 100).'."\n" + ."\n" + .'For more information, see [Block storage performance](~~25382~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + 'Throughput' => [ + 'description' => 'The new throughput of the cloud disk. You can change the throughput of only cloud disks in dedicated block storage clusters. Unit: MB/s.'."\n" + ."\n" + .'Valid values: 60 to maximum throughput per disk.'."\n" + ."\n" + .'For more information, see [Block storage performance](~~25382~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '200', + ], + 'Recover' => [ + 'description' => 'Specifies whether to reset the IOPS rate and throughput of the cloud disk. This parameter takes effect only when the cloud disk belongs to a dedicated block storage cluster.'."\n" + ."\n" + .'After you specify this parameter, PerformanceControlOptions.IOPS and PerformanceControlOptions.Throughput do not take effect.'."\n" + ."\n" + .'Set the value to All, which indicates that the IOPS rate and throughput of the cloud disk are reset to the initial values.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'All', + 'enum' => [ + 'All', + ], + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'DestinationZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TaskId' => [ + 'description' => 'The ID of the disk category change task.'."\n" + ."\n" + .'> If you only modify the performance level of an ESSD, this parameter is not returned.'."\n", + 'type' => 'string', + 'example' => 't-bp67acfmxazb4p****', + ], + 'OrderId' => [ + 'description' => 'The order ID.'."\n" + ."\n" + .'> This parameter is returned only when the category of a subscription disk or the performance level of a subscription ESSD is modified.'."\n", + 'type' => 'string', + 'example' => '20413515388****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidPerformanceLevel.Malformed', + 'errorMessage' => 'The specified parameter PerformanceLevel is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DiskCategory" is not valid.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevelParam.Mismatch', + 'errorMessage' => 'The specified parameter PerformanceLevel should be null when DiskCategory is not cloud_essd.', + ], + [ + 'errorCode' => 'OperationDenied.DiskInDedicatedBlockStorageCluster', + 'errorMessage' => 'The disk in dedicated block storage cluster is not allowed to do this operation.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.ReplicationStatusNotFound', + 'errorMessage' => 'Disk replication status not found.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.InReplication', + 'errorMessage' => 'Disk already in replication.', + ], + [ + 'errorCode' => 'ProvisionedIopsForDiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not support provisioned iops.', + ], + [ + 'errorCode' => 'InvalidProvisionedIops.LimitExceed', + 'errorMessage' => 'The provisioned iops exceeds the limit.', + ], + [ + 'errorCode' => 'QuotaExceed.DiskCapacity', + 'errorMessage' => 'The used capacity of disk type has exceeded the quota in the zone, %s.', + ], + [ + 'errorCode' => 'MalformedParameter.PerformanceControlOptions', + 'errorMessage' => 'Parameter invalid, %s.', + ], + [ + 'errorCode' => 'InvalidPerformanceControlOptions.ModifyOperationUnsupported', + 'errorMessage' => 'The specified performance control options are conflicts with disk category or performance level or ProvisionIOPS.', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'NoPermission.Refund', + 'errorMessage' => 'The operation requires refund permission. Please apply for permission from your main account.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceRenewWithDowngradeInPlan', + 'errorMessage' => 'The operation is denied due to the specified instance has renew with downgrade record in plan.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceStatusUnsupported', + 'errorMessage' => 'The specified instance status is not supported for this operation, expect status is Running or Stopped.', + ], + [ + 'errorCode' => 'MissingParameter.DestinationZoneId', + 'errorMessage' => 'The parameter DestinationZoneId must be specified when modifying the disk specification from a regional disk to a zone disk.', + ], + [ + 'errorCode' => 'InvalidDestinationZoneId.Mismatch', + 'errorMessage' => 'The specified DestinationZoneId of the regional disk with \'In-use\' status should remain consistent with the ZoneId of instance.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachRegionalDiskUnsupported', + 'errorMessage' => 'The multi-attach regional disk with \'In-use\' status attached to more than one instance is not allowed to modify disk spec.', + ], + [ + 'errorCode' => 'InvalidDestinationZoneId.DiskCategoryUnsupported', + 'errorMessage' => 'The specified disk category does not allow the DestinationZoneId parameter for this operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the instance does not support this operation.', + ], + ], + 403 => [ + [ + 'errorCode' => 'DiskInArrears', + 'errorMessage' => 'The specified operation is denied as your disk owing fee.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'DiskCreatingSnapshot', + 'errorMessage' => 'The operation is denied due to a snapshot of the specified disk is not completed yet.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The type of the disk does not support the operation.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.TooLow', + 'errorMessage' => 'Specified new performance level is lower than the original performance level.', + ], + [ + 'errorCode' => 'OperationDenied.PerformanceLevelNotMatch', + 'errorMessage' => 'The specified PerformanceLevel and disk size do not match.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in modify disk category white list.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support modify disk category.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueNotSupported', + 'errorMessage' => 'The current disk category of the resource does not support this operation.', + ], + [ + 'errorCode' => 'Downgrade.NotSupported', + 'errorMessage' => 'Downgrade operation for prepay resource is not supported.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupportDiskCategory', + 'errorMessage' => 'The instanceType of the specified instance does not support this disk category.', + ], + [ + 'errorCode' => 'ModifyingDiskCategoryLimitExceed', + 'errorMessage' => 'The amount of modifying disk category exceeds the limit.', + ], + [ + 'errorCode' => 'DiskInCoolingPeriod', + 'errorMessage' => 'There is a cooling period after the disk is successfully modified.', + ], + [ + 'errorCode' => 'DiskHasFlashSnapshot', + 'errorMessage' => 'The specified disk with flash snapshots do not support modify disk category.', + ], + [ + 'errorCode' => 'NoChangeInDiskCategoryAndPerformanceLevel', + 'errorMessage' => 'There is no change between the parameters transmitted and the current.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone; try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachDisk', + 'errorMessage' => 'Multi attach disk does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.DiskExpansionUnfinished', + 'errorMessage' => 'The instance has not been restarted after a previous disk expansion.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.NotSupported', + 'errorMessage' => 'The specified disk category is not supported.', + ], + [ + 'errorCode' => 'InvalidPerformanceParameter.DiskNotInDedicatedStorageCluster', + 'errorMessage' => 'The specified disk not in dedicated storage cluster, can not modify performance control options.', + ], + [ + 'errorCode' => 'InvalidStatus.DiskUnderPerformanceControl', + 'errorMessage' => 'The specified disk is under performance control, any modifications to the category or performance level of the specified disk are unsupported..', + ], + [ + 'errorCode' => 'InvalidStatus.DiskNotReady', + 'errorMessage' => 'This specified disk is not ready, status needs to be either In_use or Available.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskInReplicaPairsUnsupported', + 'errorMessage' => 'The disk in replication pairs does not support this operation.', + ], + [ + 'errorCode' => 'InvalidDisk.DetachedSystemDisk', + 'errorMessage' => 'The specified resource is/has a detached system disk %s , not support current operation.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.InstanceTypeUnsupported', + 'errorMessage' => 'The current instance type does not support the specified disk category. Please check the list of disk category supported by the instance type and select an appropriate disk category for configuration.', + ], + [ + 'errorCode' => 'InvalidOperation.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidOperation.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The instance is locked for security reasons. Please contact Security Technical Support for assistance.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueUnauthorized', + 'errorMessage' => 'The specified DiskCategory is not authorized.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified InstanceType or Zone is not available or not authorized.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TaskId\\": \\"t-bp67acfmxazb4p****\\",\\n \\"OrderId\\": \\"20413515388****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n t-bp67acfmxazb4p****\\n 5B38289D-88AB-42BD-B021-12FC6942F099\\n 20413515388****\\n","errorExample":""}]', + 'title' => 'ModifyDiskSpec', + 'description' => 'To minimize impacts on your business, change the disk categories or performance levels of cloud disks during off-peak hours.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* To change the performance level of an ESSD, take note of the following items:'."\n" + ."\n" + .' * If the ESSD is a subscription ESSD, you can only upgrade its performance level.'."\n" + .' * If the ESSD is a pay-as-you-go ESSD, you can upgrade or downgrade its performance level. However, you cannot downgrade the performance level to PL0.'."\n" + .' * The ESSD must be in the **In Use** (In_Use) or **Unattached** (Available) state.'."\n" + .' * If the ESSD is attached to an Elastic Compute Service (ECS) instance, the instance must be in the **Running** (Running) or **Stopped** (Stopped) state. The instance cannot be in the Expired state or stopped due to an overdue payment.'."\n" + .' * If you cannot upgrade the performance level of an ESSD due to the capacity limit, extend the ESSD by calling the [ResizeDisk](~~25522~~) operation and then try again. For more information, see [ESSDs](~~122389~~).'."\n" + ."\n" + .'* For information about the limits on changing the disk category of a cloud disk, see [Change the category of a disk](~~161980#section_s4a_to0\\_1jx~~).'."\n" + ."\n" + .'* For the disk categories to which cloud disks of each disk category can be changed, see [Change the category of a disk](~~161980#eb8bb54032nho~~).'."\n" + ."\n" + .'After the disk category of a cloud disk is changed, the billing of the cloud disk has the following changes:'."\n" + ."\n" + .'* If the cloud disk is a pay-as-you-go disk, you are charged for the disk based on the new disk category.'."\n" + .'* If the cloud disk is a subscription disk, you may be charged additionally based on the price difference between the old and new disk categories and the remaining days of the billing cycle, starting from 00:00 the next day until the end of the subscription period.'."\n" + ."\n" + .'For information about the billing of cloud disks, see [Block storage devices](~~179022~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ReplaceSystemDisk' => [ + 'summary' => 'Replaces the operating system (system disk) of an ECS instance. After the operating system of the ECS instance is replaced, the original system disk of the instance is released and a new system disk is generated for the instance. This causes the ID of the system disk to change.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29160', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance whose operating system you want to replace.'."\n" + ."\n" + .'> Make sure that the instance is in the `Stopped` (`Stopped`) state.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image used to replace the system disk. This parameter is required.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'm-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'SystemDisk.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The capacity of the new system disk. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Basic disk: Max{20, Size of the image specified by ImageId} to 500.'."\n" + ."\n" + .'* Enterprise SSD (ESSD):'."\n" + ."\n" + .' * PL0 ESSD: Max{1, Size of the image specified by ImageId} to 2048.'."\n" + .' * PL1 ESSD: Max{20, Size of the image specified by ImageId} to 2048.'."\n" + .' * PL2 ESSD: Max{461, Size of the image specified by ImageId} to 2048.'."\n" + .' * PL3 ESSD: Max{1261, Size of the image specified by ImageId} to 2048.'."\n" + ."\n" + .'* ESSD AutoPL disk: Max{1, Size of the image specified by ImageId} to 2048.'."\n" + ."\n" + .'* Other disk categories: Max{20, Size of the image specified by ImageId} to 2048.'."\n" + ."\n" + .'Default value: Max{40, Size of the image specified by ImageId}.'."\n" + ."\n" + .'> If the capacity of the new system disk exceeds `Max{20, Capacity of the original system disk}`, you are charged for the excess capacity.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '80', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotency of the request. You can use the client to generate the token, but make sure that the token is unique across requests. The **token** can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'UseAdditionalService', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use the system configurations for virtual machines provided by Alibaba Cloud. System configurations for Windows: NTP and KMS. System configurations for Linux: NTP and YUM.'."\n" + ."\n" + .'> This parameter takes effect only when you attach a system disk whose device name is /dev/xvda.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'Password', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to reset the password for the instance. The password must be 8 to 30 characters in length and contain at least three of the following items: uppercase letters, lowercase letters, digits, and special characters. Special characters include:'."\n" + ."\n" + .' ()`~!@#$%^&*-_+=|{}[]:;\'<>,.?/'."\n" + ."\n" + .'The passwords of Windows instances cannot start with a forward slash (/).'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the current password remains unchanged.'."\n" + ."\n" + .'> If you specify `Password`, we recommend that you send requests over HTTPS to prevent password leaks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsV587!', + ], + ], + [ + 'name' => 'PasswordInherit', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use the preset password of the image.'."\n" + ."\n" + .'Default value: false'."\n" + ."\n" + .'> If the PasswordInherit parameter is specified, you must leave the Password parameter empty. Before you use this parameter, make sure that a password is preset for the image.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair.'."\n" + ."\n" + .'> This parameter is applicable only to Linux instances. You can bind an SSH key pair to the instance as a logon credential. After you bind the SSH key pair, the username and password logon method is disabled for the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testKeyPairName', + ], + ], + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated. To improve compatibility, we recommend that you use `ImageId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CentOS', + ], + ], + [ + 'name' => 'Architecture', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i386', + ], + ], + [ + 'name' => 'SecurityEnhancementStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use Security Center Basic after the system disk is replaced. Valid values:'."\n" + ."\n" + .'* Active: uses Security Center Basic after the system disk is re-initialized. This value is applicable only to public images.'."\n" + .'* Deactive: does not use Security Center Basic after the system disk is re-initialized. This value is applicable to all images.'."\n" + ."\n" + .'Default value: Deactive.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + [ + 'name' => 'Encrypted', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to encrypt the disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> When you use a shared encrypted image to create the disk based on an encrypted snapshot, you must set Encrypted to true to ensure that the disk uses an encryption key of your own.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'KMSKeyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the KMS key to use for the system disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'e522b26d-abf6-4e0d-b5da-04b7******3c', + 'maxLength' => 64, + ], + ], + [ + 'name' => 'EncryptAlgorithm', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not available for public use.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + ], + [ + 'name' => 'Arn', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'This parameter is not available for public use.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RoleType' => [ + 'description' => '> This parameter is not available for public use.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Rolearn' => [ + 'description' => '> This parameter is not available for public use.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'AssumeRoleFor' => [ + 'description' => '> This parameter is unavailable.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '0', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'DiskId' => [ + 'description' => 'The ID of the new system disk.'."\n", + 'type' => 'string', + 'example' => 'd-bp67acfmxazb4ph****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'LoginAsNonRoot.ImageNotSupport', + 'errorMessage' => 'The specified image does not support login as non-root.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ValueNotSupported', + 'errorMessage' => 'The specified parameter SystemDisk.Size is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The specified image does not support the specified instance type.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.ImageNotSupportResize', + 'errorMessage' => 'The specified image does not support resize.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is invalid.', + ], + [ + 'errorCode' => 'InvalidPassword.Malformed', + 'errorMessage' => 'The specified parameter "Password" is not valid.', + ], + [ + 'errorCode' => 'InvalidPasswordParam.Mismatch', + 'errorMessage' => 'The input password should be null when passwdInherit is true.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified image contains the snapshot of the data disk,does not support this operation.', + ], + [ + 'errorCode' => 'InvalidDiskCategory.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DiskCategory" is not valid.', + ], + [ + 'errorCode' => 'InvalidKeyPairName.NotFound', + 'errorMessage' => 'The specified KeyPairName does not exist.', + ], + [ + 'errorCode' => 'DependencyViolation.IoOptimize', + 'errorMessage' => 'The specified parameter InstanceId is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.Architecture', + 'errorMessage' => 'Architecture should not be null.', + ], + [ + 'errorCode' => 'InvalidArchitecture.Malformed', + 'errorMessage' => 'Architecture is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.Platform', + 'errorMessage' => 'Platform should not be null.', + ], + [ + 'errorCode' => 'InvalidPlatform.Malformed', + 'errorMessage' => 'Platform is not valid.', + ], + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk do not exist.', + ], + [ + 'errorCode' => 'InvalidDatadisk.DiskStatusViolation', + 'errorMessage' => 'The operation is not permitted due to status of the Datadisk.', + ], + [ + 'errorCode' => 'InvalidDatadisk.DiskCategoryViolation', + 'errorMessage' => 'The operation is not permitted due to category of the Datadisk.', + ], + [ + 'errorCode' => 'InvalidDatadisk.ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the Datadisk.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "ImageId" that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidInstance.NotFoundSystemDisk', + 'errorMessage' => 'The specified instance has no system disk.', + ], + [ + 'errorCode' => 'InvalidParameter.DiskType', + 'errorMessage' => 'The specified disk type which has kms key can\'t convert to system disk.', + ], + [ + 'errorCode' => 'DISK_IN_DEDICATED_BLOCK_STORAGE_CLUSTER', + 'errorMessage' => 'The disk in dedicated block storage cluster is not allowed to do this operation.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.ReplicationStatusNotFound', + 'errorMessage' => 'Disk replication status not found.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.InReplication', + 'errorMessage' => 'Disk already in replication.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified instanceType is not supported by the image architecture.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportReplaceEncryptedSystemDisk', + 'errorMessage' => 'The specified region not support replace encrypted system disk.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.CapacityNotEnough', + 'errorMessage' => 'The remaining capacity of the current dedicated storage cluster is less than the size of disk.', + ], + [ + 'errorCode' => 'QuotaExceed.DiskCapacity', + 'errorMessage' => 'The used capacity of disk type has exceeded the quota in the zone, %s.', + ], + [ + 'errorCode' => 'AccountForbidden.ProductCreationLimited', + 'errorMessage' => 'The commodity must be officially operated by Aliyun and in pay-as-you-go billing method.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The requested services is not available now. Please try again later.', + ], + [ + 'errorCode' => 'InvalidDiskName.Malformed', + 'errorMessage' => 'The specified parameter "SyatemDisk.DiskName or DataDisk.n.DiskName" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted', + 'errorMessage' => 'Creating non-encrypted disks with encrypted snapshots is not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'LoginAsNonRoot.RegionNotSupport', + 'errorMessage' => 'The specified region does not support login as non-root.', + ], + [ + 'errorCode' => 'InvalidSystemDiskStatus.IsTransfering', + 'errorMessage' => 'The current status of the resource does not support this operation, system disk is transfering.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The instance is locked due to security.', + ], + [ + 'errorCode' => 'ImageNotSubscribed', + 'errorMessage' => 'The specified image has not be subscribed.', + ], + [ + 'errorCode' => 'ImageRemovedInMarket', + 'errorMessage' => 'The specified market image is not available, Or the specified user defined image includes product code because it is based on an image subscribed from marketplace, and that image in marketplace includeing exact the same product code has been removed.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + [ + 'errorCode' => 'DiskCreatingSnapshot', + 'errorMessage' => 'The operation is denied due to a snapshot of the specified disk is not completed yet.', + ], + [ + 'errorCode' => 'IoOptimized.NotSupported', + 'errorMessage' => 'The specified image is not support IoOptimized Instance.', + ], + [ + 'errorCode' => 'ImageNotSupportInstanceType', + 'errorMessage' => 'The specified image don not support the InstanceType instance.', + ], + [ + 'errorCode' => 'QuotaExceed.BuyImage', + 'errorMessage' => 'The specified image is from the image market,You have not bought it or your quota has been exceeded.', + ], + [ + 'errorCode' => 'INST_HAS_UNPAID_ORDER', + 'errorMessage' => 'The instance has unpaid order.', + ], + [ + 'errorCode' => 'OperationDenied.InstanceCreating', + 'errorMessage' => 'The specified instance is creating.', + ], + [ + 'errorCode' => 'DependencyViolation.WindowsInstance', + 'errorMessage' => 'The instance creating is windows, cannot use ssh key pair to login.', + ], + [ + 'errorCode' => 'InvalidParameter.NotMatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'ResourcesNotInSameZone', + 'errorMessage' => 'The specified instance and disk are not in the same zone.', + ], + [ + 'errorCode' => 'OperationDenied.UnpaidOrder', + 'errorMessage' => 'The specified instance has unpaid order.', + ], + [ + 'errorCode' => 'InvalidHostname.MismatchImage', + 'errorMessage' => 'The hostname of the current instance can not be applied to the image you choose.', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachDisk', + 'errorMessage' => 'Multi attach disk does not support this operation.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportEncryptAlgorithm', + 'errorMessage' => 'The current region does not support creating encrypted disks with EncryptAlgorithm.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotExists', + 'errorMessage' => 'The region not exists.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is not valid.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchKmsKeyId', + 'errorMessage' => 'The specified parameter Encrypted must be true when KmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchEncryptAlgorithm', + 'errorMessage' => 'The specified parameter Encrypted must be true when EncryptAlgorithm is not empty.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'The specified operation need enable KMS.', + ], + [ + 'errorCode' => 'InvalidParameter.DataEncryptedKeyCreateFailed', + 'errorMessage' => 'Create kms data encrypted key fail. If you need further assistance, you can contact the KMS Technical Support.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'InvalidKMSKeyId.NotSymmetric', + 'errorMessage' => 'The specified parameter KmsKeyId must be symmetric.', + ], + [ + 'errorCode' => 'InvalidDiskId.NotSupportReplaceEncryptedSystemDisk', + 'errorMessage' => 'The specified diskId not support replace encrypted system disk.', + ], + [ + 'errorCode' => 'NotSupportSnapshotEncrypted.DiskCategory', + 'errorMessage' => 'The specified disk category does not support creating encrypted system disks or creating encrypted data disks from snapshots. Check the DiskCategory or Encrypted parameter, or check your account for default encryption settings.', + ], + [ + 'errorCode' => 'InvalidParameter.AllEmpty', + 'errorMessage' => 'The current operation does not allow both diskId and imageId to be empty. Make sure that either diskId or imageId is not empty.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The current operation does not allow both diskId and imageId to be set. Make sure that either diskId or imageId is not empty.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The current region does not support changing the image type.', + ], + [ + 'errorCode' => 'OperationDenied.ImageNotValid', + 'errorMessage' => 'The specified Image is disabled or deleted, please check the status of the image.', + ], + [ + 'errorCode' => 'OperationDenied.DiskNoStock', + 'errorMessage' => 'The requested disk category is sold out in the specified zone. Please try a different disk category or another zone.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchSnapshot', + 'errorMessage' => 'The specified parameter Encrypted must be set to true when creating disks with encrypted snapshots.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchDiskDefaultEncryption', + 'errorMessage' => 'Enabling disk default encryption prevents the creation of non-encrypted disks.', + ], + [ + 'errorCode' => 'InvalidPayMethod.SyncPaymentNotSupport', + 'errorMessage' => 'Synchronous payment is not supported. Use another payment method.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.MoreThanMaxSize', + 'errorMessage' => 'The specified SystemDisk.Size parameter exceeds the maximum size.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanImageSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the image size.', + ], + [ + 'errorCode' => 'InvalidSystemDiskSize.LessThanMinSize', + 'errorMessage' => 'The specified parameter SystemDisk.Size is less than the min size.', + ], + [ + 'errorCode' => 'NoSuchResource', + 'errorMessage' => 'The specified resource is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Internal Error.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"DiskId\\": \\"d-bp67acfmxazb4ph****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"337568C5-64F3-4B76-8CDD-D3D8C57B5B8C\\",\\n \\"DiskId\\":\\"d-j6cam2z21u4ks3dj6flb\\"\\n}"},{"type":"xml","example":"\\n d-bp67acfmxazb4ph****\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n","errorExample":"\\n d-23jbf2v5m\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n"}]', + 'title' => 'ReplaceSystemDisk', + 'description' => 'Before you call this operation, refer to [Replace the operating system (system disk) of an instance](~~50134~~).'."\n" + ."\n" + .'When you call this operation for an ECS instance, take note of the following items:'."\n" + ."\n" + .'* The billing method of the system disk cannot be changed.'."\n" + ."\n" + .'* The category of the system disk cannot be changed.'."\n" + ."\n" + .'* Make sure that no unpaid orders are associated with the instance.'."\n" + ."\n" + .'* The instance must be in the `Stopped` state.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note:** The operation is applicable only to instances of the Virtual Private Cloud (VPC) type. If the instance is a pay-as-you-go instance and economical mode by default is enabled, you can enable standard mode when stopping the instance. This prevents instance restart failures caused by insufficient resources after the system disk is replaced. For more information, see [StopInstance](~~25501~~).'."\n" + ."\n" + .'* You can use the parameter `SystemDisk.Size` to re-specify the size of the system disk (cannot be less than the original system disk capacity).'."\n" + ."\n" + .'* If the `OperationLocks` parameter value of the instance contains `"LockReason": "security"`, then the ECS instance is locked for security. You cannot replace the system disk. For more information, see [API behavior when an instance is locked for security reasons](~~25695~~).'."\n" + ."\n" + .'After the system disk is replaced, you can query the status of the instance to check whether the replacement is successful by using the [DescribeInstances](~~25506~~) interface. If the `OperationLocks` parameter is empty, the system disk is replaced.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ResetDisk' => [ + 'summary' => 'Rolls back a cloud disk to a snapshot from an earlier point in time.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '29163', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the cloud disk that you want to roll back.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'd-bp199lyny9b3****', + ], + ], + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot that you want to use to roll back the cloud disk.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 's-bp199lyny9b3****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to check the validity of the request without actually making the 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 resource state limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, the rollback operation is performed.'."\n" + ."\n" + .'Default value: false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F3CD6886-D8D0-4FEE-B93E-1B732396****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DiskCategory.OperationNotSupported', + 'errorMessage' => 'The operation is not supported to the specified disk due to its disk category.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified RegionId is not valid.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The requested services is not available now. Please try again later.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The instance is locked due to security.', + ], + [ + 'errorCode' => 'InvalidParameter.Mismatch', + 'errorMessage' => 'The specified snapshot is not created from the specified disk.', + ], + [ + 'errorCode' => 'InvalidSnapshot.TooOld', + 'errorMessage' => 'The snapshotId is created before 2013-07-15, it cannot be restored since the first time the disk detached.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified snapshot dees not support ResetDisk.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The specified snapshot has not completed yet.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'Operation.Conflict', + 'errorMessage' => 'The operation may conflicts with others.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.HasUnfinishedSnapshot', + 'errorMessage' => 'The current disk has unfinished snapshot.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskResetInProgress', + 'errorMessage' => 'The operation cannot be performed because the disk has an ongoing reset task, please try again later.', + ], + ], + [ + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'Disk.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified SnapshotId does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F3CD6886-D8D0-4FEE-B93E-1B732396****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n F3CD6886-D8D0-4FEE-B93E-1B732396****\\n","errorExample":""}]', + 'title' => 'ResetDisk', + 'description' => 'Before you call this operation, read [Roll back a disk by using a snapshot](~~25450~~).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The cloud disk that you want to roll back must be in the In Use (`In_use`) or Unattached (`Available`) state.'."\n" + .'* The instance to which the cloud disk is attached must be in the `Stopped` state. You can call the [StopInstances](~~155372~~) operation to stop the instance.'."\n" + .'* The snapshot specified by `SnapshotId` must be created from the disk specified by `DiskId`.'."\n" + .'* If the response contains `{"OperationLocks": {"LockReason" : "security"}}` when you query information about an instance by calling the [DescribeInstances](~~25506~~) operation, the instance is locked for security reasons and no operations can be performed on the instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ResetDisks' => [ + 'summary' => 'Rolls back one or more disks by using a snapshot-consistent group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29164', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and resource state limits. If the request fails the dry run, an error code is returned. If the request passes the dry run, the `DryRunOperation` error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, the rollback operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Disk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The disks that you want to roll back.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'SnapshotId' => [ + 'description' => 'The ID of the disk snapshot that is contained in the instance snapshot. You can specify up to 10 disk snapshot IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-j6cdofbycydvg7ey****', + ], + 'DiskId' => [ + 'description' => 'The ID of the disk that you want to roll back. You can specify up to 10 disk IDs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd-j6cf7l0ewidb78lq****', + ], + ], + 'required' => false, + ], + 'required' => true, + 'maxItems' => 16, + 'minItems' => 1, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '3D66C85C-AA97-4A00-B0ED-2D9A80FE782C', + ], + 'OperationProgressSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'OperationProgress' => [ + 'description' => 'Details about the rollback operation.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ErrorMsg' => [ + 'description' => 'The error message that is returned if the request failed. This parameter is empty if the request is successful.'."\n" + ."\n" + .'For information about error codes and error messages, see [Service error codes](https://error-center.alibabacloud.com/status/product/Ecs).'."\n", + 'type' => 'string', + 'example' => 'testErrorMsg', + ], + 'ErrorCode' => [ + 'description' => 'The error code that is returned if the request failed. This parameter is empty if the request is successful.'."\n" + ."\n" + .'For information about error codes and error messages, see [Service error codes](https://error-center.alibabacloud.com/status/product/Ecs).'."\n", + 'type' => 'string', + 'example' => '400', + ], + 'OperationStatus' => [ + 'description' => 'Indicates whether the request is successful. If the request is successful, Success is returned. If the request failed, an error code and an error message are returned.'."\n", + 'type' => 'string', + 'example' => 'Success', + ], + 'RelatedItemSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RelatedItem' => [ + 'description' => 'Details about the resources.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Name' => [ + 'description' => 'The resource name.'."\n", + 'type' => 'string', + 'example' => 'SnapshotId', + ], + 'Value' => [ + 'description' => 'The resource ID.'."\n", + 'type' => 'string', + 'example' => 's-j6cdofbycydvg7ey****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DiskCategory.OperationNotSupported', + 'errorMessage' => 'The operation is not supported to the specified disk due to its disk category.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified RegionId is not valid.', + ], + [ + 'errorCode' => 'DryRunOperation', + 'errorMessage' => 'Request validation has been passed with DryRun flag set.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The instance is locked due to security.', + ], + [ + 'errorCode' => 'InvalidParameter.Mismatch', + 'errorMessage' => 'The specified snapshot is not created from the specified disk.', + ], + [ + 'errorCode' => 'InvalidSnapshot.TooOld', + 'errorMessage' => 'The snapshotId is created before 2013-07-15, it cannot be restored since the first time the disk detached.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified snapshot dees not support ResetDisk.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The specified snapshot has not completed yet.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'Operation.Conflict', + 'errorMessage' => 'The operation may conflicts with others.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.HasUnfinishedSnapshot', + 'errorMessage' => 'The current disk has unfinished snapshot.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support resetting disks.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachDisk', + 'errorMessage' => 'Multi attach disk does not support this operation.', + ], + [ + 'errorCode' => 'InvalidDisk.ShareVolume', + 'errorMessage' => 'The specified diskId is invalid. The shared volume does not support creating a snapshot group.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'Disk.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified SnapshotId does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSnapshot.NotFound', + 'errorMessage' => 'The SnapshotId provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"3D66C85C-AA97-4A00-B0ED-2D9A80FE782C\\",\\n \\"OperationProgressSet\\": {\\n \\"OperationProgress\\": [\\n {\\n \\"ErrorMsg\\": \\"testErrorMsg\\",\\n \\"ErrorCode\\": \\"400\\",\\n \\"OperationStatus\\": \\"Success\\",\\n \\"RelatedItemSet\\": {\\n \\"RelatedItem\\": [\\n {\\n \\"Name\\": \\"SnapshotId\\",\\n \\"Value\\": \\"s-j6cdofbycydvg7ey****\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 5C4160C1-C77D-4FD0-9C47-DB9FFA3D1220\\n \\n \\n Success\\n \\n \\n \\n s-j6cdofbycydvg7ey****\\n SnapshotId\\n \\n \\n d-j6cf7l0ewidb78lq****\\n DiskId\\n \\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'ResetDisks', + 'description' => 'This operation will be removed in the future. We recommend that you call the [ResetDisk](~~25520~~) operation to roll back a disk.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ReInitDisk' => [ + 'summary' => 'Re-initializes a cloud disk to the state when the cloud disk was created.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29142', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the disk.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'd-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'Password', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to reset the password of the instance when you re-initialize its system disk. The password must be 8 to 30 characters in length and must contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. Special characters include:'."\n" + ."\n" + .' ()`~!@#$%^&*-_+=|{}[]:;\'<>,.?/'."\n" + ."\n" + .'For Windows instances, passwords cannot start with a forward slash (/).'."\n" + ."\n" + .'> If the `Password` parameter is specified, we recommend that you send requests over HTTPS to prevent password leaks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsV587!', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair. This parameter is empty by default.'."\n" + ."\n" + .'> The parameter is applicable only to Linux instances. You can bind an SSH key pair to an instance as the logon credential when you re-initialize the system disk of the instance. After the SSH key pair is bound, the username and password-based logon method is disabled for the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testKeyPairName', + ], + ], + [ + 'name' => 'AutoStartInstance', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically start the instance after the disk is re-initialized. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'false', + ], + ], + [ + 'name' => 'SecurityEnhancementStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use Security Center free of charge after the system disk is re-initialized. Valid values:'."\n" + ."\n" + .'* Active: uses Security Center free of charge after the system disk is re-initialized. This value is applicable to only public images.'."\n" + .'* Deactive: does not use Security Center free of charge after the system disk is re-initialized. This value is applicable to all images.'."\n" + ."\n" + .'Default value: Deactive.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'LoginAsNonRoot.ImageNotSupport', + 'errorMessage' => 'The specified image does not support login as non-root.', + ], + [ + 'errorCode' => 'DiskHasSnapshotsWithInstantAccessEnabled.OperationNotSupported', + 'errorMessage' => 'The operation is not supported to the specified disk that have snapshots with InstantAccess enabled.', + ], + [ + 'errorCode' => 'InvalidPassword.Malformed', + 'errorMessage' => 'The specified parameter "Password" is not valid.', + ], + [ + 'errorCode' => 'InvalidKeyPairName.NotFound', + 'errorMessage' => 'The specified KeyPairName does not exist.', + ], + [ + 'errorCode' => 'DependencyViolation.IoOptimize', + 'errorMessage' => 'The specified parameter InstanceId is not valid.', + ], + [ + 'errorCode' => 'DiskCategory.OperationNotSupported', + 'errorMessage' => 'The operation is not supported to the specified disk due to its disk category.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified RegionId is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'LoginAsNonRoot.RegionNotSupport', + 'errorMessage' => 'The specified region does not support login as non-root.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The instance is locked due to security.', + ], + [ + 'errorCode' => 'InvalidSnapshot.TooOld', + 'errorMessage' => 'The disk is created from a snapshotId made before 2013-07-15, it cannot be re-initiated the specified disk any more since the detached first time.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The snapshot which is used to create the specified disk has been deleted.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'DiskCreatingSnapshot', + 'errorMessage' => 'The operation is denied due to a snapshot of the specified disk is not completed yet.', + ], + [ + 'errorCode' => 'SharedImageDeleted', + 'errorMessage' => 'The specified image by others shared is deleted.', + ], + [ + 'errorCode' => 'DependencyViolation.WindowsInstance', + 'errorMessage' => 'The instance creating is windows, cannot use ssh key pair to login.', + ], + [ + 'errorCode' => 'InvalidDisk.DiskFromClonedNotSupport', + 'errorMessage' => 'The specified disk %s is cloned from source disk %s, so not support reinit', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in volume white list.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachDisk', + 'errorMessage' => 'Multi attach disk does not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag.', + ], + [ + 'errorCode' => 'InvalidSourceSnapshot', + 'errorMessage' => 'The source snapshot of the disk has been deleted and cannot support the current operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidImageId.NotFound', + 'errorMessage' => 'The specified ImageId does not exist.', + ], + [ + 'errorCode' => 'InvalidDiskId.OperationNotSupported', + 'errorMessage' => 'The operation is not supported due to image not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\"\\n}"},{"type":"xml","example":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n","errorExample":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n"}]', + 'title' => 'ReInitDisk', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* The disk that you want to re-initialize must be in the **In Use** (`In_use`) state and the instance to which the disk is attached must be in the **Stopped** (`Stoppe`) state.'."\n" + .'* If an instance has never been started since it was created, the disks attached to it cannot be re-initialized.'."\n" + .'* If a local snapshot has been created for a disk, the disk cannot be re-initialized.'."\n" + .'* If a system disk is re-initialized, the disk is restored to the state of the image from which it was created. If the image has been deleted, the disk cannot be re-initialized.'."\n" + .'* For a data disk that was created from scratch, the disk is initialized to the empty disk state. For a data disk that is created from a snapshot, the disk is initialized to the snapshot state. If the snapshots were deleted, the disks cannot be re-initialized and an error is returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyDiskDeployment' => [ + 'summary' => 'Migrates disks to or from a dedicated block storage cluster, or migrates disks between different dedicated block storage clusters.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '172533', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the disk.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'd-bp131n0q38u3a4zi****', + ], + ], + [ + 'name' => 'DiskCategory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new disk category. The parameter can be used only when you migrate a disk between dedicated block storage clusters. Only ESSDs can be created in dedicated block storage clusters. Set this parameter to cloud_essd.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the disk category is not changed.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_essd', + ], + ], + [ + 'name' => 'PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new performance level of the ESSD. The parameter can be used only when you migrate data between dedicated block storage clusters. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50000 random read/write IOPS.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the performance level is not modified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + ], + [ + 'name' => 'StorageClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the dedicated block storage cluster to which data disk N belongs.'."\n" + ."\n" + .'* When you migrate a disk to a dedicated block storage cluster, the` StorageClusterId ` parameter must be specified.'."\n" + .'* When you migrate a disk to a public block storage cluster, the `StorageClusterId` parameter must be left empty.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the disk is migrated to a public block storage cluster.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dbsc-cn-c4d2uea****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, service limits, and unavailable ECS resources. If the request fails the dry run, an error message is returned. If the request passes the dry run, the DryRunOperation error code is returned.'."\n" + .'* false: performs a dry run and performs the actual request. If the request passes the dry run, a 2xx HTTP status code is returned and the operation is performed.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'D69846D9-F17F-51C0-8AC6-B4B71777****', + ], + 'TaskId' => [ + 'description' => 'The ID of the disk migration task.'."\n", + 'type' => 'string', + 'example' => 't-bp67acfmxazb4p****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDiskSpec.Malformed', + 'errorMessage' => 'The specified parameter DiskCategory or PerformanceLevel is not supported.', + ], + [ + 'errorCode' => 'AccountInArrears', + 'errorMessage' => 'The account is in arrears.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.DiskAlreadyInDestination', + 'errorMessage' => 'The specified disk is already in destination.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'DiskCreatingSnapshot', + 'errorMessage' => 'The operation is denied due to a snapshot of the specified disk is not completed yet.', + ], + [ + 'errorCode' => 'InvalidOperation.DiskTypeUnsupported', + 'errorMessage' => 'The type of the disk does not support this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.ChargeTypeUnsupported', + 'errorMessage' => 'The charge type of the disk does not support this operation.', + ], + [ + 'errorCode' => 'InvalidPerformanceLevel.DiskSizeUnsupported', + 'errorMessage' => 'The specified parameter PerformanceLevel does not match the disk size.', + ], + [ + 'errorCode' => 'DiskLimitExceeded', + 'errorMessage' => 'The number of migrated disks at the same time exceeds the limit.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone; try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachDisk', + 'errorMessage' => 'Multi attach disk does not support this operation.', + ], + [ + 'errorCode' => 'InvalidDisk.DetachedSystemDisk', + 'errorMessage' => 'The specified resource is/has a detached system disk %s , not support current operation.', + ], + [ + 'errorCode' => 'InvalidOperation.NoPermission', + 'errorMessage' => 'You are not authorized to do this action.', + ], + [ + 'errorCode' => 'InvalidOperation.LimitQosUnsupported', + 'errorMessage' => 'The specified disk has limited bps or iops, can not do this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.AcrossRegionsOrZonesUnsupported', + 'errorMessage' => 'Migration across regions or available zones is not supported.', + ], + [ + 'errorCode' => 'InvalidOperation.AttachedShareDisk', + 'errorMessage' => 'Attached share disk does not support this operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + [ + 'errorCode' => 'InvalidStorageClusterId.NotFound', + 'errorMessage' => 'The specified dedicated block storage cluster does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Ecs::2014-05-26::DescribeTasks', + 'callbackInterval' => 300000, + 'maxCallbackTimes' => 900, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"D69846D9-F17F-51C0-8AC6-B4B71777****\\",\\n \\"TaskId\\": \\"t-bp67acfmxazb4p****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n D69846D9-F17F-51C0-8AC6-B4B71777****\\n t-bp67acfmxazb4p****\\n","errorExample":""}]', + 'title' => 'ModifyDiskDeployment', + 'description' => '> The Dedicated Block Storage Cluster feature is available in the following regions: China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Heyuan), Indonesia (Jakarta), Germany (Frankfurt), and China South 1 Finance.'."\n" + ."\n" + .'Before you call the ModifyDiskDeployment operation, make sure that you fully understand the billing methods and prices of disks and dedicated block storage clusters. In addition, make sure that the dedicated block storage clusters are unexpired and your account has no overdue payments. For more information, see [Dedicated block storage cluster](~~208883~~) and [Block storage devices](~~179022~~).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The disks and a dedicated block storage cluster to which you want to migrate the disk must be in the same zone.'."\n" + .'* You can migrate only pay-as-you-go disks. If you want to migrate subscription disks, change the disks to pay-as-you-go disks first. For more information, see [Change the billing method of a disk](~~145018~~).'."\n" + .'* The specifications of disks that you want to migrate to a destination block storage cluster must the same as the disk specifications that the destination dedicated block storage cluster supports. During migration, you can change the specifications of the disks to ensure specification consistency.'."\n" + .'* The disk must be in the **In Use** (In_Use) or **Available** (Available) state.'."\n" + .'* If the disk is attached to an Elastic Compute Service (ECS) instance, the instance must be in the **Running** (Running) or **Stopped** (Stopped) state. The ECS instance cannot be in the Expired state.'."\n" + .'* The performance level of an Enterprise SSD (ESSD) is limited by the ESSD disk size. If you cannot upgrade the performance level of an ESSD, extend the ESSD and try again. For more information, see [ResizeDisk](~~25522~~) and [ESSDs](~~122389~~).'."\n" + .'* An account can perform up to five disk migration tasks in the same region at the same time.'."\n" + .'* When a disk is being migrated, you cannot cancel the migration task, create snapshots for the disk, change the disk configurations, resize the disk, mount the disk, unmount the disk, or re-initialize the disk.'."\n" + ."\n" + .'> After you migrate a disk to a destination cluster by calling the ModifyDiskDeployment operation, the billing method, disk specifications, and capabilities of the destination cluster take effect immediately on the disk. Alibaba Cloud charges the disk based on the disk category and performance level. For more information, see [Dedicated block storage cluster](~~208883~~) and [Block storage devices](~~179022~~).'."\n", + ], + 'DeleteDisk' => [ + 'summary' => 'Deletes a pay-as-you-go data disk. The data disk can be a basic disk, an ultra disk, a standard SSD, or an Enterprise SSD (ESSD).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28863', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the disk that you want to release.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'd-bp14k9cxvr5uzy5****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'DiskNotPortable', + 'errorMessage' => 'The specified disk is not a portable disk.', + ], + [ + 'errorCode' => 'DiskTypeViolation', + 'errorMessage' => 'The specified disk is a system disk and cannot support the operation.', + ], + [ + 'errorCode' => 'DiskCreatingSnapshot', + 'errorMessage' => 'The operation is denied due to a snapshot of the specified disk is not completed yet.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.Initializing', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'DiskStillAttached', + 'errorMessage' => 'The disk is still attached to the disk.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidDiskStatus.DeleteProtection', + 'errorMessage' => 'The specified disk is under delete protection, can not be deleted.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}"},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n"}]', + 'title' => 'DeleteDisk', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* Manual snapshots of the disk are retained.'."\n" + .'* You can call the [ModifyDiskAttribute](~~25517~~) operation to configure whether to retain automatic snapshots of the disk or release the snapshots along with the disk. We recommend that you delete the snapshots that are no longer needed to maintain a sufficient quota for new automatic snapshots.'."\n" + .'* The disk must be in the Unattached (Available) state.'."\n" + .'* If the specified DiskId parameter does not exist, the request is ignored.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'EnableDiskEncryptionByDefault' => [ + 'summary' => 'Enables the Account-level Elastic Block Storage (EBS) Default Encryption feature in a region.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '201495', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnabled', + 'errorMessage' => 'KMS must be enabled for encrypted disks.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Abs.InvalidAction.RegionNotSupport', + 'errorMessage' => 'This region does not support this action.', + ], + [ + 'errorCode' => 'InvalidOperation.DefaultEncryptionAlreadyEnabled', + 'errorMessage' => 'The specified region is already default encryption settings.', + ], + [ + 'errorCode' => 'InvalidParameter.RegionIdNotExists', + 'errorMessage' => 'The specified region does not exists.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSKeyIdNotFound', + 'errorMessage' => 'The specified KMSKeyId not found, %s.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSServiceNotOpen', + 'errorMessage' => 'KMS service is currently not open.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","type":"json"}]', + 'title' => 'EnableDiskEncryptionByDefault', + 'description' => '> The Account-level EBS Default Encryption feature is available only in specific regions and to specific users. To use the feature, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n" + ."\n" + .'* **Precautions**'."\n" + ."\n" + .' * To enable the Account-level EBS Default Encryption feature as a Resource Access Management (RAM) user, grant the `AliyunECSFullAccess` permission to the RAM user. For more information, see [Grant permissions to a RAM user](~~116146~~).'."\n" + .' * Before you can enable the Account-level EBS Default Encryption feature in a region, you must [activate Key Management Service (KMS)](~~480156~~) in the region.'."\n" + .' * After you enable the Account-level EBS Default Encryption feature in a region, you can purchase only encrypted cloud disks in the region. For more information, see the [Limits](~~59643#50de175230erj~~) section of the "Encrypt cloud disks" topic.'."\n" + ."\n" + .'* **Considerations**'."\n" + ."\n" + .' * After you enable the Account-level EBS Default Encryption feature in a region, new pay-as-you-go and subscription cloud disks in the region must be encrypted. You can use the KMS key configured for the feature or specify other KMS keys to encrypt the cloud disks.'."\n" + .' * The first time you enable the Account-level EBS Default Encryption feature in a region, the service key in the region is automatically used to encrypt EBS resources.'."\n" + ."\n" + .'* **Suggestions**'."\n" + ."\n" + .' * You can call the [DescribeDiskEncryptionByDefaultStatus](~~2851493~~) operation to query whether the Account-level EBS Default Encryption feature is enabled in a region and the [DescribeDiskDefaultKMSKeyId](~~2851490~~) operation to query the ID of the KMS key used by the feature in a region.'."\n" + .' * You can call the [ModifyDiskDefaultKMSKeyId](~~2851492~~) or [ResetDiskDefaultKMSKeyId](~~2851539~~) operation to change or reset the KMS key used by the Account-level EBS Default Encryption feature in a region.'."\n" + .' * You can call the [DisableDiskEncryptionByDefault](~~2851491~~) operation to disable the Account-level EBS Default Encryption feature in a region.'."\n", + ], + 'DescribeDiskEncryptionByDefaultStatus' => [ + 'summary' => 'Queries whether account-level default encryption of Elastic Block Storage (EBS) resources is enabled in a region.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '201499', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'Encrypted' => [ + 'description' => 'Indicates whether account-level default encryption of EBS resources is enabled in the region. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidParameter.RegionIdNotExists', + 'errorMessage' => 'The specified region does not exists.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"Encrypted\\": false\\n}","type":"json"}]', + 'title' => 'DescribeDiskEncryptionByDefaultStatus', + ], + 'DescribeDiskDefaultKMSKeyId' => [ + 'summary' => 'Queries the Key Management Service (KMS) key used by the Account-level Elastic Block Storage (EBS) Default Encryption feature in a region.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '201500', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. You can call the DescribeRegions operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key.'."\n", + 'type' => 'string', + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidParameter.RegionIdNotExists', + 'errorMessage' => 'The specified region does not exists.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"KMSKeyId\\": \\"0e478b7a-4262-4802-b8cb-00d3fb40****\\"\\n}","type":"json"}]', + 'title' => 'DescribeDiskDefaultKMSKeyId', + ], + 'ModifyDiskDefaultKMSKeyId' => [ + 'summary' => 'Changes the Key Management Service (KMS) key used by the Account-level Elastic Block Storage (EBS) Default Encryption feature in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '201497', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'KMSKeyId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'description' => 'The ID of the new KMS key.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnabled', + 'errorMessage' => 'KMS must be enabled for encrypted disks.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Abs.InvalidAction.RegionNotSupport', + 'errorMessage' => 'This region does not support this action.', + ], + [ + 'errorCode' => 'InvalidParameter.RegionIdNotExists', + 'errorMessage' => 'The specified region does not exists.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSKeyIdNotFound', + 'errorMessage' => 'The specified KMSKeyId not found, %s.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSServiceNotOpen', + 'errorMessage' => 'KMS service is currently not open.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidDefaultEncryption.NotFound', + 'errorMessage' => 'You have not configured default encryption setting in this region.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","type":"json"}]', + 'title' => 'ModifyDiskDefaultKMSKeyId', + 'description' => '* To call this operation as a Resource Access Management (RAM) user, grant the `AliyunECSFullAccess` permission to the RAM user. For more information, see [Grant permissions to a RAM user](~~116146~~).'."\n" + .'* Before you can call this operation in a region, make sure that the Account-level EBS Default Encryption feature is enabled in the region.'."\n" + .'* The first time you use a customer master key (CMK), you must use the `AliyunECSDiskEncryptDefaultRole` role to grant Elastic Compute Service (ECS) access to KMS resources. For more information, see [Grant access to KMS keys through RAM roles](~~2838993~~).'."\n", + ], + 'ResetDiskDefaultKMSKeyId' => [ + 'summary' => 'Resets the Key Management Service (KMS) key used by Account-level Elastic Block Storage (EBS) Default Encryption in a region to the service key.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '201498', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region for which you want to disable Account-level EBS Default Encryption. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnabled', + 'errorMessage' => 'KMS must be enabled for encrypted disks.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Abs.InvalidAction.RegionNotSupport', + 'errorMessage' => 'This region does not support this action.', + ], + [ + 'errorCode' => 'InvalidParameter.RegionIdNotExists', + 'errorMessage' => 'The specified region does not exists.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSKeyIdNotFound', + 'errorMessage' => 'The specified KMSKeyId not found, %s.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSServiceNotOpen', + 'errorMessage' => 'KMS service is currently not open.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidDefaultEncryption.NotFound', + 'errorMessage' => 'You have not configured default encryption setting in this region.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","type":"json"}]', + 'title' => 'ResetDiskDefaultKMSKeyId', + 'description' => '* You must grant the RAM user the `AliyunECSFullAccess` permissions. For information about how to grant permissions to a RAM user, see [Grant permissions to a RAM user](~~116146~~).'."\n" + .'* Before you can call this operation in a region, make sure that the **Account-level Elastic Block Storage (EBS) Default Encryption** feature is enabled in the region.'."\n", + ], + 'DisableDiskEncryptionByDefault' => [ + 'summary' => 'Disables account-level default encryption of Elastic Block Storage (EBS) resources in a region. After you disable account-level default encryption of EBS resources in a region, the encryption status of existing disks in the region does not change. When you create a disk, you can still choose to encrypt the disk.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'none', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '201496', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region for which you want to disable Account-level EBS Default Encryption. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'Abs.InvalidAction.RegionNotSupport', + 'errorMessage' => 'This region does not support this action.', + ], + [ + 'errorCode' => 'InvalidParameter.RegionIdNotExists', + 'errorMessage' => 'The specified region does not exists.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in disk white list.', + ], + [ + 'errorCode' => 'InvalidDefaultEncryption.NotFound', + 'errorMessage' => 'You have not configured default encryption setting in this region.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","type":"json"}]', + 'title' => 'DisableDiskEncryptionByDefault', + 'description' => '* **Instructions**'."\n" + ."\n" + .' * You must grant the RAM user the `AliyunECSFullAccess` permissions. For information about how to grant permissions to a RAM user, see [Grant permissions to a RAM user](~~116146~~).'."\n" + ."\n" + .'* **Considerations**'."\n" + ."\n" + .' * After Account-level EBS Default Encryption is disabled, the encryption status of existing cloud disks is not affected.'."\n" + .' * After Account-level EBS Default Encryption is disabled, you can still choose to encrypt new cloud disks when you purchase the disks.'."\n", + ], + 'OpenSnapshotService' => [ + 'summary' => 'Activate the snapshot service.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29031', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-beijing', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C36234E8-4C67-5F6C-8C07-F51B2EE2C560', + ], + ], + ], + ], + ], + 'errorCodes' => [], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"C36234E8-4C67-5F6C-8C07-F51B2EE2C560\\"\\n}","type":"json"}]', + 'title' => 'OpenSnapshotService', + ], + 'CreateSnapshot' => [ + 'summary' => 'Creates a snapshot for a cloud disk.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28846', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the cloud disk.', + 'type' => 'string', + 'required' => true, + 'example' => 'd-bp1s5fnvk4gn2tws0****', + ], + ], + [ + 'name' => 'SnapshotName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the snapshot. The name must be 2 to 128 characters in length and start with a letter. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'> The name cannot start with http:// or https://. The name cannot start with `auto` because the names of automatic snapshots start with auto.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testSnapshotName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the snapshot. The description must be 2 to 256 characters in length and cannot start with `http:// `or `https://`.'."\n" + ."\n" + .'By default, this parameter is left empty.', + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'RetentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The retention period of the snapshot. Unit: days. Valid values: 1 to 65536. After the retention period ends, the snapshot is automatically released.'."\n" + ."\n" + .'This parameter is left empty by default, which indicates that the snapshot is not automatically released.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '30', + ], + ], + [ + 'name' => 'Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the snapshot. Valid values:'."\n" + ."\n" + .'* Standard: standard snapshot'."\n" + .'* Flash: local snapshot'."\n" + ."\n" + .'> This parameter is no longer used. By default, new standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).', + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 make sure that the token is unique among requests. The **ClientToken** value can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).', + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The snapshot type. Valid values:'."\n" + ."\n" + .'* Standard: standard snapshot'."\n" + .'* Flash: local snapshot'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the `InstantAccess` parameter to ensure future compatibility. This parameter and the `InstantAccess` parameter cannot be specified at the same time. For more information, see the "Description" section of this topic.', + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'InstantAccess', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the instant access feature. Valid values:'."\n" + ."\n" + .'* true: enables the instant access feature. This feature can be enabled only for ESSDs.'."\n" + .'* false: does not enable the instant access feature. If InstantAccess is set to false, a standard snapshot is created.'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This parameter is no longer used. By default, new standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'InstantAccessRetentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The validity period of the instant access feature. When the validity period ends, the feature is disabled and the instant access snapshot is automatically released. This parameter takes effect only when `InstantAccess` is set to true. Unit: days. Valid values: 1 to 65535.'."\n" + ."\n" + .'By default, the value of this parameter is the same as that of `RetentionDays`.'."\n" + ."\n" + .'> This parameter is no longer used. By default, new standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the snapshot.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag to add to the snapshot.', + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The tag key to add to the snapshot.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the Tag.N.key parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Key' => [ + 'description' => 'The key of tag N to add to the snapshot. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the snapshot. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The tag value to add to the snapshot.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the Tag.N.Value parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'StorageLocationArn', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is unavailable for public use.', + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot.', + 'type' => 'string', + 'example' => 's-bp17441ohwka0yuh****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'InvalidSnapshotName.Malformed', + 'errorMessage' => 'The specified SnapshotName is wrongly formed.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'DiskCategory.OperationNotSupported', + 'errorMessage' => 'The type of the specified disk does not support creating a snapshot.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidRetentionDays.Malformed', + 'errorMessage' => 'The specified RetentionDays is not valid.', + ], + [ + 'errorCode' => 'CreateSnapshot.Failed', + 'errorMessage' => 'The process of creating snapshot is failed.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to user flow control.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.CreatingSnapshot', + 'errorMessage' => 'A previous snapshot creation is in process.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The disk attached instance is locked due to security.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.NeverAttached', + 'errorMessage' => 'The specified disk has never been attached to any instance.', + ], + [ + 'errorCode' => 'QuotaExceed.Snapshot', + 'errorMessage' => 'The snapshot quota exceeds.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.NeverUsed', + 'errorMessage' => 'The specified disk has never been used after creating.', + ], + [ + 'errorCode' => 'CreateSnapshot.Failed', + 'errorMessage' => 'The process of creating snapshot is failed.', + ], + [ + 'errorCode' => 'DiskInArrears', + 'errorMessage' => 'The specified operation is denied as your disk has expired.', + ], + [ + 'errorCode' => 'DiskId.ValueNotSupported', + 'errorMessage' => 'The specified parameter diskid is not supported.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectVolumeStatus', + 'errorMessage' => 'The current volume status does not support this operation.', + ], + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The specified clientToken is used.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.Invalid', + 'errorMessage' => 'The specified disk status invalid, restart instance and try again.', + ], + [ + 'errorCode' => 'IncorrectDiskType.NotSupport', + 'errorMessage' => 'The specified device type is not supported.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.Transferring', + 'errorMessage' => 'The specified device is transferring, you can retry after the process is finished.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'ECS tags must be added to the CMK.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'IdempotentProcessing', + 'errorMessage' => 'The previous idempotent request(s) is still processing.', + ], + [ + 'errorCode' => 'InvalidSnapshotCategory.Malformed', + 'errorMessage' => 'The specified Category is not valid.', + ], + [ + 'errorCode' => 'InvalidAction.Unauthorized', + 'errorMessage' => 'The specified action is not valid.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupportSnapshotInstantAccessRegion', + 'errorMessage' => 'The snapshot InstantAccess is not supported for this region.', + ], + [ + 'errorCode' => 'InvalidCategoryAndInstantAccess.Malformed', + 'errorMessage' => 'The snapshot Category and InstantAccess can\'t be used together.', + ], + [ + 'errorCode' => 'DISK_HAS_CREATING_SNAPSHOT', + 'errorMessage' => 'The operation cannot be performed while a snapshot is being created for the disk.', + ], + [ + 'errorCode' => 'HibernationConfigured.InstanceOperationForbidden', + 'errorMessage' => 'The operation is not permitted due to limit of the hibernation configured instance.', + ], + [ + 'errorCode' => 'QuotaExceed.SnapshotQuota', + 'errorMessage' => 'The quota is insufficient, please contact your channel partner to increase the quota.', + ], + [ + 'errorCode' => 'InvalidInstantAccessRetentionDays.Malformed', + 'errorMessage' => 'The specified InstantAccessRetentionDays is not valid.', + ], + [ + 'errorCode' => 'CloudBoxNotSupportSnapshotWithInstantAccess', + 'errorMessage' => 'The specified disk in CloudBox does not support to create a snapshot with InstantAccess.', + ], + [ + 'errorCode' => 'InvalidOperation.UnfinishedEncryptedSnapshotCopy', + 'errorMessage' => 'This disk has unfinished encrypted copy snapshots in the target region.', + ], + [ + 'errorCode' => 'QuotaExceed.ConcurrentSnapshotQuota', + 'errorMessage' => 'The number of snapshots being created for the disk %s has exceeded the concurrent quota (%s). Please wait for the previous snapshots to complete before trying again.', + ], + [ + 'errorCode' => 'InvalidClientToken.Malformed', + 'errorMessage' => 'The specified clientToken is improperly formatted. It must contain only ASCII characters and must not exceed 64 characters in length.', + ], + [ + 'errorCode' => 'InvalidParameter.UnauthorizedStorageLocationArn', + 'errorMessage' => 'The operation has failed due to lack of permission for the specified "StorageLocationArn". Please use a resource with appropriate permission for the operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified DiskId does not exist.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidVolumeId.NotFound', + 'errorMessage' => 'The specified volume does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"SnapshotId\\": \\"s-bp17441ohwka0yuh****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n C8B26B44-0189-443E-9816-D951F59623A9\\r\\n s-bp17441ohwka0yuh****\\r\\n","errorExample":""}]', + 'title' => 'CreateSnapshot', + 'description' => 'The local snapshot feature is replaced by the instant access feature. Take note of the following items:'."\n" + ."\n" + .'* If you have used the local snapshot feature before December 14, 2020, you can use `Category`.'."\n" + .'* If you have not used the local snapshot feature before December 14, 2020, new snapshots of your Enterprise SSD (ESSD) series disks are instantly available after creation without the need for additional configurations, regardless of whether the snapshots are manually or automatically created. ESSD-series disks include ESSDs, ESSD AutoPL disks, ESSD Entry disks, and Regional ESSDs. InstantAccess, InstantAccessRetentionDays, and DisableInstantAccess that are related to the instant access feature no longer take effect in API operations. Available is added to the DescribeSnapshots and DescribeSnapshotGroups operations to indicate whether snapshots are available.'."\n" + ."\n" + .'Prerequisites:'."\n" + ."\n" + .'* Elastic Compute Service (ECS) Snapshot is activated. For more information, see [Activate ECS Snapshot](~~108381~~).'."\n" + ."\n" + .'* The disk for which you want to create a snapshot is in the **In_use** or **Available** state. Take note of the following items:'."\n" + ."\n" + .' * If the disk is in the **In_use** state, make sure that the ECS instance to which the disk is attached is in the **Running** or **Stopped** state.'."\n" + .' * If the disk is in the **Available** state, make sure that the disk was attached to an ECS instance. Snapshots cannot be created for disks that have never been attached to an ECS instance.'."\n" + .' * When you use a disk to create a dynamic extended volume or a RAID array, we recommend that you create a snapshot-consistent group and enable the application-consistent snapshot feature to back up data. When a business system involves multiple disks, you can create a snapshot-consistent group to ensure a consistent write order and the crash consistency of business system data. For more information, see [Create a snapshot-consistent group](~~199625~~) and [Create application-consistent snapshots](~~208589~~).'."\n" + ."\n" + .'When you create a snapshot, take note of the following items:'."\n" + ."\n" + .'* We recommend that you create snapshots during off-peak hours because snapshot creation degrades disk I/O performance by up to 10% and slows down data reads and writes.'."\n" + ."\n" + .'* If a snapshot is being created, you cannot use this snapshot to create a custom image by calling the [CreateImage](~~25535~~) operation.'."\n" + ."\n" + .'* If operations are performed on the disk and incremental data is generated when a snapshot is being created, the incremental data is not included in the snapshot.'."\n" + ."\n" + .'* When a snapshot is being created for a disk that is attached to an ECS instance, do not perform operations that change the status of the instance, such as stopping or restarting the instance. Otherwise, the snapshot may fail to be created.'."\n" + ."\n" + .'* You cannot resize a disk for which a snapshot is being created. Wait until the snapshot is created before you resize the disk.'."\n" + ."\n" + .'* You can create snapshots for a disk that is in the **Expired** (`Expired`) state. If the release time scheduled for a disk arrives while a snapshot is being created for the disk, the snapshot is in the **Creating** (`Creating`) state and is deleted when the disk is released.'."\n" + ."\n" + .'* After you create snapshots, you are charged snapshot storage fees per region based on the total size of the snapshots that are stored in the region. For more information, see [Snapshots](~~56159~~).'."\n" + ."\n" + .'* In the following scenarios, you cannot create snapshots for a disk:'."\n" + ."\n" + .' * The number of manual snapshots of the disk has reached 256.'."\n" + .' * A snapshot is being created for the disk.'."\n" + .' * If the response contains `{"OperationLocks": {"LockReason" : "security"}}` when you query information about an ECS instance, the instance is locked for security reasons and no operations are allowed on the instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSnapshots' => [ + 'summary' => 'Queries the details of cloud disk snapshots. The details include the status of the snapshots, the amount of remaining time required to create the snapshots, and the retention period of the automatic snapshots in days.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28999', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance whose cloud disk snapshots you want to query.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The disk ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SnapshotLinkId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The snapshot chain ID. You can specify a JSON array that contains up to 100 snapshot chain IDs. Separate the snapshot chain IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["sl-bp1grgphbcc9brb5****", "sl-bp1c4izumvq0i5bs****", … "sl-bp1akk7isz866dds****"]', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the disk. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnapshotIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of snapshots. You can specify a JSON array that consists of up to 100 snapshot IDs. Separate the snapshot IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["s-bp67acfmxazb4p****", "s-bp67acfmxazb5p****", … "s-bp67acfmxazb6p****"]', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: 100'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'SnapshotName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the snapshot.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testSnapshotName', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the snapshot. Valid values:'."\n" + ."\n" + .'* progressing: The snapshot is being created.'."\n" + .'* accomplished: The snapshot is created.'."\n" + .'* failed: The snapshot fails to be created.'."\n" + .'* all (default): This value indicates all snapshot states.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'all', + ], + ], + [ + 'name' => 'SnapshotType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the snapshot. Valid values:'."\n" + ."\n" + .'* auto: automatic snapshot'."\n" + .'* user: manual snapshot'."\n" + .'* all (default): all snapshot types'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'all', + ], + ], + [ + 'name' => 'Filter.1.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key of filter 1 that is used to query resources. Set the value to `CreationStartTime`. You can specify a time by configuring both `Filter.1.Key` and `Filter.1.Value` to query resources that were created after the time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationStartTime', + ], + ], + [ + 'name' => 'Filter.2.Key', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key of filter 2 that is used to query resources. Set the value to `CreationEndTime`. You can specify a time by configuring both `Filter.2.Key` and `Filter.2.Value` to query resources that were created before the time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CreationEndTime', + ], + ], + [ + 'name' => 'Filter.1.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of filter 1 that is used to query resources. Set the value to a time. If you configure this parameter, you must also configure `Filter.1.Key`. Specify the time in the `yyyy-MM-ddTHH:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2019-12-13T17:00Z', + ], + ], + [ + 'name' => 'Filter.2.Value', + 'in' => 'query', + 'schema' => [ + 'description' => 'The value of filter 2 that is used to query resources. Set the value to a time. If you configure this parameter, you must also configure `Filter.2.Key`. Specify the time in the `yyyy-MM-ddTHH:mmZ` format. The time must be in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2019-12-13T22:00Z', + ], + ], + [ + 'name' => 'Usage', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the snapshot has been used to create custom images or disks. Valid values:'."\n" + ."\n" + .'* image: The snapshot has been used to create custom images.'."\n" + .'* disk: The snapshot has been used to create disks.'."\n" + .'* image_disk: The snapshot has been used to create both custom images and data disks.'."\n" + .'* none: The snapshot has not been used to create custom images or disks.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'none', + ], + ], + [ + 'name' => 'SourceDiskType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source disk type of the snapshot. Valid values:'."\n" + ."\n" + .'* system: system disk.'."\n" + .'* data: data disk.'."\n" + ."\n" + .'> The value of this parameter is case-insensitive.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Data', + ], + ], + [ + 'name' => 'Encrypted', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the snapshot is encrypted. Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID. If you configure this parameter to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of whether you configure this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks your AccessKey pair, the permissions of the RAM user, and the required parameters. If the request passes the dry run, the DryRunOperation error code is returned. Otherwise, an error message 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' => 'KMSKeyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Key Management Service (KMS) key that is used for the data disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + ], + [ + 'name' => 'Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the snapshot. Valid values:'."\n" + ."\n" + .'* Standard: standard snapshot.'."\n" + ."\n" + .'* Flash: local snapshot. This value will be deprecated. The local snapshot feature is replaced by the instant access feature. When you specify this parameter, take note of the following items:'."\n" + ."\n" + .' * If you have used local snapshots before December 14, 2020, you can use this parameter.'."\n" + .' * If you have not used local snapshots before December 14, 2020, you cannot use this parameter.'."\n" + ."\n" + .'* archive: archive snapshot.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the snapshot.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The key of tag N of the snapshot.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the Tag.N.key parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SnapshotTest', + ], + 'Key' => [ + 'description' => 'The key of tag N of the snapshot. Valid values of N: 1 to 20'."\n" + ."\n" + .'If a single tag is specified to query resources, up to 1,000 resources that have this tag added are returned. If multiple tags are specified to query resources, up to 1,000 resources that have all these tags added are returned. To query more than 1,000 resources with the specified tags, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the snapshot. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The value of tag N of the snapshot.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the Tag.N.Value parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SnapshotTest', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'PageSize' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'PageNumber' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of snapshots.'."\n" + ."\n" + .'> When using the `MaxResults` and `NextToken` parameters for a paginated query, the returned `TotalCount` parameter value is invalid.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Snapshots' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Snapshot' => [ + 'description' => 'Details about the snapshots.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the snapshot. Valid values:'."\n" + ."\n" + .'* progressing: The snapshot is being created.'."\n" + .'* accomplished: The snapshot is created.'."\n" + .'* failed: The snapshot failed to be created.'."\n", + 'type' => 'string', + 'example' => 'accomplished', + ], + 'CreationTime' => [ + 'description' => 'The time when the snapshot was created. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2020-08-20T14:52:28Z', + ], + 'Progress' => [ + 'description' => 'The progress of the snapshot creation task. Unit: percent (%).'."\n", + 'type' => 'string', + 'example' => '100%', + ], + 'InstantAccess' => [ + 'description' => 'Indicates whether the instant access feature is enabled. Valid values:'."\n" + ."\n" + .'* true: The instant access feature is enabled. By default, the instant access feature is enabled for Enterprise SSDs (ESSDs) and ESSD Entry disks.'."\n" + .'* false: The instant access feature is disabled. The snapshot is a standard snapshot for which the instant access feature is disabled.'."\n" + ."\n" + .'> This parameter is deprecated. By default, new standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Available' => [ + 'description' => 'Indicates whether the snapshot can be shared and be used to create or roll back a cloud disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'RemainTime' => [ + 'description' => 'The amount of remaining time required to create the snapshot. Unit: seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '38', + ], + 'SourceDiskSize' => [ + 'description' => 'The capacity of the source disk. Unit: GiB.'."\n", + 'type' => 'string', + 'example' => '40', + ], + 'RetentionDays' => [ + 'description' => 'The retention period of the automatic snapshot. Unit: days.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '30', + ], + 'SourceDiskType' => [ + 'description' => 'The type of the source disk. Valid values:'."\n" + ."\n" + .'* system'."\n" + .'* data'."\n", + 'type' => 'string', + 'example' => 'system', + ], + 'SourceStorageType' => [ + 'description' => 'The category of the source disk.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use other parameters to ensure future compatibility.'."\n", + 'type' => 'string', + 'example' => 'disk', + ], + 'Usage' => [ + 'description' => 'Indicates whether the snapshot was used to create images or cloud disks. Valid values:'."\n" + ."\n" + .'* image: The snapshot was used to create custom images.'."\n" + .'* disk: The snapshot was used to create cloud disks.'."\n" + .'* image_disk: The snapshot was used to create custom images and data disks.'."\n" + .'* none: The snapshot was not used to create custom images or cloud disks.'."\n", + 'type' => 'string', + 'example' => 'image', + ], + 'LastModifiedTime' => [ + 'description' => 'The time when the snapshot was last modified. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2020-08-25T14:18:09Z', + ], + 'Encrypted' => [ + 'description' => 'Indicates whether the snapshot was encrypted. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'SnapshotType' => [ + 'description' => 'The type of the snapshot. Valid values:'."\n" + ."\n" + .'* auto or timer: automatic snapshot'."\n" + .'* user: manual snapshot'."\n" + .'* all: all snapshot types'."\n", + 'type' => 'string', + 'example' => 'all', + ], + 'SourceDiskId' => [ + 'description' => 'The ID of the source disk. This parameter is retained even after the source disk is released.'."\n", + 'type' => 'string', + 'example' => 'd-bp67acfmxazb4ph****', + ], + 'SnapshotName' => [ + 'description' => 'The name of the snapshot. This parameter is returned only if a snapshot name was specified when the snapshot was created.'."\n", + 'type' => 'string', + 'example' => 'testSnapshotName', + ], + 'InstantAccessRetentionDays' => [ + 'description' => 'Indicates the validity period of the instant access feature. When the validity period ends, the instant access feature is automatically disabled.'."\n" + ."\n" + .'By default, the value of this parameter is the same as the value of `RetentionDays`.'."\n" + ."\n" + .'> This parameter is deprecated. By default, new standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '30', + ], + 'Description' => [ + 'description' => 'The description of the snapshot.'."\n", + 'type' => 'string', + 'example' => 'testDescription', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot.'."\n", + 'type' => 'string', + 'example' => 's-bp67acfmxazb4p****', + ], + 'RegionId' => [ + 'description' => 'The region ID of the snapshot.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the snapshot belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'Category' => [ + 'description' => 'The category of the snapshot. Valid values:'."\n" + ."\n" + .'* Standard: standard snapshot.'."\n" + .'* Flash: local snapshot. This value will be deprecated. The local snapshot feature is replaced by the instant access feature.'."\n" + .'* archive: archive snapshot.'."\n", + 'type' => 'string', + 'example' => 'standard', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key used for the data disk.'."\n", + 'type' => 'string', + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + 'SnapshotSN' => [ + 'description' => 'The serial number of the snapshot.'."\n", + 'type' => 'string', + 'example' => '64472-116742336-61976****', + ], + 'ProductCode' => [ + 'description' => 'The product code of the Alibaba Cloud Marketplace image.'."\n", + 'type' => 'string', + 'example' => 'jxsc000****', + ], + 'SourceSnapshotId' => [ + 'title' => '源快照', + 'description' => 'The ID of the source snapshot.'."\n", + 'type' => 'string', + 'example' => 's-bp67acfmxazb4p****', + ], + 'SourceRegionId' => [ + 'title' => '源快照地域', + 'description' => 'The region ID of the source snapshot.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'SnapshotLinkId' => [ + 'title' => '快照关联的快照链Id', + 'description' => 'The ID of the snapshot chain that is associated with the snapshot.'."\n", + 'type' => 'string', + 'example' => 'sl-bp1grgphbcc9brb5****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the snapshot.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value of the snapshot.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key of the snapshot.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTag.Mismatch', + 'errorMessage' => 'The specified Tag.n.Key and Tag.n.Value are not match.', + ], + [ + 'errorCode' => 'InvalidTagCount', + 'errorMessage' => 'The specified tags are beyond the permitted range.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidSnapshotIds.Malformed', + 'errorMessage' => 'The amount of specified specified snapshot Ids exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidSnapshotCategory.Malformed', + 'errorMessage' => 'The specified Category is not valid.', + ], + [ + 'errorCode' => 'InvalidCategory.SnapshotLinkMismatch', + 'errorMessage' => 'The specified category does not match the actual category of the snapshot link.', + ], + ], + [ + [ + 'errorCode' => 'InvalidFilterKey.NotFound', + 'errorMessage' => 'The specified FilterKey is not found.', + ], + [ + 'errorCode' => 'InvalidFilterValue', + 'errorMessage' => 'The specified FilterValue exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidUsage', + 'errorMessage' => 'The specifed Usage is not valid.', + ], + [ + 'errorCode' => 'InvalidSourceDiskType', + 'errorMessage' => 'The specifed SourceDiskType is not valid.', + ], + [ + 'errorCode' => 'InvalidStatus.NotFound', + 'errorMessage' => 'The specified Status is not found.', + ], + [ + 'errorCode' => 'InvalidSnapshotType.NotFound', + 'errorMessage' => 'The specfied SnapshotType is not found.', + ], + [ + 'errorCode' => 'InvalidSnapshotLinkId.NotFound', + 'errorMessage' => 'The specified snapshot link is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"PageSize\\": 10,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"Snapshots\\": {\\n \\"Snapshot\\": [\\n {\\n \\"Status\\": \\"accomplished\\",\\n \\"CreationTime\\": \\"2020-08-20T14:52:28Z\\",\\n \\"Progress\\": \\"100%\\",\\n \\"InstantAccess\\": false,\\n \\"Available\\": false,\\n \\"RemainTime\\": 38,\\n \\"SourceDiskSize\\": \\"40\\",\\n \\"RetentionDays\\": 30,\\n \\"SourceDiskType\\": \\"system\\",\\n \\"SourceStorageType\\": \\"disk\\",\\n \\"Usage\\": \\"image\\",\\n \\"LastModifiedTime\\": \\"2020-08-25T14:18:09Z\\",\\n \\"Encrypted\\": false,\\n \\"SnapshotType\\": \\"all\\",\\n \\"SourceDiskId\\": \\"d-bp67acfmxazb4ph****\\",\\n \\"SnapshotName\\": \\"testSnapshotName\\",\\n \\"InstantAccessRetentionDays\\": 30,\\n \\"Description\\": \\"testDescription\\",\\n \\"SnapshotId\\": \\"s-bp67acfmxazb4p****\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"Category\\": \\"standard\\",\\n \\"KMSKeyId\\": \\"0e478b7a-4262-4802-b8cb-00d3fb40****\\",\\n \\"SnapshotSN\\": \\"64472-116742336-61976****\\",\\n \\"ProductCode\\": \\"jxsc000****\\",\\n \\"SourceSnapshotId\\": \\"s-bp67acfmxazb4p****\\",\\n \\"SourceRegionId\\": \\"cn-hangzhou\\",\\n \\"SnapshotLinkId\\": \\"sl-bp1grgphbcc9brb5****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 10\\n caeba0bbb2be03f84eb48b699f0a4883\\n 1\\n \\n \\n accomplished\\n false\\n 100%\\n false\\n image\\n testDescription\\n standard\\n 0e478b7a-4262-4802-b8cb-00d3fb40****\\n jxsc000****\\n false\\n testSnapshotName\\n d-bp67acfmxazb4ph****\\n disk\\n s-bp67acfmxazb4p****\\n 64472-116742336-61976****\\n 40\\n 2020-08-20T14:52:28Z\\n 2020-08-25T14:18:09Z\\n all\\n system\\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeSnapshots', + 'description' => 'You can specify multiple request parameters, such as `InstanceId`, `DiskId`, and `SnapshotIds`, to query snapshots. The specified parameters have logical AND relations. Only the specified parameters are included in the filter conditions.'."\n" + ."\n" + .'When you use Alibaba Cloud CLI to call an API operation, you must specify request parameter values of different data types in required formats. For more information, see [Parameter formats](~~110340~~).'."\n" + ."\n" + .'Sample requests:'."\n" + ."\n" + .'**Query the snapshots of all cloud disks attached to an Elastic Compute Service (ECS) instance in the China (Hangzhou) region**'."\n" + ."\n" + .' RegionId: cn-hangzhou, // Specify the China (Hangzhou) region.InstanceId: i-bp1fh7by6d9mw7zr**** // Specify the ID of the instance that you want to query.'."\n" + ."\n" + .'**Query the snapshots of a specific cloud disk in the China (Hangzhou) region**'."\n" + ."\n" + .' RegionId: cn-hangzhou, // Specify the China (Hangzhou) region.DiskId: d-bp10e7ej8z743dmu**** // Specify the ID of the cloud disk that you want to query.'."\n" + ."\n" + .'**Query information about two snapshots in the China (Hangzhou) region by snapshot ID**'."\n" + ."\n" + .' RegionId: cn-hangzhou, // Specify the China (Hangzhou) region.SnapshotIds: ["d-bp10e7ej8z743dmu****", "s-bp19vd1lorzgzt2s****"] // Specify the IDs of the snapshots that you want to query.'."\n" + ."\n" + .'**Query snapshots created after a specific point in time in the China (Hangzhou) region**'."\n" + ."\n" + .' RegionId: cn-hangzhou, // Specify the China (Hangzhou) region.Filter.1.Key: CreationStartTime, // Specify a point in time to query snapshots that were created after the specified point in time.Filter.1.Value: 2024-11-27T00:00Z'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSnapshotsUsage' => [ + 'summary' => 'Queries the number of snapshots that are stored in a region and the total size of the snapshots.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29293', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the snapshot. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'SnapshotSize' => [ + 'description' => 'The total size of snapshots stored in the current region. Unit: bytes.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '122', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'SnapshotCount' => [ + 'description' => 'The number of snapshots stored in the current region.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidParam.RegionId', + 'errorMessage' => 'The specified region is not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"SnapshotSize\\": 122,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"SnapshotCount\\": 5\\n}","errorExample":"{\\n\\t\\"SnapshotCount\\": \\"5\\",\\n\\t\\"SnapshotSize\\": \\"122\\",\\n\\t\\"RequestId\\": \\"ACD9BBB0-A9D1-46D7-9630-B7A69889E110\\"\\n}"},{"type":"xml","example":"\\n\\t5\\n\\t122 \\n ED5CF6DD-71CA-462C-9C94-A61A78A01479\\n","errorExample":"\\n\\t5\\n\\t122\\n \\n ED5CF6DD-71CA-462C-9C94-A61A78A01479\\n"}]', + 'title' => 'DescribeSnapshotsUsage', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'If you want to view the snapshot usage of each disk in the current region, we recommend that you call the [DescribeSnapshotLinks](~~55837~~) operation to query snapshot chain information.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySnapshotAttribute' => [ + 'summary' => 'Modifies the name, description, or retention period of a snapshot.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29104', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 's-bp199lyny9bb47pa****', + ], + ], + [ + 'name' => 'SnapshotName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the snapshot. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with http:// or https://. It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'The name cannot start with auto because snapshots whose names start with auto are recognized as automatic snapshots.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testSnapshotName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The snapshot description. It can be empty or up to 256 characters in length. It cannot start with http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'DisableInstantAccess', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to disable the instant access feature. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This parameter is no longer used. By default, new standard snapshots of Enterprise SSDs (ESSDs) are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'RetentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The retention period of the snapshot. After you specify this parameter, the end time of the new retention period is the specified number of days apart from the **creation time** of the snapshot, which follows the ISO 8601 standard in the yyyy-MM-ddTHH:mm:ssZ format and is displayed in UTC. Valid values: 1 to 65536.'."\n" + ."\n" + .'> You can extend the retention period of the snapshot and cannot shorten the retention period.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSnapshotName.Malformed', + 'errorMessage' => 'The specified SnapshotName is wrongly formed.', + ], + [ + 'errorCode' => 'NoAttributeToModify', + 'errorMessage' => 'No attribute to be modified in this request.', + ], + [ + 'errorCode' => 'InvalidRetentionDays.Malformed', + 'errorMessage' => 'The specified RetentionDays is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.DecreaseRetentionDaysUnsupported', + 'errorMessage' => 'The requested operation to decrease retention days for the snapshot is not supported.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The specified snapshot has not completed yet.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.CreatingSnapshot', + 'errorMessage' => 'A previous snapshot creation is in process.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => 'The current operation is not supported because the resource is managed by a cloud product. Please contact the relevant cloud product to confirm the reason.', + ], + [ + 'errorCode' => 'InvalidOperation.DefaultFreeSnapshotNotSupport', + 'errorMessage' => 'The specified snapshot is a default free snapshot and does not support this operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified SnapshotId does not exist.', + ], + [ + 'errorCode' => 'InvalidSnapshotDisableInstantAccess.Malformed', + 'errorMessage' => 'The specified DisableInstantAccess is not valid!', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n C8B26B44-0189-443E-9816-D951F59623A9\\r\\n","errorExample":""}]', + 'title' => 'ModifySnapshotAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySnapshotCategory' => [ + 'summary' => 'Changes the type of a snapshot. You can call this operation to convert a standard snapshot into an archive snapshot.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '221991', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 's-123**sd', + ], + ], + [ + 'name' => 'Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the snapshot.'."\n" + ."\n" + .'* Archive: archive snapshot'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Archive', + 'enum' => [ + 'Archive', + ], + ], + ], + [ + 'name' => 'RetentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The retention period of the snapshot. Unit: days. The retention period started at the point in time when the snapshot was created. You can archive only standard snapshots that have been retained for at least 14 days.'."\n" + ."\n" + .'After the snapshot is archived, the minimum retention period (also called minimum archive period) is 60 days. When you calculate the retention period of archived snapshots, you must deduct the retention period of standard snapshots. If you delete the snapshot within 60 days after the snapshot is archived, you are charged archive tier storage fees for the snapshot for 60 days. For more information about the billing of snapshots, see [Snapshots](~~56159~~).'."\n" + ."\n" + .'Value range \\[74,65536]'."\n" + ."\n" + .'> If you do not specify this parameter, the snapshot is permanently retained.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '65536', + 'minimum' => '61', + 'example' => '60', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'B48A12CD-1295-4A38-A8F0-0E92C937****', + ], + 'TaskId' => [ + 'description' => 'The ID of the archive task. You can call the DescribeTasks operation to query the status and progress of the archive task.'."\n", + 'type' => 'string', + 'example' => 't-dxh34xds**d', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRetentionDays.Malformed', + 'errorMessage' => 'The specified RetentionDays is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.DecreaseRetentionDaysUnsupported', + 'errorMessage' => 'The requested operation to decrease retention days for the snapshot is not supported.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The specified snapshot has not completed yet.', + ], + [ + 'errorCode' => 'InvalidOperation.ArchiveSharedSnapshotUnsupported', + 'errorMessage' => 'The specified shared snapshot is not support archive.', + ], + [ + 'errorCode' => 'InvalidOperation.ArchiveCloudBoxSnapshotUnsupported', + 'errorMessage' => 'The specified snapshot in CloudBox is not support archive.', + ], + [ + 'errorCode' => 'InvalidStatus.SnapshotUnfinished', + 'errorMessage' => 'The specified unfinished snapshot is not support archive.', + ], + [ + 'errorCode' => 'InvalidStatus.SnapshotAgeLimit', + 'errorMessage' => 'The specified snapshot created within 14 days is not support archive.', + ], + [ + 'errorCode' => 'InvalidStatus.SnapshotInArchive', + 'errorMessage' => 'The specified snapshot is currently being archived.', + ], + [ + 'errorCode' => 'InvalidParameter.SnapshotCategory', + 'errorMessage' => 'The specified parameter category is invalid.', + ], + [ + 'errorCode' => 'InvalidRetentionDays.LessThanLockExpiredTime', + 'errorMessage' => 'The specified parameter RetentionDays is invalid. The RetentionDays should be greater than the snapshot LockExpiredTime.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => 'The current operation is not supported because the resource is managed by a cloud product. Please contact the relevant cloud product to confirm the reason.', + ], + [ + 'errorCode' => 'InvalidOperation.InstantAccessEnabledUnsupport', + 'errorMessage' => 'The specified snapshot with legacy Instant Access enabled does not support archive.', + ], + [ + 'errorCode' => 'InvalidOperation.EncryptedSnapshotUnsupport', + 'errorMessage' => 'Archiving encrypted snapshots is not currently supported.', + ], + [ + 'errorCode' => 'QuotaExceed.ConcurrentArchiveSnapshotQuota', + 'errorMessage' => 'The number of concurrent archiving tasks associated with the disk of the current snapshot has exceeded the quota limit. Please try again later.', + ], + [ + 'errorCode' => 'InvalidOperation.DefaultFreeSnapshotNotSupport', + 'errorMessage' => 'The specified snapshot is a default free snapshot and does not support this operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified SnapshotId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"B48A12CD-1295-4A38-A8F0-0E92C937****\\",\\n \\"TaskId\\": \\"t-dxh34xds**d\\"\\n}","type":"json"}]', + 'title' => 'ModifySnapshotCategory', + 'description' => '* Archived snapshots cannot be restored to standard snapshots.'."\n" + .'* You can archive only standard snapshots that have been retained for at least 14 days.'."\n" + .'* You cannot archive snapshots that are shared to you, snapshots managed by Cloud Backup, or snapshots in cloud boxes.'."\n", + ], + 'CopySnapshot' => [ + 'summary' => 'Copies a standard or encrypted snapshot from one region to another.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'abilityTreeCode' => '28812', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag key and value of the new snapshot.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag key and value of the new snapshot.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the new snapshot. The tag key cannot be an empty string. It can be up to 128 characters in length and cannot start with acs: or aliyun. It cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the new snapshot. The tag value can be an empty string. It can be up to 128 characters in length and cannot start with acs: or aliyun. It cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the source snapshot. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'DestinationRegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the destination region to which to copy the source snapshot.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'us-east-1', + ], + ], + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the source snapshot.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 's-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DestinationSnapshotName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the new snapshot. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with http:// or https://. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'This parameter is left empty by default.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'CopySnapshotDemo', + ], + ], + [ + 'name' => 'DestinationSnapshotDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the new snapshot. The description must be 2 to 256 characters in length and cannot start with http:// or https://.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'CopySnapshotDemo', + ], + ], + [ + 'name' => 'RetentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The retention period of the new snapshot. Unit: days. The new snapshot is automatically released when its retention period ends. Valid values: 1 to 65536.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that the snapshot is not automatically released.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '60', + ], + ], + [ + 'name' => 'Encrypted', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to encrypt the new snapshot. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'KMSKeyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the customer master key (CMK) in Key Management Service (KMS) in the destination region.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + 'maxLength' => 64, + ], + ], + [ + 'name' => 'Arn', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '>This parameter is currently in invitational preview and unavailable for public use.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RoleType' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Rolearn' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'AssumeRoleFor' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '0', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'DestinationStorageLocationArn', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'SnapshotId' => [ + 'description' => 'The ID of the new snapshot.'."\n", + 'type' => 'string', + 'example' => 's-bp17441ohwka0yui****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'C8B26B44-0189-443E-9816-D951F596****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Arns', + 'errorMessage' => 'The specified Arns is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidSnapshotId.EncryptedNotSupport', + 'errorMessage' => 'The specified snapshot with encrypted does not support copy.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified snapshot is not exists.', + ], + [ + 'errorCode' => 'InvalidSnapshotCategory.NotSupportCopy', + 'errorMessage' => 'The specified snapshot\'s category does not support copy.', + ], + [ + 'errorCode' => 'InvalidUser.NotInWhiteList', + 'errorMessage' => 'The user is not in the white list of copying snapshot.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'InvalidSnapshotId.NotReady', + 'errorMessage' => 'The specified snapshot has not completed yet.', + ], + [ + 'errorCode' => 'InvalidOperation.Unauthorized', + 'errorMessage' => 'The specified operation is unauthorized.', + ], + [ + 'errorCode' => 'InvalidOperation.UnfinishedCrossRegionCopy', + 'errorMessage' => 'This disk has unfinished cross-region copy snapshots in the target region.', + ], + [ + 'errorCode' => 'InvalidOperation.NotSupportCopyInSameRegion', + 'errorMessage' => 'Copying snapshot in the same region is not supported.', + ], + [ + 'errorCode' => 'InvalidSnapshotName.Malformed', + 'errorMessage' => 'The specified SnapshotName is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidRetentionDays.Malformed', + 'errorMessage' => 'The specified RetentionDays is not valid.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportedEncryptedSnapshotCopy', + 'errorMessage' => 'The specified region not support copy encrypted snapshot.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support byok.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotSupportEncryptAlgorithm', + 'errorMessage' => 'The current region does not support creating encrypted disks with EncryptAlgorithm.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotExists', + 'errorMessage' => 'Region not exists.', + ], + [ + 'errorCode' => 'InvalidEncryptAlgorithm', + 'errorMessage' => 'The specified parameter EncryptAlgorithm is not valid.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchKmsKeyId', + 'errorMessage' => 'The specified parameter Encrypted must be true when KmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotMatchEncryptAlgorithm', + 'errorMessage' => 'The specified parameter Encrypted must be true when EncryptAlgorithm is not empty.', + ], + [ + 'errorCode' => 'InvalidEncrypted.NotSupportDecrypt', + 'errorMessage' => 'Encrypted snapshot not support copy to decrypt snapshot.', + ], + [ + 'errorCode' => 'InvalidSnapshotCategory.NotSupportCrossRegionCopy', + 'errorMessage' => 'The specified snapshot is not support cross region copy.', + ], + [ + 'errorCode' => 'InvalidSnapshotCategory.NotSupportEncryptedCopy', + 'errorMessage' => 'The specified snapshot is not support encrypted copy.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'The specified operation need enable KMS.', + ], + [ + 'errorCode' => 'InvalidParameter.DataEncryptedKeyCreateFailed', + 'errorMessage' => 'Create kms data encrypted key fail. If you need further assistance, you can contact the KMS Technical Support.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'InvalidKMSKeyId.NotSymmetric', + 'errorMessage' => 'The specified parameter KmsKeyId must be symmetric.', + ], + [ + 'errorCode' => 'QuotaExceed.SnapshotQuota', + 'errorMessage' => 'The quota is insufficient, please contact your channel partner to increase the quota.', + ], + [ + 'errorCode' => 'InvalidOperation.UnfinishedEncryptedSnapshotCopy', + 'errorMessage' => 'This disk has unfinished encrypted copy snapshots in the target region.', + ], + [ + 'errorCode' => 'InvalidParameterDestinationStorageLocationArn.Unauthorized', + 'errorMessage' => 'The operation has failed due to lack of permission for the specified "DestinationStorageLocationArn". Please use a resource with appropriate permission for the operation.', + ], + [ + 'errorCode' => 'InvalidParameterDestinationStorageLocationArn.RegionNotMatch', + 'errorMessage' => 'The region information in the specified parameter "DestinationStorageLocationArn" is inconsistent with "DestinationRegionId". Please use the correct information for the operation.', + ], + [ + 'errorCode' => 'InvalidSnapshot.StorageLocationNotSupported', + 'errorMessage' => 'The storage location of the current snapshot does not support this operation.', + ], + [ + 'errorCode' => 'InvalidSnapshot.EncryptedNotSupported', + 'errorMessage' => 'The current operation does not support the use of encrypted snapshots.', + ], + [ + 'errorCode' => 'InvalidParameterDestinationStorageLocationArn.Malformed', + 'errorMessage' => 'The specified DestinationStorageLocationArn is wrongly formed.', + ], + [ + 'errorCode' => 'OperationDenied.NonCompliantDestinationRegion', + 'errorMessage' => 'The copy operation to the destination region is not in compliance with regulations.', + ], + [ + 'errorCode' => 'OperationDenied.SnapshotCategoryNotSupportCopy', + 'errorMessage' => 'The specified category of snapshot not support copy.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + ], + 409 => [ + [ + 'errorCode' => 'InvalidOperation.Conflict', + 'errorMessage' => 'Request was denied due to conflict with a previous request, please try again later.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"SnapshotId\\": \\"s-bp17441ohwka0yui****\\",\\n \\"RequestId\\": \\"C8B26B44-0189-443E-9816-D951F596****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n C8B26B44-0189-443E-9816-D951F596****\\n s-bp17441ohwka0yui****\\n","errorExample":""}]', + 'title' => 'CopySnapshot', + 'description' => 'When you call this operation, take note of the following item:'."\n" + ."\n" + .'* New snapshots (snapshot copies) cannot be used to roll back the disks for which source snapshots (copied snapshots) were created.'."\n" + .'* Local snapshots cannot be copied.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteSnapshot' => [ + 'summary' => 'Deletes a specified snapshot. If you call this operation to delete a snapshot that is being created, the associated snapshot creation task is also canceled.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28887', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The snapshot ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 's-bp1c0doj0taqyzzl****', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to force delete the snapshot that has been used to create cloud disks. Valid values:'."\n" + ."\n" + .'* true: force deletes the snapshot. After the snapshot is force deleted, the cloud disks created from the snapshot cannot be re-initialized.'."\n" + .'* false: does not force delete the snapshot.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter SnapshotId that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.CreatingSnapshot', + 'errorMessage' => 'A previous snapshot creation is in process.', + ], + ], + 403 => [ + [ + 'errorCode' => 'SnapshotCreatedImage', + 'errorMessage' => 'The snapshot has been used to create user defined image(s).', + ], + [ + 'errorCode' => 'SnapshotCreatedDisk', + 'errorMessage' => 'The snapshot has been used to create disk(s).', + ], + [ + 'errorCode' => 'Operation.Conflict', + 'errorMessage' => 'The operation may conflicts with others, please retry later.', + ], + [ + 'errorCode' => 'InvalidOperation.RelatedSnapshotNotFinished', + 'errorMessage' => 'The related standard snapshot is not finished.', + ], + [ + 'errorCode' => 'InvalidOperation.DeleteSharedSnapshotUnsupported', + 'errorMessage' => 'The current snapshot shares authorization with other users. Please revoke the shared authorization through resource management first.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => 'The current operation is not supported because the resource is managed by a cloud product. Please contact the relevant cloud product to confirm the reason.', + ], + [ + 'errorCode' => 'InvalidOperation.SnapshotIsLocked', + 'errorMessage' => 'The current operation is not supported because the snapshot is locked. Please wait for the lock to expire before retrying.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified snapshot is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}"},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n"}]', + 'title' => 'DeleteSnapshot', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* If the snapshot does not exist, the request is ignored.'."\n" + .'* If the snapshot has been used to create custom images, the snapshot cannot be deleted. You need to call the [DeleteImage](~~25537~~) operation to delete the custom images before you can delete the snapshot.'."\n" + .'* If the snapshot has been used to create disks and `Force` is not specified or is set to `false`, the snapshot cannot be deleted directly. If you want to delete the snapshot, set `Force` to true to forcibly delete the snapshot. The disks created from the snapshot cannot be re-initialized after the snapshot is forcibly deleted.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSnapshotLinks' => [ + 'summary' => 'Queries the snapshot chains of cloud disks. A snapshot chain is a chain of all the snapshots created for a disk. A disk corresponds to a chain of snapshots.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28996', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the disk. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp1h6jmbefj2cyqs****', + ], + ], + [ + 'name' => 'DiskIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The disk IDs. You can specify a JSON array that contains a maximum of 100 disk IDs. Separate the disk IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["d-bp1d6tsvznfghy7y****", "d-bp1ippxbaql9zet7****", … "d-bp1ib7bcz07lcxa9****"]', + ], + ], + [ + 'name' => 'SnapshotLinkIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The snapshot chain IDs. You can specify a JSON array that contains a maximum of 100 snapshot chain IDs. Separate the snapshot chain IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["sl-bp1grgphbcc9brb5****", "sl-bp1c4izumvq0i5bs****", … "sl-bp1akk7isz866dds****"]', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '50', + 'default' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page. Maximum value: 100. Default value:'."\n" + ."\n" + .'* If you do not specify this parameter or if you set a value smaller than 10, the default value is 10.'."\n" + .'* If you set a value greater than 100, the default value is 100.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '0', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '50', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of snapshot chains.'."\n" + ."\n" + .'> When using the `MaxResults` and `NextToken` parameters for a paginated query, the returned `TotalCount` parameter value is invalid.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '9', + ], + 'SnapshotLinks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SnapshotLink' => [ + 'description' => 'The information about the snapshot chains.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'InstantAccess' => [ + 'description' => 'Indicates whether the instant access feature is enabled. Valid values:'."\n" + ."\n" + .'* true: The instant access feature is enabled. The feature can be enabled only for Enterprise SSDs (ESSDs).'."\n" + .'* false: The instant access feature is disabled. The snapshot is a standard snapshot for which the instant access feature is disabled.'."\n" + ."\n" + .'> This parameter is no longer used. By default, standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'TotalSize' => [ + 'description' => 'The total size of all snapshots in the snapshot chain. Unit: byte.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '2097152', + ], + 'SourceDiskName' => [ + 'description' => 'The name of the source disk.'."\n", + 'type' => 'string', + 'example' => 'testSourceDiskName', + ], + 'SourceDiskSize' => [ + 'description' => 'The capacity of the source disk. Unit: GiB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '40', + ], + 'SourceDiskType' => [ + 'description' => 'The type of the source disk. Valid values:'."\n" + ."\n" + .'* system: system disk'."\n" + .'* data: data disk'."\n", + 'type' => 'string', + 'example' => 'data', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp1h6jmbefj2cyqs****', + ], + 'SnapshotLinkId' => [ + 'description' => 'The ID of the snapshot chain.'."\n", + 'type' => 'string', + 'example' => 'sl-2ze0y1jwzpb1geqx****', + ], + 'TotalCount' => [ + 'description' => 'The total number of snapshots.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RegionId' => [ + 'description' => 'The region ID of the source disk.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'SourceDiskId' => [ + 'description' => 'The ID of the source disk. This parameter is retained even if the source disk is deleted.'."\n", + 'type' => 'string', + 'example' => 'd-bp1d6tsvznfghy7y****', + ], + 'InstanceName' => [ + 'description' => 'The name of the instance.'."\n", + 'type' => 'string', + 'example' => 'testInstanceName', + ], + 'Category' => [ + 'description' => 'The type of the snapshot chain. Valid values:'."\n" + ."\n" + .'* standard: standard snapshot chain.'."\n" + .'* archive: archive snapshot chain.'."\n" + .'* flash: instant access snapshot chain.'."\n", + 'type' => 'string', + 'example' => 'standard', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified instanceId is not exists. ', + ], + [ + 'errorCode' => 'InvalidRegionId', + 'errorMessage' => 'The specified regionId is invalid.', + ], + [ + 'errorCode' => 'InvalidSnapshotLinkIds', + 'errorMessage' => 'The specified snapshotLinkIds is invalid.', + ], + [ + 'errorCode' => 'InvalidDiskIds', + 'errorMessage' => 'The specified diskIds is invalid.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a****\\",\\n \\"PageSize\\": 50,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 9,\\n \\"SnapshotLinks\\": {\\n \\"SnapshotLink\\": [\\n {\\n \\"InstantAccess\\": false,\\n \\"TotalSize\\": 2097152,\\n \\"SourceDiskName\\": \\"testSourceDiskName\\",\\n \\"SourceDiskSize\\": 40,\\n \\"SourceDiskType\\": \\"data\\",\\n \\"InstanceId\\": \\"i-bp1h6jmbefj2cyqs****\\",\\n \\"SnapshotLinkId\\": \\"sl-2ze0y1jwzpb1geqx****\\",\\n \\"TotalCount\\": 1,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"SourceDiskId\\": \\"d-bp1d6tsvznfghy7y****\\",\\n \\"InstanceName\\": \\"testInstanceName\\",\\n \\"Category\\": \\"standard\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"SnapshotLinks\\": {\\n \\"SnapshotLink\\": [\\n {\\n \\"SourceDiskSize\\": 20,\\n \\"TotalSize\\": 2097152,\\n \\"SourceDiskType\\": \\"data\\",\\n \\"RegionId\\": \\"cn-beijing-btc-a01\\",\\n \\"SnapshotLinkId\\": \\"d-25okbh2pj\\",\\n \\"SourceDiskId\\": \\"d-25okbh2pj\\",\\n \\"TotalCount\\": 1\\n },\\n {\\n \\"SourceDiskSize\\": 40,\\n \\"TotalSize\\": 2097152,\\n \\"SourceDiskType\\": \\"data\\",\\n \\"RegionId\\": \\"cn-beijing-btc-a01\\",\\n \\"SnapshotLinkId\\": \\"d-2ze0y1jwzpb1geqxkroq\\",\\n \\"SourceDiskId\\": \\"d-2ze0y1jwzpb1geqxkroq\\",\\n \\"TotalCount\\": 1\\n }\\n ]\\n },\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 2,\\n \\"RequestId\\": \\"ACD9BBB0-A9D1-46D7-9630-B7A69889E110\\",\\n \\"TotalCount\\": 9\\n}"},{"type":"xml","example":"\\n \\n \\n testInstanceName1\\n 1\\n standard\\n 40\\n i-bp1dh0xo8nucqe1o****\\n sl-bp1hgvjgqo3wn8u7****\\n testSourceDiskName1\\n \\n system\\n 3806330880\\n d-bp149tb0mqn0boy6****\\n \\n \\n testInstanceName2\\n 1\\n standard\\n i-bp1c84ts5f4b6t6z****\\n sl-bp163h35n7endbpv****\\n testSourceDiskName2\\n \\n 2709520384\\n data\\n d-bp1cl4hqnh0i2u5h****\\n \\n \\n 1\\n 2\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 9\\n","errorExample":"\\n \\n \\n d-25okbh2pj\\n d-25okbh2pj\\n data\\n 20\\n cn-beijing-btc-a01\\n 1\\n 2097152\\n \\n \\n d-2ze0y1jwzpb1geqxkroq\\n d-2ze0y1jwzpb1geqxkroq\\n system\\n 40\\n cn-beijing-btc-a01\\n 1\\n 2097152\\n \\n \\n 1\\n 2\\n 9\\n ED5CF6DD-71CA-462C-9C94-A61A78A01479\\n"}]', + 'title' => 'DescribeSnapshotLinks', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You can specify multiple request parameters, such as `RegionId`, `DiskIds`, and `InstanceId`, to query snapshot chains. Specified parameters have logical AND relations.'."\n" + .'* Only the specified parameters are used as filter conditions. If the `DiskIds` and `SnapshotLinkIds` parameters are set to empty JSON arrays, the values are considered as valid filter conditions. In this case, an empty result is returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateSnapshotGroup' => [ + 'summary' => 'Creates a snapshot-consistent group for the disks of an Elastic Compute Service (ECS) instance. A snapshot-consistent group contains snapshots of one or more disks.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28847', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-j6ca469urv8ei629****', + ], + ], + [ + 'name' => 'InstantAccess', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the instant access feature. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This parameter is no longer used. By default, new standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'InstantAccessRetentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of days for which the instant access feature is available. Unit: days. Valid values: 1 to 65535.'."\n" + ."\n" + .'This parameter takes effect only when `InstantAccess` is set to true. The instant access feature is automatically disabled when the specified duration ends.'."\n" + ."\n" + .'This parameter is left empty by default, which indicates that the instant access feature is automatically disabled when the instant access snapshots are released.'."\n" + ."\n" + .'> This parameter is no longer used. By default, new standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the snapshot-consistent group. The name must be 2 to 128 characters in length. The name can contain letters, digits, periods (.), underscores (\\_), hyphens (-), and colons (:). It must start with a letter and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the snapshot-consistent group. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'StorageLocationArn', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is unavailable for public use.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'ExcludeDiskId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the cloud disks for which you do not want to create snapshots. After you specify the IDs of cloud disks, the snapshot-consistent group that you create does not contain the snapshots of the specified cloud disks. Valid values of N: 1 to 16.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that snapshots are created for all disks of the instance.'."\n" + ."\n" + .'> This parameter cannot be set at the same time as the `DiskId.N`.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The IDs of the cloud disks for which you do not want to create snapshots. After you specify the IDs of cloud disks, the snapshot-consistent group that you create does not contain the snapshots of the specified cloud disks. Valid values of N: 1 to 16.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that snapshots are created for all disks of the instance.'."\n" + ."\n" + .'> This parameter cannot be set at the same time as the `DiskId.N`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd-j6cf7l0ewidb78lq****', + ], + 'required' => false, + 'example' => 'd-j6cf7l0ewidb78lq****', + 'maxItems' => 128, + ], + ], + [ + 'name' => 'DiskId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the cloud disks for which you want to create a snapshot-consistent group. You can specify the IDs of cloud disks that are attached to multiple instances within the same zone. Valid values of N: 1 to 16. A snapshot-consistent group can contain snapshots of up to 16 cloud disks whose total disk size does not exceed 32 TiB.'."\n" + ."\n" + .'Take note of the following:'."\n" + ."\n" + .'* You cannot specify both the DiskId.N and `ExcludeDiskId.N` parameters in the same request.'."\n" + .'* If you specify `InstanceId`, you can specify the IDs of cloud disks that are attached only to the specified instance. You cannot specify the IDs of cloud disks that are attached to multiple instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The IDs of the cloud disks for which you want to create a snapshot-consistent group. You can specify the IDs of cloud disks that are attached to multiple instances within the same zone. Valid values of N: 1 to 16. A snapshot-consistent group can contain snapshots of up to 16 cloud disks whose total disk size does not exceed 32 TiB.'."\n" + ."\n" + .'Take note of the following:'."\n" + ."\n" + .'* You cannot specify both the DiskId.N and `ExcludeDiskId.N` parameters in the same request.'."\n" + .'* If you specify `InstanceId`, you can specify the IDs of cloud disks that are attached only to the specified instance. You cannot specify the IDs of cloud disks that are attached to multiple instances.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd-bp1bcpqxahucdrcn****', + ], + 'required' => false, + 'maxItems' => 128, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The list of tags.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the snapshot-consistent group. Valid values of N: 1 to 20. 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`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the snapshot-consistent group. Valid values of N: 1 to 20. The tag value can be an empty string. It can be up to 128 characters in length and cannot start with `acs:`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the snapshot-consistent group belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'SnapshotGroupId' => [ + 'description' => 'The ID of the snapshot-consistent group.'."\n", + 'type' => 'string', + 'example' => 'ssg-j6ciyh3k52qp7ovm****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '01ABBD93-1ABB-4D92-B496-1A3D20EC0697', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDiskIds.NotInSameZone', + 'errorMessage' => 'The specified disks are not in the same availability zone.', + ], + [ + 'errorCode' => 'MissingParamter.InstanceId', + 'errorMessage' => 'The specified InstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidParam.ExcludeDiskIdsAndDiskIds.Conflict', + 'errorMessage' => 'The use of parameter \'ExcludeDiskIds\' and \'DiskIds\' at the same time is not supported.', + ], + [ + 'errorCode' => 'InvalidSnapshotName.Malformed', + 'errorMessage' => 'The specified SnapshotName is wrongly formed.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidRetentionDays.Malformed', + 'errorMessage' => 'The specified RetentionDays is not valid.', + ], + [ + 'errorCode' => 'DiskCategory.OperationNotSupported', + 'errorMessage' => 'The special disk is encrypted, not support this operate.', + ], + [ + 'errorCode' => 'InvalidParameter.Name', + 'errorMessage' => 'The specified Name is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Description', + 'errorMessage' => 'The specified Description is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectDiskStatus.CreatingSnapshot', + 'errorMessage' => 'A previous snapshot creation is in process.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The disk attached instance is locked due to security.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.NeverAttached', + 'errorMessage' => 'The specified disk has never been attached to any instance.', + ], + [ + 'errorCode' => 'QuotaExceed.Snapshot', + 'errorMessage' => 'The snapshot quota exceeds.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.NeverUsed', + 'errorMessage' => 'The specified disk has never been used after creating.', + ], + [ + 'errorCode' => 'CreateSnapshot.Failed', + 'errorMessage' => 'The process of creating snapshot is failed.', + ], + [ + 'errorCode' => 'DiskInArrears', + 'errorMessage' => 'The specified operation is denied as your disk has expired.', + ], + [ + 'errorCode' => 'DiskId.ValueNotSupported', + 'errorMessage' => 'The specified parameter diskid is not supported.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus', + 'errorMessage' => 'The current disk status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectVolumeStatus', + 'errorMessage' => 'The current volume status does not support this operation.', + ], + [ + 'errorCode' => 'IdempotentParameterMismatch', + 'errorMessage' => 'The specified clientToken is used.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.Invalid', + 'errorMessage' => 'The specified device status invalid, restart instance and try again.', + ], + [ + 'errorCode' => 'IncorrectDiskType.NotSupport', + 'errorMessage' => 'The specified device type is not supported.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.Transferring', + 'errorMessage' => 'The specified device is transferring, you can retry after the process is finished.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK needs to be enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'IdempotentProcessing', + 'errorMessage' => 'The previous idempotent request(s) is still processing.', + ], + [ + 'errorCode' => 'InvalidSnapshotCategory.Malformed', + 'errorMessage' => 'The specified Category is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.Unauthorized', + 'errorMessage' => 'The specified operation is unauthorized.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupportSnapshotInstantAccessRegion', + 'errorMessage' => 'The snapshot InstantAccess is not supported for this region.', + ], + [ + 'errorCode' => 'InvalidCategoryAndInstantAccess.Malformed', + 'errorMessage' => 'The snapshot Category and InstantAccess can\'t be used together.', + ], + [ + 'errorCode' => 'IncorrectDiskStatus.TooManyCreatingSnapshots', + 'errorMessage' => 'The specified disk has too many unfinished snapshots.', + ], + [ + 'errorCode' => 'InvalidRegion.NotSupport', + 'errorMessage' => 'The specified region does not support creating snapshot group.', + ], + [ + 'errorCode' => 'UserNotInTheWhiteList', + 'errorMessage' => 'The user is not in the white list of creating snapshot group.', + ], + [ + 'errorCode' => 'InvalidInstance.NoDisk', + 'errorMessage' => 'There is no disk mounted on the instance.', + ], + [ + 'errorCode' => 'NumberExceed.TooManyDisks', + 'errorMessage' => 'The number of all disks in the request exceeds.', + ], + [ + 'errorCode' => 'CapacityExceed.TooManyDisks', + 'errorMessage' => 'The capacity of all disks in the request exceeds.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiAttachDisk', + 'errorMessage' => 'Multi attach disk does not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK needs to be added ECS tag.', + ], + [ + 'errorCode' => 'InvalidDisk.DiskCategoryInconsistent', + 'errorMessage' => 'If any specified disk is of a regional disk category, then all disks must also be of that regional disk category.', + ], + [ + 'errorCode' => 'QuotaExceed.ConcurrentSnapshotQuota', + 'errorMessage' => 'The number of snapshots being created for the disk %s has exceeded the concurrent quota (%s). Please wait for the previous snapshots to complete before trying again.', + ], + [ + 'errorCode' => 'InvalidDisk.ShareVolume', + 'errorMessage' => 'The specified diskId is invalid. The shared volume does not support creating a snapshot group.', + ], + [ + 'errorCode' => 'InvalidParameter.UnauthorizedStorageLocationArn', + 'errorMessage' => 'The operation has failed due to lack of permission for the specified "StorageLocationArn". Please use a resource with appropriate permission for the operation.', + ], + [ + 'errorCode' => 'InvalidOperation.SnapshotStorageLocationUnsupported', + 'errorMessage' => 'Snapshots with storage location in CloudBox do not support the current operation.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified DiskId does not exist.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidVolumeId.NotFound', + 'errorMessage' => 'The specified volume does not exist.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidKMSKeyId.NotFound', + 'errorMessage' => 'The KMS key used by the disk does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"SnapshotGroupId\\": \\"ssg-j6ciyh3k52qp7ovm****\\",\\n \\"RequestId\\": \\"01ABBD93-1ABB-4D92-B496-1A3D20EC0697\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 01ABBD93-1ABB-4D92-B496-1A3D20EC0697\\n ssg-j6ciyh3k52qp7ovm****\\n","errorExample":""}]', + 'title' => 'CreateSnapshotGroup', + 'description' => 'You can specify `InstanceId` to create a snapshot-consistent group for disks on a specific ECS instance. You can also specify `DiskId.N` to create a snapshot-consistent group for multiple disks on multiple ECS instances within the same zone.'."\n" + ."\n" + .'> You cannot specify both `DiskId.N` and `ExcludeDiskId.N` in the same request. If you specify `InstanceId`, you can use `DiskId.N` to specify only disks on the specified ECS instance and cannot use DiskId.N to specify disks across ECS instances.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The disks for which you want to create a snapshot must be in the **In Use** (`In_use`) or **Unattached** (`Available`) state.'."\n" + ."\n" + .' * If a disk is in the **In Use** (`In_use`) state, make sure that the ECS instance to which the disk is attached is in the **Running** (`Running`) or **Stopped** (`Stopped`) state.'."\n" + .' * If a disk is in the **Unattached** (`Available`) state, make sure that the disk has been attached to ECS instances. Snapshots cannot be created for disks that have never been attached to an ECS instance.'."\n" + ."\n" + .'* Snapshot-consistent groups can be used to create snapshots only for Enterprise SSDs (ESSDs), ESSD AutoPL disks, and ESSD Entry disks.'."\n" + ."\n" + .'* A snapshot-consistent group can contain snapshots of up to 16 disks, including system disks and data disks, and cannot exceed 32 TiB in size.'."\n" + ."\n" + .'* Snapshots that you created are stored indefinitely until you delete the snapshots. We recommend that you delete unnecessary snapshots on a regular basis to prevent excess snapshot storage fees.'."\n" + ."\n" + .'* Snapshot-consistent groups cannot be created for disks for which multi-attach feature is enabled. If disks for which the multi-attach feature is enabled are attached to an ECS instance, you must specify the `ExcludeDiskId.N` parameter to exclude the disks.'."\n" + ."\n" + .'For more information about the snapshot-consistent group feature, see [Create a snapshot-consistent group](~~199625~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSnapshotGroups' => [ + 'summary' => 'Queries the information of one or more snapshot-consistent groups, such as the status of the groups, IDs of the instances associated with the groups, and snapshot creation progress.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28995', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the snapshot-consistent group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-j6ca469urv8ei629****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the snapshot-consistent group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testName', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token that determines the start point of the next query. Set the value to the NextToken value that is returned from the last call.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '500', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'SnapshotGroupId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of snapshot-consistent group N. Valid values of N: 1 to 10.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of snapshot-consistent group N. Valid values of N: 1 to 10.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ssg-j6ciyh3k52qp7ovm****', + ], + 'required' => false, + 'example' => 'ssg-j6ciyh3k52qp7ovm****', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The state of snapshot-consistent group N. Valid values of the second N: 1, 2, and 3. Valid values:'."\n" + ."\n" + .'* progressing: The snapshot-consistent group is being created.'."\n" + .'* accomplished: The snapshot-consistent group is created.'."\n" + .'* failed: The snapshot-consistent group fails to be created.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The state of snapshot-consistent group N. Valid values of the second N: 1, 2, and 3. Valid values:'."\n" + ."\n" + .'* progressing: The snapshot-consistent group is being created.'."\n" + .'* accomplished: The snapshot-consistent group is created.'."\n" + .'* failed: The snapshot-consistent group fails to be created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'accomplished', + ], + 'required' => false, + 'example' => 'accomplished', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'AdditionalAttributes', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'required' => false, + 'example' => 'hide', + 'maxItems' => 5, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the snapshot-consistent group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags of the snapshot-consistent group.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the snapshot-consistent group. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the snapshot-consistent group. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the snapshot-consistent group belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The token used to start the next query.'."\n" + ."\n" + .'> If the return value is empty, no more data exists.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '3F9A4CC4-362F-469A-B9EF-B3204EF8AA3A', + ], + 'SnapshotGroups' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SnapshotGroup' => [ + 'description' => 'The information about the snapshot-consistent groups.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The state of the snapshot-consistent group. Valid values:'."\n" + ."\n" + .'* progressing: The snapshot-consistent group was being created.'."\n" + .'* accomplished: The snapshot-consistent group was created.'."\n" + .'* failed: The snapshot-consistent group failed to be created.'."\n", + 'type' => 'string', + 'example' => 'accomplished', + ], + 'CreationTime' => [ + 'description' => 'The creation time. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-03-23T10:58:48Z', + ], + 'Description' => [ + 'description' => 'The description of the snapshot-consistent group.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'ProgressStatus' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'SnapshotGroupId' => [ + 'description' => 'The ID of the snapshot-consistent group.'."\n", + 'type' => 'string', + 'example' => 'ssg-j6ciyh3k52qp7ovm****', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance to which the snapshot-consistent group belongs. This parameter has a value only when all disk snapshots in the snapshot-consistent group belong to the same instance. If disk snapshots in the snapshot-consistent group belong to different instances, you can check the response parameters that start with `Snapshots.Snapshot.Tags.` to determine the ID of the instance to which each snapshot in the snapshot-consistent group belongs.'."\n", + 'type' => 'string', + 'example' => 'i-j6ca469urv8ei629****', + ], + 'Name' => [ + 'description' => 'The name of the snapshot-consistent group.'."\n", + 'type' => 'string', + 'example' => 'testName', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the snapshot-consistent group belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the snapshot-consistent group.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key of the snapshot-consistent group.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The tag value of the snapshot-consistent group.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + ], + ], + ], + ], + ], + 'Snapshots' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Snapshot' => [ + 'description' => 'The information about the snapshots in the snapshot-consistent group.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'SourceDiskId' => [ + 'description' => 'The ID of the source disk. This parameter is retained even after the source disk of the snapshot is released.'."\n", + 'type' => 'string', + 'example' => 'd-j6c3ogynmvpi6wy7****', + ], + 'Progress' => [ + 'description' => 'The progress of the snapshot creation task. Unit: percent (%).'."\n", + 'type' => 'string', + 'example' => '100%', + ], + 'Available' => [ + 'description' => 'Indicates whether the snapshot can be shared and be used to create or roll back a disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'InstantAccessRetentionDays' => [ + 'description' => 'The validity period of the instant access feature. When the validity period ends, the instant access snapshot is automatically released.'."\n" + ."\n" + .'> This parameter is no longer used. By default, standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot.'."\n", + 'type' => 'string', + 'example' => 's-j6cbzmrlbf09w72q****', + ], + 'InstantAccess' => [ + 'description' => 'Indicates whether the instant access feature is enabled. Valid values:'."\n" + ."\n" + .'* true: The instant access feature is enabled. By default, the instant access feature is enabled for ESSDs.'."\n" + .'* false: The instant access feature is disabled. The snapshot is a standard snapshot for which the instant access feature is disabled.'."\n" + ."\n" + .'> This parameter is no longer used. By default, standard snapshots of ESSDs are upgraded to instant access snapshots free of charge without the need for additional configurations. For more information, see [Use the instant access feature](~~193667~~).'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'SourceDiskType' => [ + 'description' => 'The type of the source disk. Valid values:'."\n" + ."\n" + .'* system: system disk'."\n" + .'* data: data disk'."\n", + 'type' => 'string', + 'example' => 'system', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the snapshot. The default values contain snapshot source information.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key of the snapshot. The default values of Key and Value contain snapshot source information.'."\n", + 'type' => 'string', + 'example' => 'acs:ecs:createFrom', + ], + 'Value' => [ + 'description' => 'The tag value of the snapshot. The default values of Key and Value contain snapshot source information.'."\n", + 'type' => 'string', + 'example' => 'i-bp11qm0o3dk4iuc****', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidSnapshotGroupId.MustBeOne', + 'errorMessage' => 'The size of SnapshotGroupIds must be one when AdditionalAttributes has SNAPSHOT_GROUP_PROGRESS_STATUS.', + ], + [ + 'errorCode' => 'InvalidStatus.ValueNotSupported', + 'errorMessage' => 'The specified parameter status is not valid. The expected status is progressing, accomplished or failed.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"RequestId\\": \\"3F9A4CC4-362F-469A-B9EF-B3204EF8AA3A\\",\\n \\"SnapshotGroups\\": {\\n \\"SnapshotGroup\\": [\\n {\\n \\"Status\\": \\"accomplished\\",\\n \\"CreationTime\\": \\"2021-03-23T10:58:48Z\\",\\n \\"Description\\": \\"This is description.\\",\\n \\"ProgressStatus\\": \\"null\\",\\n \\"SnapshotGroupId\\": \\"ssg-j6ciyh3k52qp7ovm****\\",\\n \\"InstanceId\\": \\"i-j6ca469urv8ei629****\\",\\n \\"Name\\": \\"testName\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"TestKey\\",\\n \\"Value\\": \\"TestValue\\"\\n }\\n ]\\n },\\n \\"Snapshots\\": {\\n \\"Snapshot\\": [\\n {\\n \\"SourceDiskId\\": \\"d-j6c3ogynmvpi6wy7****\\",\\n \\"Progress\\": \\"100%\\",\\n \\"Available\\": false,\\n \\"InstantAccessRetentionDays\\": 3,\\n \\"SnapshotId\\": \\"s-j6cbzmrlbf09w72q****\\",\\n \\"InstantAccess\\": true,\\n \\"SourceDiskType\\": \\"system\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"Key\\": \\"acs:ecs:createFrom\\",\\n \\"Value\\": \\"i-bp11qm0o3dk4iuc****\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n caeba0bbb2be03f84eb48b699f0a4883\\n 3F9A4CC4-362F-469A-B9EF-B3204EF8AA3A\\n \\n \\n accomplished\\n This is description.\\n \\n 2021-03-23T10:58:48Z\\n ssg-j6ciyh3k52qp7ovm****\\n rg-bp67acfmxazb4p****\\n testName\\n \\n \\n TestValue\\n TestKey\\n \\n \\n \\n \\n s-j6cbzmrlbf09w72q****\\n 100%\\n false\\n 3\\n system\\n d-j6c3ogynmvpi6wy7****\\n \\n \\n i-bp11qm0o3dk4iuc****\\n acs:ecs:createFrom\\n \\n \\n \\n \\n s-bp1fgrjucs8wr31****\\n 100%\\n system\\n d-bp1bcsu5leotddp****\\n \\n \\n i-bp1emqgxsg88zdl****\\n acs:ecs:createFrom\\n \\n \\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeSnapshotGroups', + 'description' => 'You can specify multiple request parameters to be queried, such as `InstanceId`, `SnapshotGroupId.N`, and `Status.N`. Specified parameters have logical AND relations. Only the specified parameters are included in the filter conditions.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySnapshotGroup' => [ + 'summary' => 'Modifies the name and description of a snapshot-consistent group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29105', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the snapshot-consistent group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnapshotGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot-consistent group. You can call the [DescribeSnapshotGroups](~~210940~~) operation to query the IDs of available snapshot-consistent groups.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ssg-j6ciyh3k52qp7ovm****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the snapshot-consistent group. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with a `http://` or `https://`. The name can contain letters, digits, periods (.), underscores (\\_), hyphens (-), and colons (:).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testName02', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the snapshot-consistent group. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is new description', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'A00B5E55-76B7-42C8-8A80-AF10E980DCC7', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Name', + 'errorMessage' => 'The specified Name is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Description', + 'errorMessage' => 'The specified Description is invalid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSnapshotGroup.NotFound', + 'errorMessage' => 'The SnapshotGroupId provided does not exist in our records.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"A00B5E55-76B7-42C8-8A80-AF10E980DCC7\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n A00B5E55-76B7-42C8-8A80-AF10E980DCC7\\r\\n","errorExample":""}]', + 'title' => 'ModifySnapshotGroup', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteSnapshotGroup' => [ + 'summary' => 'Deletes snapshot-consistent groups.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28888', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the snapshot-consistent group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnapshotGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the snapshot-consistent group. You can call the [DescribeSnapshotGroups](~~210940~~) operation to query the IDs of one or more snapshot-consistent groups.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ssg-j6c9lpuyxo2uxxny****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '6EDE885A-FDC1-4FAE-BC44-6EACAEA6CC6E', + ], + 'OperationProgressSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'OperationProgress' => [ + 'description' => 'Details about the delete operation.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ErrorMsg' => [ + 'description' => 'The error message. This parameter is empty when the operation is successful.'."\n" + ."\n" + .'For information about error codes and error messages, visit the [API error center](https://error-center.aliyun.com/status/product/Ecs).'."\n", + 'type' => 'string', + 'example' => 'testErrorMsg', + ], + 'ErrorCode' => [ + 'description' => 'The error code. This parameter is empty when the operation is successful.'."\n" + ."\n" + .'For information about error codes and error messages, visit the [API error center](https://error-center.aliyun.com/status/product/Ecs).'."\n", + 'type' => 'string', + 'example' => '400', + ], + 'OperationStatus' => [ + 'description' => 'Indicates whether the operation was successful. If the operation was successful, a value of Success is returned. If the operation failed, an error code and an error message are returned.'."\n", + 'type' => 'string', + 'example' => 'Success', + ], + 'RelatedItemSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RelatedItem' => [ + 'description' => 'Details about the resources.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Name' => [ + 'description' => 'The name of the resource.'."\n", + 'type' => 'string', + 'example' => 'SnapshotId', + ], + 'Value' => [ + 'description' => 'The ID of the resource.'."\n", + 'type' => 'string', + 'example' => 's-j6c9lpuyxo2uxxnx****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'SnapshotCreatedImage', + 'errorMessage' => 'The snapshot has been used to create user defined image(s).', + ], + [ + 'errorCode' => 'Operation.Forbidden', + 'errorMessage' => 'The operation is not permitted.', + ], + [ + 'errorCode' => 'SnapshotCreatedDisk', + 'errorMessage' => 'The snapshot that you are trying to delete is in use by one or more Disks.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => 'The current operation is not supported because the resource is managed by a cloud product. Please contact the relevant cloud product to confirm the reason.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSnapshotGroup.NotFound', + 'errorMessage' => 'The SnapshotGroupId provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"6EDE885A-FDC1-4FAE-BC44-6EACAEA6CC6E\\",\\n \\"OperationProgressSet\\": {\\n \\"OperationProgress\\": [\\n {\\n \\"ErrorMsg\\": \\"testErrorMsg\\",\\n \\"ErrorCode\\": \\"400\\",\\n \\"OperationStatus\\": \\"Success\\",\\n \\"RelatedItemSet\\": {\\n \\"RelatedItem\\": [\\n {\\n \\"Name\\": \\"SnapshotId\\",\\n \\"Value\\": \\"s-j6c9lpuyxo2uxxnx****\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 6EDE885A-FDC1-4FAE-BC44-6EACAEA6CC6E\\n \\n \\n Success\\n \\n \\n \\n s-j6c9lpuyxo2uxxnx****\\n SnapshotId\\n \\n \\n \\n \\n \\n Success\\n \\n \\n \\n s-j6c9lpuyxo2uxxnx****\\n SnapshotId\\n \\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DeleteSnapshotGroup', + 'description' => 'If a disk snapshot that is contained in a snapshot-consistent group has been used to create a custom image, the disk snapshot is retained after the snapshot-consistent group is deleted. Before you can delete the disk snapshot, you must call the [DeleteImage](~~25537~~) operation to delete the custom image. Then, you can call the [DeleteSnapshot](~~25525~~) operation to delete the disk snapshot.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateAutoSnapshotPolicy' => [ + 'summary' => 'Creates an automatic snapshot policy in a specific region. You can specify the schedule on which to create automatic snapshots, the retention period of the automatic snapshots, and whether to enable cross-region replication for the snapshots in the automatic snapshot policy. The automatic snapshot policy can be applied to create snapshots for system disks or data disks to back up disk data.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'abilityTreeCode' => '28815', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'regionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the automatic snapshot policy. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'autoSnapshotPolicyName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the automatic snapshot policy. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with http:// or https://. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestName', + ], + ], + [ + 'name' => 'timePoints', + 'in' => 'query', + 'schema' => [ + 'description' => 'The points in time of the day at which to create automatic snapshots. The time must be in UTC+8. Unit: hours. Valid values: 0 to 23, which correspond to the 24 on-the-hour points in time from 00:00:00 to 23:00:00. For example, 1 indicates 01:00:00. Format description:'."\n" + ."\n" + .'* Set this parameter to a JSON-formatted array. For example, a value of \\["1"] specifies automatic snapshots to be created at 01:00:00.'."\n" + .'* To schedule multiple automatic snapshots to be created in a day, you can specify multiple values. Separate the values with commas (,). You can specify up to 24 points in time. For example, a value of \\["1","3","5"] specifies automatic snapshots to be created at 01:00:00, 03:00:00, and 05:00:00.'."\n" + ."\n" + .'> If an automatic snapshot is being created when the time scheduled for creating another automatic snapshot is due, the new snapshot task is skipped. This may occur when a disk contains a large volume of data. For example, you scheduled snapshots to be automatically created at 09:00, 10:00, 11:00, and 12:00. The system starts to create a snapshot for the disk at 09:00:00. The process takes 80 minutes to complete because the disk contains a large volume of data and ends at 10:20:00. The system skips the automatic snapshot task scheduled for 10:00:00 and creates the next automatic snapshot for the disk at 11:00:00.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["0", "1", … "23"]', + ], + ], + [ + 'name' => 'repeatWeekdays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The days of the week on which to create automatic snapshots. Valid values: 1 to 7, which correspond to Monday to Sunday. 1 indicates Monday. Format description:'."\n" + ."\n" + .'* Set this parameter to a JSON-formatted array. For example, a value of \\["1"] specifies automatic snapshots to be created every Monday.'."\n" + .'* To schedule multiple automatic snapshots to be created in a week, you can specify multiple values. Separate the values with commas (,). You can specify a maximum of seven days. For example, a value of \\["1","3","5"] specifies automatic snapshots to be created every Monday, Wednesday, and Friday.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["1","2"]', + ], + ], + [ + 'name' => 'retentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The retention period of the automatic snapshot. Unit: days. Valid values:'."\n" + ."\n" + .'* \\-1: The automatic snapshot is retained until it is deleted.'."\n" + .'* 1 to 65535: The automatic snapshot is retained for the specified number of days. After the retention period of the automatic snapshot expires, the automatic snapshot is automatically deleted.'."\n" + ."\n" + .'Default value: -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '30', + ], + ], + [ + 'name' => 'EnableCrossRegionCopy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable cross-region replication for snapshots.'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TargetCopyRegions', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination region to which to copy the snapshot. You can specify only a single destination region.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["cn-hangzhou"]', + ], + ], + [ + 'name' => 'StorageLocationArn', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'CopiedSnapshotsRetentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The retention period of the snapshot copy in the destination region. Unit: days. Valid values:'."\n" + ."\n" + .'* \\-1: The snapshot copy is retained until it is deleted.'."\n" + .'* 1 to 65535: The snapshot copy is retained for the specified number of days. After the retention period of the snapshot copy expires, the snapshot copy is automatically deleted.'."\n" + ."\n" + .'Default value: -1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '30', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the automatic snapshot policy.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the automatic snapshot policy. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the automatic snapshot policy. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://. The tag value cannot start with acs:.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource group ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-aek2kkmhmhs****', + ], + ], + [ + 'name' => 'CopyEncryptionConfiguration', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The encryption parameters for cross-region snapshot replication.'."\n", + 'type' => 'object', + 'properties' => [ + 'Encrypted' => [ + 'description' => 'Specifies whether to enable cross-region snapshot replication and encryption. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the Key Management Service (KMS) key used in cross-region snapshot replication and encryption.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40826X', + ], + 'Arn' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RoleType' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'Rolearn' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'AssumeRoleFor' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1000000000', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'AutoSnapshotPolicyId' => [ + 'description' => 'The automatic snapshot policy ID.'."\n", + 'type' => 'string', + 'example' => 'sp-bp12m37ccmxvbmi5****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DiskCategory.OperationNotSupported', + 'errorMessage' => 'The type of the specified disk does not support creating a snapshot.', + ], + [ + 'errorCode' => 'InvalidSnapshotPolicyName.Malformed', + 'errorMessage' => 'The specified autoSnapshotPolicyName is wrongly formed.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.EncryptedIllegal', + 'errorMessage' => 'The specified parameter Encrypted must be true when kmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnable', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidParam.EncryptedMismatch', + 'errorMessage' => 'Creating encrypted disks with shared encrypted image requires replacing encryption keys.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'The specified RegionId parameter is invalid.', + ], + [ + 'errorCode' => 'AutoSnapshotPolicy.QuotaExceed', + 'errorMessage' => 'The maximum number of automatic snapshot policy has been reached.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'InvalidParameter.TargetCopyRegions', + 'errorMessage' => 'The specified TargetCopyRegions is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.CopiedSnapshotsRetentionDays', + 'errorMessage' => 'The specified CopiedSnapshotsRetentionDays is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'InvalidOperation.KMSKeyIdNotFound', + 'errorMessage' => 'The specified KMSKeyId not found, %s.', + ], + [ + 'errorCode' => 'Abs.InvalidAction.RegionNotSupport', + 'errorMessage' => 'This region does not support this action.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + ], + [ + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"AutoSnapshotPolicyId\\": \\"sp-bp12m37ccmxvbmi5****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\"\\n \\"AutoSnapshotPolicyId\\":\\"p-233e6ylv0\\"\\n}"},{"type":"xml","example":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n sp-bp12m37ccmxvbmi5****\\n","errorExample":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n p-233e6ylv0\\n"}]', + 'title' => 'CreateAutoSnapshotPolicy', + 'description' => 'Before you call this operation, learn about how to [create an automatic snapshot policy](~~127767~~).'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You can create up to 100 automatic snapshot policies per region for a single Alibaba Cloud account. If the maximum number of automatic snapshots for a disk is reached and a new snapshot creation task is created, the system deletes the oldest automatic snapshot of the disk.'."\n" + .'* If the instance to which a disk is attached is being stopped or restarted, the system cannot create snapshots for the disk based on the associated automatic snapshot policy.'."\n" + .'* If cross-region snapshot replication is enabled and no encryption parameters are configured, encrypted snapshots are copied to the destination region and snapshot copies are encrypted by using the service key of the destination region. For more information about the limits on cross-region snapshot replication, see [Copy a snapshot](~~159441~~).'."\n" + ."\n" + .'After the automatic snapshot policy is created, call the [ApplyAutoSnapshotPolicy](~~25531~~) operation to apply the policy to disks. If you want to modify the automatic snapshot policy, call the [ModifyAutoSnapshotPolicyEx](~~25529~~) operation.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeAutoSnapshotPolicyEx' => [ + 'summary' => 'Queries the details of automatic snapshot policies that are created in a specific region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28902', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the automatic snapshot policy. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AutoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'AutoSnapshotPolicyName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestName', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the automatic snapshot policy.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the automatic snapshot policy. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the automatic snapshot policy. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://. The tag value cannot start with acs:.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-aek2kkmhmhs****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of automatic snapshot policies'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'AutoSnapshotPolicies' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AutoSnapshotPolicy' => [ + 'description' => 'Details about the automatic snapshot policies.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TimePoints' => [ + 'description' => 'The points in time of the day at which to create automatic snapshots.'."\n" + ."\n" + .'The time is displayed in UTC+8. Unit: hours. Valid values: 0 to 23, which correspond to the 24 points in time on the hour from 00:00:00 to 23:00:00. For example, 1 indicates 01:00:00. Multiple points in time can be specified.'."\n" + ."\n" + .'The parameter value is a JSON array that contains up to 24 points in time separated by commas (,). Example: `["0", "1", ... "23"]`.'."\n", + 'type' => 'string', + 'example' => '["1"]', + ], + 'CreationTime' => [ + 'description' => 'The time when the automatic snapshot policy was created. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddThh:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2019-12-10T16:00Z', + ], + 'Status' => [ + 'description' => 'The status of the automatic snapshot policy. Valid values:'."\n" + ."\n" + .'* Normal: The automatic snapshot policy is normal.'."\n" + .'* Expire: The automatic snapshot policy cannot be used because your account has overdue payments.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + 'AutoSnapshotPolicyName' => [ + 'description' => 'The name of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'testAutoSnapshotPolicyName', + ], + 'TargetCopyRegions' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'test', + ], + 'CopiedSnapshotsRetentionDays' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'sp-bp67acfmxazb4ph****', + ], + 'RetentionDays' => [ + 'description' => 'The retention period of the automatic snapshots. Unit: days. Valid values:'."\n" + ."\n" + .'* \\-1: Automatic snapshots are retained until they are deleted.'."\n" + .'* 1 to 65536: Auto snapshots are retained for the specified number of days. After the retention period of auto snapshots expires, the auto snapshots are automatically deleted.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '7', + ], + 'RegionId' => [ + 'description' => 'The region ID of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'DiskNums' => [ + 'description' => 'The number of disks to which the automatic snapshot policy is applied.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'EnableCrossRegionCopy' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'RepeatWeekdays' => [ + 'description' => 'The days of the week on which to create automatic snapshots. Valid values: 1 to 7, which correspond to the days of the week. For example, 1 indicates Monday. One or more days can be specified.'."\n", + 'type' => 'string', + 'example' => '["6"]', + ], + 'VolumeNums' => [ + 'description' => 'The number of extended volumes to which the automatic snapshot policy is applied.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-aek2kkmhmhs****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the automatic snapshot policy.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'CopyEncryptionConfiguration' => [ + 'description' => 'Encryption configurations for cross-region snapshot replication.'."\n", + 'type' => 'object', + 'properties' => [ + 'Encrypted' => [ + 'description' => 'Whether to enable encryption for cross-region snapshot replication. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the Key Management Service (KMS) key used to encrypt snapshots in cross-region snapshot replication.'."\n", + 'type' => 'string', + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + ], + ], + 'Type' => [ + 'description' => 'The type of the automatic snapshot policy. Valid values:'."\n" + ."\n" + .'* Custom: user-defined snapshot policy.'."\n" + .'* System: system-defined snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'Custom', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidTag.Mismatch', + 'errorMessage' => 'The specified Tag.n.Key and Tag.n.Value are not match.', + ], + [ + 'errorCode' => 'InvalidTagCount', + 'errorMessage' => 'The specified tags are beyond the permitted range.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"AutoSnapshotPolicies\\": {\\n \\"AutoSnapshotPolicy\\": [\\n {\\n \\"TimePoints\\": \\"[\\\\\\"1\\\\\\"]\\",\\n \\"CreationTime\\": \\"2019-12-10T16:00Z\\",\\n \\"Status\\": \\"Normal\\",\\n \\"AutoSnapshotPolicyName\\": \\"testAutoSnapshotPolicyName\\",\\n \\"TargetCopyRegions\\": \\"test\\",\\n \\"CopiedSnapshotsRetentionDays\\": 0,\\n \\"AutoSnapshotPolicyId\\": \\"sp-bp67acfmxazb4ph****\\",\\n \\"RetentionDays\\": 7,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"DiskNums\\": 1,\\n \\"EnableCrossRegionCopy\\": false,\\n \\"RepeatWeekdays\\": \\"[\\\\\\"6\\\\\\"]\\",\\n \\"VolumeNums\\": 2,\\n \\"ResourceGroupId\\": \\"rg-aek2kkmhmhs****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"CopyEncryptionConfiguration\\": {\\n \\"Encrypted\\": false,\\n \\"KMSKeyId\\": \\"0e478b7a-4262-4802-b8cb-00d3fb40****\\"\\n },\\n \\"Type\\": \\"Custom\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 1\\n 1\\n \\n [\\"1\\"]\\n 2019-12-10T16:00Z\\n Normal\\n testAutoSnapshotPolicyName\\n test\\n 0\\n sp-bp67acfmxazb4ph****\\n 7\\n cn-hangzhou\\n 1\\n false\\n [\\"6\\"]\\n 2\\n rg-aek2kkmhmhs****\\n \\n TestValue\\n TestKey\\n \\n Custom\\n \\n","errorExample":""}]', + 'title' => 'DescribeAutoSnapshotPolicyEx', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeAutoSnapshotPolicyAssociations' => [ + 'summary' => 'Queries association relationships of automatic snapshot policies.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28902', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the automatic snapshot policy. You can call the [DescribeRegions](https://help.aliyun.com/zh/ecs/developer-reference/api-ecs-2014-05-26-describeregions?spm=a2c4g.11186623.0.i11) operation to view the latest list of Alibaba Cloud regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AutoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy.'."\n" + ."\n" + .'* You can specify only one of AutoSnapshotPolicyId and DiskId.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-bp12quk7gqhhuu1f****', + ], + ], + [ + 'name' => 'DiskId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the disk.'."\n" + ."\n" + .'* You can specify only one of AutoSnapshotPolicyId and DiskId.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'd-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of `NextToken`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: 100.'."\n" + ."\n" + .'Default value:'."\n" + ."\n" + .'* If you do not specify this parameter or if you set this parameter to a value that is smaller than 10, the default value is 10.'."\n" + .'* If you set a value greater than 100, the default value is 100.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'NextToken' => [ + 'description' => 'The returned pagination token which can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + 'AutoSnapshotPolicyAssociations' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AutoSnapshotPolicyAssociation' => [ + 'description' => 'The association of automatic snapshot policies.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The association of the automatic snapshot policy.'."\n", + 'type' => 'object', + 'properties' => [ + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'sp-bp12quk7gqhhuu1f****', + ], + 'DiskId' => [ + 'description' => 'The ID of the cloud disk.'."\n", + 'type' => 'string', + 'example' => 'd-bp67acfmxazb4p****', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'MissingParameter.AutoSnapshotPolicyIdOrDiskId', + 'errorMessage' => 'The AutoSnapshotPolicyId and DiskId parameters cannot both be empty. Please specify one of them.', + ], + [ + 'errorCode' => 'ParameterConflict.AutoSnapshotPolicyIdAndDiskId', + 'errorMessage' => 'The AutoSnapshotPolicyId and DiskId parameters cannot be specified at the same time. You may specify only one of them.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidAutoSnapshotPolicyId.NotFound', + 'errorMessage' => 'Specified parameter AutoSnapshotPolicyId not found.', + ], + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a****\\",\\n \\"AutoSnapshotPolicyAssociations\\": {\\n \\"AutoSnapshotPolicyAssociation\\": [\\n {\\n \\"AutoSnapshotPolicyId\\": \\"sp-bp12quk7gqhhuu1f****\\",\\n \\"DiskId\\": \\"d-bp67acfmxazb4p****\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'DescribeAutoSnapshotPolicyAssociations', + ], + 'ModifyAutoSnapshotPolicyEx' => [ + 'summary' => 'Modifies an automatic snapshot policy. For example, you can change the points in time of the day at which to create automatic snapshots, days of the week on which to create automatic snapshots, and retention period of automatic snapshots for the automatic snapshot policy.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29045', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'regionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the automatic snapshot policy. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'autoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy. You can call the [DescribeAutoSnapshotPolicyEx](~~25530~~) operation to query available automatic snapshot policies.', + 'type' => 'string', + 'required' => true, + 'example' => 'sp-bp12m37ccmxvbmi5****', + ], + ], + [ + 'name' => 'autoSnapshotPolicyName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the automatic snapshot policy. If this parameter is not specified, the original name of the automatic snapshot policy is retained.', + 'type' => 'string', + 'required' => false, + 'example' => 'SPTestName', + ], + ], + [ + 'name' => 'timePoints', + 'in' => 'query', + 'schema' => [ + 'description' => 'The points in time of the day at which to create automatic snapshots. The time must be in UTC+8. Unit: hours. Valid values are 0 to 23, which correspond to the 24 points in time on the hour from 00:00:00 to 23:00:00. For example, a value of 1 indicates 01:00:00.'."\n" + ."\n" + .'To schedule multiple automatic snapshots to be created in a day, you can specify multiple hours.'."\n" + ."\n" + .'* You can specify up to 24 points in time.'."\n" + .'* You must set this parameter to a JSON array such as `["0", "1", ... "23"]`. Separate the points in time with commas (,).', + 'type' => 'string', + 'required' => false, + 'example' => '["0", "1"]', + ], + ], + [ + 'name' => 'repeatWeekdays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The days of the week on which to create automatic snapshots. Valid values are 1 to 7, which correspond to the days of the week. For example, a value of 1 indicates Monday.'."\n" + ."\n" + .'To schedule multiple automatic snapshots to be created in a week, you can specify multiple days.'."\n" + ."\n" + .'* You can specify up to seven days over a one-week period.'."\n" + .'* You must set this parameter to a JSON array such as `["1", "2" ... "7"]`. Separate the values in the array with commas (,).', + 'type' => 'string', + 'required' => false, + 'example' => '["1", "7"]', + ], + ], + [ + 'name' => 'retentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The retention period of the automatic snapshot. Unit: days. Valid values:'."\n" + ."\n" + .'* \\-1: The automatic snapshot is permanently retained.'."\n" + .'* 1 to 65536: The auto snapshot is retained for the specified number of days.'."\n" + ."\n" + .'Default value: -1.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '30', + ], + ], + [ + 'name' => 'EnableCrossRegionCopy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable cross-region replication for the automatic snapshot.'."\n" + ."\n" + .'* true: enables cross-region replication for the automatic snapshot.'."\n" + .'* false: disables cross-region replication for the automatic snapshot.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'TargetCopyRegions', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination region to which to copy the snapshot. You can specify only a single destination region.', + 'type' => 'string', + 'required' => false, + 'example' => '["cn-hangzhou"]', + ], + ], + [ + 'name' => 'CopiedSnapshotsRetentionDays', + 'in' => 'query', + 'schema' => [ + 'description' => 'The retention period of the snapshot copy in the destination region. Unit: days. Valid values:'."\n" + ."\n" + .'- -1: The snapshot copy is retained until it is deleted.'."\n" + .'- 1 to 65535: The snapshot copy is retained for a specified number of days.'."\n" + ."\n" + .'Default value: -1.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '30', + ], + ], + [ + 'name' => 'CopyEncryptionConfiguration', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The encryption configurations for cross-region snapshot replication.'."\n", + 'type' => 'object', + 'properties' => [ + 'Encrypted' => [ + 'description' => 'Specifies whether to enable encryption for cross-region snapshot replication. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key used for encryption in cross-region snapshot replication.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40826X', + ], + 'Arn' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'RoleType' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'Rolearn' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'AssumeRoleFor' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1000000000', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.', + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.EncryptedIllegal', + 'errorMessage' => 'The specified parameter Encrypted must be true when kmsKeyId is not empty.', + ], + [ + 'errorCode' => 'InvalidParameter.KmsNotEnabled', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidParameter.Encrypted.KmsNotEnable', + 'errorMessage' => 'Failed to perform this operation because KMS is not activated.', + ], + [ + 'errorCode' => 'InvalidParam.EncryptedMismatch', + 'errorMessage' => 'Creating encrypted disks with shared encrypted image requires replacing encryption keys.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'The specified RegionId parameter is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.TargetCopyRegions', + 'errorMessage' => 'The specified TargetCopyRegions is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.CopiedSnapshotsRetentionDays', + 'errorMessage' => 'The specified CopiedSnapshotsRetentionDays is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.KMSUnauthorized', + 'errorMessage' => 'ECS service have no right to access your KMS.', + ], + [ + 'errorCode' => 'Abs.InvalidAction.RegionNotSupport', + 'errorMessage' => 'This region does not support this action.', + ], + [ + 'errorCode' => 'InvalidOperation.PolicyTypeUnsupported', + 'errorMessage' => 'The current policy type does not support this operation. Only custom policies are permitted.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKNotEnabled', + 'errorMessage' => 'The CMK (Customer Master Key) must be in an active state.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.CMKUnauthorized', + 'errorMessage' => 'The CMK(Customer Master Key) lacks authorization to add tags to the ECS service.', + ], + ], + [ + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'The specified automatic snapshot policy does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.KMSKeyId.NotFound', + 'errorMessage' => 'The specified KMSKeyId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\"\\n}"},{"type":"xml","example":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n","errorExample":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n"}]', + 'title' => 'ModifyAutoSnapshotPolicyEx', + 'description' => 'Before you call this operation, take note of the following items:'."\n" + ."\n" + .'* You cannot modify system policies.'."\n" + .'* After an automatic snapshot policy is modified, the modifications immediately take effect on the disks that are associated with the policy.'."\n" + .'* If cross-region replication for snapshots is enabled and no encryption parameters are configured, the generated encrypted snapshot copies are encrypted by using the Key Management Service (KMS) encryption keys in the region to which the snapshots are copied.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ApplyAutoSnapshotPolicy' => [ + 'summary' => 'Applies an automatic snapshot policy to one or more cloud disks. You can call this operation to replace the automatic snapshot policy of a cloud disk.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28784', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'regionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the automatic snapshot policy and the disks. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'autoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sp-bp14yziiuvu3s6jn****', + ], + ], + [ + 'name' => 'diskIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of disks. The value is a JSON array that consists of disk IDs. Separate the disk IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["d-bp14k9cxvr5uzy54****", "d-bp1dtj8v7x6u08iw****", "d-bp1c0tyj9tfli2r8****"]', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'DiskCategory.OperationNotSupported', + 'errorMessage' => 'The type of the specified disk does not support creating a snapshot.', + ], + [ + 'errorCode' => 'PartofDiskCategory.OperationNotSupported', + 'errorMessage' => 'The types of some disks in the disk list do not support creating snapshots.', + ], + [ + 'errorCode' => 'InvalidAutoSnapshotPolicyId.NotFound', + 'errorMessage' => 'The specified AutoSnapshotPolicyId does not exist.', + ], + ], + 403 => [ + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'The specified RegionId parameter is invalid.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.SnapshotServiceUnavailable', + 'errorMessage' => 'Snapshot service has not been opened yet.', + ], + [ + 'errorCode' => 'InvalidOperation.SnapshotAlreadyCreatedUnsupported', + 'errorMessage' => 'The current disk already has snapshots created by non-promotional activities. Snapshot policies bound to promotional activities are not supported.', + ], + [ + 'errorCode' => 'QuotaExceed.AppliedAutoSnapshotPolicyQuota', + 'errorMessage' => 'The number of auto snapshot policies applied to the specified disk %s has exceeded the quota %s. Please cancel any unused policies and try again.', + ], + [ + 'errorCode' => 'InvalidOperation.AutoSnapshotPolicyConflict', + 'errorMessage' => 'The disk %s cannot apply the auto snapshot policy of promotional activities and other policies at the same time.', + ], + ], + [ + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'The specified automatic snapshot policy does not exist.', + ], + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified disk does not exist in the region.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\"\\n}"},{"type":"xml","example":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n","errorExample":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n"}]', + 'title' => 'ApplyAutoSnapshotPolicy', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'When you call this operation, note that:'."\n" + ."\n" + .'* You can apply only one automatic snapshot policy to each disk.'."\n" + .'* You can apply a single automatic snapshot policy to multiple disks.'."\n" + ."\n" + .'Feature changes:'."\n" + ."\n" + .'By default, only one policy can be applied to a single disk. After the feature is upgraded, a maximum of 10 automatic snapshot policies can be applied to a single disk at the same time to meet the backup requirements of multiple scenarios.'."\n" + ."\n" + .'If you need to apply for a whitelist to upgrade the feature, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket).'."\n" + ."\n" + .'After you upgrade the feature, take note of the following:'."\n" + ."\n" + .'* Each cloud disk supports up to 10 automatic snapshot policies.'."\n" + .'* If the target cloud disk already has an automatic snapshot policy applied, calling this operation will add to the existing policy rather than replace it.'."\n" + ."\n" + .'> To avoid unexpected fees, cancel the automatic snapshot policies that you no longer need.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CancelAutoSnapshotPolicy' => [ + 'summary' => 'Disables an automatic snapshot policy for one or more cloud disks.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28799', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'regionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the automatic snapshot policy and the disks. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'diskIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of the disks for which you want to disable the automatic snapshot policy. To disable the automatic snapshot policy for multiple disks, you can set this parameter to a JSON array that consists of multiple disk IDs, such as \\["dxxxxxxxxx", "dyyyyyyyyy", … "dzzzzzzzzz"]. Separate the disk IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["d-bp14k9cxvr5uzy54****", "d-bp1dtj8v7x6u08iw****", "d-bp1c0tyj9tfli2r8****"]', + ], + ], + [ + 'name' => 'autoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + 'required' => false, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'The specified RegionId parameter is invalid.', + ], + [ + 'errorCode' => 'InvalidOperation.SnapshotPolicyHasDeleted', + 'errorMessage' => 'The snapshot policy associated with the current operation has been deleted. Check whether the parameters are correct.', + ], + [ + 'errorCode' => 'OperationDenied.TooManyAutoSnapshotPolicies', + 'errorMessage' => 'The specified disk %s has already applied multiple auto snapshot policies. To cancel a policy, please explicitly specify the autoSnapshotPolicyId parameter.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDiskId.NotFound', + 'errorMessage' => 'The specified DiskIds are not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\"\\n}"},{"type":"xml","example":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n","errorExample":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n"}]', + 'title' => 'CancelAutoSnapshotPolicy', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteAutoSnapshotPolicy' => [ + 'summary' => 'Deletes an automatic snapshot policy. After you delete an automatic snapshot policy, the policy is no longer applied to the disks on which it previously took effect.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28857', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'regionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the automatic snapshot policy belongs. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'autoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy. You can call the [DescribeAutoSnapshotPolicyEx](~~25530~~) operation to query the IDs of available automatic snapshot policies.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sp-bp14yziiuvu3s6jn****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'ParameterInvalid', + 'errorMessage' => 'The specified automatic snapshot policy does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\"\\n}"},{"type":"xml","example":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE \\n","errorExample":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE \\n"}]', + 'title' => 'DeleteAutoSnapshotPolicy', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSnapshotPackage' => [ + 'summary' => 'Queries the Object Storage Service (OSS) storage plans that you purchased in an Alibaba Cloud region. OSS storage plans can be used to offset the storage fees for standard snapshots instead of local snapshots.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28998', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Pages start from page 1.'."\n" + ."\n" + .'Default value: 1'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Maximum value: 1 to 100.'."\n" + ."\n" + .'Default value: 10'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of OSS storage plans.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'SnapshotPackages' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SnapshotPackage' => [ + 'description' => 'Details about the OSS storage plans.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'DisplayName' => [ + 'description' => 'The name of the OSS storage plan.'."\n", + 'type' => 'string', + 'example' => 'testDisplayName', + ], + 'EndTime' => [ + 'description' => 'The time when the OSS storage plan expires. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2018-11-30T06:32:31Z', + ], + 'StartTime' => [ + 'description' => 'The time when the OSS storage plan was purchased. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2017-11-30T06:32:31Z', + ], + 'InitCapacity' => [ + 'description' => 'The maximum storage capacity offered by the OSS storage plan.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '500', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"SnapshotPackages\\": {\\n \\"SnapshotPackage\\": [\\n {\\n \\"DisplayName\\": \\"testDisplayName\\",\\n \\"EndTime\\": \\"2018-11-30T06:32:31Z\\",\\n \\"StartTime\\": \\"2017-11-30T06:32:31Z\\",\\n \\"InitCapacity\\": 500\\n }\\n ]\\n }\\n}","errorExample":"{\\n\\t\\"TotalCount\\": \\"1\\",\\n\\t\\"PageNumber\\": \\"1\\",\\n\\t\\"PageSize\\": \\"5\\",\\n\\t\\"SnapshotPackages\\": {\\n\\t\\t\\"SnapshotPackage\\": [\\n\\t\\t\\t\\"StartTime\\": \\"2017-11-30T06:32:31Z\\",\\n\\t\\t\\t\\"EndTime\\": \\"2018-11-30T06:32:31Z\\",\\n\\t\\t\\t\\"InitCapacity\\": \\"500\\",\\n\\t\\t\\t\\"DisplayName\\": \\"sp-snapshotpackage1\\"\\n\\t\\t]\\n\\t},\\n\\t\\"RequestId\\": \\"ACD9BBB0-A9D1-46D7-9630-B7A69889E110\\"\\n}"},{"type":"xml","example":"\\n\\t1\\n\\t1\\n\\t5\\n\\t\\n\\t\\t\\n\\t\\t\\t2017-11-30T06:32:31Z\\n\\t\\t\\t2018-11-30T06:32:31Z\\n\\t\\t\\t500\\n\\t\\t\\tsp-snapshotpackage1\\n\\t\\t\\n\\t\\n\\tACD9BBB0-A9D1-46D7-9630-B7A69889E110\\n","errorExample":"\\n\\t1\\n\\t1\\n\\t5\\n\\t\\n\\t\\t\\n\\t\\t\\t2017-11-30T06:32:31Z\\n\\t\\t\\t2018-11-30T06:32:31Z\\n\\t\\t\\t500\\n\\t\\t\\tsp-snapshotpackage1\\n\\t\\t\\n\\t\\n\\tACD9BBB0-A9D1-46D7-9630-B7A69889E110\\n"}]', + 'title' => 'DescribeSnapshotPackage', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'LockSnapshot' => [ + 'summary' => 'Lock the snapshot in compliance mode to prevent it from being accidentally or maliciously deleted. During the snapshot lock period, no user can delete it.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域 ID。您可以调用 DescribeRegions 查看最新的阿里云地域列表。', + 'description' => 'The region ID You can call the [DescribeRegions](https://help.aliyun.com/zh/ecs/developer-reference/api-ecs-2014-05-26-describeregions?spm=a2c4g.11186623.0.i2) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'title' => '快照 ID。', + 'description' => 'The snapshot ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 's-9dp2qojdpdfmgfmf****', + ], + ], + [ + 'name' => 'LockMode', + 'in' => 'query', + 'schema' => [ + 'title' => '锁定模式。取值范围: ● compliance:以合规模式锁定快照。以合规模式锁定的快照无法被任何用户解锁,只有在锁定时长到期后才能被删除。用户不能缩短锁定时长,但具备相应 RAM 权限的用户可以随时延长锁定时长。以合规模式锁定快照时,可以选择性地指定冷静期。', + 'description' => 'The lock mode. Valid values:'."\n" + ."\n" + .'* compliance: The snapshot is locked in compliance mode. A snapshot that is locked in compliance mode cannot be unlocked by any user. It can be deleted only after the lock duration expires. Users cannot shorten the lock duration, but users with the corresponding RAM permissions can extend the lock duration at any time. When locking a snapshot in compliance mode, you can optionally specify a cooling-off period.', + 'type' => 'string', + 'required' => true, + 'example' => 'compliance', + ], + ], + [ + 'name' => 'LockDuration', + 'in' => 'query', + 'schema' => [ + 'title' => '锁定时长。锁定时长结束后快照锁定会自动过期。 单位:天。 取值范围:1~36500。', + 'description' => 'Lock duration. After the lock duration ends, the snapshot lock will automatically expire.'."\n" + ."\n" + .'Unit: days.'."\n" + ."\n" + .'Valid values: 1 to 36500.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'maximum' => '36500', + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'CoolOffPeriod', + 'in' => 'query', + 'schema' => [ + 'title' => '冷静期。合规模式下可以设置冷静期或者跳过冷静期直接锁定快照。 冷静期内,具备相应 RAM 权限的用户可以解锁快照、延长或缩短冷静期、延长或缩短锁定时长,冷静期内快照不允许删除。 冷静期结束后,仅支持延长锁定时长。 单位:小时。 取值范围:0~72。取值为 0 表示跳过冷静期直接锁定快照。 如果快照已进入合规模式锁定期,延长锁定时长该参数需要填 0。', + 'description' => 'Cooling-off period. In compliance mode, you can set a cooling-off period or skip the cooling-off period to directly lock the snapshot.'."\n" + ."\n" + .'During the cooling-off period, users with corresponding RAM permissions can unlock snapshots, extend or shorten the cooling-off period, and extend or shorten the lock duration. Snapshots cannot be deleted during the cooling-off period.'."\n" + ."\n" + .'After the cooling-off period ends, only extending the lock duration is supported.'."\n" + ."\n" + .'Unit: hours.'."\n" + ."\n" + .'Valid values: 0 to 72. A value of 0 indicates skipping the cooling-off period and directly locking the snapshot.'."\n" + ."\n" + .'If the snapshot has entered the compliance mode lock period, set this parameter to 0 when extending the lock duration.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'maximum' => '72', + 'minimum' => '0', + 'example' => '3', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '是否只预检此次请求。取值范围: ● true:发送检查请求,不会实际执行。检查项包括是否填写了必需参数、请求格式、业务限制等。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码DryRunOperation。 ● false(默认):发送正常请求,通过检查后直接执行请求。', + 'description' => 'Specifies whether to perform only a dry run. Valid values:'."\n" + ."\n" + .'* true: The request is checked and is not executed. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the check fails, the corresponding error is returned. If the check passes, the error code DryRunOperation is returned.'."\n" + .'* false (default): Sends a normal request, checks it, and executes the request directly if it passes the check.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => '保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken 只支持 ASCII 字符,且不能超过 64 个字符。更多信息,请参见如何保证幂等性。', + 'description' => 'A client token that is used to ensure the idempotence of the request. You can use the client to generate a client token. Make sure that a unique client token is used for each request. ClientToken only supports ASCII characters and cannot exceed 64 characters. For more information, see [How to ensure idempotence](https://help.aliyun.com/zh/ecs/developer-reference/how-to-ensure-idempotence?spm=a2c4g.11186623.0.0.2a29d467Bh2sO5).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5EC38E7D-389F-1925-ABE2-D7925A8F****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求 ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'LockedSnapshotInfo' => [ + 'title' => '锁定快照信息。', + 'description' => 'Locked snapshot information.', + 'type' => 'object', + 'properties' => [ + 'SnapshotId' => [ + 'title' => '快照 ID。', + 'description' => 'The snapshot ID.'."\n", + 'type' => 'string', + 'example' => 's-9dp2qojdpdfmgfmf****', + ], + 'LockStatus' => [ + 'title' => '锁定状态。可能值: ● compliance-cooloff:快照以合规模式锁定,但仍处于冷静期内。快照无法被删除,但具备相应 RAM 权限的用户可以解锁快照、延长或缩短冷静期、延长或缩短锁定时长。 ● compliance:快照以合规模式锁定,且冷静期已结束。快照无法被解锁或删除,但具备相应 RAM 权限的用户可以延长锁定时长。 ● expired:快照曾被锁定,但锁定时长已结束,锁定已过期。快照当前未锁定,可以被删除。', + 'description' => 'The lock status. Valid values:'."\n" + ."\n" + .'* compliance-cooloff: The snapshot is locked in compliance mode but is still within the cooling-off period. Snapshots cannot be deleted, but users with the corresponding RAM permissions can unlock snapshots, extend or shorten the cooling-off period, and extend or shorten the lock duration.'."\n" + .'* compliance: The snapshot is locked in compliance mode and the cooling-off period has ended. Snapshots cannot be unlocked or deleted, but users with the corresponding RAM permissions can extend the lock duration.'."\n" + .'* expired: The snapshot was once locked, but the lock duration has ended and the lock has expired. The snapshot is currently not locked and can be deleted.', + 'type' => 'string', + 'example' => 'compliance-cooloff', + ], + 'LockCreationTime' => [ + 'title' => '锁定时间。按照ISO 8601标准表示,并使用 UTC + 0 时间,格式为 yyyy-MM-ddTHH:mm:ssZ。', + 'description' => 'The date and time at which the snapshot is locked. The time follows the [ISO 8601](https://help.aliyun.com/zh/ecs/developer-reference/iso-8601-time-format?spm=a2c4g.11186623.0.0.277c6c92kl7kXM) standard in the yyyy-MM-ddTHH:mm:ssZ format (in UTC).', + 'type' => 'string', + 'example' => '2025-10-15T10:00:00Z', + ], + 'CoolOffPeriod' => [ + 'title' => '合规模式冷静期。单位:小时。', + 'description' => 'The cooling-off period of the compliance mode. Unit: hours.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'CoolOffPeriodExpiredTime' => [ + 'title' => '合规模式冷静期结束时间。按照ISO 8601标准表示,并使用 UTC + 0 时间,格式为 yyyy-MM-ddTHH:mm:ssZ。', + 'description' => 'The end time of the cooling-off period in compliance mode. The time follows the [ISO 8601](https://help.aliyun.com/zh/ecs/developer-reference/iso-8601-time-format?spm=a2c4g.11186623.0.0.277c6c92kl7kXM) standard in the yyyy-MM-ddTHH:mm:ssZ format (in UTC).', + 'type' => 'string', + 'example' => '2025-10-15T13:00:00Z', + ], + 'LockDuration' => [ + 'title' => '锁定时长。锁定时长结束后快照锁定会自动过期。单位:天。', + 'description' => 'The lock duration. After the lock duration ends, the snapshot lock will automatically expire. Unit: days.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'LockDurationStartTime' => [ + 'title' => '锁定时长开始时间。按照ISO 8601标准表示,并使用 UTC + 0 时间,格式为 yyyy-MM-ddTHH:mm:ssZ。 如果锁定处于progressing状态的快照,锁定时长将在快照进入accomplished状态后才开始计算。', + 'description' => 'The start time of the lock duration. The time follows the [ISO 8601](https://help.aliyun.com/zh/ecs/developer-reference/iso-8601-time-format?spm=a2c4g.11186623.0.0.277c6c92kl7kXM) standard in the yyyy-MM-ddTHH:mm:ssZ format (in UTC). If you lock a snapshot that is in the Progressing state, the lock time is not calculated until the snapshot enters the Accomplished state.', + 'type' => 'string', + 'example' => '2025-10-15T10:00:00Z', + ], + 'LockExpiredTime' => [ + 'title' => '锁定过期时间。按照ISO 8601标准表示,并使用 UTC + 0 时间,格式为 yyyy-MM-ddTHH:mm:ssZ。', + 'description' => 'The time when the lock expires. The time follows the [ISO 8601](https://help.aliyun.com/zh/ecs/developer-reference/iso-8601-time-format?spm=a2c4g.11186623.0.0.277c6c92kl7kXM) standard in the yyyy-MM-ddTHH:mm:ssZ format (in UTC).', + 'type' => 'string', + 'example' => '2025-10-16T10:00:00Z', + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidLockMode.Malformed', + 'errorMessage' => 'The specified parameter LockMode is invalid. Please check the valid range for this parameter.', + ], + [ + 'errorCode' => 'InvalidLockDuration.ExceedRetentionDays', + 'errorMessage' => 'The specified parameter LockDuration is invalid. The LockDuration should be less than the snapshot RetentionDays.', + ], + [ + 'errorCode' => 'InvalidCoolOffPeriod.ExceedLockDuration', + 'errorMessage' => 'The specified parameter CoolOffPeriod is invalid. The CoolOffPeriod should be less than the LockDuration.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidOperation.SnapshotNotAvailable', + 'errorMessage' => 'The unavailable snapshot does not support locking.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => 'The current operation is not supported because the resource is managed by a cloud product [%s]. Please contact the relevant cloud product to confirm the reason.', + ], + [ + 'errorCode' => 'InvalidOperation.LockSharedSnapshotUnsupported', + 'errorMessage' => 'The shared snapshot does not support locking.', + ], + [ + 'errorCode' => 'InvalidOperation.CoolOffPeriodExpired', + 'errorMessage' => 'The snapshot is locked in compliance mode, and the cool-off period has expired. The current operation is not supported.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified snapshot is not found', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"LockedSnapshotInfo\\": {\\n \\"SnapshotId\\": \\"s-9dp2qojdpdfmgfmf****\\",\\n \\"LockStatus\\": \\"compliance-cooloff\\",\\n \\"LockCreationTime\\": \\"2025-10-15T10:00:00Z\\",\\n \\"CoolOffPeriod\\": 3,\\n \\"CoolOffPeriodExpiredTime\\": \\"2025-10-15T13:00:00Z\\",\\n \\"LockDuration\\": 1,\\n \\"LockDurationStartTime\\": \\"2025-10-15T10:00:00Z\\",\\n \\"LockExpiredTime\\": \\"2025-10-16T10:00:00Z\\"\\n }\\n}","type":"json"}]', + 'title' => 'LockSnapshot', + 'description' => 'You can also use this operation to reconfigure locked snapshots. The configurable items depend on the lock mode and lock status:'."\n" + ."\n" + .'* If a snapshot is locked in compliance mode and is in a cooling-off period, you can extend or shorten the cooling-off period and extend or shorten the lock duration.'."\n" + .'* If the snapshot is locked in compliance mode and the cooling-off period has expired, you can only extend the lock duration.'."\n" + ."\n" + .'> If you reconfigure a locked snapshot during the cooling-off period, the system will be regarded as a relock operation, and all lock parameters will be reset instead of individual adjustments.', + ], + 'DescribeLockedSnapshots' => [ + 'summary' => 'Queries the lock information of a snapshot, such as snapshot lock status and lock configuration.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域 ID。您可以调用 DescribeRegions 查看最新的阿里云地域列表。', + 'description' => 'The region ID. You can call the [DescribeRegions](https://help.aliyun.com/zh/ecs/developer-reference/api-ecs-2014-05-26-describeregions?spm=a2c4g.11186623.0.i2) operation to query the most recent region list.', + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnapshotIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'title' => '快照 ID 数组。数组长度:1~100。', + 'description' => 'The snapshot IDs. You can specify 1 to 100 IDs.', + 'type' => 'array', + 'items' => [ + 'title' => '快照 ID。', + 'description' => 'The snapshot ID.', + 'type' => 'string', + 'required' => false, + 'example' => 's-bp67acfmxazb4p****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'LockStatus', + 'in' => 'query', + 'schema' => [ + 'title' => '锁定状态。可能值: ● compliance-cooloff:快照以合规模式锁定,但仍处于冷静期内。快照无法被删除,但具备相应 RAM 权限的用户可以解锁快照、延长或缩短冷静期、延长或缩短锁定时长。 ● compliance:快照以合规模式锁定,且冷静期已结束。快照无法被解锁或删除,但具备相应 RAM 权限的用户可以延长锁定时长。 ● expired:快照曾被锁定,但锁定时长已结束,锁定已过期。快照当前未锁定,可以被删除。', + 'description' => 'The lock status. Valid values:'."\n" + ."\n" + .'* compliance-cooloff: The snapshot is locked in compliance mode but is still in a cooling-off period. Snapshots cannot be deleted. However, users with the corresponding RAM permissions can unlock snapshots, extend or shorten the cooling-off period, and extend or shorten the lock duration.'."\n" + .'* compliance: The snapshot is locked in compliance mode and the cooling-off period has ended. Snapshots cannot be unlocked or deleted. However, users with the corresponding RAM permissions can extend the locked duration.'."\n" + .'* expired: The snapshot was once locked, but the lock duration has ended and the lock has expired. The snapshot is not locked and can be deleted.', + 'type' => 'string', + 'required' => false, + 'example' => 'compliance-cooloff', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'title' => '查询凭证(Token),取值为上一次 API 调用返回的NextToken参数值。', + 'description' => 'The query token. Set the value to the `NextToken` parameter value returned in the last API call.', + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'title' => '分页查询时每页行数。最大值为 100。 默认值: ● 当不设置值或设置的值小于 10 时,默认值为 10。 ● 当设置的值大于 100 时,默认值为 100。', + 'description' => 'The maximum number of entries to return on each page. Maximum value: 100.'."\n" + ."\n" + .'Default value:'."\n" + ."\n" + .'* If no value is set or the set value is less than 10, the default value is 10.'."\n" + .'* If you set a value greater than 100, the default value is 100.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '是否只预检此次请求。取值范围: ● true:发送检查请求,不会实际执行。检查项包括是否填写了必需参数、请求格式、业务限制等。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码DryRunOperation。 ● false(默认):发送正常请求,通过检查后直接执行请求。', + 'description' => 'Specifies whether to perform only a dry run. Valid values:'."\n" + ."\n" + .'* true: The request is checked and is not executed. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the check fails, the corresponding error is returned. If the check passes, the error code DryRunOperation is returned.'."\n" + .'* false (default): Sends a normal request, checks it, and executes the request directly if it passes the check.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求 ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'NextToken' => [ + 'title' => '本次调用返回的查询凭证值。', + 'description' => 'The returned pagination token which can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + 'LockedSnapshotsInfo' => [ + 'title' => '锁定快照信息集合。', + 'description' => 'Details of the locked snapshots.'."\n", + 'type' => 'array', + 'items' => [ + 'title' => '锁定快照信息。', + 'description' => 'The information of the locked snapshot.'."\n", + 'type' => 'object', + 'properties' => [ + 'SnapshotId' => [ + 'title' => '快照 ID。', + 'description' => 'The snapshot ID.'."\n", + 'type' => 'string', + 'example' => 's-bp67acfmxazb4p****', + ], + 'LockStatus' => [ + 'title' => '锁定状态。可能值: ● compliance-cooloff:快照以合规模式锁定,但仍处于冷静期内。快照无法被删除,但具备相应 RAM 权限的用户可以解锁快照、延长或缩短冷静期、延长或缩短锁定时长。 ● compliance:快照以合规模式锁定,且冷静期已结束。快照无法被解锁或删除,但具备相应 RAM 权限的用户可以延长锁定时长。 ● expired:快照曾被锁定,但锁定时长已结束,锁定已过期。快照当前未锁定,可以被删除。', + 'description' => 'The lock status. Valid values:'."\n" + ."\n" + .'* compliance-cooloff: The snapshot is locked in compliance mode but is still in a cooling-off period. Snapshots cannot be deleted. However, users with the corresponding RAM permissions can unlock snapshots, extend or shorten the cooling-off period, and extend or shorten the lock duration.'."\n" + .'* compliance: The snapshot is locked in compliance mode and the cooling-off period has ended. Snapshots cannot be unlocked or deleted. However, users with the corresponding RAM permissions can extend the lock duration.'."\n" + .'* expired: The snapshot was once locked, but the lock duration has ended and the lock has expired. The snapshot is not locked and can be deleted.'."\n", + 'type' => 'string', + 'example' => 'compliance-cooloff', + ], + 'LockCreationTime' => [ + 'title' => '锁定时间。按照ISO 8601标准表示,并使用 UTC + 0 时间,格式为 yyyy-MM-ddTHH:mm:ssZ。', + 'description' => 'The date and time at which the snapshot is locked. The time follows the [ISO 8601](https://help.aliyun.com/zh/ecs/developer-reference/iso-8601-time-format?spm=a2c4g.11186623.0.0.277c6c92kl7kXM) standard in the yyyy-MM-ddTHH:mm:ssZ format (in UTC).'."\n", + 'type' => 'string', + 'example' => '2025-10-15T10:00:00Z', + ], + 'CoolOffPeriod' => [ + 'title' => '合规模式冷静期。单位:小时。', + 'description' => 'The cooling-off period of the compliance mode. Unit: hours.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'CoolOffPeriodExpiredTime' => [ + 'title' => '合规模式冷静期结束时间。按照ISO 8601标准表示,并使用 UTC + 0 时间,格式为 yyyy-MM-ddTHH:mm:ssZ。', + 'description' => 'The end time of the cooling-off period in compliance mode. The time follows the [ISO 8601](https://help.aliyun.com/zh/ecs/developer-reference/iso-8601-time-format?spm=a2c4g.11186623.0.0.277c6c92kl7kXM) standard in the yyyy-MM-ddTHH:mm:ssZ format (in UTC).'."\n", + 'type' => 'string', + 'example' => '2025-10-15T13:00:00Z', + ], + 'LockDuration' => [ + 'title' => '锁定时长。锁定时长结束后快照锁定会自动过期。单位:天。', + 'description' => 'The lock duration. The snapshot lock automatically expires after the lock duration ends. Unit: days.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'LockDurationStartTime' => [ + 'title' => '锁定时长开始时间。按照ISO 8601标准表示,并使用 UTC + 0 时间,格式为 yyyy-MM-ddTHH:mm:ssZ。 如果锁定处于progressing状态的快照,锁定时长将在快照进入accomplished状态后才开始计算。', + 'description' => 'The start time of the lock duration. The time follows the [ISO 8601](https://help.aliyun.com/zh/ecs/developer-reference/iso-8601-time-format?spm=a2c4g.11186623.0.0.277c6c92kl7kXM) standard in the yyyy-MM-ddTHH:mm:ssZ format (in UTC). If you lock a snapshot that is in the Progressing state, the lock time is not calculated until the snapshot enters the Accomplished state.', + 'type' => 'string', + 'example' => '2025-10-15T10:00:00Z', + ], + 'LockExpiredTime' => [ + 'title' => '锁定过期时间。按照ISO 8601标准表示,并使用 UTC + 0 时间,格式为 yyyy-MM-ddTHH:mm:ssZ。', + 'description' => 'The time when the lock expires. The time follows the [ISO 8601](https://help.aliyun.com/zh/ecs/developer-reference/iso-8601-time-format?spm=a2c4g.11186623.0.0.277c6c92kl7kXM) standard in the yyyy-MM-ddTHH:mm:ssZ format (in UTC).', + 'type' => 'string', + 'example' => '2025-10-16T10:00:00Z', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidLockStatus.Malformed', + 'errorMessage' => 'The specified parameter LockStatus is invalid. Please check the valid range for this parameter.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidSnapshotLock.NotFound', + 'errorMessage' => 'The specified snapshot(s) %s is(are) not locked.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a****\\",\\n \\"LockedSnapshotsInfo\\": [\\n {\\n \\"SnapshotId\\": \\"s-bp67acfmxazb4p****\\",\\n \\"LockStatus\\": \\"compliance-cooloff\\",\\n \\"LockCreationTime\\": \\"2025-10-15T10:00:00Z\\",\\n \\"CoolOffPeriod\\": 3,\\n \\"CoolOffPeriodExpiredTime\\": \\"2025-10-15T13:00:00Z\\",\\n \\"LockDuration\\": 1,\\n \\"LockDurationStartTime\\": \\"2025-10-15T10:00:00Z\\",\\n \\"LockExpiredTime\\": \\"2025-10-16T10:00:00Z\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribeLockedSnapshots', + ], + 'UnlockSnapshot' => [ + 'summary' => 'Unlock snapshots that are locked in compliance mode but are still in a cooling-off period. If the snapshot is locked in compliance mode and the cooling-off period has ended, it cannot be unlocked.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'title' => '地域 ID。您可以调用 DescribeRegions 查看最新的阿里云地域列表。', + 'description' => 'The region ID. You can call the [DescribeRegions](https://help.aliyun.com/zh/ecs/developer-reference/api-ecs-2014-05-26-describeregions?spm=a2c4g.11186623.0.i2) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SnapshotId', + 'in' => 'query', + 'schema' => [ + 'title' => '快照 ID。', + 'description' => 'The snapshot ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 's-9dp2qojdpdfmgfmf****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'title' => '是否只预检此次请求。取值范围: ● true:发送检查请求,不会实际执行。检查项包括是否填写了必需参数、请求格式、业务限制等。如果检查不通过,则返回对应错误。如果检查通过,则返回错误码DryRunOperation。 ● false(默认):发送正常请求,通过检查后直接执行请求。', + 'description' => 'Specifies whether to perform the dry run. Valid values:'."\n" + ."\n" + .'* true: The request is checked and is not executed. The system checks the request for potential issues, including missing parameter values, incorrect request syntax, and service limits. If the check fails, an error is returned. If the check is passed, the error code DryRunOperation is returned.'."\n" + .'* false (default): sends the request. If the request passes the check, the request is directly executed.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'title' => '保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken 只支持 ASCII 字符,且不能超过 64 个字符。更多信息,请参见如何保证幂等性。', + 'description' => 'A client token that is used to ensure the idempotence of the request. You can use the client to generate a client token. Make sure that a unique client token is used for each request. The token can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](https://help.aliyun.com/zh/ecs/developer-reference/how-to-ensure-idempotence?spm=a2c4g.11186623.0.0.2a29d467Bh2sO5).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5EC38E7D-389F-1925-ABE2-D7925A8F****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => '请求 ID。', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidOperation.CoolOffPeriodExpired', + 'errorMessage' => 'The snapshot is locked in compliance mode, and the cool-off period has expired. The current operation is not supported.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSnapshotId.NotFound', + 'errorMessage' => 'The specified snapshot is not found', + ], + [ + 'errorCode' => 'InvalidSnapshotLock.NotFound', + 'errorMessage' => 'The specified snapshot(s) %s is(are) not locked.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","type":"json"}]', + 'title' => 'UnlockSnapshot', + ], + 'DescribeBandwidthLimitation' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28904', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. For more information, see [Billing overview](~~25398~~). Valid values:'."\n" + ."\n" + .'* PrePaid: subscription'."\n" + .'* PostPaid: pay-as-you-go'."\n" + ."\n" + .'Default value: PostPaid.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is a pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is a spot instance for which you can specify the maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is a spot instance for which the market price at the time of purchase is automatically used as the bid price. The market price can be up to the pay-as-you-go price.'."\n" + ."\n" + .'Default value: NoSpot.'."\n" + ."\n" + .'> The SpotStrategy parameter takes effect only when the InstanceChargeType parameter is set to PostPaid.', + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type. For information about the values, see [Overview of ECS instance families](~~25378~~).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'ResourceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The resource ID.'."\n" + ."\n" + .'> This parameter is required when the OperationType parameter is set to Upgrade or Downgrade.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4ph***', + ], + ], + [ + 'name' => 'OperationType', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies the operation for which to query the maximum public bandwidth. Valid values:'."\n" + ."\n" + .'* Upgrade: upgrades the public bandwidth.'."\n" + .'* Downgrade: downgrades the public bandwidth.'."\n" + .'* Create: creates an ECS instance.'."\n" + ."\n" + .'Default value: Create.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Upgrade', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'Bandwidths' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Bandwidth' => [ + 'description' => 'Details about the maximum public bandwidth.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'InternetChargeType' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth'."\n" + .'* PayByTraffic'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + 'Max' => [ + 'description' => 'The maximum public bandwidth.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'Min' => [ + 'description' => 'The minimum public bandwidth.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'Unit' => [ + 'description' => 'The unit of the public bandwidth.'."\n", + 'type' => 'string', + 'example' => 'Mbps', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The specified InstanceChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidParam', + 'errorMessage' => 'The input parameter DestinationResource that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified ecs instance not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'Invalid.ResourceType.NotFound', + 'errorMessage' => 'The ResourceType provided does not exist in our records.', + ], + [ + 'errorCode' => 'Invalid.NetworkCategory', + 'errorMessage' => 'The specified NetworkCategory is not valid.', + ], + [ + 'errorCode' => 'Invalid.SpotStrategy', + 'errorMessage' => 'The specified SpotStrategy is not valid.', + ], + [ + 'errorCode' => 'Invalid.IoOptimized', + 'errorMessage' => 'The specified IoOptimized is not valid.', + ], + [ + 'errorCode' => 'Invalid.ResourceId', + 'errorMessage' => 'The specified ResourceId is not valid.', + ], + [ + 'errorCode' => 'Invalid.InstancePayType', + 'errorMessage' => 'The specified InstancePayType is not valid.', + ], + [ + 'errorCode' => 'Invalid.OperationType', + 'errorMessage' => 'The specified OperationType is not valid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"Bandwidths\\": {\\n \\"Bandwidth\\": [\\n {\\n \\"InternetChargeType\\": \\"PayByTraffic\\",\\n \\"Max\\": 100,\\n \\"Min\\": 0,\\n \\"Unit\\": \\"Mbps\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n \\n PayByTraffic\\n 100\\n 0\\n Mbps\\n \\n","errorExample":""}]', + 'title' => 'DescribeBandwidthLimitation', + 'summary' => 'Queries the maximum public bandwidth that can be purchased, upgraded, or downgraded for various Elastic Compute Service (ECS) instance types.', + ], + 'ModifyInstanceNetworkSpec' => [ + 'summary' => 'Modifies the network configurations of an Elastic Compute Service (ECS) instance, such as the public bandwidth, assignment or unassignment of a static public IP address (also known as system-assigned or auto-assigned public IP address), and billing method for network usage. You can call this operation to upgrade or downgrade the network configurations of ECS instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29076', + 'abilityTreeNodes' => [ + 'FEATUREecsGR65E9', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance for which you want to modify network configurations.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-bp67acfmxazb4****', + ], + ], + [ + 'name' => 'InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* Valid values when the pay-by-traffic billing method for network usage is used: 0 to 100.'."\n" + ."\n" + .'* Valid values when the pay-by-bandwidth billing method for network usage is used:'."\n" + ."\n" + .' * Valid values for subscription instances: 0 to 200.'."\n" + .' * Valid values for pay-as-you-go instances: 0 to 100.'."\n" + ."\n" + .'> The maximum outbound bandwidth of a single instance is also limited by the **network baseline bandwidth (Gbit/s) and network burst bandwidth (Gbit/s)** of the instance type. For more information, see [Overview of instance families](~~25378~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'InternetMaxBandwidthIn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum inbound bandwidth from the Internet. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* If the purchased outbound public bandwidth is less than or equal to 10 Mbit/s, the valid values of this parameter are 1 to 10 and the default value is 10.'."\n" + .'* If the purchased outbound public bandwidth is greater than 10 Mbit/s, the valid values of this parameter are 1 to the `InternetMaxBandwidthOut` value and the default value is the `InternetMaxBandwidthOut` value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '200', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'ISP', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'NetworkChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth'."\n" + .'* PayByTraffic'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method for network usage is used, the maximum inbound and outbound bandwidth values are used as the upper limits of bandwidths instead of guaranteed values. In scenarios where demand outstrips resource supplies, these maximum bandwidths may be limited. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + ], + ], + [ + 'name' => 'AllocatePublicIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to assign a public IP address. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The start time of the temporary bandwidth upgrade. Specify the time in the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddThh:mmZ format. The time must be in UTC and accurate to **minutes (mm)**.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-05T22:40Z', + ], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The end time of the temporary bandwidth upgrade. Specify the time in the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddThhZ format. The time must be in UTC and accurate to **hours** (hh).'."\n" + ."\n" + .'> The interval between the end time and start time of temporary bandwidth upgrade must be greater than or equal to 3 hours.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2017-12-06T22Z', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically complete the payment. Valid values:'."\n" + ."\n" + .'* true: After you modify the bandwidth configurations, the payment is automatically completed. Make sure that your account balance is sufficient before you set AutoPay to true. If your account balance is insufficient, your order cannot be paid in the ECS console and becomes invalid. You must cancel the order.'."\n" + .'* false: After you modify the bandwidth configurations, an order is generated but the payment is not automatically completed. If your account balance is insufficient, you can set AutoPay to false to generate an unpaid order. Then, you can log on to the [ECS console](https://ecs.console.aliyun.com) to pay for the order.'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + 'default' => 'true', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'string', + 'example' => '123457890', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInternetMaxBandwidthIn.ValueNotSupported', + 'errorMessage' => 'The specified InternetMaxBandwidthIn is beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidInternetMaxBandwidthOut.ValueNotSupported', + 'errorMessage' => 'The specified InternetMaxBandwidthOut is beyond the permitted range.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Specified instance is in VPC.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidStartTime.ValueNotSupported', + 'errorMessage' => 'The specified StartTime is out of the permitted range.', + ], + [ + 'errorCode' => 'InvalidEndTime.ValueNotSupported', + 'errorMessage' => 'The specified EndTime is out of the permitted range.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to billing method of the instance.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has an outstanding payment.', + ], + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => 'The specified InternetChargeType is invalid.', + ], + [ + 'errorCode' => 'DecreasedBandwidthNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'BandwidthUpgradeDenied.EipBoundInstance', + 'errorMessage' => 'The specified VPC instance has bound EIP, temporary bandwidth upgrade is denied.', + ], + [ + 'errorCode' => 'InvalidClientToken.ValueNotSupported', + 'errorMessage' => 'The ClientToken provided is invalid.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling, please try again after 5 minutes.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.NotStopped', + 'errorMessage' => 'The specified Instance status is not Stopped.', + ], + [ + 'errorCode' => 'InvalidAction', + 'errorMessage' => 'Specified action is not valid.', + ], + [ + 'errorCode' => 'IpAllocationError', + 'errorMessage' => 'Allocate public ip failed.', + ], + [ + 'errorCode' => 'InvalidParam.AllocatePublicIp', + 'errorMessage' => 'The specified param AllocatePublicIp is invalid.', + ], + [ + 'errorCode' => 'InstanceDowngrade.QuotaExceed', + 'errorMessage' => 'Quota of instance downgrade is exceed.', + ], + [ + 'errorCode' => 'InvalidBandwidth.ValueNotSupported', + 'errorMessage' => 'Instance upgrade bandwidth of temporary not allow less then existed.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus', + 'errorMessage' => 'The specified instance status does not support this action.', + ], + [ + 'errorCode' => 'InvalidInstance.UnPaidOrder', + 'errorMessage' => 'Unpaid order exists in your account, please complete or cancel the payment in the expense center.', + ], + [ + 'errorCode' => 'LastOrderProcessing', + 'errorMessage' => 'The previous order is still processing, please try again later.', + ], + [ + 'errorCode' => 'LastRequestProcessing', + 'errorMessage' => 'The previous request is still processing, please try again later.', + ], + [ + 'errorCode' => 'InvalidStartTime.BeyondLifeCycle', + 'errorMessage' => 'The specified start time exceeds the expiration time.', + ], + [ + 'errorCode' => 'InvalidEndTime.BeyondLifeCycle', + 'errorMessage' => 'The specified end time exceeds the expiration time.', + ], + [ + 'errorCode' => 'InvalidPayMethod.SyncPaymentNotSupport', + 'errorMessage' => 'Synchronous payment is not supported. Use another payment method.', + ], + [ + 'errorCode' => 'InvalidBandwidthOut.LessThanZero', + 'errorMessage' => 'The bandwidth must be larger than 0 when specifying isp.', + ], + [ + 'errorCode' => 'InvalidParameter.BandwidthBiggerThanBaseBandwidth', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAction.WithActiveElasticUpgrade', + 'errorMessage' => 'The instance has active Elastic Upgrade.', + ], + [ + 'errorCode' => 'InvalidParameter.CloudboxNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.Bandwidth', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'NoPermission.Price', + 'errorMessage' => 'The operation requires price permission. Please either apply for permission from your main account, or set the parameter AutoPay as true.', + ], + [ + 'errorCode' => 'NoPermission.Refund', + 'errorMessage' => 'The operation requires refund permission. Please apply for permission from your main account.', + ], + [ + 'errorCode' => 'InvalidParameter.DedicatedRegionNotSupported', + 'errorMessage' => 'The specified action is rejected because the specified ECS instance in the dedicated region does not support public IP.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceStatusUnsupported', + 'errorMessage' => 'The specified instance status is not supported for this operation, expect status is Running or Stopped.', + ], + [ + 'errorCode' => 'QuotaExceeded.InternetBandwidth', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'UnsupportedIspNetworkChargeType', + 'errorMessage' => 'The network charge type is not supported when specifying ISP.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'Current instance status does not support this operation.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + [ + 'errorCode' => 'InvalidOperation.InternetMaxBandwidthOutUnsupported', + 'errorMessage' => 'The InternetMaxBandwidthOut is not allowed to modify.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the instance does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to billing method of the instance.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The operation is denied due to the instance is PrePaid.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'InvalidInstance.UnPaidOrder', + 'errorMessage' => 'The specified Instance has unpaid order.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling, please try again after 5 minutes.', + ], + [ + 'errorCode' => 'InvalidInstance.InstanceNotSupported', + 'errorMessage' => 'The special vpc instance with eip not need bandwidth.', + ], + [ + 'errorCode' => 'InstanceDowngrade.QuotaExceed', + 'errorMessage' => 'Quota of instance downgrade is exceed.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus', + 'errorMessage' => 'The current status of the instance does not support this operation.', + ], + [ + 'errorCode' => 'InvalidOperation.StarterPackage', + 'errorMessage' => 'StarterPackage not support modification.', + ], + [ + 'errorCode' => 'NAT_PUBLIC_IP_BINDING_FAILED', + 'errorMessage' => 'Binding nat public ip failed.', + ], + [ + 'errorCode' => 'InvalidInstance.EipNotSupport', + 'errorMessage' => 'The specified instance with eip is not supported, please unassociate eip first.', + ], + [ + 'errorCode' => 'InvalidInstance.NatPortMapNotSupport', + 'errorMessage' => 'The special instance with nat port map not support operate, please remove nat port map first.', + ], + [ + 'errorCode' => 'OperationDenied.UnpaidOrder', + 'errorMessage' => 'The specified instance has unpaid order.', + ], + [ + 'errorCode' => 'Mayi.InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'InvalidNetworkType.ValueNotSupported', + 'errorMessage' => 'The specified parameter NetworkType is not valid.', + ], + [ + 'errorCode' => 'OperationDenied.ImageNotValid', + 'errorMessage' => 'The specified image is not authorized.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.ValueNotSupported', + 'errorMessage' => 'The specified parameter ChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidIspType.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedIspChargeType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedIspClassicNetwork', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIspBandwidthOut', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedChangeIsp', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIspUID', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedIspRegion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'BandIncreaseNotSupportIsp', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityRisk.3DVerification', + 'errorMessage' => 'We have detected a security risk with your default credit or debit card. Please proceed with verification via the link in your email.', + ], + [ + 'errorCode' => 'InvalidOperation.PublicIpAddressNoStock', + 'errorMessage' => 'The public IP address for the specified Region or ChargeType of the instance is out of stock. Please try another Region or ChargeType.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'Image.OrderFailed', + 'errorMessage' => 'Create marketplace image order failed.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"OrderId\\": \\"123457890\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 04F0F334-1335-436C-A1D7-6C044FE73368\\n 123457890\\n","errorExample":""}]', + 'title' => 'ModifyInstanceNetworkSpec', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* If you upgrade the outbound public bandwidth (InternetMaxBandwidthOut) of a subscription (PrePaid) instance from 0 Mbit/s when you modify the network configurations of the instance, a static public IP address is automatically assigned to the instance.'."\n" + .'* If you upgrade the outbound public bandwidth (InternetMaxBandwidthOut) of a pay-as-you-go (PostPaid) instance from 0 Mbit/s when you modify the network configurations of the instance, no static public IP address is automatically assigned to the instance. In this case, to assign a static public IP address to the instance, you must set `AllocatePublicIp` to `true`.'."\n" + .'* You can upgrade the outbound public bandwidth (InternetMaxBandwidthOut) of an instance in the classic network from 0 Mbit/s only if the instance is in the Stopped state.'."\n" + ."\n" + .'> For the limits on the sum of maximum public bandwidths of ECS instances that use the pay-by-bandwidth billing method for network usage per region per Alibaba Cloud account, see the [Public bandwidth limits](~~25412#BandwidthQuota~~) section of the "Limits" topic.'."\n" + ."\n" + .'* Billing:'."\n" + ."\n" + .' * After the public bandwidth is upgraded, AutoPay is automatically set to true and the payment is automatically made. Make sure that your account balance is sufficient. Otherwise, your order becomes invalid and is canceled. If your account balance is insufficient, you can set AutoPay to false. In this case, when you call the ModifyInstanceNetworkSpec operation, an unpaid order is generated. Then, you can log on to the ECS console to pay for the order.'."\n" + .' * After the public bandwidth is downgraded, the price difference is refunded to the payment account that you used. Vouchers or coupons that have been redeemed are not refundable.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AllocatePublicIpAddress' => [ + 'summary' => 'Assigns a static public IP address (also called system-assigned public IP address or auto-assigned public IP address) to an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28783', + 'abilityTreeNodes' => [ + 'FEATUREecsCHDP5I', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance to which you want to assign a public IP address.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp1gtjxuuvwj17zr****', + ], + ], + [ + 'name' => 'IpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The static public IP address that you want to assign to the instance. This parameter is empty by default, which indicates that a static public IP address is randomly assigned by the system.'."\n" + ."\n" + .'> Only users in the whitelist can specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '112.124.**.**', + ], + ], + [ + 'name' => 'VlanId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The virtual LAN (VLAN) ID of the instance.'."\n" + ."\n" + .'> This parameter will be removed in the future. To ensure future compatibility, we recommend that you use other parameters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '720', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'IpAddress' => [ + 'description' => 'The public IP address.'."\n", + 'type' => 'string', + 'example' => '112.124.**.**', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.AllocateFailed', + 'errorMessage' => 'The current instance failed to allocate public IP, please try again later.', + ], + [ + 'errorCode' => 'InvalidIpAddress.Malformed', + 'errorMessage' => 'The specified parameter "IpAddress" is not valid.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Specified operation is denied as your instance is in VPC.', + ], + [ + 'errorCode' => 'InsufficientPublicIp', + 'errorMessage' => 'Ip address not found.', + ], + [ + 'errorCode' => 'AllocateIpInvalidInstanceBandwidth', + 'errorMessage' => 'OperationDenied The InternetMaxBandwidthOut of the specified instance cannot be less than 0.', + ], + [ + 'errorCode' => 'OperationDenied.CloudboxNotSupport', + 'errorMessage' => 'This operation is denied, because the specified ECS instance which is in the Cloudbox dose not support PublicIp or Eip.', + ], + [ + 'errorCode' => 'OperationDenied.DedicatedRegionNotSupported', + 'errorMessage' => 'This operation is denied, because the specified ECS instance which is in the dedicated region dose not support PublicIp or Eip.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InstanceExpiredOrInArrears', + 'errorMessage' => 'The specified operation is denied as your prepay instance is expired (prepay mode) or in arrears (afterpay mode).', + ], + [ + 'errorCode' => 'IpInUse', + 'errorMessage' => 'The specified IP is already in use.', + ], + [ + 'errorCode' => 'AllocatedAlready', + 'errorMessage' => 'There is an IpAddress allocated already for the specified instance.', + ], + [ + 'errorCode' => 'AllocateIp.Fail', + 'errorMessage' => 'The specified instance fails to allocate ip, please try again.', + ], + [ + 'errorCode' => 'NAT_PUBLIC_IP_BINDING_FAILED', + 'errorMessage' => 'Binding nat public ip failed.', + ], + [ + 'errorCode' => 'NAT_PUBLIC_IP_ALLOCATE_FAILED', + 'errorMessage' => 'Nat public ip binding failed.', + ], + [ + 'errorCode' => 'InvalidIpAddress.NotPublic', + 'errorMessage' => 'The specified IP is not public address.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidVlanId.NotFound', + 'errorMessage' => 'The VlanId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidIpAddress.NotFound', + 'errorMessage' => 'The specified IP is not in the specified vlan.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'InvalidOperation.AllocateIpFailed', + 'errorMessage' => 'Failed to allocate the specific IP, please ensure the IP is available.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"IpAddress\\": \\"112.124.**.**\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"F2EF6A3B-E345-46B9-931E-0EA094818567\\",\\n \\"IpAddress\\": \\"10.1.149.159\\"\\n}"},{"type":"xml","example":"\\n F2EF6A3B-E345-46B9-931E-0EA094818567\\n 112.124.**.**\\n","errorExample":"\\n F2EF6A3B-E345-46B9-931E-0EA094818567\\n 10.1.149.159\\n"}]', + 'title' => 'AllocatePublicIpAddress', + 'description' => '### [](#)Precautions'."\n" + ."\n" + .'* The ECS instance to which you want to assign a static public IP address must be in the **Running** (`Running`) or **Stopped** (`Stopped`) state.'."\n" + .'* If `OperationLocks` in the response of the DescribeInstances operation contains `"LockReason" : "security"` for an ECS instance, the instance is [locked for security reasons](~~25695~~) and cannot be assigned a static public IP address.'."\n" + .'* When you call the AllocatePublicIpAddress operation for an ECS instance, make sure that the public bandwidth of the instance is greater than 0 Mbit/s. You can call the [ModifyInstanceNetworkSpec](~~2679879~~) operation to change the public bandwidth.'."\n" + ."\n" + .'### [](#)Considerations'."\n" + ."\n" + .'* Only users in the whitelist can specify `IpAddress` in the AllocatePublicIpAddress operation. If the public bandwidth of your ECS instance is greater than 0 Mbit/s, you can specify the ID of the instance (`InstanceId`) to randomly assign a static public IP address to the instance. If the public bandwidth of your ECS instance is 0 Mbit/s, you must call the [ModifyInstanceNetworkSpec](~~2679879~~) operation to increase the public bandwidth of the instance before you call the AllocatePublicIpAddress operation.'."\n" + .'* You can assign only one static public IP address to an ECS instance. If the instance already has a static public IP address, the static public IP address is returned for the `IpAddress` response parameter.'."\n" + .'* After you assign a static public IP address to an ECS instance, you must restart the instance ([RebootInstance](~~25502~~)) or start the instance ([StartInstance](~~25500~~)) for the public IP address to take effect.'."\n" + ."\n" + .'If an ECS instance resides in a virtual private cloud (VPC), you can assign a static public IP address to the instance or associate an elastic IP address (EIP) with the instance. For more information, see [AssociateEipAddress](~~2518064~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ConvertNatPublicIpToEip' => [ + 'summary' => 'Converts the static public IP address of an Elastic Compute Service (ECS) instance that resides in a virtual private cloud (VPC) into an elastic IP address (EIP). Static public IP addresses are the public IP addresses that are automatically assigned to ECS instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28810', + 'abilityTreeNodes' => [ + 'FEATUREecs5BJVLN', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance whose public IP address you want to convert into an EIP.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp171jr36ge2ulvk****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.CloudboxNotSupport', + 'errorMessage' => 'This operation is denied, because the specified ECS instance which is in the Cloudbox dose not support PublicIp or Eip.', + ], + [ + 'errorCode' => 'InvalidParameter.CloudboxNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.DedicatedRegionNotSupported', + 'errorMessage' => 'This operation is denied, because the specified ECS instance which is in the dedicated region dose not support PublicIp or Eip.', + ], + [ + 'errorCode' => 'AccountInArrears', + 'errorMessage' => 'The account is in arrears.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidInstanceId.PlanedChange', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEndTime.OperateNotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.Released', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.ZeroBandwidth', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInternetChargeType.ValueNotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEIPQuotaExceeded', + 'errorMessage' => 'The number of EIP exceeds the limit per region.', + ], + [ + 'errorCode' => 'Forbidden.InvalidPublicBandwidth', + 'errorMessage' => 'The specified instance public bandwidth is less than 1M.', + ], + [ + 'errorCode' => 'InvalidInstance.OverduePayment', + 'errorMessage' => 'The special instance due to overdue payment,this operation is not supported.', + ], + [ + 'errorCode' => 'EIPMaxBandwidthExceeded', + 'errorMessage' => 'The bandwidth of instance exceeds the limitation of EIP in this region.', + ], + [ + 'errorCode' => 'InvalidAccountStatus.NotEnoughBalance', + 'errorMessage' => 'Your account does not have enough balance.', + ], + [ + 'errorCode' => 'Forbidden.RiskControl', + 'errorMessage' => 'This operation is forbidden by Aliyun RiskControl system.', + ], + [ + 'errorCode' => 'UnsupportedPublicIpWithIsp', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.IpAddressMissing', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"B154D309-F3E1-4AB7-BA94-FEFCA8B89001\\"\\n}"},{"type":"xml","example":"\\n B154D309-F3E1-4AB7-BA94-FEFCA8B89001\\n","errorExample":"\\n B154D309-F3E1-4AB7-BA94-FEFCA8B89001\\n"}]', + 'title' => 'ConvertNatPublicIpToEip', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'After a public IP address is converted into an EIP, the EIP is billed separately. Make sure that you fully understand the billing methods of EIPs. For more information, see [Billing overview](~~122035~~).'."\n" + ."\n" + .'When you call this operation, make sure that the ECS instance meets the following requirements:'."\n" + ."\n" + .'* The instance is in the **Stopped** (`Stopped`) or **Running** (`Running`) state.'."\n" + .'* The instance has no EIPs associated.'."\n" + .'* The instance has no configuration change tasks that have not taken effect.'."\n" + .'* The public bandwidth of the instance is not 0 Mbit/s.'."\n" + .'* If the instance is a subscription instance, the billing method for network usage of the instance must be `pay-by-traffic`. The public IP address of a subscription instance that uses the `pay-by-bandwidth` billing method for network usage cannot be converted into an EIP. This requirement does not apply to pay-as-you-go instances. For more information, see [Change the billing method for network usage](~~178883~~).'."\n" + .'* If the instance is a subscription instance that resides in a VPC, the instance does not expire within 24 hours.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceVpcAttribute' => [ + 'summary' => 'Changes the virtual private cloud (VPC), private IP address, security groups, or vSwitch of an Elastic Compute Service (ECS) instance located in a VPC.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'high', + 'chargeType' => 'free', + 'abilityTreeCode' => '29079', + 'abilityTreeNodes' => [ + 'FEATUREecsZOHB3T', + ], + ], + 'parameters' => [ + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ECS instance.'."\n" + ."\n" + .'> When you call this operation, the ECS instance must be in the **Stopped** (`Stopped`) state. For other limits on the ECS instance, see the **Usage notes** section of this topic.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp1iudwa5b1tqag1****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the new vSwitch.'."\n" + ."\n" + .'* If you set this parameter to the ID of the current vSwitch, the vSwitch of the ECS instance remains unchanged.'."\n" + .'* If you set this parameter to the ID of a different vSwitch and leave `VpcId` empty, the new vSwitch must belong to the same zone and VPC as the current vSwitch.'."\n" + .'* If you specify `VpcId`, the vSwitch specified by this parameter must belong to the specified VPC and the same zone as the current vSwitch.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vsw-bp1s5fnvk4gn3tw12****', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new private IP address of the ECS instance.'."\n" + ."\n" + .'> The value of `PrivateIpAddress` depends on the value of `VSwitchId`. The specified IP address must be within the CIDR block of the specified vSwitch.'."\n" + ."\n" + .'By default, if this parameter is empty, a private IP address is randomly assigned from the CIDR block of the specified vSwitch.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '172.17.**.**', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the new VPC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp1vwnn14rqpyiczj****', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of new security groups to which the ECS instance belongs after the VPC is changed. This parameter is required only if `VpcId` is specified.'."\n" + ."\n" + .'* The security groups that you specify must belong to the new VPC.'."\n" + .'* You can specify one or more security groups. The valid values of N vary based on the maximum number of security groups to which an ECS instance can belong. For more information, see [Limits](~~25412#SecurityGroupQuota1~~).'."\n" + .'* The specified security groups must be of the same type.'."\n" + .'* You can switch the ECS instance to security groups of a different type. To ensure network connectivity, we recommend that you understand the differences in rule configurations of the two security group types before you switch the ECS instance to security groups of a different type. For more information, see [Overview of security groups](~~25387~~).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of new security group N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-o6w9l8bc8dgmkw87****', + ], + 'required' => false, + 'example' => 'sg-o6w9l8bc8dgmkw87****', + 'maxItems' => 51, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidTarget.TrafficMirrorSession', + 'errorMessage' => 'Instance is target of traffic mirror session.', + ], + [ + 'errorCode' => 'InvalidSource.TrafficMirrorSession', + 'errorMessage' => 'Instance is source of traffic mirror session.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Malformed', + 'errorMessage' => 'Specified private IP address is malformed.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Duplicated', + 'errorMessage' => 'Specified private IP address is duplicated.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current status of virtual switch does not support this operation.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of instance does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Specified operation is denied as your instance is not in VPC.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.Mismatch', + 'errorMessage' => 'Specified instance and virtual switch are not in the same zone.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Mismatch', + 'errorMessage' => 'Specified private IP address is not in the CIDR block of virtual switch.', + ], + [ + 'errorCode' => 'InvalidPrivateIp.Changing', + 'errorMessage' => 'Previous action is not finished yet.', + ], + [ + 'errorCode' => 'PrimaryEniHasSubIp', + 'errorMessage' => 'Primary network interface of the specified instance has more than one private ip.', + ], + [ + 'errorCode' => 'VSwitchIdNotMatch', + 'errorMessage' => 'The subnet of private ip is different to the instance, please unbind ha vip.', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => 'The number of ENIs in an enterprise security group has reached the maximum limit.', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupId', + 'errorMessage' => 'Security group ids are invalid.', + ], + [ + 'errorCode' => 'InvalidVSwitch.IllegalStatus', + 'errorMessage' => 'The operation is not allowed in the current VSwitch state. Expecting state includes "Created", but current state is "%s".', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.SecurityGroupNotAuthorized', + 'errorMessage' => 'The specified security group is not authorized to operate.', + ], + ], + 403 => [ + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The Specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InvalidIp.Ipv6Assigned', + 'errorMessage' => 'The specified instance has been assigned IPv6 address.', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.HasTransitionRecord', + 'errorMessage' => 'The operation is denied because the specified instance has a migration plan.', + ], + [ + 'errorCode' => 'InvalidInstanceStatus.NotNormal', + 'errorMessage' => 'The Specified operation is denied due to instance status.', + ], + [ + 'errorCode' => 'InvalidVpcId.SharedVpc', + 'errorMessage' => 'The Specified operation is denied as your targe vpc is SharedVpc.', + ], + [ + 'errorCode' => 'InvalidOperation.NotAllowed', + 'errorMessage' => 'The operation is denied because the specified VPC has advanced features enabled.', + ], + [ + 'errorCode' => 'InvalidParameter.ToSecurityGroupId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VswAndEcsAvailabilityZoneMismatch', + 'errorMessage' => 'Specified instance and virtual switch are not in the same zone.', + ], + [ + 'errorCode' => 'InvalidOperation.CloudBoxEcsNotSupport', + 'errorMessage' => 'Cloud box ecs instance does not support modifying VPC.', + ], + [ + 'errorCode' => 'AclLimitExceed', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'Specified virtual switch does not exist.', + ], + [ + 'errorCode' => 'NoSuchResource', + 'errorMessage' => 'The specified resource is not found.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidInstanceId', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.VSwitchId', + 'errorMessage' => 'The specified virtual vswitch does not exist.', + ], + [ + 'errorCode' => 'InvalidRegion.ValueNotSupported', + 'errorMessage' => 'The specified Region does not exist.', + ], + [ + 'errorCode' => 'InvalidInstance.AttachedEni', + 'errorMessage' => 'The Specified operation is denied due to elastic network interface.', + ], + [ + 'errorCode' => 'InvalidIp.MultiPrimaryIp', + 'errorMessage' => 'The Specified operation is denied due to multi private ip.', + ], + [ + 'errorCode' => 'InvalidIp.Ipv6', + 'errorMessage' => 'The Specified operation is denied due to ipv6.', + ], + [ + 'errorCode' => 'InvalidVSwitch.NotBelongToVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniNo', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupIdRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupType.NotSupportClassic', + 'errorMessage' => 'The specified SecurityGroupIds have classic group type.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupVpc.NotBelongToOneVpc', + 'errorMessage' => 'The specified SecurityGroupIds are belong to different vpc.', + ], + [ + 'errorCode' => 'EnterpriseGroupLimited.MutliGroupType', + 'errorMessage' => 'The specified instance can not join multi SecurityGroup types.', + ], + [ + 'errorCode' => 'InvalidParameter.AlreadyInTargetVpc', + 'errorMessage' => 'The specified instance is already in the destination VPC.', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupId', + 'errorMessage' => 'The specified SecurityGroupId.N is invalid or does not exist.', + ], + [ + 'errorCode' => 'JoinedGroupLimitExceed', + 'errorMessage' => 'The specified instance has exceed quota of SecurityGroup.', + ], + [ + 'errorCode' => 'InvalidParameter.MustBeEmpty', + 'errorMessage' => 'The specified parameter SecurityGroupId.N and VpcId need be empty.', + ], + [ + 'errorCode' => 'InvalidParameter.NotEnoughIpInVSwitch', + 'errorMessage' => 'The specified virtual switch has not enough available ip.', + ], + [ + 'errorCode' => 'InvalidDependence.MutliDirectlyEip', + 'errorMessage' => 'The Specified operation is denied due to multi directly Eips.', + ], + [ + 'errorCode' => 'InvalidDependence.HaVip', + 'errorMessage' => 'The Specified operation is denied due to HaVip.', + ], + [ + 'errorCode' => 'InvalidDependence.NextHopOfCustomRouter', + 'errorMessage' => 'The Specified operation is denied due to next hop of Custom Router.', + ], + [ + 'errorCode' => 'InvalidDependence.BeenUsedAsAppServer', + 'errorMessage' => 'The Specified operation is denied due to AppServer.', + ], + [ + 'errorCode' => 'InvalidDependence.GrantAccess', + 'errorMessage' => 'The Specified operation is denied due to grant access.', + ], + [ + 'errorCode' => 'InvalidDependence.BindGA', + 'errorMessage' => 'The Specified operation is denied due to GA.', + ], + [ + 'errorCode' => 'InvalidDependence.SLB', + 'errorMessage' => 'The Specified operation is denied as your instance with alb or clb.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Ecs::2014-05-26::ModifyInstanceVpcAttribute', + 'callbackInterval' => 500, + 'maxCallbackTimes' => 1200, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"E69EF3CC-94CD-42E7-8926-F133B86387C0\\",\\n \\"HostId\\": \\"ecs.aliyuncs.com\\",\\n \\"Code\\": \\"InvalidPrivateIp.Changing\\",\\n \\"Message\\": \\"Specified private IP address is not in the CIDR block of virtual switch.\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n E69EF3CC-94CD-42E7-8926-F133B86387C0\\n ecs.aliyuncs.com\\n InvalidPrivateIp.Changing\\n Specified private IP address is not in the CIDR block of virtual switch.\\n"}]', + 'title' => 'ModifyInstanceVpcAttribute', + 'description' => 'The ECS instance that you want to manage must be in the **Stopped** (`Stopped`) state.'."\n" + ."\n" + .'* When you call this operation to change the private IP address or vSwitch of an ECS instance, take note of the following items:'."\n" + ."\n" + .' * If the instance is a new instance, you must restart the instance before you call this operation.'."\n" + .' * After the private IP address or vSwitch of the instance is changed, you must restart the instance before you can recall this operation.'."\n" + ."\n" + .'* When you call this operation to change the VPC of an ECS instance, take note of the following items:'."\n" + ."\n" + .' * **ECS instance:**'."\n" + ."\n" + .' * The instance cannot be in the Locked, To Be Released, Expired, To Be Recycled, Expired and Being Recycled, or Overdue and Being Recycled state. For more information, see [Overview of instances](~~25380~~).'."\n" + .' * The instance cannot be associated with Server Load Balancer (SLB) instances.'."\n" + .' * The instance cannot be used in other Alibaba Cloud services. For example, the instance cannot be in the process of being migrated or having its VPC changed, or the databases deployed on the instance cannot be managed by Data Transmission Service (DTS).'."\n" + ."\n" + .' * **Network:**'."\n" + ."\n" + .' * The cut-through mode or the multi-elastic IP address (EIP)-to-elastic network interface (ENI) mode cannot be enabled for the ECS instance.'."\n" + .' * The ECS instance cannot be associated with a high-availability virtual IP address (HAVIP).'."\n" + .' * The vSwitch of the ECS instance cannot be associated with a custom route table.'."\n" + .' * Global Accelerator (GA) cannot be activated for the ECS instance.'."\n" + .' * Secondary ENIs cannot be attached to the ECS instance.'."\n" + .' * The ECS instance cannot be assigned an IPv6 address.'."\n" + .' * The primary ENI of the ECS instance cannot be associated with multiple IP addresses.'."\n" + .' * The vSwitch must belong to the new VPC.'."\n" + .' * The original and new vSwitches must reside in the same zone.'."\n" + .' * If you assign a private IP address to the primary ENI of the ECS instance, the private IP address must be an idle IP address within the CIDR block of the new vSwitch. If you do not assign a private IP address to the primary ENI of the ECS instance, a private IP address is randomly assigned to the ENI. Make sure that sufficient IP addresses are available in the CIDR block of the new vSwitch.'."\n" + .' * If you use a VPC that is shared by another Alibaba Cloud account with your account and want to change the security groups of the ECS instance, specify the security groups that you created in the VPC, instead of the security group created by the VPC owner, as the new security groups.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeClassicLinkInstances' => [ + 'summary' => 'Queries instances located in the classic network that have established ClassicLink connections to virtual private clouds (VPCs).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28908', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'autoTest' => false, + 'notSupportAutoTestReason' => '经典网络全面下线,不再接受创建请求', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instances. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The VPC ID. The ClassicLink feature must be enabled for the specified VPC. For more information, see [Establish a ClassicLink connection](~~65413~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp1vwnn14rqpyiczj****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID. You can specify a maximum of 100 instance IDs in a single request. Separate the instance IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp1a5zr3u7nq9cxh****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of ClassicLink connections.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Links' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Link' => [ + 'description' => 'The details of the ClassicLink connections between the instances reside in the classic network and VPCs.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The VPC ID.'."\n", + 'type' => 'string', + 'example' => 'vpc-test', + ], + 'InstanceId' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'example' => 'i-test', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidParameter.ToManyInstanceIds', + 'errorMessage' => 'No more than 100 InstanceIds can be specified.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidInstanceIdAndVpcId', + 'errorMessage' => 'The parameter InstanceId and VpcId are not allowed to be empty at the same time.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotBelong', + 'errorMessage' => 'The specified instance is not belong to you.', + ], + [ + 'errorCode' => 'InvalidVpc.NotBelong', + 'errorMessage' => 'The specified vpc is not belong to you.', + ], + [ + 'errorCode' => 'InvalidParameter.PageNumber', + 'errorMessage' => 'The parameter pageNumber is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.PageSize', + 'errorMessage' => 'The parameter pageSize is invalid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"Links\\": {\\n \\"Link\\": [\\n {\\n \\"VpcId\\": \\"vpc-test\\",\\n \\"InstanceId\\": \\"i-test\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"PageNumber\\":1,\\n \\"Links\\":{\\n \\"Link\\":[{\\n \\"InstanceId\\":\\"i-test\\",\\n \\"VpcId\\":\\"vpc-test\\"\\n },\\n {\\n \\"InstanceId\\": \\"i-test1\\",\\n \\"VpcId\\": \\"vpc-test\\"\\n }]\\n },\\n \\"TotalCount\\":2,\\n \\"PageSize\\":10,\\n \\"RequestId\\":\\"B154D309-F3E1-4AB7-BA94-FEFCA8B89001\\"\\n}"},{"type":"xml","example":" \\n 1\\n \\n \\n i-bp1a5zr3u7nq9cxh****\\n vpc-bp1vwnn14rqpyiczj****\\n \\n \\n i-bp1a5zr3u7nq9abc****\\n vpc-bp1vwnn14rqpyiczj****\\n \\n \\n 2\\n 10\\n B154D309-F3E1-4AB7-BA94-FEFCA8B89001\\n","errorExample":"\\n B154D309-F3E1-4AB7-BA94-FEFCA8B89001\\n 2\\n 1\\n 10\\n \\n \\n i-test\\n vpc-test\\n \\n \\n i-test1\\n vpc-test\\n \\n \\n"}]', + 'title' => 'DescribeClassicLinkInstances', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* This operation applies only to instances that reside in the classic network.'."\n" + .'* You can query a maximum of 100 instances that reside in the classic network at a time.'."\n" + .'* At least one of the `VpcId` and `InstanceId` parameters must be configured.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AttachClassicLinkVpc' => [ + 'summary' => 'Links an instance that is deployed in the classic network to a virtual private cloud (VPC) by establishing a ClassicLink connection between the instance and the VPC. This way, the instance can communicate with cloud resources in the VPC over the internal network.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28789', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'autoTest' => false, + 'notSupportAutoTestReason' => 'Classic已经下线,手动已经测试,老大已经审批', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance that is deployed in the classic network. You can call the [DescribeInstances](~~25506~~) operation to query available instances.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-bp1gtjxuuvwj17zr****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC for which the ClassicLink feature is enabled. You can call the [DescribeVpcs](~~35739~~) operation to query available VPCs.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vpc-bp1j4z1sr8zxu4l8u****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRegionId.Malformed', + 'errorMessage' => 'The specified parameter ?RegionId? is not valid.', + ], + [ + 'errorCode' => 'InvalidVpcId.Malformed', + 'errorMessage' => 'The specified parameter ?VpcId? is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceId.MalFormed', + 'errorMessage' => 'The specified instance is not a classic network instance.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The instance does not allow link to vpc.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidInstanceIdAndVpcId', + 'errorMessage' => 'The parameter InstanceId and VpcId are not allowed to be empty at the same time.', + ], + [ + 'errorCode' => 'InvalidStatus.InstanceStatus', + 'errorMessage' => 'The specified instance status is not support this operation ,expect status is running or shutted.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotBelong', + 'errorMessage' => 'The specified instance is not belong to you.', + ], + [ + 'errorCode' => 'QuotaExceeded', + 'errorMessage' => 'The link quota exceeded in this vpc.', + ], + [ + 'errorCode' => 'InvalidStatus.InstanceLocked', + 'errorMessage' => 'The specified instance is locked,please wait more.', + ], + [ + 'errorCode' => 'InvalidInstanceId.LimitedRegion', + 'errorMessage' => 'The specified instance does not support this operation due to the limitation of its region.', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"C0003E8B-B930-4F59-ADC0-0E209A9012A8\\"\\n}"},{"type":"xml","example":"\\n C0003E8B-B930-4F59-ADC0-0E209A9012A8\\n","errorExample":"\\n C0003E8B-B930-4F59-ADC0-0E209A9012A8\\n"}]', + 'title' => 'AttachClassicLinkVpc', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* The instance that you want to connect to a VPC must be in the **Running** or **Stopped** state.'."\n" + .'* The ClassicLink feature must be enabled for the destination VPC. For more information, see [Create a ClassicLink connection](~~65413~~).'."\n" + .'* The instance and the VPC must reside in the same region.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DetachClassicLinkVpc' => [ + 'summary' => 'Unlinks an Elastic Compute Service (ECS) instance that resides in the classic network from a virtual private cloud (VPC) by closing the ClassicLink connection between the instance and the VPC. After the instance is unlinked from the VPC, the instance can no longer communicate with instances in the VPC.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29019', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'autoTest' => false, + 'notSupportAutoTestReason' => 'Classic已经下线,手动已经测试,老大已经审批', + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + 'docRequired' => true, + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance that resides in the classic network.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + 'docRequired' => true, + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC to which the instance is connected.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'vpc-bp67acfmxazb4p****', + 'docRequired' => true, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The InstanceId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidRegionId.Malformed', + 'errorMessage' => 'The specified parameter ?RegionId? is not valid.', + ], + [ + 'errorCode' => 'InvalidVpcId.Malformed', + 'errorMessage' => 'The specified parameter ?VpcId? is not valid.', + ], + [ + 'errorCode' => 'InvalidInstanceId.MalFormed', + 'errorMessage' => 'The specified instance is not a classic network instance.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The instances are not allowed to detach from the linked vpc.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidInstanceIdAndVpcId', + 'errorMessage' => 'The parameter InstanceId and VpcId are not allowed to be empty at the same time.', + ], + [ + 'errorCode' => 'InvalidStatus.InstanceStatus', + 'errorMessage' => 'The specified instance status is not support this operation ,expect status is running or shutted.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotBelong', + 'errorMessage' => 'The specified instance is not belong to you.', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => 'User not authorized to operate on the specified resource.', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidVpc', + 'errorMessage' => 'The specified instance not link specify vpc.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidParameter.RegionIdAndInstanceId', + 'errorMessage' => 'The specified instance does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"C0003E8B-B930-4F59-ADC0-0E209A9012A8\\"\\n}"},{"type":"xml","example":"\\n C0003E8B-B930-4F59-ADC0-0E209A9012A8\\n","errorExample":"\\n C0003E8B-B930-4F59-ADC0-0E209A9012A8\\n"}]', + 'title' => 'DetachClassicLinkVpc', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateNetworkInterface' => [ + 'summary' => 'Creates an elastic network interface (ENI). You can specify an IP address as the primary private IP address of the ENI.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29255', + 'abilityTreeNodes' => [ + 'FEATUREecsT5S9N2', + ], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region in which to create the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the ENI. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the ENI. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region in which to create the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which you want to assign the ENI. You can call the [ListResourceGroups](~~158855~~) operation to query the most recent resource group list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which to connect the ENI. Private IP addresses are assigned to the ENI from within the CIDR block of the vSwitch.'."\n" + ."\n" + .'> A secondary ENI can be attached to only an instance that is in the same zone as the ENI. The instance and the ENI can be connected to different vSwitches.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'vsw-bp1s5fnvk4gn2tws03****', + ], + ], + [ + 'name' => 'PrimaryIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The primary private IP address of the ENI.'."\n" + ."\n" + .'The specified IP address must be an idle IP address within the CIDR block of the vSwitch. If you do not specify this parameter, a random idle IP address within the vSwitch CIDR block is assigned to the ENI.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '172.17.**.**', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group to which to assign the ENI. The security group and the ENI must belong to the same VPC.'."\n" + ."\n" + .'> You must specify `SecurityGroupId` or `SecurityGroupIds.N` but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp1fg655nh68xyz9i****', + ], + ], + [ + 'name' => 'NetworkInterfaceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the ENI. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'This parameter is left empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testNetworkInterfaceName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the ENI. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'Visible', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is no longer used.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the ENI. Valid values:'."\n" + ."\n" + .'* Secondary: secondary ENI.'."\n" + .'* Trunk: trunk ENI. This value is in invitational preview.'."\n" + ."\n" + .'Default value: Secondary.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'BusinessType', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is no longer used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'SecondaryPrivateIpAddressCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of private IP addresses to be assigned by ECS. Valid values: 1 to 49.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'QueueNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of queues supported by the ENI. Valid values: 1 to 2048.'."\n" + ."\n" + .'When you attach the ENI to an instance, make sure that the value of this parameter is less than the maximum number of queues per ENI that is allowed for the instance type. To view the maximum number of queues per ENI allowed for an instance type, you can call the [DescribeInstanceTypes](~~25620~~) operation and then check the return value of `MaximumQueueNumberPerEni`.'."\n" + ."\n" + .'This parameter is left empty by default. If you do not specify this parameter, the default number of queues per ENI for the instance type of an instance is used when you attach the ENI to the instance. To view the default number of queues per ENI for an instance type, you can call the [DescribeInstanceTypes](~~25620~~) operation and then check the return value of `SecondaryEniQueueNumber`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'NetworkInterfaceTrafficMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'The communication mode of the ENI. Valid values:'."\n" + ."\n" + .'* Standard: uses the TCP communication mode.'."\n" + .'* HighPerformance: uses the remote direct memory access (RDMA) communication mode with Elastic RDMA Interface (ERI) enabled.'."\n" + ."\n" + .'> ENIs in RDMA mode can be attached only to instances of the instance types that support ERIs. The number of ENIs in RDMA mode that are attached to an instance cannot exceed the maximum number of ENIs that the instance type supports. For more information, see [Overview of ECS instance families](~~25378~~) and [Configure eRDMA on an enterprise-level instance](~~336853~~).'."\n" + ."\n" + .'Default value: Standard.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'QueuePairNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of queue pairs (QPs) supported by the elastic RDMA interface (ERI).'."\n" + ."\n" + .'If you want to attach multiple ERIs to an instance, we recommend that you specify QueuePairNumber for each ERI based on the value of `QueuePairNumber` supported by the instance type and the number of ERIs that you want to use. Make sure that the total number of QPs of all ERIs does not exceed the maximum number of QPs supported by the instance type. For information about the maximum number of QPs supported by an instance type, see [DescribeInstanceTypes](~~2679699~~).'."\n" + ."\n" + .'> If you do not specify QueuePairNumber for an ERI, the maximum number of QPs supported by the instance type may be used as the number of QPs supported by the ERI. In this case, you cannot attach an additional ERI to the instance. However, you can attach other types of ENIs to the instance.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '22', + ], + ], + [ + 'name' => 'SecurityGroupIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of security groups to which to assign the ENI. The security groups and the ENI must belong to the same VPC. The valid values of N are determined based on the maximum number of security groups to which an ENI can be assigned. For more information, see [Limits](~~25412~~).'."\n" + ."\n" + .'> You must specify `SecurityGroupId` or `SecurityGroupIds.N` but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N to which to assign the ENI. The security group and the ENI must belong to the same VPC. The valid values of N are determined based on the maximum number of security groups to which an ENI can be assigned. For more information, see [Limits](~~25412~~).'."\n" + ."\n" + .'> You must specify `SecurityGroupId` or `SecurityGroupIds.N` but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp1fg655nh68xyz9i****', + ], + 'required' => false, + 'example' => 'sg-bp1fg655nh68xyz9i****', + 'maxItems' => 51, + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'Secondary private IP addresses to assign to the ENI. The IP addresses must be idle IP addresses in the CIDR block of the vSwitch with which to associate the ENI. Valid values of N: 0 to 10.'."\n" + ."\n" + .'> To assign secondary private IP addresses to the ENI, you can specify the `PrivateIpAddress.N` or `SecondaryPrivateIpAddressCount` parameter, but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Secondary private IP address N to assign to the ENI. This IP address must be an idle IP address within the CIDR block of the vSwitch with which to associate the ENI. Valid values of N: 0 to 10.'."\n" + ."\n" + .'> To assign secondary private IP addresses to the ENI, you can specify the `PrivateIpAddress.N` or `SecondaryPrivateIpAddressCount` parameter, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '172.17.**.**', + ], + 'required' => false, + 'example' => '172.17.**.**', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Ipv6Address', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'IPv6 addresses to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'Example: Ipv6Address.1=2001:db8:1234:1a00::\\*\\*\\*\\*'."\n" + ."\n" + .'> To assign IPv6 addresses to the ENI, you must specify the `Ipv6Addresses.N` or `Ipv6AddressCount` parameter, but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 address N to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'Example: Ipv6Address.1=2001:db8:1234:1a00::\\*\\*\\*\\*'."\n" + ."\n" + .'> To assign IPv6 addresses to the ENI, you must specify the `Ipv6Addresses.N` or `Ipv6AddressCount` parameter, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::****', + ], + 'required' => false, + 'example' => '2001:db8:1234:1a00::****', + 'maxItems' => 20, + ], + ], + [ + 'name' => 'Ipv6AddressCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv6 addresses to randomly generate for the ENI. Valid values: 1 to 10.'."\n" + ."\n" + .'> To assign IPv6 addresses to the ENI, you must specify the `Ipv6Addresses.N` or `Ipv6AddressCount` parameter, but not both.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'Ipv4Prefix', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'IPv4 prefixes to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> To assign IPv4 prefixes to the ENI, you must specify the Ipv4Prefix.N or Ipv4PrefixCount parameter, but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv4 prefix N to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> To assign IPv4 prefixes to the ENI, you must specify the Ipv4Prefix.N or Ipv4PrefixCount parameter, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Ipv4PrefixCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv4 prefixes to assign to the ENI. Valid values: 1 to 10.'."\n" + ."\n" + .'> To assign IPv4 prefixes to the ENI, you must specify the Ipv4Prefix.N or Ipv4PrefixCount parameter, but not both.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '10', + 'minimum' => '1', + 'example' => 'hide', + ], + ], + [ + 'name' => 'Ipv6Prefix', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'IPv6 prefixes to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> To assign IPv6 prefixes to the ENI, you must specify the Ipv6Prefix.N or Ipv6PrefixCount parameter, but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 prefix N to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> To assign IPv6 prefixes to the ENI, you must specify the Ipv6Prefix.N or Ipv6PrefixCount parameter, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Ipv6PrefixCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv6 prefixes to assign to the ENI. Valid values: 1 to 10.'."\n" + ."\n" + .'> To assign IPv6 prefixes to the ENI, you must specify the Ipv6Prefix.N or Ipv6PrefixCount parameter, but not both.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '10', + 'minimum' => '1', + 'example' => 'hide', + ], + ], + [ + 'name' => 'DeleteOnRelease', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the ENI when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'TxQueueSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The transmit (Tx) queue depth of the ENI.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* The Tx queue depth of an ENI must be the same as the Rx queue depth of the ENI. Valid values: powers of 2 in the range of 8192 to 16384.'."\n" + .'* A larger Tx queue depth yields higher outbound throughput but consumes more memory.'."\n" + ."\n" + .'> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + ], + [ + 'name' => 'RxQueueSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The receive (Rx) queue depth of the ENI.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* The Rx queue depth of an ENI must be the same as the Tx queue depth of the ENI. Valid values: powers of 2 in the range of 8192 to 16384.'."\n" + .'* A larger Rx queue depth yields higher inbound throughput but consumes more memory.'."\n" + ."\n" + .'> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + ], + [ + 'name' => 'NetworkInterfaceTrafficConfig', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The communication settings of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'QueueNumber' => [ + 'description' => 'The number of queues supported by the ENI.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8', + ], + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of the ENI.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'HighPerformance', + ], + 'QueuePairNumber' => [ + 'description' => 'The number of QPs supported by the ERI.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8', + ], + 'TxQueueSize' => [ + 'description' => 'The Tx queue depth of the ENI.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available. To use this parameter, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* This parameter is applicable only to 7th-generation or later ECS instance types.'."\n" + .'* This parameter is applicable to Linux images.'."\n" + .'* A larger Tx queue depth yields higher outbound throughput and reduces packet loss rates but consumes more memory.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + 'RxQueueSize' => [ + 'description' => 'The Rx queue depth of the ENI.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available. To use this parameter, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* This parameter is applicable only to 7th-generation or later ECS instance types.'."\n" + .'* This parameter is applicable to Linux images.'."\n" + .'* A larger Rx queue depth yields higher inbound throughput and reduces packet loss rates but consumes more memory.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'ConnectionTrackingConfiguration', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The connection tracking configurations of the ENI.'."\n" + ."\n" + .'Before you use this parameter, learn about how to manage connection timeout periods. For more information, see [Manage connection timeout periods](~~2865958~~).'."\n", + 'type' => 'object', + 'properties' => [ + 'TcpEstablishedTimeout' => [ + 'description' => 'The timeout period for TCP connections in the ESTABLISHED state. Unit: seconds. Valid values: 30, 60, 80, 100, 200, 300, 500, 700, and 910.'."\n" + ."\n" + .'Default value: 910.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '910', + ], + 'TcpClosedAndTimeWaitTimeout' => [ + 'description' => 'The timeout period for TCP connections in the TIME_WAIT or CLOSE_WAIT state. Unit: seconds. Valid values: integers from 3 to 15.'."\n" + ."\n" + .'Default value: 3.'."\n" + ."\n" + .'> If the associated Elastic Compute Service (ECS) instance is used with a Network Load Balancer (NLB) or Classic Load Balancer (CLB) instance, the default timeout period for TCP connections in the `TIME_WAIT` state is 15 seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + 'UdpTimeout' => [ + 'description' => 'The timeout period for UDP flows. Unit: seconds. Valid values: 10, 20, 30, 60, 80, and 100.'."\n" + ."\n" + .'Default value: 30.'."\n" + ."\n" + .'> If the associated ECS instance is used with an NLB or CLB instance, the default timeout period for UDP flows is 100 seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '30', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'EnhancedNetwork', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableSriov' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableRss' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'VirtualFunctionTotalQueueNumber' => [ + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + ], + 'VirtualFunctionQuantity' => [ + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'SourceDestCheck', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the source and destination IP address check feature. We recommend that you enable the feature to improve network security. Valid value:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This feature is available only in some regions. Before you use this method, read [Source and destination IP address check](~~2863210~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The state of the ENI.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'Type' => [ + 'description' => 'The type of the ENI.'."\n", + 'type' => 'string', + 'example' => 'Secondary', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the ENI belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1j7w3gc1cexjqd****', + ], + 'NetworkInterfaceName' => [ + 'description' => 'The name of the ENI.'."\n", + 'type' => 'string', + 'example' => 'my-eni-name', + ], + 'MacAddress' => [ + 'description' => 'The media access control (MAC) address of the ENI.'."\n", + 'type' => 'string', + 'example' => '00:16:3e:12:**:**', + ], + 'NetworkInterfaceId' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'eni-bp14v2sdd3v8htln****', + ], + 'ServiceID' => [ + 'description' => 'The ID of the distributor to which the ENI belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '12345678910', + ], + 'OwnerId' => [ + 'description' => 'The ID of the account to which the ENI belongs.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + 'ServiceManaged' => [ + 'description' => 'Indicates whether the user of the ENI is an Alibaba Cloud service or a distributor.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which the ENI is connected.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp16usj2p27htro3****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'Description' => [ + 'description' => 'The description of the ENI.'."\n", + 'type' => 'string', + 'example' => 'testDescription', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the ENI belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-2ze88m67qx5z****', + ], + 'ZoneId' => [ + 'description' => 'The zone ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-e', + ], + 'PrivateIpAddress' => [ + 'description' => 'The private IP address of the ENI.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + 'SecurityGroupIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The IDs of the security groups to which the ENI belongs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'example' => 'sg-bp18kz60mefsicfg****', + ], + ], + ], + ], + 'PrivateIpSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PrivateIpSet' => [ + 'description' => 'The private IP addresses.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PrivateIpAddress' => [ + 'description' => 'The private IP address of the instance.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + 'Primary' => [ + 'description' => 'Indicates whether the private IP address is the primary private IP address.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'Ipv6Sets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Set' => [ + 'description' => 'The IPv6 addresses assigned to the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Ipv6Address' => [ + 'description' => 'The IPv6 address assigned to the ENI.'."\n", + 'type' => 'string', + 'example' => '2001:db8:1234:1a00::****', + ], + ], + ], + ], + ], + ], + 'Ipv4PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv4PrefixSet' => [ + 'description' => 'The IPv4 prefixes assigned to the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv4Prefix' => [ + 'description' => 'The IPv4 prefix assigned to the ENI.'."\n", + 'type' => 'string', + 'example' => 'hide', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'Ipv6PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6PrefixSet' => [ + 'description' => 'The IPv6 prefixes assigned to the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6Prefix' => [ + 'description' => 'The IPv6 prefix assigned to the ENI.'."\n", + 'type' => 'string', + 'example' => 'hide', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'SourceDestCheck' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.DetachPrimaryEniNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'JoinedGroupLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupIdRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.SingleIdAndMultiIdConflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidConnectionTrackingConfiguration.RegionOrUserNotSupported', + 'errorMessage' => 'The specified parameter ConnectionTrackingConfiguration is not supported in this region, or this account is not in the whitelist of using network interface ConnectionTrackingConfiguration.', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Duplicated', + 'errorMessage' => 'The specified private IP address "%s" is duplicated.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The operation is not allowed in the current VSwitch state. Expecting state includes "Created Available", but current state is "%s".', + ], + [ + 'errorCode' => 'InvalidEniQueueSize.RegionOrUserNotSupported', + 'errorMessage' => 'The specified parameter "RxQueueSize" or "TxQueueSize" is not supported in this region or this account is not allowed to use ENI QueueSize.', + ], + [ + 'errorCode' => 'InvalidParameter.EniQueueSize', + 'errorMessage' => 'The specified parameter "TxQueueSize" and "RxQueueSize" are not equal or the value must be 8192 or 16384.', + ], + [ + 'errorCode' => 'InvalidParameter.EniConnectionTrackingConfiguration', + 'errorMessage' => 'The specified ENI connection tracking configuration "%s" must be between %s and %s.', + ], + [ + 'errorCode' => 'QuotaExceeded.PrivateIpAddress', + 'errorMessage' => 'There are not enough private IPs in the specified VSwitch.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling.', + ], + [ + 'errorCode' => 'InvalidVSwitch.IllegalStatus', + 'errorMessage' => 'The operation is not allowed in the current VSwitch state. Expecting state includes "Created", but current state is "%s".', + ], + [ + 'errorCode' => 'InvalidParameter.EniEnhancedNetwork', + 'errorMessage' => 'The input parameter "EnhancedNetwork" is illegal, when EnableSriov is true, VirtualFunctionTotalQueueNumber must not be empty, and VirtualFunctionQuantity must be 1 to 256. When EnableSriov is empty or false, VirtualFunctionTotalQueueNumber and VirtualFunctionQuantity must be empty.', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.SecurityGroupNotAuthorized', + 'errorMessage' => 'The specified security group is not authorized to operate.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InValidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AvailabilityZoneMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpNotEnough', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.Tags', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.Address', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniPrivateIpsCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.TrunkingIsNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidEniQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueueNumberExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ExceedInstanceTypeQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniTrafficMode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceTrafficModeIsNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.QueuePairNumberMustEmpty', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidQueuePairNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.NetworkInterfaceName', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixIllegal', + 'errorMessage' => 'The ip prefixes %s is/are illegal.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMustInReserveSegment', + 'errorMessage' => 'The ip prefix must in vswitch reserve segment.', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceTrafficModeEniUnsupported', + 'errorMessage' => 'High performance traffic mode does not support the current ENI type. Expected ENI type is "%s" but the current ENI type is "%s".', + ], + [ + 'errorCode' => 'AclLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskInvalid', + 'errorMessage' => 'The IP prefix mask %s is illegal which must be between %s and %s.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpPrefixNotEnough', + 'errorMessage' => 'The specified VSwitch does not have enough IP prefixes.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskNotSame', + 'errorMessage' => 'The IP prefixes %s are illegal.The IP prefix mask must be the same.', + ], + [ + 'errorCode' => 'EnterpriseGroupLimited.MutliGroupType', + 'errorMessage' => 'The specified instance can\'t associate security group of different types.', + ], + [ + 'errorCode' => 'InvalidOperation.BoundingEniSlaveQuotaExceed', + 'errorMessage' => 'The number of Slave ENIs exceeds the limit of Bond ENI.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixNotAvailable', + 'errorMessage' => 'The IP prefix is not available.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskIllegal', + 'errorMessage' => 'The current IP prefix mask is illegal.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixNotStrict', + 'errorMessage' => 'The IP prefix "%s" must be strict CIDR format.', + ], + [ + 'errorCode' => 'InvalidOperation.NotSupport', + 'errorMessage' => 'The specified region does not support allocating IPv6 when creating ENI.', + ], + ], + [ + [ + 'errorCode' => 'InvalidEcsId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniIpv6IpsCountExceeded', + 'errorMessage' => 'The ipv6 address count exceed limitation.', + ], + [ + 'errorCode' => 'InvalidOperation.VSwitchIpv6Disabled', + 'errorMessage' => 'The specified VSwitch does not support Ipv6 feature.', + ], + [ + 'errorCode' => 'InvalidOperation.EnableIpv6Failed', + 'errorMessage' => 'The specified VSwitch does not support Ipv6 feature.', + ], + [ + 'errorCode' => 'InvalidOperation.AddressAlreadyAllocated', + 'errorMessage' => 'The specified ipv6 has been already allocated.', + ], + [ + 'errorCode' => 'InvalidOperation.AddressNotInVSwitchCidr', + 'errorMessage' => 'The specified ipv6 does not match VSwitch cidr scope.', + ], + [ + 'errorCode' => 'InvalidOperation.SlaveEniMustHaveBondingEni', + 'errorMessage' => 'Ensure you create the corresponding Bond ENI before creating Slave ENI.', + ], + [ + 'errorCode' => 'InvalidOperation.EniTrafficModeNotSupportIpv6', + 'errorMessage' => 'The High Performance(RDMA) traffic mode does not support IPv6.', + ], + [ + 'errorCode' => 'InvalidOperation.VSwitchCidrReservationNotExist', + 'errorMessage' => 'The specified VSwitch does not have CIDR reservation.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidOperation.RegionNotSupportIpPrefix', + 'errorMessage' => 'The current region does not support IP prefix feature.', + ], + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"Status\\": \\"Available\\",\\n \\"Type\\": \\"Secondary\\",\\n \\"VpcId\\": \\"vpc-bp1j7w3gc1cexjqd****\\",\\n \\"NetworkInterfaceName\\": \\"my-eni-name\\",\\n \\"MacAddress\\": \\"00:16:3e:12:**:**\\",\\n \\"NetworkInterfaceId\\": \\"eni-bp14v2sdd3v8htln****\\",\\n \\"ServiceID\\": 12345678910,\\n \\"OwnerId\\": \\"123456****\\",\\n \\"ServiceManaged\\": true,\\n \\"VSwitchId\\": \\"vsw-bp16usj2p27htro3****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"Description\\": \\"testDescription\\",\\n \\"ResourceGroupId\\": \\"rg-2ze88m67qx5z****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-e\\",\\n \\"PrivateIpAddress\\": \\"172.17.**.**\\",\\n \\"SecurityGroupIds\\": {\\n \\"SecurityGroupId\\": [\\n \\"sg-bp18kz60mefsicfg****\\"\\n ]\\n },\\n \\"PrivateIpSets\\": {\\n \\"PrivateIpSet\\": [\\n {\\n \\"PrivateIpAddress\\": \\"172.17.**.**\\",\\n \\"Primary\\": true\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"Ipv6Sets\\": {\\n \\"Ipv6Set\\": [\\n {\\n \\"Ipv6Address\\": \\"2001:db8:1234:1a00::****\\"\\n }\\n ]\\n },\\n \\"Ipv4PrefixSets\\": {\\n \\"Ipv4PrefixSet\\": [\\n {\\n \\"Ipv4Prefix\\": \\"192.168.**.**/28\\"\\n }\\n ]\\n },\\n \\"Ipv6PrefixSets\\": {\\n \\"Ipv6PrefixSet\\": [\\n {\\n \\"Ipv6Prefix\\": \\"2001:db8:1234:1a00:****::/80\\"\\n }\\n ]\\n },\\n \\"SourceDestCheck\\": false\\n}","errorExample":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FExxxxx\\",\\n \\"NetworkInterfaceId\\": \\"eni-enixxxxx\\"\\n}"},{"type":"xml","example":"\\n testDescription\\n Available\\n 172.17.**.**\\n false\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n rg-2ze88m67qx5z****\\n cn-hangzhou-e\\n vsw-bp16usj2p27htro3****\\n my-eni-name\\n 00:16:3e:12:**:**\\n eni-bp14v2sdd3v8htln****\\n \\n sg-bp18kz60mefsicfg****\\n \\n Secondary\\n \\n \\n 2001:db8:1234:1a00::****\\n \\n \\n vpc-bp1j7w3gc1cexjqd****\\n 123456****\\n \\n \\n TestKey\\n TestValue\\n \\n \\n \\n \\n 172.17.**.**\\n true\\n \\n \\n","errorExample":"\\n 04F0F334-1335-436C-A1D7-6C044FExxxxx\\n eni-eniIxxxxx\\n"}]', + 'title' => 'CreateNetworkInterface', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* This operation is a synchronous operation. After an ENI is created, the ENI immediately enters the Available (`Available`) state and can be attached to an Elastic Compute Service (ECS) instance.'."\n" + .'* If `NetworkInterfaceId` is empty in the response, no ENI is created. Recall the operation to create an ENI.'."\n" + .'* An ENI can be attached only to a single ECS instance that resides in a virtual private cloud (VPC).'."\n" + .'* When an ENI is detached from an ECS instance and attached to another ECS instance, the attributes of the ENI remain unchanged and network traffic is redirected to the new instance.'."\n" + .'* When you call this operation to create an ENI, you can assign up to 49 secondary private IP addresses to the ENI.'."\n" + .'* If you want to assign IPv6 addresses when you create an ENI, make sure that IPv6 is enabled for the vSwitch with which you want to associate the ENI. For more information, see [What is an IPv6 gateway?](~~98896~~)'."\n" + .'* A limit is imposed on the number of ENIs that can be created per Alibaba Cloud region per account. You can view the quota limit in the ECS console. For more information, see [Manage ECS quotas](~~184115~~).'."\n" + ."\n" + .'### [](#)Sample requests'."\n" + ."\n" + .'**Create an ENI**'."\n" + ."\n" + .' RegionId: cn-hangzhou, // Specify the China (Hangzhou) region.SecurityGroupId: sg-bp10jztp6b0sdsyl****, // Specify the ID of the security group in which to create the ENI.VSwitchId: vsw-bp19wo63nleroq22g****, // Specify the ID of the vSwitch to which to connect the ENI.'."\n" + ."\n" + .'**Create an ENI and specify an IP address as the primary private IP address of the ENI**'."\n" + ."\n" + .' RegionId: cn-hangzhou, // Specify the China (Hangzhou) region.SecurityGroupId: sg-bp10jztp6b0sdsyl****, // Specify the ID of the security group in which to create the ENI.VSwitchId: vsw-bp19wo63nleroq22g****, // Specify the ID of the vSwitch to which to connect the ENI.PrimaryIpAddress: 192.168.0.*, // Specify an IP address as the primary private IP address of the ENI.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeNetworkInterfaces' => [ + 'summary' => 'Queries the details of one or more Elastic Network Interface (ENIs).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29287', + 'abilityTreeNodes' => [ + 'FEATUREecsTML5VX', + ], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to use for query.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the ENI. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the ENI. Valid values of N: 1 to 20.'."\n" + ."\n" + .'If a single tag is specified to query ENIs, up to 1,000 ENIs that have this tag can be returned. If multiple tags are specified to query ENIs, up to 1,000 ENIs that have all these tags can be returned. To query more than 1,000 resources that have specified tags, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the ENI belongs. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be returned.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch with which the ENI is associated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp16usj2p27htro3****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the elastic network interface (ENI) belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp16usj2p27htro3****', + ], + ], + [ + 'name' => 'PrimaryIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The primary private IPv4 address of the ENI.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.**.**', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group to which the secondary ENI belongs.'."\n" + ."\n" + .'* To query the details of secondary ENIs based on the ID of a security group, specify this parameter.'."\n" + .'* To query the details of primary ENIs based on the ID of a security group, call the [DescribeInstances](~~25506~~) operation and specify the `SecurityGroupId` parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp144yr32sx6ndw****', + ], + ], + [ + 'name' => 'NetworkInterfaceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the ENI.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test-eni-name', + ], + ], + [ + 'name' => 'Type', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the ENI. Valid values:'."\n" + ."\n" + .'* Primary'."\n" + .'* Secondary'."\n" + ."\n" + .'This parameter is empty by default, which indicates that both primary and secondary ENIs are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Secondary', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance to which the ENI is attached.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp1e2l6djkndyuli****', + ], + ], + [ + 'name' => 'ServiceManaged', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the user of the ENI is an Alibaba Cloud service or a distributor.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The state of the ENI. Valid values:'."\n" + ."\n" + .'* Available: The ENI is available.'."\n" + .'* Attaching: The ENI is being attached to an instance.'."\n" + .'* InUse: The ENI is attached to an instance.'."\n" + .'* Detaching: The ENI is being detached from an instance.'."\n" + .'* Deleting: The ENI is being deleted.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that ENIs in all states are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Available', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'deprecated' => true, + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 1000.'."\n" + ."\n" + .'Default value: 10.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'deprecated' => true, + 'required' => false, + 'example' => '100', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The query token. Set the value to the `NextToken` value returned in the last call to this operation.'."\n" + ."\n" + .'For more information about how to check the responses returned by this operation, see the preceding "Description" section.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAAdDWBF2****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries to return on each page. Valid values: 10 to 500.'."\n" + ."\n" + .'Default values:'."\n" + ."\n" + .'* If this parameter is not specified or if this parameter is set to a value less than 10, the default value is 10.'."\n" + .'* If this parameter is set to a value greater than 500, the default value is 500.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '50', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'An array that consists of the secondary private IPv4 addresses of the ENI. You can specify multiple secondary private IPv4 addresses. Valid values of N: 1 to 100.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The secondary private IPv4 addresses of the ENI. You can specify multiple secondary private IPv4 addresses. Valid values of N: 1 to 100.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.**.**', + ], + 'required' => false, + 'example' => '192.168.**.**', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'An array that consists of the IDs of the ENIs. You specify multiple ENI IDs. Valid values of N: 1 to 100.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the ENI N. You specify multiple ENI IDs. Valid values of N: 1 to 100.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-bp125p95hhdhn3ot****', + ], + 'required' => false, + 'example' => 'eni-bp125p95hhdhn3ot****', + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'Ipv6Address', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'An array that consists of the IPv6 address of the ENI. You can specify multiple IPv6 addresses. Valid values of N: 1 to 100.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 address N of the ENI. You can specify multiple IPv6 addresses. Valid values of N: 1 to 100.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2408:4321:180:1701:94c7:bc38:3bfa:****', + ], + 'required' => false, + 'example' => '2408:4321:180:1701:94c7:bc38:3bfa:****', + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the ENI belongs. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be returned.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.', + 'type' => 'string', + 'example' => 'AAAAAdDWBF2****', + ], + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the NextToken and MaxResults parameters for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the NextToken and MaxResults parameters for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of ENIs.'."\n" + ."\n" + .'> If you specify the `MaxResults` and `NextToken` parameters to perform a paged query, the value of the `TotalCount` response parameter is invalid.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'NetworkInterfaceSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NetworkInterfaceSet' => [ + 'description' => 'Details of the ENIs.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the security group was created. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2019-12-25T12:31:31Z', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the ENI belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1j7w3gc1cexjqd****', + ], + 'Type' => [ + 'description' => 'The type of the ENI.'."\n", + 'type' => 'string', + 'example' => 'Secondary', + ], + 'Status' => [ + 'description' => 'The state of the ENI.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of the ENI. Valid values:'."\n" + ."\n" + .'* Standard: The TCP communication mode is used.'."\n" + .'* HighPerformance: The Elastic RDMA Interface (ERI) is enabled and the remote direct memory access (RDMA) communication mode is used.'."\n" + ."\n" + .'> This parameter can have a value of HighPerformance only when the ENI is attached to a c7re RDMA-enhanced instance that resides in Beijing Zone K.'."\n", + 'type' => 'string', + 'example' => 'Standard', + ], + 'NetworkInterfaceName' => [ + 'description' => 'The name of the ENI.'."\n", + 'type' => 'string', + 'example' => 'my-eni-name', + ], + 'MacAddress' => [ + 'description' => 'The MAC address of the ENI.'."\n", + 'type' => 'string', + 'example' => '00:16:3e:12:**:**', + ], + 'QueuePairNumber' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'NetworkInterfaceId' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'eni-bp125p95hhdhn3ot****', + ], + 'ServiceID' => [ + 'description' => 'The ID of the distributor to which the ENI belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '12345678910', + ], + 'InstanceId' => [ + 'description' => 'The ID of the Elastic Compute Service (ECS) instance to which the ENI is attached.'."\n" + ."\n" + .'> If the ENI is managed by other Alibaba Cloud services, no instance ID is returned.'."\n", + 'type' => 'string', + 'example' => 'i-bp1e2l6djkndyuli****', + ], + 'OwnerId' => [ + 'description' => 'The ID of the account to which the ENI belongs.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + 'ServiceManaged' => [ + 'description' => 'Indicates whether the user of the ENI is an Alibaba Cloud service or a distributor.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp16usj2p27htro3****', + ], + 'Description' => [ + 'description' => 'The description of the ENI.'."\n", + 'type' => 'string', + 'example' => 'DescriptionTest', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the ENI belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-2ze88m67qx5z****', + ], + 'ZoneId' => [ + 'description' => 'The zone ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-e', + ], + 'PrivateIpAddress' => [ + 'description' => 'The primary private IP address of the ENI.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + 'QueueNumber' => [ + 'description' => 'The number of queues supported by the ENI.'."\n" + ."\n" + .'* If the ENI is a secondary ENI in the InUse state and the number of queues supported by the ENI has never been modified, the default number of queues per secondary ENI that the instance type supports is returned.'."\n" + .'* If the ENI is a secondary ENI and the number of queues supported by the ENI has been modified, the new number of queues is returned.'."\n" + .'* If the ENI is a secondary ENI in the Available state and the number of queues supported by the ENI has never been modified, an empty value is returned.'."\n" + .'* If the ENI is a primary ENI, the default number of queues per primary ENI that the instance type supports is returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8', + ], + 'PrivateIpSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PrivateIpSet' => [ + 'description' => 'Details about the private IP addresses of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PrivateIpAddress' => [ + 'description' => 'The private IP address of the ENI.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + 'Primary' => [ + 'description' => 'Indicates whether the private IP address is the primary private IP address. Valid values:'."\n" + ."\n" + .'* true: The IP address is the primary private IP address.'."\n" + .'* false: The IP address is a secondary private IP address.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'AssociatedPublicIp' => [ + 'description' => 'The elastic IP address (EIP) that is associated with the private IP address.'."\n", + 'type' => 'object', + 'properties' => [ + 'PublicIpAddress' => [ + 'description' => 'The EIP.'."\n", + 'type' => 'string', + 'example' => '116.62.**.**', + ], + 'AllocationId' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + ], + ], + 'PrivateDnsName' => [ + 'description' => 'The private domain name of the ECS instance.'."\n" + ."\n" + .'> A private domain name can be returned in a specific format only when `HostnameType` is set to `IP` or `InstanceId`.'."\n", + 'type' => 'string', + 'example' => 'DnsTestName', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'Ipv6Sets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Set' => [ + 'description' => 'The IPv6 addresses of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6Address' => [ + 'description' => 'The IPv6 address of the ENI.'."\n", + 'type' => 'string', + 'example' => '2408:4321:180:1701:94c7:bc38:3bfa:****', + ], + ], + 'description' => '> This parameter is in invitational preview and is unavailable.'."\n", + ], + ], + ], + ], + 'Ipv4PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv4PrefixSet' => [ + 'description' => 'The IPv4 prefixes of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv4Prefix' => [ + 'description' => 'The IPv4 prefix of the ENI.'."\n", + 'type' => 'string', + 'example' => 'hide', + ], + ], + 'description' => '> This parameter is in invitational preview and is unavailable.'."\n", + ], + ], + ], + ], + 'Ipv6PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6PrefixSet' => [ + 'description' => 'The IPv6 prefixes of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6Prefix' => [ + 'description' => 'The IPv6 prefix of the ENI.'."\n", + 'type' => 'string', + 'example' => 'hide', + ], + ], + 'description' => '> This parameter is in invitational preview and is unavailable.'."\n", + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'SecurityGroupIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The security groups to which the ENI belongs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'example' => 'sg-bp18kz60mefsicfg****', + ], + ], + ], + ], + 'AssociatedPublicIp' => [ + 'description' => 'The EIPs that are associated with the secondary private IP addresses of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'PublicIpAddress' => [ + 'description' => 'The EIP.'."\n", + 'type' => 'string', + 'example' => '116.62.**.**', + ], + 'AllocationId' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + ], + ], + 'Attachment' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'DeviceIndex' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'InstanceId' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'TrunkNetworkInterfaceId' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'NetworkCardIndex' => [ + 'description' => 'The index of the network card.'."\n" + ."\n" + .'* If the ENI is in the Available state or if no network card index was specified when the ENI was attached, this parameter is empty.'."\n" + .'* If the ENI is in the InUse state and a network card index was specified when the ENI was attached, the specified network card index is returned as the value of this parameter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + ], + ], + 'DeleteOnRelease' => [ + 'description' => 'Indicates whether to retain the ENI when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'SourceDestCheck' => [ + 'description' => 'Indicates whether the source and destination IP address check feature is enabled. To improve network security, enable this feature. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> Before you use this parameter, read [Source and destination IP address check](~~2863210~~).'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.DetachPrimaryEniNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AvailabilityZoneMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVpc.Empty', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniPageNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVpc.Indeterminacy', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidEcsId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"PageSize\\": 1,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 2,\\n \\"NetworkInterfaceSets\\": {\\n \\"NetworkInterfaceSet\\": [\\n {\\n \\"CreationTime\\": \\"2019-12-25T12:31:31Z\\",\\n \\"VpcId\\": \\"vpc-bp1j7w3gc1cexjqd****\\",\\n \\"Type\\": \\"Secondary\\",\\n \\"Status\\": \\"Available\\",\\n \\"NetworkInterfaceTrafficMode\\": \\"Standard\\",\\n \\"NetworkInterfaceName\\": \\"my-eni-name\\",\\n \\"MacAddress\\": \\"00:16:3e:12:**:**\\",\\n \\"QueuePairNumber\\": 0,\\n \\"NetworkInterfaceId\\": \\"eni-bp125p95hhdhn3ot****\\",\\n \\"ServiceID\\": 12345678910,\\n \\"InstanceId\\": \\"i-bp1e2l6djkndyuli****\\",\\n \\"OwnerId\\": \\"123456****\\",\\n \\"ServiceManaged\\": true,\\n \\"VSwitchId\\": \\"vsw-bp16usj2p27htro3****\\",\\n \\"Description\\": \\"DescriptionTest\\",\\n \\"ResourceGroupId\\": \\"rg-2ze88m67qx5z****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-e\\",\\n \\"PrivateIpAddress\\": \\"172.17.**.**\\",\\n \\"QueueNumber\\": 8,\\n \\"PrivateIpSets\\": {\\n \\"PrivateIpSet\\": [\\n {\\n \\"PrivateIpAddress\\": \\"172.17.**.**\\",\\n \\"Primary\\": true,\\n \\"AssociatedPublicIp\\": {\\n \\"PublicIpAddress\\": \\"116.62.**.**\\",\\n \\"AllocationId\\": \\"null\\"\\n },\\n \\"PrivateDnsName\\": \\"DnsTestName\\"\\n }\\n ]\\n },\\n \\"Ipv6Sets\\": {\\n \\"Ipv6Set\\": [\\n {\\n \\"Ipv6Address\\": \\"2408:4321:180:1701:94c7:bc38:3bfa:****\\"\\n }\\n ]\\n },\\n \\"Ipv4PrefixSets\\": {\\n \\"Ipv4PrefixSet\\": [\\n {\\n \\"Ipv4Prefix\\": \\"192.168.**.0/28\\"\\n }\\n ]\\n },\\n \\"Ipv6PrefixSets\\": {\\n \\"Ipv6PrefixSet\\": [\\n {\\n \\"Ipv6Prefix\\": \\"2001:db8:1234:1a00:****::/80\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"SecurityGroupIds\\": {\\n \\"SecurityGroupId\\": [\\n \\"sg-bp18kz60mefsicfg****\\"\\n ]\\n },\\n \\"AssociatedPublicIp\\": {\\n \\"PublicIpAddress\\": \\"116.62.**.**\\",\\n \\"AllocationId\\": \\"null\\"\\n },\\n \\"Attachment\\": {\\n \\"DeviceIndex\\": 0,\\n \\"InstanceId\\": \\"null\\",\\n \\"TrunkNetworkInterfaceId\\": \\"null\\",\\n \\"NetworkCardIndex\\": 0\\n },\\n \\"DeleteOnRelease\\": true,\\n \\"SourceDestCheck\\": false\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n AAAAAdDWBF2****\\n 1\\n 1\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 2\\n \\n 2019-12-25T12:31:31Z\\n vpc-bp1j7w3gc1cexjqd****\\n Secondary\\n Available\\n Standard\\n my-eni-name\\n 00:16:3e:12:**:**\\n 0\\n eni-bp125p95hhdhn3ot****\\n 12345678910\\n i-bp1e2l6djkndyuli****\\n 123456****\\n true\\n vsw-bp16usj2p27htro3****\\n DescriptionTest\\n rg-2ze88m67qx5z****\\n cn-hangzhou-e\\n 172.17.**.**\\n 8\\n \\n 172.17.**.**\\n true\\n \\n 116.62.**.**\\n null\\n \\n \\n \\n 2408:4321:180:1701:94c7:bc38:3bfa:****\\n \\n \\n 192.168.**.0/28\\n \\n \\n 2001:db8:1234:1a00:****::/80\\n \\n \\n TestValue\\n TestKey\\n \\n sg-bp18kz60mefsicfg****\\n \\n 116.62.**.**\\n null\\n \\n \\n 0\\n null\\n null\\n 0\\n true\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeNetworkInterfaces', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'You can call the `DescribeNetworkInterfaces` operation for paged query by specifying the `MaxResults` or `NextToken` parameter. Take note of the following items:'."\n" + ."\n" + .'* During a paged query, when you call the DescribeNetworkInterfaces operation to retrieve the first page of results, set `MaxResults` to specify the maximum number of entries to return in the call. The return value of `NextToken` is a pagination token that can be used in the next call to retrieve a new page of results.'."\n" + .'* When you call the DescribeNetworkInterfaces operation to retrieve a new page of results, set `NextToken` to the `NextToken` value returned in the previous call and set `MaxResults` to specify the maximum number of entries to return in this call.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeNetworkInterfaceAttribute' => [ + 'summary' => 'Queries the details of an elastic network interface (ENI). When you call this operation, you can set the NetworkInterfaceId parameter to specify an ENI.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29285', + 'abilityTreeNodes' => [ + 'FEATUREecsTML5VX', + ], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is unavailable.', + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is unavailable.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => '> This parameter is unavailable.', + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => '> This parameter is unavailable.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eni-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Attribute', + 'in' => 'query', + 'schema' => [ + 'description' => 'The attribute of the ENI. Valid values:'."\n" + ."\n" + .'attachment: member ENI attachment information of the trunk ENI. This value is in invitational preview and is not publicly available.'."\n" + ."\n" + .'connectionTrackingConfiguration: connection tracking configuration.'."\n" + ."\n" + .'Default value:'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'attachment', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'Details of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the ENI was created.'."\n", + 'type' => 'string', + 'example' => '2019-12-25T12:31:31Z', + ], + 'VpcId' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the ENI belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp67acfmxazb4p****', + ], + 'Type' => [ + 'description' => 'The type of the ENI. Valid values:'."\n" + ."\n" + .'* Primary'."\n" + .'* Secondary'."\n", + 'type' => 'string', + 'example' => 'Secondary', + ], + 'Status' => [ + 'description' => 'The state of the ENI. Valid values:'."\n" + ."\n" + .'* Available: The ENI is not attached to an instance.'."\n" + .'* Attaching: The ENI is being attached to an instance.'."\n" + .'* InUse: The ENI is attached to an instance.'."\n" + .'* Detaching: The ENI is being detached from an instance.'."\n" + .'* Deleting: The ENI is being deleted.'."\n" + ."\n" + .'This parameter is empty by default, which indicates that all states are queried.'."\n", + 'type' => 'string', + 'example' => 'Available', + ], + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of the ENI. Valid values:'."\n" + ."\n" + .'* Standard: The TCP communication mode is used.'."\n" + .'* HighPerformance: The Elastic RDMA Interface (ERI) feature is enabled and the remote direct memory access (RDMA) communication mode is used.'."\n" + ."\n" + .'> This parameter can have a value of HighPerformance only when the ENI is attached to a c7re RDMA-enhanced instance.'."\n", + 'type' => 'string', + 'example' => 'Standard', + ], + 'NetworkInterfaceName' => [ + 'description' => 'The name of the ENI.'."\n", + 'type' => 'string', + 'example' => 'my-eni-name', + ], + 'MacAddress' => [ + 'description' => 'The media access control (MAC) address of the ENI.'."\n", + 'type' => 'string', + 'example' => '00:16:3e:12:**:**', + ], + 'QueuePairNumber' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '22', + ], + 'NetworkInterfaceId' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'eni-bp125p95hhdhn3ot****', + ], + 'ServiceID' => [ + 'description' => 'The ID of the distributor to which the ENI belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '12345678910', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance to which the ENI is attached.'."\n" + ."\n" + .'> If the ENI is managed and controlled by other Alibaba Cloud services, no instance ID is returned.'."\n", + 'type' => 'string', + 'example' => 'i-bp1e2l6djkndyuli****', + ], + 'OwnerId' => [ + 'description' => 'The ID of the account to which the ENI belongs.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + 'ServiceManaged' => [ + 'description' => 'Indicates whether the user of the ENI is an Alibaba Cloud service or a distributor.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which the ENI is connected.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp1s5fnvk4gn2tws0****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'Description' => [ + 'description' => 'The description of the ENI.'."\n", + 'type' => 'string', + 'example' => 'testDescription', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the instance belongs. If this parameter is specified to query ENIs, up to 1,000 ENIs that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> ENIs in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'ZoneId' => [ + 'description' => 'The zone ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-g', + ], + 'PrivateIpAddress' => [ + 'description' => 'The private IP address of the ENI.'."\n", + 'type' => 'string', + 'example' => '10.1.**.**', + ], + 'QueueNumber' => [ + 'description' => 'The number of queues supported by the ENI.'."\n" + ."\n" + .'* For a primary ENI: The default number of queues that the instance type supports for the ENI is returned.'."\n" + ."\n" + .'* For a secondary ENI:'."\n" + ."\n" + .' * When the ENI is in the InUse state, the following situations occur for the QueueNumber parameter:'."\n" + ."\n" + .' * If the number of queues supported by the ENI has not been modified, the default number of queues that the instance type supports for the ENI is returned.'."\n" + .' * If the number of queues supported by the ENI has been modified, the new number of queues is returned.'."\n" + ."\n" + .' * When the ENI is in the Available state, the following situations occur for the QueueNumber parameter:'."\n" + ."\n" + .' * If the number of queues supported by the ENI has not been modified, the return value is empty.'."\n" + .' * If the number of queues supported by the ENI has been modified, the new number of queues is returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8', + ], + 'SecurityGroupIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The IDs of the security groups to which the ENI belongs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The IDs of the security groups to which the ENI belongs.', + 'type' => 'string', + 'example' => 'sg-bp18kz60mefsicfg****', + ], + ], + ], + ], + 'AssociatedPublicIp' => [ + 'description' => 'Details about the elastic IP address (EIP) that is associated with the secondary private IP address of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'PublicIpAddress' => [ + 'description' => 'The EIP.'."\n", + 'type' => 'string', + 'example' => '116.62.**.**', + ], + 'AllocationId' => [ + 'description' => 'The ID of the EIP.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + ], + ], + 'Attachment' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.'."\n", + 'type' => 'object', + 'properties' => [ + 'DeviceIndex' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => 'hide', + ], + 'InstanceId' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.'."\n", + 'type' => 'string', + 'example' => 'hide', + ], + 'TrunkNetworkInterfaceId' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.'."\n", + 'type' => 'string', + 'example' => 'hide', + ], + 'MemberNetworkInterfaceIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'MemberNetworkInterfaceId' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'string', + 'example' => 'hide', + ], + ], + ], + ], + 'NetworkCardIndex' => [ + 'description' => 'The index of the network interface controller (NIC).'."\n" + ."\n" + .'* If the ENI is in the Available state or if no NIC index was specified when the ENI was attached, this parameter has no value.'."\n" + .'* If the ENI is in the InUse state and an NIC index was specified when the ENI was attached, the specified NIC index is returned as the value of this parameter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + ], + ], + 'PrivateIpSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PrivateIpSet' => [ + 'description' => 'The private IP addresses of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'PrivateIpAddress' => [ + 'description' => 'The private IP address of the ENI.'."\n", + 'type' => 'string', + 'example' => '172.17.**.**', + ], + 'Primary' => [ + 'description' => 'Indicates whether the IP address is the primary private IP address. Valid values:'."\n" + ."\n" + .'* true: The IP address is the primary private IP address.'."\n" + .'* false: The IP address is a secondary private IP address.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'AssociatedPublicIp' => [ + 'description' => 'The EIP that is associated with the secondary private IP address of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'PublicIpAddress' => [ + 'description' => 'The EIP.'."\n", + 'type' => 'string', + 'example' => '116.62.**.**', + ], + 'AllocationId' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + ], + ], + ], + ], + ], + ], + ], + 'Ipv6Sets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Set' => [ + 'description' => 'The IPv6 addresses of the ENI.', + 'type' => 'array', + 'items' => [ + 'description' => 'The IPv6 addresses of the ENI.', + 'type' => 'object', + 'properties' => [ + 'Ipv6Address' => [ + 'description' => 'The IPv6 address of the ENI.'."\n", + 'type' => 'string', + 'example' => '2001:db8:1234:1a00::****', + ], + ], + ], + ], + ], + ], + 'Ipv4PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv4PrefixSet' => [ + 'description' => 'The IPv4 prefixes of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv4Prefix' => [ + 'description' => 'The IPv4 prefix of the ENI.'."\n", + 'type' => 'string', + 'example' => '192.168.**.0/28', + ], + ], + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + ], + ], + ], + ], + 'Ipv6PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6PrefixSet' => [ + 'description' => 'The IPv6 prefixes of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Ipv6Prefix' => [ + 'description' => 'The IPv6 prefix of the ENI.'."\n", + 'type' => 'string', + 'example' => '2001:db8:1234:1a00:****::/80', + ], + ], + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the ENI.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tags of the ENI.', + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value of the ENI.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key of the ENI.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'BondInterfaceSpecification' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'object', + 'properties' => [ + 'BondMode' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'string', + 'example' => 'null', + ], + 'SlaveInterfaceSpecification' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SlaveInterfaceSpecificationSet' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'object', + 'properties' => [ + 'SlaveNetworkInterfaceId' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'WorkState' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'BondNetworkInterfaceId' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + ], + ], + ], + ], + ], + ], + ], + 'SlaveInterfaceSpecification' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'object', + 'properties' => [ + 'SlaveNetworkInterfaceId' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'string', + 'example' => 'null', + ], + 'WorkState' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'string', + 'example' => 'null', + ], + 'BondNetworkInterfaceId' => [ + 'description' => '> This parameter is in invitational preview and unavailable for general users.', + 'type' => 'string', + 'example' => 'null', + ], + ], + ], + 'DeleteOnRelease' => [ + 'description' => 'Indicates whether to retain the ENI when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'TcpOptionAddressEnabled' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'NetworkInterfaceTrafficConfig' => [ + 'description' => 'The communication settings of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of the ENI.'."\n", + 'type' => 'string', + 'example' => 'HighPerformance', + ], + 'QueueNumber' => [ + 'description' => 'The number of queues supported by the ENI.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8', + ], + 'QueuePairNumber' => [ + 'description' => 'The number of queues supported by the ERI.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '8', + ], + ], + ], + 'ConnectionTrackingConfiguration' => [ + 'description' => 'The connection tracking configurations of the ENI.'."\n" + ."\n" + .'Before you use the parameter, familiarize yourself with how to manage the timeout periods of connections. For more information, see [Mange connection timeout periods](~~2865958~~).'."\n" + ."\n" + .'> This parameter is returned only when the value of the input parameter `Attribute` is: `connectionTrackingConfiguration`.'."\n", + 'type' => 'object', + 'properties' => [ + 'TcpEstablishedTimeout' => [ + 'description' => 'The timeout period for TCP connections in the ESTABLISHED state. Unit: seconds. Valid values: 30, 60, 80, 100, 200, 300, 500, 700, and 910.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '910', + ], + 'TcpClosedAndTimeWaitTimeout' => [ + 'description' => 'The timeout period for TCP connections in the TIME_WAIT or CLOSE_WAIT state. Unit: seconds. Valid values: integers from 3 to 15.'."\n" + ."\n" + .'> If the associated Elastic Compute Service (ECS) instance is used with a Network Load Balancer (NLB) or Classic Load Balancer (CLB) instance, the default timeout period for TCP connections in the `TIME_WAIT` state is 15 seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'UdpTimeout' => [ + 'description' => 'The timeout period for UDP flows. Unit: seconds. Valid values: 10, 20, 30, 60, 80, and 100.'."\n" + ."\n" + .'> If the associated ECS instance is used with an NLB or CLB instance, the default timeout period for UDP flows is 100 seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '30', + ], + ], + ], + 'SourceDestCheck' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'EnhancedNetwork' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableSriov' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'EnableRss' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'VirtualFunctionTotalQueueNumber' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + 'VirtualFunctionQuantity' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + ], + ], + 'QoSConfig' => [ + 'title' => 'QoS 限速设置', + 'description' => 'QoS Speed Limit Settings'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableQoS' => [ + 'title' => '是否启用 QoS 限速设置', + 'description' => 'Whether to enable QoS speed limit settings'."\n", + 'type' => 'boolean', + ], + 'QoS' => [ + 'title' => 'QoS 限速设置', + 'description' => 'QoS Speed Limit Settings'."\n", + 'type' => 'object', + 'properties' => [ + 'BandwidthTx' => [ + 'title' => '最大内网出方向带宽限制', + 'description' => 'Maximum outbound internal bandwidth'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '50000', + ], + 'BandwidthRx' => [ + 'title' => '最大内网入方向带宽限制', + 'description' => 'maximum inbound internal bandwidth'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '50000', + ], + 'PpsTx' => [ + 'title' => '内网出方向网络收发包能力', + 'description' => 'Outbound packet forwarding rate over the internal network'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '50000', + ], + 'PpsRx' => [ + 'title' => '内网入方向网络收发包能力', + 'description' => 'Inbound packet forwarding rate over the internal network'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '50000', + ], + 'ConcurrentConnections' => [ + 'title' => '会话数量的最大值', + 'description' => 'Maximum number of sessions'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '50000', + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidRegionId.MalFormed', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"CreationTime\\": \\"2019-12-25T12:31:31Z\\",\\n \\"VpcId\\": \\"vpc-bp67acfmxazb4p****\\",\\n \\"Type\\": \\"Secondary\\",\\n \\"Status\\": \\"Available\\",\\n \\"NetworkInterfaceTrafficMode\\": \\"Standard\\",\\n \\"NetworkInterfaceName\\": \\"my-eni-name\\",\\n \\"MacAddress\\": \\"00:16:3e:12:**:**\\",\\n \\"QueuePairNumber\\": 22,\\n \\"NetworkInterfaceId\\": \\"eni-bp125p95hhdhn3ot****\\",\\n \\"ServiceID\\": 12345678910,\\n \\"InstanceId\\": \\"i-bp1e2l6djkndyuli****\\",\\n \\"OwnerId\\": \\"123456****\\",\\n \\"ServiceManaged\\": true,\\n \\"VSwitchId\\": \\"vsw-bp1s5fnvk4gn2tws0****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"Description\\": \\"testDescription\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\",\\n \\"PrivateIpAddress\\": \\"10.1.**.**\\",\\n \\"QueueNumber\\": 8,\\n \\"SecurityGroupIds\\": {\\n \\"SecurityGroupId\\": [\\n \\"sg-bp18kz60mefsicfg****\\"\\n ]\\n },\\n \\"AssociatedPublicIp\\": {\\n \\"PublicIpAddress\\": \\"116.62.**.**\\",\\n \\"AllocationId\\": \\"null\\"\\n },\\n \\"Attachment\\": {\\n \\"DeviceIndex\\": 0,\\n \\"InstanceId\\": \\"hide\\",\\n \\"TrunkNetworkInterfaceId\\": \\"hide\\",\\n \\"MemberNetworkInterfaceIds\\": {\\n \\"MemberNetworkInterfaceId\\": [\\n \\"hide\\"\\n ]\\n },\\n \\"NetworkCardIndex\\": 0\\n },\\n \\"PrivateIpSets\\": {\\n \\"PrivateIpSet\\": [\\n {\\n \\"PrivateIpAddress\\": \\"172.17.**.**\\",\\n \\"Primary\\": true,\\n \\"AssociatedPublicIp\\": {\\n \\"PublicIpAddress\\": \\"116.62.**.**\\",\\n \\"AllocationId\\": \\"null\\"\\n }\\n }\\n ]\\n },\\n \\"Ipv6Sets\\": {\\n \\"Ipv6Set\\": [\\n {\\n \\"Ipv6Address\\": \\"2001:db8:1234:1a00::****\\"\\n }\\n ]\\n },\\n \\"Ipv4PrefixSets\\": {\\n \\"Ipv4PrefixSet\\": [\\n {\\n \\"Ipv4Prefix\\": \\"192.168.**.0/28\\"\\n }\\n ]\\n },\\n \\"Ipv6PrefixSets\\": {\\n \\"Ipv6PrefixSet\\": [\\n {\\n \\"Ipv6Prefix\\": \\"2001:db8:1234:1a00:****::/80\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"BondInterfaceSpecification\\": {\\n \\"BondMode\\": \\"null\\",\\n \\"SlaveInterfaceSpecification\\": {\\n \\"SlaveInterfaceSpecificationSet\\": [\\n {\\n \\"SlaveNetworkInterfaceId\\": \\"null\\",\\n \\"WorkState\\": \\"null\\",\\n \\"BondNetworkInterfaceId\\": \\"null\\"\\n }\\n ]\\n }\\n },\\n \\"SlaveInterfaceSpecification\\": {\\n \\"SlaveNetworkInterfaceId\\": \\"null\\",\\n \\"WorkState\\": \\"null\\",\\n \\"BondNetworkInterfaceId\\": \\"null\\"\\n },\\n \\"DeleteOnRelease\\": true,\\n \\"TcpOptionAddressEnabled\\": \\"null\\",\\n \\"NetworkInterfaceTrafficConfig\\": {\\n \\"NetworkInterfaceTrafficMode\\": \\"HighPerformance\\",\\n \\"QueueNumber\\": 8,\\n \\"QueuePairNumber\\": 8\\n },\\n \\"ConnectionTrackingConfiguration\\": {\\n \\"TcpEstablishedTimeout\\": 910,\\n \\"TcpClosedAndTimeWaitTimeout\\": 3,\\n \\"UdpTimeout\\": 30\\n },\\n \\"SourceDestCheck\\": false,\\n \\"EnhancedNetwork\\": {\\n \\"EnableSriov\\": false,\\n \\"EnableRss\\": true,\\n \\"VirtualFunctionTotalQueueNumber\\": 0,\\n \\"VirtualFunctionQuantity\\": 0\\n },\\n \\"QoSConfig\\": {\\n \\"EnableQoS\\": true,\\n \\"QoS\\": {\\n \\"BandwidthTx\\": 50000,\\n \\"BandwidthRx\\": 50000,\\n \\"PpsTx\\": 50000,\\n \\"PpsRx\\": 50000,\\n \\"ConcurrentConnections\\": 50000\\n }\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2019-12-25T12:31:31Z\\n vpc-bp67acfmxazb4p****\\n Secondary\\n Available\\n Standard\\n my-eni-name\\n 00:16:3e:12:**:**\\n 22\\n eni-bp125p95hhdhn3ot****\\n 12345678910\\n i-bp1e2l6djkndyuli****\\n 123456****\\n true\\n vsw-bp1s5fnvk4gn2tws0****\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n testDescription\\n rg-bp67acfmxazb4p****\\n cn-hangzhou-g\\n 10.1.**.**\\n 8\\n sg-bp18kz60mefsicfg****\\n \\n 116.62.**.**\\n null\\n \\n \\n hide\\n hide\\n hide\\n 0\\n \\n \\n 172.17.**.**\\n true\\n \\n 116.62.**.**\\n null\\n \\n \\n \\n 2001:db8:1234:1a00::****\\n \\n \\n 192.168.**.0/28\\n \\n \\n 2001:db8:1234:1a00:****::/80\\n \\n \\n TestValue\\n TestKey\\n \\n \\n null\\n \\n null\\n null\\n null\\n \\n \\n \\n null\\n null\\n null\\n true\\n \\n","errorExample":""}]', + 'title' => 'DescribeNetworkInterfaceAttribute', + 'description' => '## Debugging'."\n" + ."\n" + .'[OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates the sample code of the operation for different SDKs.](https://api.aliyun.com/#product=Ecs\\&api=DescribeNetworkInterfaceAttribute\\&type=RPC\\&version=2014-05-26)'."\n", + ], + 'ModifyNetworkInterfaceAttribute' => [ + 'summary' => 'Modifies the attributes of an elastic network interface (ENI), such as the number of queues supported by the ENI, the security groups to which the ENI belongs, the queue depth, the communication mode, and whether to retain the ENI when the Elastic Compute Service (ECS) instance to which the ENI is attached is released.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29306', + 'abilityTreeNodes' => [ + 'FEATUREecsT5S9N2', + ], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the ENI. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'This parameter is left empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eniTestName', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'QueueNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of queues supported by the ENI. Valid values: 1 to 2048.'."\n" + ."\n" + .'* You can change the number of queues supported by an ENI only when the ENI is in the `Available` state or the ENI is attached (`InUse`) to an instance that is in the `Stopped` state.'."\n" + .'* The number of queues supported by the ENI cannot exceed the maximum number of queues that the instance type allows for each ENI. The total number of queues on all ENIs on an instance cannot exceed the queue quota that the instance type supports. To query the maximum number of queues per ENI and the queue quota for an instance type, you can call the [DescribeInstanceTypes](~~25620~~) operation and check the `MaximumQueueNumberPerEni` and `TotalEniQueueQuantity` values in the response.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '-1', + 'example' => '8', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the ENI. The description must be 2 to 255 characters in length and cannot start with [http:// or https://](http://https://。).'."\n" + ."\n" + .'This parameter is left empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the security groups to which to add the secondary ENI. The secondary ENI is added to the specified security groups and removed from the original security groups.'."\n" + ."\n" + .'* The valid values of N vary based on the maximum number of security groups to which an ENI can be added. For more information, see the [Security group limits](~~25412#SecurityGroupQuota~~) section of the "Limits and quotas" topic.'."\n" + .'* The new security groups take effect after a short delay.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N.'."\n" + ."\n" + .'* The valid values of N vary based on the maximum number of security groups to which an ENI can be added. For more information, see the [Security group limits](~~25412#SecurityGroupQuota~~) section of the "Limits and quotas" topic.'."\n" + .'* You can change only the security groups to which a secondary ENI is added.'."\n" + .'* After you specify this parameter, the secondary ENI is added to the specified security groups and removed from the original security groups.'."\n" + .'* The new security groups take effect after a short delay.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'required' => false, + 'maxItems' => 51, + ], + ], + [ + 'name' => 'DeleteOnRelease', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the ENI when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'RxQueueSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The receive (Rx) queue depth of the ENI.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The Rx queue depth of an ENI must be the same as the transmit (Tx) queue depth of the ENI. Valid values: powers of 2 in the range of 8192 to 16384.'."\n" + .'* A larger Rx queue depth yields higher inbound throughput but consumes more memory.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + ], + [ + 'name' => 'TxQueueSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Tx queue depth of the ENI.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The Tx queue depth of an ENI must be the same as the Rx queue depth of the ENI. Valid values: powers of 2 in the range of 8192 to 16384.'."\n" + .'* A larger Tx queue depth yields higher outbound throughput but consumes more memory.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + ], + [ + 'name' => 'NetworkInterfaceTrafficConfig', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The communication parameters of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of the ENI. Valid values:'."\n" + ."\n" + .'* Standard: uses the TCP communication mode.'."\n" + .'* HighPerformance: uses the remote direct memory access (RDMA) communication mode with Elastic RDMA Interface (ERI) enabled.'."\n" + ."\n" + .'When the ENI is in the InUse state, take note of the following items:'."\n" + ."\n" + .'* The total number of ERIs attached to the instance cannot exceed the ERI quota for the instance type. To query the ERI quota for an instance type, call the DescribeInstanceTypes operation and check the EriQuantity value in the response.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'HighPerformance', + ], + 'QueueNumber' => [ + 'description' => 'The number of queues supported by the ENI. When the ENI is in the InUse state, take note of the following items:'."\n" + ."\n" + .'* The value of this parameter cannot exceed the maximum number of queues allowed per ENI for the instance type.'."\n" + .'* The total number of queues for all ENIs on the instance cannot exceed the queue quota for the instance type. To query the maximum number of queues per ENI and the queue quota for an instance type, call the DescribeInstanceTypes operation and check the MaximumQueueNumberPerEnig and TotalEniQueueQuantity values in the response.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8', + ], + 'QueuePairNumber' => [ + 'description' => 'The number of queues supported by the ERI. When the ERI is in the InUse state, take note of the following items:'."\n" + ."\n" + .'* The value of this parameter cannot exceed the maximum number of queues allowed per ERI for the instance type. To query the maximum number of queues allowed per ERI for an instance type, call the DescribeInstanceTypes operation and check the QueuePairNumber value in the response.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8', + ], + 'RxQueueSize' => [ + 'description' => 'The receive (Rx) queue depth of the ENI.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The Rx queue depth of an ENI must be the same as the transmit (Tx) queue depth of the ENI. Valid values: powers of 2 in the range of 8192 to 16384.'."\n" + .'* A larger Rx queue depth yields higher inbound throughput but consumes more memory.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + 'TxQueueSize' => [ + 'description' => 'The Tx queue depth of the ENI.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The Tx queue depth of an ENI must be the same as the Rx queue depth of the ENI. Valid values: powers of 2 in the range of 8192 to 16384.'."\n" + .'* A larger Tx queue depth yields higher outbound throughput but consumes more memory.'."\n" + ."\n" + .'> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '8192', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'ConnectionTrackingConfiguration', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The connection tracking configuration of the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'TcpEstablishedTimeout' => [ + 'description' => 'The timeout period for TCP connections in the ESTABLISHED state. Unit: seconds. Valid values: 30, 60, 80, 100, 200, 300, 500, 700, and 910.'."\n" + ."\n" + .'Default value: 910.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '910', + ], + 'TcpClosedAndTimeWaitTimeout' => [ + 'description' => 'The timeout period for TCP connections in the TIME_WAIT or CLOSE_WAIT state. Unit: seconds. Valid values: integers from 3 to 15.'."\n" + ."\n" + .'Default value: 3.'."\n" + ."\n" + .'> If the associated ECS instance is used together with a Network Load Balancer (NLB) or Classic Load Balancer (CLB) instance, the default timeout period for TCP connections in the `TIME_WAIT` state is 15 seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + 'UdpTimeout' => [ + 'description' => 'The timeout period for UDP flows. Unit: seconds. Valid values: 10, 20, 30, 60, 80, and 100.'."\n" + ."\n" + .'Default value: 30.'."\n" + ."\n" + .'> If the associated ECS instance is used together with an NLB or CLB instance, the default timeout period for UDP flows is 100 seconds.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '30', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'EnhancedNetwork', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'EnableSriov' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'EnableRss' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'VirtualFunctionTotalQueueNumber' => [ + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + ], + 'VirtualFunctionQuantity' => [ + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'SourceDestCheck', + 'in' => 'query', + 'schema' => [ + 'description' => 'Source and destination IP address check We recommend that you enable the feature to improve network security. Valid value:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This feature is available only in some regions. Before you use this method, read [Source and destination IP address check](~~2863210~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'enumValueTitles' => [], + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.NotSupportModifyQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.DetachPrimaryEniNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.EniId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'JoinedGroupLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniQueueSize.RegionOrUserNotSupported', + 'errorMessage' => 'The specified parameter RxQueueSize or TxQueueSize is not supported in this region, or this account is not in the whitelist of using eni QueueSize.', + ], + [ + 'errorCode' => 'InvalidParameter.EniQueueSize', + 'errorMessage' => 'The specified parameter TxQueueSize and RxQueueSize are not equal or exceed limit.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidConnectionTrackingConfiguration.RegionOrUserNotSupported', + 'errorMessage' => 'The specified parameter ConnectionTrackingConfiguration is not supported in this region, or this account is not in the whitelist of using network interface ConnectionTrackingConfiguration.', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidQueuePairNumber', + 'errorMessage' => 'The specified parameter QueuePairNumber exceeds limit.', + ], + [ + 'errorCode' => 'InvalidParameter.EniConnectionTrackingConfiguration', + 'errorMessage' => 'The specify network interface connection tracking configuration exceeds limit.', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueuePairNumberExceed', + 'errorMessage' => 'The QueuePairNumber on the RDMA ENI exceeds the upper limit allowed for a single ENI.', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceEniPerInstanceLimitExceeded', + 'errorMessage' => 'The number of RDMA ENIs attached to the ECS instance exceeds the upper limit.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportHighPerformance', + 'errorMessage' => 'The ECS instance type where the ENI is located does not support the RDMA mode.', + ], + [ + 'errorCode' => 'InvalidTrafficMode.ModifyToStandardNotSupported', + 'errorMessage' => 'The specified parameter NetworkInterfaceTrafficMode is not supported to modify to Standard.', + ], + [ + 'errorCode' => 'InvalidOperation.EniTrafficModeNotSupportIPv6', + 'errorMessage' => 'The ENI using High Performance traffic mode does not support IPv6.', + ], + [ + 'errorCode' => 'InvalidOperation.EniQueuePairNumberOverflow', + 'errorMessage' => 'The RDMA QueuePairNumber of the ECS instance associated with the specified ENI exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidParameter.QueuePairNumberMustEmpty', + 'errorMessage' => 'When the traffic mode is set to Standard, the QueuePairNumber must be empty.', + ], + [ + 'errorCode' => 'InvalidParameter.EniTrafficMode', + 'errorMessage' => 'The ENI traffic mode is set incorrectly, it must be either Standard or HighPerformance.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportRss', + 'errorMessage' => 'The ECS instance type does not support Rss.', + ], + [ + 'errorCode' => 'InvalidParameter.EniEnhancedNetwork', + 'errorMessage' => 'The input parameter "EnhancedNetwork" is illegal, when EnableSriov is true, VirtualFunctionTotalQueueNumber must not be empty, and VirtualFunctionQuantity must be 1 to 256. When EnableSriov is empty or false, VirtualFunctionTotalQueueNumber and VirtualFunctionQuantity must be empty.', + ], + [ + 'errorCode' => 'InvalidOperation.NotSupportModifyVFQueueNumberAndVFQuantity', + 'errorMessage' => 'The ENI not support modify VirtualFunctionTotalQueueNumber and VirtualFunctionQuantity when EnableSriov is true.', + ], + [ + 'errorCode' => 'InvalidOperation.TrunkAttachmentMustEmpty', + 'errorMessage' => 'The Attachment of the current Trunk type Network Interface must be empty when modify EnableSriov to true.', + ], + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling, try again later.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AvailabilityZoneMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MultiGroupType', + 'errorMessage' => 'The specified instance can\'t join different types of security group.', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => 'The maximum number of eni in a enterprise level security group is exceeded.', + ], + [ + 'errorCode' => 'InvalidParams.NetworkInterfaceName', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ModifyPrimaryEniQueueNumber', + 'errorMessage' => 'Primary NetworkInterface is not allowed to modify queue number.', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => 'Available status or ECS instance attached is Stopped is allowed to modify network interface queue number.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidEniQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueueNumberExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ExceedInstanceTypeQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'AclLimitExceed', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidEcsId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.PrimaryEniOnlySupportModifyNameAndDesc', + 'errorMessage' => 'Primary NetworkInterface is only allowed to modify name and description.', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupIdRepeated', + 'errorMessage' => 'The specified security group ids has repeated.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'ModifyNetworkInterfaceAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteNetworkInterface' => [ + 'summary' => 'Deletes an elastic network interface (ENI) in a region. DeleteNetworkInterface is an asynchronous operation.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29267', + 'abilityTreeNodes' => [ + 'FEATUREecsT5S9N2', + ], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-bp14v2sdd3v8htln****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'F3CD6886-D8D0-4FEE-B93E-1B73239673DE', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.HasSlaveEniBonded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.DetachPrimaryEniNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.EniId', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AvailabilityZoneMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidEcsId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.EniMustHaveSecurityGroup', + 'errorMessage' => 'The specified network card does not have an associated security group.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Ecs::2014-05-26::DescribeNetworkInterfaces', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 30, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FExxxxx\\",\\n}"},{"type":"xml","example":"\\n F3CD6886-D8D0-4FEE-B93E-1B73239673DE\\n","errorExample":"\\n 04F0F334-1335-436C-A1D7-6C044FExxxxx\\n"}]', + 'title' => 'DeleteNetworkInterface', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* The ENI to be deleted must be in the Available state.'."\n" + ."\n" + .'* If the ENI to be deleted is attached to an Elastic Compute Service (ECS) instance, you must detach the ENI from the instance before you can delete the ENI. To detach the ENI, you can call the [DetachNetworkInterface](~~58514~~) operation.'."\n" + ."\n" + .'* After an ENI is deleted, the following situations occur:'."\n" + ."\n" + .' * All private IP addresses (including primary and secondary private IP addresses) of the ENI are automatically released.'."\n" + .' * The ENI is automatically removed from all security groups.'."\n" + ."\n" + .'* The DeleteNetworkInterface operation is an asynchronous operation. After this operation is called to delete an ENI, you can check the status or events of the ENI to determine whether the ENI is deleted. The following figure shows the transitions between the states of the ENI.'."\n" + .'![](https://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/file-manage-files/en-US/20230223/krcd/DeleteNetworkInterface.png)'."\n" + .' * If the ENI is in the Deleting state, the ENI deletion request is sent and the ENI is being deleted.'."\n" + .' * If the ENI is not found, the ENI is deleted.'."\n" + .' * If the ENI is stuck in the Deleting state, the ENI fails to be deleted. You can re-initiate the request to delete the ENI.'."\n" + ."\n" + .'For information about examples on how to call the DeleteNetworkInterface operation, see [Delete an ENI](~~471553~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + ], + 'AttachNetworkInterface' => [ + 'summary' => 'Attaches an elastic network interface (ENI) to an Elastic Compute Service (ECS) instance that resides in a virtual private cloud (VPC). When you call this operation, you can specify parameters, such as NetworkInterfaceId, InstanceId, and NetworkCardIndex, in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29243', + 'abilityTreeNodes' => [ + 'FEATUREecsT5S9N2', + ], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eni-bp17pdijfczax1huji****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'i-bp16qstyvxj9gpqw****', + ], + ], + [ + 'name' => 'TrunkNetworkInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the trunk ENI.'."\n" + ."\n" + .'> This parameter is unavailable.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-f8zapqwj1v1j4ia3****', + ], + ], + [ + 'name' => 'WaitForNetworkConfigurationReady', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is no longer supported.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'NetworkCardIndex', + 'in' => 'query', + 'schema' => [ + 'description' => 'The index of the network interface controller (NIC).'."\n" + ."\n" + .'> The value of this parameter varies based on the instance family of the specified instance. If the instance type of the specified instance does not support NICs, leave this parameter empty. If the instance type of the specified instance supports NICs, set this parameter to a valid value. For information about the valid values of this parameter, see [Instance families](~~25378~~).'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '0', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidRegion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.DetachPrimaryEniNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidGeneration', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.EniId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.UserNotSupportNetworkCard', + 'errorMessage' => 'User not support network card.', + ], + [ + 'errorCode' => 'InvalidOperation.ConnectionTrackingConfigNotSupportMemberEni', + 'errorMessage' => 'Member eni not support ConnectionTrackingConfiguration.', + ], + [ + 'errorCode' => 'InvalidParameter.NetworkCardIndexInvalid', + 'errorMessage' => 'The network card index is invalid or the current ECS/ENI type does not support the value.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportRss', + 'errorMessage' => 'The ECS instance type does not support Rss.', + ], + [ + 'errorCode' => 'OperationDenied.NoEniStock', + 'errorMessage' => 'The requested resource of ENI is insufficient in the specified ECS, please retry or upgrade to enterprise-level computing instance types.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AvailabilityZoneMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEni.NotSameVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MultiGroupType', + 'errorMessage' => 'The specified instance can\'t join different types of security group.', + ], + [ + 'errorCode' => 'InvalidOperation.NotSupportEnterpriseGroup', + 'errorMessage' => 'The specified instance type doesn\'t support enterprise level security group.', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => 'The maximum number of eni in a enterprise level security group is exceeded.', + ], + [ + 'errorCode' => 'InvalidOperation.EipBindModel', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HotPlugNotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstance.NetworkType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidTrunkEniStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.TrunkingIsNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportEniTrunking', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniTypeNotSupportTrunking', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniTrunkDeviceFull', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniNotBelongTrunk', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniTypeNotSupportAttachToTrunk', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniNotBelongEcs', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidEniQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueueNumberExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ExceedInstanceTypeQueueNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceTrafficModeNotSupportTrunkEni', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceTrafficModeNotSupportMemberEni', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportHighPerformanceTrafficMode', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniTrafficModeNotSupportIpv6', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEniQueuePairNumberExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.InvalidQueuePairNumber', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniQueuePairNumberOverflow', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceEniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6CountExceeded', + 'errorMessage' => '%s.', + ], + ], + [ + [ + 'errorCode' => 'InvalidEcsId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.EniMustHaveSecurityGroup', + 'errorMessage' => 'The specified network card does not have an associated security group.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Ecs::2014-05-26::DescribeNetworkInterfaces', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 30, + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [ + 'ecs:NetworkInterface:NetworkInterfaceOperateCompleted', + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'AttachNetworkInterface', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* The ENI must be in the **Available** state. You can attach an ENI to only one instance that resides in the same zone and VPC as the ENI.'."\n" + ."\n" + .'* The instance must be in the Running or Stopped state. When you attach ENIs to instances of specific instance types, make sure that the instances are in the Stopped state. For more information, see the "Instance types of the ECS instances that must be in the Stopped (Stopped) state" section in the [Bind an ENI](~~58503~~) topic.'."\n" + ."\n" + .'>If the last start time of the instance (including the start time of the instance if it is a new instance, the last restart time of the instance, and the last reactivation time of the instance) is before April 1st, 2018 and the instance is in the Running state, you must call the RebootInstance operation to restart the instance. If you do not call the RebootInstance operation to restart the instance, you cannot attach the ENI to the instance.'."\n" + ."\n" + .'* You can attach multiple ENIs to one instance. For more information, see [ENI overview](~~58496~~).'."\n" + ."\n" + .'* The vSwitch to which the ENI is connected must be in the same zone and VPC as the vSwitch to which the instance is connected.'."\n" + ."\n" + .'* This operation is an asynchronous operation. After you call this operation to attach an ENI, you can view the status or events of the ENI to check whether the ENI is attached. The following figure shows the transitions between the statuses of the ENI.'."\n" + ."\n" + .' ![](https://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/file-manage-files/en-US/20230223/vqky/AttachNetworkInterface.png)'."\n" + .'- If the ENI is in the Attaching state, the ENI attachment request is sent and the ENI is being attached to the specified instance. '."\n" + .'- If the ENI is in the InUse state, the ENI is attached to the specified instance.'."\n" + .'- If the ENI is in the Available state, the ENI failed to be attached.'."\n" + ."\n" + .'**For examples on how to call this operation, see** [Attach an ENI](~~471550~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DetachNetworkInterface' => [ + 'summary' => 'Detach an elastic network interface (ENI) from an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29295', + 'abilityTreeNodes' => [ + 'FEATUREecsT5S9N2', + ], + 'autoTest' => true, + 'tenantRelevance' => 'tenant', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the trunk ENI.'."\n" + ."\n" + .'> This parameter is unavailable for use.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'TrunkNetworkInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-f8zapqwj1v1j4ia3****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.', + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidRegion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.DetachPrimaryEniNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.EniId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniNotBelongEcs', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniHotPlugNotSupported', + 'errorMessage' => 'The ENI with high-performance traffic mode cannot be hot-plugged. Please stop the ECS instance to which the ENI is attached, and try again.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AvailabilityZoneMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniLinked', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HotPlugNotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidTrunkEniStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.TrunkingIsNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceTypeNotSupportEniTrunking', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniNotBelongTrunk', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniTypeNotSupportTrunking', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HasMemberEniAttached', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.EniNotBelongEcs', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidEcsId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.EniMustHaveSecurityGroup', + 'errorMessage' => 'The specified network card does not have an associated security group.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Ecs::2014-05-26::DescribeNetworkInterfaces', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 30, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FExxxxx\\",\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n 04F0F334-1335-436C-A1D7-6C044FExxxxx\\n"}]', + 'title' => 'DetachNetworkInterface', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* You cannot detach the primary ENI of an instance.'."\n" + ."\n" + .'* Make sure that the ENI to be detached is in the Detaching (Unbinding) or InUse (Bound) state.'."\n" + ."\n" + .'* Make sure that the instance from which you want to detach an ENI is in the Running (Running) or Stopped (Stopped) state.'."\n" + ."\n" + .'* The DetachNetworkInterface operation is an asynchronous operation. After this operation is called to detach an ENI, you can check the status or events of the ENI to determine whether the ENI is detached. The following figure shows the transitions between the states of the ENI.![](https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20230223/uemr/DetachNetworkInterface.png)'."\n" + ."\n" + .' * If the ENI is in the Detaching state, the ENI detachment request is sent and the ENI is being detached from the associated instance.'."\n" + .' * If the ENI is in the Available state, the ENI is detached from the associated instance.'."\n" + .' * If the ENI is stuck in the Detaching state, the ENI may fail to be detached from the associated instance due to specific reasons. For example, the ENI may fail to be detached because the operating system of the instance did not respond to the ENI detachment request. If this issue occurs, you can re-initiate the request to detach the ENI. If the issue persists, restart the instance.'."\n" + ."\n" + .'For information about examples on how to call the DetachNetworkInterface operation, see [Detach an ENI from an ECS instance](~~471551~~).', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AssignPrivateIpAddresses' => [ + 'summary' => 'Assigns secondary private IP addresses to an elastic network interface (ENI). You can specify available private IP addresses within the CIDR block of the vSwitch that is connected to the ENI. Alternatively, you can specify the number of private IP addresses that are automatically assigned from the CIDR block of the vSwitch to the ENI.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29242', + 'abilityTreeNodes' => [ + 'FEATUREecsCHDP5I', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecondaryPrivateIpAddressCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of private IP addresses to be automatically assigned from the CIDR block of the vSwitch that is connected to the ENI.'."\n" + ."\n" + .'To assign secondary private IP addresses to the ENI, you must specify `PrivateIpAddress.N` or `SecondaryPrivateIpAddressCount` but not both.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'Secondary private IP address N to be automatically assigned from the CIDR block of the vSwitch that is connected to the ENI. Valid values of N:'."\n" + ."\n" + .'* When the ENI is in the Available (`Available`) state, the valid values of N are 1 to 50.'."\n" + .'* When the ENI is in the InUse (`InUse`) state, the valid values of N are subject to the instance type. For more information, see [Overview of instance families](~~25378~~).'."\n" + ."\n" + .'To assign secondary private IP addresses to the ENI, you must specify `PrivateIpAddress.N` or `SecondaryPrivateIpAddressCount` but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Secondary private IP address N to be automatically assigned from the CIDR block of the vSwitch that is connected to the ENI. Valid values of N:'."\n" + ."\n" + .'* When the ENI is in the Available (`Available`) state, the valid values of N are 1 to 50.'."\n" + .'* When the ENI is in the InUse (`InUse`) state, the valid values of N are subject to the instance type. For more information, see [Overview of instance families](~~25378~~).'."\n" + ."\n" + .'> To assign secondary private IP addresses to the ENI, you specify `PrivateIpAddress.N` and `SecondaryPrivateIpAddressCount` but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.1.**.**', + ], + 'required' => false, + 'example' => '10.1.**.**', + 'maxItems' => 32, + ], + ], + [ + 'name' => 'Ipv4Prefix', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IPv4 prefixes to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> To assign IPv4 prefixes to the ENI, you must specify the Ipv4Prefix.N or Ipv4PrefixCount parameter, but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv4 prefix N to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> To assign IPv4 prefixes to the ENI, you must specify the Ipv4Prefix.N or Ipv4PrefixCount parameter, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Ipv4PrefixCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv4 prefixes to be randomly generated for the ENI. Valid values: 1 to 10.'."\n" + ."\n" + .'> To assign IPv4 prefixes to the ENI, you must specify the Ipv4Prefix.N or Ipv4PrefixCount parameter, but not both.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '10', + 'minimum' => '1', + 'example' => 'hide', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'AssignedPrivateIpAddressesSet' => [ + 'description' => 'Details about the ENI and the secondary private IP addresses that are assigned to the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'NetworkInterfaceId' => [ + 'description' => 'The ENI ID.'."\n", + 'type' => 'string', + 'example' => 'eni-bp125p95hhdhn3ot****', + ], + 'PrivateIpSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PrivateIpAddress' => [ + 'description' => 'The secondary private IP addresses that are assigned to the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The secondary private IP address that is assigned to the ENI.'."\n", + 'type' => 'string', + 'example' => '192.168.**.**', + ], + ], + ], + ], + 'Ipv4PrefixSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv4Prefixes' => [ + 'description' => 'Details about the assigned IPv4 prefixes.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The assigned IPv4 prefix.'."\n", + 'type' => 'string', + 'example' => 'hide', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Throttling', + 'errorMessage' => 'Request was denied due to request throttling.', + ], + [ + 'errorCode' => 'InvalidOperation.Unsupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.DetachPrimaryEniNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAction', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Duplicated', + 'errorMessage' => 'Specified private IP address is duplicated.', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecondaryPrivateIpAddressCount.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceNotSupportMulitipleIp', + 'errorMessage' => 'Assigning private ip for instance in cloud box is unsupported.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The operation is not allowed in the current VSwitch state. Expecting state includes "Created Available", but current state is "%s".', + ], + [ + 'errorCode' => 'QuotaExceeded.PrivateIpAddress', + 'errorMessage' => 'There are not enough private IPs in the specified VSwitch.', + ], + [ + 'errorCode' => 'InvalidStatus.InstanceIsMigrating', + 'errorMessage' => 'The ECS which ENI is attached to is migrating. Please try again later.', + ], + [ + 'errorCode' => 'InvalidEniId.Malformed', + 'errorMessage' => 'The specified parameter "NetworkInterfaceId" is not valid. Ensure you provide the full ENI id in the form eni-xxx.', + ], + [ + 'errorCode' => 'InvalidVSwitch.IllegalStatus', + 'errorMessage' => 'The operation is not allowed in the current VSwitch state. Expecting state includes "Created", but current state is "%s".', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AvailabilityZoneMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpNotEnough', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpAssigned', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniPrivateIpsCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Operation.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixIllegal', + 'errorMessage' => 'The ip prefixes %s is/are illegal.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskIllegal', + 'errorMessage' => 'The current IP prefix mask is illegal.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskNotSame', + 'errorMessage' => 'The IP prefixes %s are illegal.The IP prefix mask must be the same.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixNotAvailable', + 'errorMessage' => 'The IP prefix is not available.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixNotStrict', + 'errorMessage' => 'The IP prefix "%s" must be strict CIDR format.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpPrefixNotEnough', + 'errorMessage' => 'The specified VSwitch does not have enough IP prefixes.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskInvalid', + 'errorMessage' => 'The IP prefixes mask "%s" is illegal.Ensure the mask is between %s and %s.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMustInReserveSegment', + 'errorMessage' => 'The IP prefix must be in VSwitch reserved segment. Ensure you create reserved segment for the VSwitch.', + ], + ], + [ + [ + 'errorCode' => 'InvalidEcsId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VSwitchCidrReservationNotExist', + 'errorMessage' => 'The specified VSwitch does not have CIDR reservation.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InvalidOperation.RegionNotSupportIpPrefix', + 'errorMessage' => 'The current region does not support IP prefix feature.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivateIpCount', + 'errorMessage' => 'The current privateIpCount is not in the range 1.0 through 100.0.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"AssignedPrivateIpAddressesSet\\": {\\n \\"NetworkInterfaceId\\": \\"eni-bp125p95hhdhn3ot****\\",\\n \\"PrivateIpSet\\": {\\n \\"PrivateIpAddress\\": [\\n \\"192.168.**.**\\"\\n ]\\n },\\n \\"Ipv4PrefixSet\\": {\\n \\"Ipv4Prefixes\\": [\\n \\"192.168.**.**/28\\"\\n ]\\n }\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE70008\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n \\n \\n 192.168.**.**\\n \\n eni-bp125p95hhdhn3ot****\\n \\n","errorExample":"\\n 04F0F334-1335-436C-A1D7-6C044FE70008\\n"}]', + 'title' => 'AssignPrivateIpAddresses', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'* The ENI to which you want to assign IP prefixes must be in the Available (Available) or InUse (InUse) state.'."\n" + .'* When you assign private IP addresses to a primary ENI, the Elastic Compute Service (ECS) instance to which the ENI is attached must be in the Running (Running) or Stopped (Stopped) state.'."\n" + .'* When an ENI is in the Available state, you can assign up to 49 secondary private IP addresses to the ENI. When an ENI is attached to an instance, the number of secondary private IP addresses that can be assigned to the ENI varies based on the instance type. For more information, see [Overview of instance families](~~25378~~).'."\n" + .'* After the operation is called, you can obtain the assigned secondary private IP addresses from the response.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UnassignPrivateIpAddresses' => [ + 'summary' => 'Unassigns secondary private IP addresses from an elastic network interface (ENI).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29321', + 'abilityTreeNodes' => [ + 'FEATUREecsV84Q27', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The secondary private IP addresses to unassign.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Secondary private IP address N to unassign. Valid values of N: 1 to 32.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.**.**', + ], + 'required' => false, + 'example' => '192.168.**.**', + 'maxItems' => 32, + ], + ], + [ + 'name' => 'Ipv4Prefix', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IPv4 prefixes to unassign.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv4 prefix N to unassign. Valid values of N: 1 to 10.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.**.**/28', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.DetachPrimaryEniNotAllowed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAction', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.Malformed', + 'errorMessage' => 'The specified parameter "EniId" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'EniPerInstanceLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AvailabilityZoneMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotVpc', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpUnassigned', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Operation.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskInvalid', + 'errorMessage' => 'The ip prefixes mask %s is illegal which must be between %s and %s.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskNotSame', + 'errorMessage' => 'The ip prefixes %s are illegal which mask must be same.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixNotStrict', + 'errorMessage' => 'The ip prefix must be strict cidr format.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixIllegal', + 'errorMessage' => 'The ip prefixes %s is/are illegal.', + ], + [ + 'errorCode' => 'InvalidIp.IpRepeated', + 'errorMessage' => 'The specified ipAddress %s is(are) repeated.', + ], + ], + [ + [ + 'errorCode' => 'InvalidEcsId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => '%s', + ], + ], + 500 => [ + [ + 'errorCode' => 'InvalidOperation.RegionNotSupportIpPrefix', + 'errorMessage' => 'The current region does not support ip prefix.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Ecs::2014-05-26::DescribeNetworkInterfaces', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 10, + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [ + 'ecs:NetworkInterface:PrivateIPUnassigned', + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE70008\\"\\n}"},{"type":"xml","example":"\\n 04F0F334-1335-436C-A1D7-6C044FE70008\\n","errorExample":"\\n 04F0F334-1335-436C-A1D7-6C044FE70008\\n"}]', + 'title' => 'UnassignPrivateIpAddresses', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'* The ENI from which to unassign secondary private IP addresses must be in the **Available** (Available) or **InUse** (InUse) state.'."\n" + .'* If the ENI is a primary ENI, the Elastic Compute Service (ECS) instance to which the ENI is attached must be in the **Running** (Running) or **Stopped** (Stopped) state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AssignIpv6Addresses' => [ + 'summary' => 'Assigns one or more IPv6 addresses to an elastic network interface (ENI).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29241', + 'abilityTreeNodes' => [ + 'FEATUREecsCHDP5I', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ENI ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'eni-bp1iqejowblx6h8j****', + ], + ], + [ + 'name' => 'Ipv6AddressCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv6 addresses to randomly generate for the ENI. Valid values: 1 to 10.'."\n" + ."\n" + .'> You must specify `Ipv6Addresses.N` or `Ipv6AddressCount`, but not both.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'Ipv6Address', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IPv6 addresses to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'Example: Ipv6Address.1=2001:db8:1234:1a00::\\*\\*\\*\\*'."\n" + ."\n" + .'> You must specify `Ipv6Addresses.N` or `Ipv6AddressCount`, but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 address N to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'Example: Ipv6Address.1=2001:db8:1234:1a00::\\*\\*\\*\\*'."\n" + ."\n" + .'> You must specify `Ipv6Addresses.N` or `Ipv6AddressCount`, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::****', + ], + 'required' => false, + 'example' => '2001:db8:1234:1a00::****', + 'maxItems' => 20, + ], + ], + [ + 'name' => 'Ipv6Prefix', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IPv6 prefixes to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> To assign IPv6 prefixes to the ENI, you must specify Ipv6Prefix.N or Ipv6PrefixCount, but not both.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 prefix N to assign to the ENI. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> To assign IPv6 prefixes to the ENI, you must specify Ipv6Prefix.N or Ipv6PrefixCount, but not both.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Ipv6PrefixCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv6 prefixes to assign to the ENI. Valid values: 1 to 10.'."\n" + ."\n" + .'> To assign IPv6 prefixes to the ENI, you must specify Ipv6Prefix.N or Ipv6PrefixCount, but not both.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '10', + 'minimum' => '1', + 'example' => 'hide', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.**** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'NetworkInterfaceId' => [ + 'description' => 'The ENI ID.'."\n", + 'type' => 'string', + 'example' => 'eni-bp1iqejowblx6h8j****', + ], + 'Ipv6Sets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Address' => [ + 'description' => 'The IPv6 addresses assigned to the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The IPv6 addresses assigned to the ENI.'."\n", + 'type' => 'string', + 'example' => '2001:db8:1234:1a00::****', + ], + ], + ], + ], + 'Ipv6PrefixSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Ipv6Prefix' => [ + 'description' => 'The IPv6 prefixes of the ENI.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The IPv6 prefix of the ENI.'."\n", + 'type' => 'string', + 'example' => 'hide', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InValidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParams.EniId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidPrivateIpAddress.Duplicated', + 'errorMessage' => 'Specified private IP address is duplicated.', + ], + [ + 'errorCode' => 'IncorrectVSwitchStatus', + 'errorMessage' => 'The current status of vSwitch does not support this operation.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniOperationConflict', + 'errorMessage' => 'The previous ENI operation is still in progress. Please try again later.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbedden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniIpv6IpsCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpUnassigned', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpAssigned', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.Address', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniCountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6CountExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv6NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.Ipv4NotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitch.Ipv6NotTurnOn', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.IpAssign', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.HighPerformanceTrafficModeEniNotSupport', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniTypeNotSupport', + 'errorMessage' => 'The member eni does not support ipv6.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixIllegal', + 'errorMessage' => 'The ip prefixes %s is/are illegal.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskIllegal', + 'errorMessage' => 'The ip prefix mask is illegal.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskInvalid', + 'errorMessage' => 'The ip prefixes mask %s is illegal which must be between %s and %s.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskNotSame', + 'errorMessage' => 'The ip prefixes %s are illegal which mask must be same.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMustInReserveSegment', + 'errorMessage' => 'The ip prefix must in vswitch reserve segment.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixNotAvailable', + 'errorMessage' => 'The ip prefix is/are not available.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixNotStrict', + 'errorMessage' => 'The ip prefix must be strict cidr format.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpPrefixNotEnough', + 'errorMessage' => 'The specified vSwitch has not enough ip prefix.', + ], + ], + [ + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MaxEniIpv6IpsCountExceeded', + 'errorMessage' => 'The ipv6 address count exceed limitation.', + ], + [ + 'errorCode' => 'InvalidOperation.VSwitchIpv6Disabled', + 'errorMessage' => 'The specified VSwitch does not support Ipv6 feature.', + ], + [ + 'errorCode' => 'InvalidOperation.EnableIpv6Failed', + 'errorMessage' => 'The specified VSwitch does not support Ipv6 feature.', + ], + [ + 'errorCode' => 'InvalidIp.IpAssigned', + 'errorMessage' => 'The specified ipv6 has already been allocated.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.IpInvalid', + 'errorMessage' => 'The specified ipv6 does not match VSwitch cidr scope.', + ], + [ + 'errorCode' => 'InvalidOperation.HasIpv6RouteEntry', + 'errorMessage' => 'The specified eni has been pointed to the next hop of the route.', + ], + [ + 'errorCode' => 'InvalidOperation.VSwitchCidrReservationNotExist', + 'errorMessage' => 'The specified vSwitch has no cidr reservation.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InvalidOperation.RegionNotSupportIpPrefix', + 'errorMessage' => 'The current region does not support ip prefix.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"NetworkInterfaceId\\": \\"eni-bp1iqejowblx6h8j****\\",\\n \\"Ipv6Sets\\": {\\n \\"Ipv6Address\\": [\\n \\"2001:db8:1234:1a00::****\\"\\n ]\\n },\\n \\"Ipv6PrefixSets\\": {\\n \\"Ipv6Prefix\\": [\\n \\"2001:db8:1234:1a00:****::/80\\"\\n ]\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"A94E0C9F-B39E-4A87-BFFC-6DC7840xxxxx\\"\\n}"},{"type":"xml","example":"\\n \\n 2001:db8:1234:1a00::****\\n 2001:db8:1234:1a01::****\\n \\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n eni-bp1iqejowblx6h8j****\\n","errorExample":"\\n A94E0C9F-B39E-4A87-BFFC-6DC7840xxxxx\\n"}]', + 'title' => 'AssignIpv6Addresses', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'You can specify IPv6 addresses in the CIDR block of the vSwitch to which the ENI is connected. You can also specify the number of IPv6 addresses that the system assigns to the ENI. Take note of the following items:'."\n" + ."\n" + .'* IPv6 must be enabled on the vSwitch to which the ENI is connected. For more information, see [Enable IPv6 for a vSwitch](~~98923~~).'."\n" + ."\n" + .'* The ENI must be in the Available (Available) or InUse (InUse) state.'."\n" + ."\n" + .'* If you want to assign IPv6 addresses to a primary ENI, make sure that the Elastic Compute Service (ECS) instance to which the ENI is attached is in the Running (Running) or Stopped (Stopped) state.'."\n" + ."\n" + .'* The maximum number of IPv6 addresses that can be assigned to an ENI varies based on the instance type of the instance to which the ENI is attached.'."\n" + ."\n" + .' * If the ENI is in the Available (Available) state, up to 10 IPv6 addresses can be assigned to the ENI.'."\n" + .' * If the ENI is attached to an ECS instance, the maximum number of IPv6 addresses that can be assigned to the ENI varies based on the instance type. For more information, see [Overview of instance families](~~25378~~).'."\n" + ."\n" + .'* After the operation is called, you can obtain the IPv6 addresses that are assigned to the ENI from the response.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'UnassignIpv6Addresses' => [ + 'summary' => 'Unassigns one or more IPv6 addresses from an elastic network interface (ENI).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29320', + 'abilityTreeNodes' => [ + 'FEATUREecsV84Q27', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-bp14v2sdd3v8ht****', + ], + ], + [ + 'name' => 'Ipv6Address', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'IPv6 address N to unassign. Valid values of N: 1 to 10.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 address N to unassign. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* When you call this operation, you must specify `Ipv6Address.N` or `Ipv6Prefix.N`. Otherwise, an error is reported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Ipv6Prefix', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'IPv6 prefix N to unassign. Valid values of N: 1 to 10.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'IPv6 prefix N to unassign. Valid values of N: 1 to 10.'."\n" + ."\n" + .'> '."\n" + ."\n" + .'* When you call this operation, you must specify `Ipv6Address.N` or `Ipv6Prefix.N`. Otherwise, an error is reported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hide', + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEcsState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.Malformed', + 'errorMessage' => 'The specified parameter "EniId" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbedden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbbiden.SubUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpUnassigned', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpRepeated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.Address', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.RegionId', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixIllegal', + 'errorMessage' => 'The ip prefixes %s is/are illegal.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskInvalid', + 'errorMessage' => 'The ip prefixes mask %s is illegal which must be between %s and %s.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixMaskNotSame', + 'errorMessage' => 'The ip prefixes %s are illegal which mask must be same.', + ], + [ + 'errorCode' => 'InvalidIp.IpPrefixNotStrict', + 'errorMessage' => 'The ip prefix must be strict cidr format.', + ], + ], + [ + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + ], + 500 => [ + [ + 'errorCode' => 'InvalidOperation.RegionNotSupportIpPrefix', + 'errorMessage' => 'The current region does not support ip prefix.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'asynchronous', + 'callback' => 'Ecs::2014-05-26::DescribeNetworkInterfaces', + 'callbackInterval' => 2000, + 'maxCallbackTimes' => 10, + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'UnassignIpv6Addresses', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* The ENI must be in the **Available** (Available) or **InUse** (InUse) state.'."\n" + .'* If the ENI is a primary ENI, the Elastic Compute Service (ECS) instance to which the ENI is attached must be in the **Running** (Running) or **Stopped** (Stopped) state.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateNetworkInterfacePermission' => [ + 'summary' => 'Grants a permission on an elastic network interface (ENI) to an Alibaba Cloud partner (a certified ISV) or an individual user.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29256', + 'abilityTreeNodes' => [ + 'FEATUREecsT5S9N2', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AccountId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud partner (a certified ISV) or individual user.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '1234567890', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eni-bp14v2sdd3v8htln****', + ], + ], + [ + 'name' => 'Permission', + 'in' => 'query', + 'schema' => [ + 'description' => 'The permission on the ENI. Valid values:'."\n" + ."\n" + .'InstanceAttach: the permission to attach the ENI to an ECS instance. The ENI and the ECS instance must be in the same zone.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'InstanceAttach', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '0FCD3DEF-63D3-4605-A818-805C8BD7DB87', + ], + 'NetworkInterfacePermission' => [ + 'description' => 'Details about permissions on the ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'Permission' => [ + 'description' => 'The permission on the ENI.'."\n", + 'type' => 'string', + 'example' => 'InstanceAttach', + ], + 'NetworkInterfaceId' => [ + 'description' => 'The ID of the ENI.'."\n", + 'type' => 'string', + 'example' => 'eni-bp14v2sdd3v8htln****', + ], + 'AccountId' => [ + 'description' => 'The ID of the Alibaba Cloud partner (a certified ISV).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1234567890', + ], + 'NetworkInterfacePermissionId' => [ + 'description' => 'The ID of the permission on the ENI.'."\n", + 'type' => 'string', + 'example' => 'eni-perm-bp1cs4lwn56lfb****', + ], + 'ServiceName' => [ + 'description' => 'The name of the Alibaba Cloud service.'."\n", + 'type' => 'string', + 'example' => 'Elastic Compute Service', + ], + 'PermissionState' => [ + 'description' => 'The state of the permission on the ENI. Valid values:'."\n" + ."\n" + .'* Pending: The permission is being granted.'."\n" + .'* Granted: The permission is granted.'."\n" + .'* Revoking: The permission is being revoked.'."\n" + .'* Revoked: The permission is revoked.'."\n", + 'type' => 'string', + 'example' => 'Granted', + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'NotBelongUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.PermissionExisted', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.PermissionNotExisted', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"0FCD3DEF-63D3-4605-A818-805C8BD7DB87\\",\\n \\"NetworkInterfacePermission\\": {\\n \\"Permission\\": \\"InstanceAttach\\",\\n \\"NetworkInterfaceId\\": \\"eni-bp14v2sdd3v8htln****\\",\\n \\"AccountId\\": 1234567890,\\n \\"NetworkInterfacePermissionId\\": \\"eni-perm-bp1cs4lwn56lfb****\\",\\n \\"ServiceName\\": \\"Elastic Compute Service\\",\\n \\"PermissionState\\": \\"Granted\\"\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n\\t0FCD3DEF-63D3-4605-A818-805C8BD7DB87\\n\\t\\n\\t\\tGranted\\n\\t\\tInstanceAttach\\n\\t\\t1234567890\\n\\t\\teni-perm-bp1cs4lwn56lfb****\\n\\t\\teni-bp14v2sdd3v8htln****\\n\\t\\tElastic Compute Service\\n\\t\\n","errorExample":""}]', + 'title' => 'CreateNetworkInterfacePermission', + 'description' => 'Before you call this operation, submit a ticket to apply for using this operation.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeNetworkInterfacePermissions' => [ + 'summary' => 'Queries the permissions on elastic network interfaces (ENIs) that are granted to an Alibaba Cloud partner (certified ISV) or an individual user.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29286', + 'abilityTreeNodes' => [ + 'FEATUREecsTML5VX', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI permission. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the ENI permission. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of ENI N. You must specify `NetworkInterfaceId` or `NetworkInterfacePermissionId.N` to determine the query range.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-bp17pdijfczax****', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Maximum value: 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'NetworkInterfacePermissionId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of ENI permissions. You can specify up to 100 ENI permission IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the ENI permission.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-perm-bp1cs4lwn56lfb****', + ], + 'required' => false, + 'example' => 'eni-perm-bp1cs4lwn56lfb****', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '0FCD3DEF-63D3-4605-A818-805C8BD7DB87', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'NetworkInterfacePermissions' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NetworkInterfacePermission' => [ + 'description' => 'Details about the ENI permissions.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Permission' => [ + 'description' => 'The ENI permission.'."\n", + 'type' => 'string', + 'example' => 'InstanceAttach', + ], + 'NetworkInterfaceId' => [ + 'description' => 'The ID of ENI N.'."\n", + 'type' => 'string', + 'example' => 'eni-bp14v2sdd3v8htln****', + ], + 'AccountId' => [ + 'description' => 'The ID of the Alibaba Cloud partner (a certified ISV) or individual user.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1234567890', + ], + 'NetworkInterfacePermissionId' => [ + 'description' => 'The ID of the ENI permission.'."\n", + 'type' => 'string', + 'example' => 'eni-perm-bp1cs4lwn56lfb****', + ], + 'ServiceName' => [ + 'description' => 'The name of the Alibaba Cloud service.'."\n", + 'type' => 'string', + 'example' => 'Elastic Compute Service', + ], + 'PermissionState' => [ + 'description' => 'The status of the ENI permission. Valid values:'."\n" + ."\n" + .'* Pending: The permission is being granted.'."\n" + .'* Granted: The permission is granted.'."\n" + .'* Revoking: The permission is being revoked.'."\n" + .'* Revoked: The permission is revoked.'."\n", + 'type' => 'string', + 'example' => 'Granted', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'UnsupportedParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidInstanceID.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'NotBelongUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.PermissionExisted', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidUserType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Abs.InvalidAccount.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.NotSupportRAM', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.SubUser', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.PermissionNotExisted', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"0FCD3DEF-63D3-4605-A818-805C8BD7DB87\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"NetworkInterfacePermissions\\": {\\n \\"NetworkInterfacePermission\\": [\\n {\\n \\"Permission\\": \\"InstanceAttach\\",\\n \\"NetworkInterfaceId\\": \\"eni-bp14v2sdd3v8htln****\\",\\n \\"AccountId\\": 1234567890,\\n \\"NetworkInterfacePermissionId\\": \\"eni-perm-bp1cs4lwn56lfb****\\",\\n \\"ServiceName\\": \\"Elastic Compute Service\\",\\n \\"PermissionState\\": \\"Granted\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 1\\n 10\\n A23C2FCC-6532-4264-BD5C-0566A4FA993C\\n \\n \\n Granted\\n InstanceAttach\\n 1234567890\\n eni-perm-bp1cs4lwn56lfb****\\n eni-bp14v2sdd3v8htln****\\n Elastic Compute Service\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeNetworkInterfacePermissions', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreatePrefixList' => [ + 'summary' => 'Creates a prefix list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29258', + 'abilityTreeNodes' => [ + 'FEATUREecsKTKFUC', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the prefix list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the prefix list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'MaxEntries', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries that the prefix list can contain. Valid values: 1 to 200.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'maximum' => '200', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'AddressFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address family. Valid values:'."\n" + ."\n" + .'* IPv4'."\n" + .'* IPv6'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'IPv4', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'PrefixListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the prefix list. The name must be 2 to 128 characters in length, and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-). It must start with a letter and cannot start with `http://`, `https://`, `com.aliyun`, or `com.alibabacloud`.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'PrefixListNameSample', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the prefix list. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'Entry', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The details of entries in the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'description' => 'The description in entry N. The description must be 2 to 32 characters in length and cannot start with `http://` or `https://`. Valid values of N: 0 to 200.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Description Sample 01', + ], + 'Cidr' => [ + 'description' => 'The CIDR block in entry N. Valid values of N: 0 to 200. Notes:'."\n" + ."\n" + .'* The total number of entries cannot exceed the `MaxEntries` value.'."\n" + .'* CIDR block types are determined by the IP address family. You cannot combine IPv4 and IPv6 CIDR blocks in a single prefix list.'."\n" + .'* CIDR blocks must be unique across all entries in a prefix list. For example, you cannot specify 192.168.1.0/24 twice in the entries of the prefix list.'."\n" + .'* You can set a single IP address. The system automatically converts the IP address to a CIDR block. For example, if you set 192.168.1.100, the system automatically converts it to 192.168.1.100/32.'."\n" + .'* If you use an IPv6 CIDR block, the system automatically converts the CIDR block to zero and the letters to lowercase. For example, if you specify 2001:0DB8:0000:0000:0000:0000:0000:0000/32, the system converts it to 2001:db8::/32.'."\n" + ."\n" + .'For more information about CIDR blocks, see [What is CIDR?](~~185311#598efe6ef1v00~~)'."\n" + ."\n" + .'This parameter is left empty by default.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.1.0/24', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'maxItems' => 201, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the prefix list.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. Valid values of N: 1 to 20. 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`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N. Valid values of N: 1 to 20. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain` http:// or https:// `.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the prefix list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PrefixListId' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '38793DB8-A4B2-4AEC-BFD3-111234E9188D', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.AddressFamily', + 'errorMessage' => 'The parameter AddressFamily should be IPv4 or IPv6.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.PrefixListName', + 'errorMessage' => 'The parameter PrefixListName is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidClientToken.ValueNotSupported', + 'errorMessage' => 'The ClientToken provided is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.CidrMalformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.CidrDuplicated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'LimitExceed.Entry', + 'errorMessage' => 'The number of entries added or removed exceeds the limit.', + ], + [ + 'errorCode' => 'LimitExceed.MaxEntries', + 'errorMessage' => 'The number of entries exceeds the MaxEntries of the specified prefix list.', + ], + ], + 404 => [ + [ + 'errorCode' => 'LimitExceed.PrefixListPerRegion', + 'errorMessage' => 'The number of prefix lists in the region exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The specified resource group is not found.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PrefixListId\\": \\"pl-x1j1k5ykzqlixdcy****\\",\\n \\"RequestId\\": \\"38793DB8-A4B2-4AEC-BFD3-111234E9188D\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 38793DB8-A4B2-4AEC-BFD3-111234E9188D\\n pl-x1j1k5ykzqlixdcy****\\n","errorExample":""}]', + 'title' => 'CreatePrefixList', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'* A prefix list is a collection of network prefixes (CIDR blocks) and can be referenced to configure network rules for other resources. For more information, see [Overview](~~206223~~).'."\n" + ."\n" + .'* When you create a prefix list, take note of the following items:'."\n" + ."\n" + .' * You must specify an IP address family (IPv4 or IPv6) for the prefix list, and cannot change the IP address family after the prefix list is created. You cannot combine IPv4 and IPv6 CIDR blocks in a single prefix list.'."\n" + .' * You must specify the maximum number of entries that the prefix list can contain. You cannot modify the maximum number of entries after the prefix list is created.'."\n" + .' * You can specify entries for the prefix list. Each entry consists of a CIDR block and the description for the CIDR block. The total number of entries cannot exceed the maximum number of entries that you specified.'."\n" + ."\n" + .'* For more information about the limits on prefix lists and other resources, see [Limits](~~25412~~).'."\n" + ."\n" + .'* You can create Resource Access Management (RAM) users and grant them minimum permissions. This eliminates the need to share the AccessKey pair of your Alibaba Cloud account with other users and reduces security risks for your enterprises. For information about how to grant permissions on prefix lists to RAM users, see [Grant a RAM user permissions on prefix lists](~~206175~~)'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribePrefixLists' => [ + 'summary' => 'Queries the information of prefix lists.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29290', + 'abilityTreeNodes' => [ + 'FEATUREecsQ7PR3V', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'PrefixListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the prefix list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrefixListNameSample', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the request to retrieve a new page of results. Set the value to the `NextToken` value returned in the last call to this operation. Leave this parameter empty the first time you call this operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAAdDWBF2****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'AddressFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IP address family. Valid values:'."\n" + ."\n" + .'* IPv4'."\n" + .'* IPv6'."\n" + ."\n" + .'This parameter is empty by default, which indicates that all prefix lists are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'IPv4', + ], + ], + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'allowEmptyValue' => true, + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of prefix lists. Valid values of N: 0 to 100.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of prefix list N. Valid values of N: 0 to 100.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + 'maxItems' => 101, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the prefix list belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N of the prefix list.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the prefix list. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain `http:// or https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the prefix list. Valid values of N: 1 to 20. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http:// or https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The query token that is returned in this call. If the return value is empty, no more data is returned.'."\n", + 'type' => 'string', + 'example' => 'AAAAAdDWBF2****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '38793DB8-A4B2-4AEC-BFD3-111234E9188D', + ], + 'PrefixLists' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PrefixList' => [ + 'description' => 'Details about the prefix lists.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the prefix list was created.'."\n", + 'type' => 'string', + 'example' => '2021-02-20T07:11Z', + ], + 'AssociationCount' => [ + 'description' => 'The number of associated resources.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'MaxEntries' => [ + 'description' => 'The maximum number of entries that the prefix list can contain.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'Description' => [ + 'description' => 'The description of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'AddressFamily' => [ + 'description' => 'The IP address family of the prefix list. Valid values:'."\n" + ."\n" + .'* IPv4'."\n" + .'* IPv6'."\n", + 'type' => 'string', + 'example' => 'IPv4', + ], + 'PrefixListName' => [ + 'description' => 'The name of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'PrefixListNameSample', + ], + 'PrefixListId' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag of the prefix list.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag key. A prefix list can have 1 to 20 tags. 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`. It cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + 'TagKey' => [ + 'description' => 'The tag value. A prefix list can have 1 to 20 tags. The tag value can be an empty string.'."\n" + ."\n" + .'The tag value can be up to 128 characters in length and cannot contain `http:// or https://`.'."\n", + 'type' => 'string', + 'example' => 'TestValue'."\n", + ], + ], + ], + ], + ], + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the prefix list belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****'."\n", + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'LimitExceed.PrefixListId', + 'errorMessage' => 'The specified number of PrefixListId exceeds the limit.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"RequestId\\": \\"38793DB8-A4B2-4AEC-BFD3-111234E9188D\\",\\n \\"PrefixLists\\": {\\n \\"PrefixList\\": [\\n {\\n \\"CreationTime\\": \\"2021-02-20T07:11Z\\",\\n \\"AssociationCount\\": 1,\\n \\"MaxEntries\\": 20,\\n \\"Description\\": \\"This is description.\\",\\n \\"AddressFamily\\": \\"IPv4\\",\\n \\"PrefixListName\\": \\"PrefixListNameSample\\",\\n \\"PrefixListId\\": \\"pl-x1j1k5ykzqlixdcy****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestKey\\",\\n \\"TagKey\\": \\"TestValue\\\\n\\"\\n }\\n ]\\n },\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\\\n\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n AAAAAdDWBF2****\\n 38793DB8-A4B2-4AEC-BFD3-111234E9188D\\n \\n 2021-02-20T07:11Z\\n 1\\n 20\\n This is description.\\n IPv4\\n PrefixListNameSample\\n pl-x1j1k5ykzqlixdcy****\\n \\n","errorExample":""}]', + 'title' => 'DescribePrefixLists', + 'description' => 'You can specify the `AddressFamily`, `PrefixListId.N`, and `PrefixListName` request parameters in the request. Specified parameters have logical AND relations. Only the parameters that you set are included in the filter conditions.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribePrefixListAttributes' => [ + 'summary' => 'Queries the details of a prefix list, including the name, address family, maximum number of entries, and details of the entries.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29289', + 'abilityTreeNodes' => [ + 'FEATUREecsQ7PR3V', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the prefix list was created.'."\n", + 'type' => 'string', + 'example' => '2021-02-20T07:11Z', + ], + 'MaxEntries' => [ + 'description' => 'The maximum number of entries in the prefix list.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '38793DB8-A4B2-4AEC-BFD3-111234E9188D', + ], + 'Description' => [ + 'description' => 'The description of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'AddressFamily' => [ + 'description' => 'The IP address family of the prefix list. Valid values:'."\n" + ."\n" + .'* IPv4'."\n" + .'* IPv6'."\n", + 'type' => 'string', + 'example' => 'IPv4', + ], + 'PrefixListName' => [ + 'description' => 'The name of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'PrefixListNameSample', + ], + 'PrefixListId' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'Entries' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Entry' => [ + 'description' => 'Details about the entries in the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'description' => 'The description in entry N.'."\n", + 'type' => 'string', + 'example' => 'Description Sample 01', + ], + 'Cidr' => [ + 'description' => 'The CIDR block in entry N.'."\n", + 'type' => 'string', + 'example' => '192.168.1.0/24', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 404 => [ + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"CreationTime\\": \\"2021-02-20T07:11Z\\",\\n \\"MaxEntries\\": 10,\\n \\"RequestId\\": \\"38793DB8-A4B2-4AEC-BFD3-111234E9188D\\",\\n \\"Description\\": \\"This is description.\\",\\n \\"AddressFamily\\": \\"IPv4\\",\\n \\"PrefixListName\\": \\"PrefixListNameSample\\",\\n \\"PrefixListId\\": \\"pl-x1j1k5ykzqlixdcy****\\",\\n \\"Entries\\": {\\n \\"Entry\\": [\\n {\\n \\"Description\\": \\"Description Sample 01\\",\\n \\"Cidr\\": \\"192.168.1.0/24\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2021-02-20T07:11Z\\n 10\\n 38793DB8-A4B2-4AEC-BFD3-111234E9188D\\n This is description.\\n IPv4\\n PrefixListNameSample\\n pl-x1j1k5ykzqlixdcy****\\n \\n Description Sample 01\\n 192.168.1.0/24\\n \\n","errorExample":""}]', + 'title' => 'DescribePrefixListAttributes', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribePrefixListAssociations' => [ + 'summary' => 'Queries information about resources that are associated with a prefix list, such as the resource IDs and types.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29288', + 'abilityTreeNodes' => [ + 'FEATUREecsQ7PR3V', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The query token. Set the value to the `NextToken` value returned in the previous call to the DescribePrefixListAssociations operation. Leave this parameter empty the first time you call this operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAAdDWBF2****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The query token that is returned in this call. If the return value is empty, no more data is returned.'."\n", + 'type' => 'string', + 'example' => 'AAAAAdDWBF2****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '38793DB8-A4B2-4AEC-BFD3-111234E9188D', + ], + 'PrefixListAssociations' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PrefixListAssociation' => [ + 'description' => 'Details about the resources that are associated with the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ResourceId' => [ + 'description' => 'The ID of the resource.'."\n", + 'type' => 'string', + 'example' => 'sg-bp11ujym6xsff6l0****', + ], + 'ResourceType' => [ + 'description' => 'The type of the resource.'."\n", + 'type' => 'string', + 'example' => 'securitygroup', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'NotSupported.ResourceType', + 'errorMessage' => 'The specified resource type is not supported.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"RequestId\\": \\"38793DB8-A4B2-4AEC-BFD3-111234E9188D\\",\\n \\"PrefixListAssociations\\": {\\n \\"PrefixListAssociation\\": [\\n {\\n \\"ResourceId\\": \\"sg-bp11ujym6xsff6l0****\\",\\n \\"ResourceType\\": \\"securitygroup\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n AAAAAdDWBF2****\\n 38793DB8-A4B2-4AEC-BFD3-111234E9188D\\n \\n sg-bp11ujym6xsff6l0****\\n securitygroup\\n \\n","errorExample":""}]', + 'title' => 'DescribePrefixListAssociations', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyPrefixList' => [ + 'summary' => 'Modifies the name, description, or entries of a prefix list. You can add, modify, and delete entries in the prefix list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29308', + 'abilityTreeNodes' => [ + 'FEATUREecsFABLOI', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + [ + 'name' => 'PrefixListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the prefix list. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with `http://`, `https://`, `com.aliyun`, or `com.alibabacloud`. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrefixListNameSample', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the prefix list. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'AddEntry', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The entries to be added to the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Description' => [ + 'description' => 'The description in entry N. The description must be 2 to 32 characters in length and cannot start with `http://` or `https://`. Valid values of N: 0 to 200.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Description Sample 01', + ], + 'Cidr' => [ + 'description' => 'The CIDR block in entry N to be added to the prefix list. Valid values of N: 0 to 200.'."\n" + ."\n" + .'Take note of the following items when you add the entries:'."\n" + ."\n" + .'* The total number of entries in the prefix list cannot exceed the maximum number of entries you specified for the prefix list. You can call the [DescribePrefixListAttributes](~~205872~~) operation to query the maximum number of entries that the prefix list can contain.'."\n" + .'* You cannot specify duplicate CIDR blocks.'."\n" + .'* The CIDR blocks cannot be the same as the `RemoveEntry.N.Cidr` values.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.2.0/24', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 201, + ], + ], + [ + 'name' => 'RemoveEntry', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The entries to be deleted from the prefix list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Cidr' => [ + 'description' => 'The CIDR block in entry N to be deleted from the prefix list. Valid values of N: 0 to 200.'."\n" + ."\n" + .'Take note of the following items when you delete the entries:'."\n" + ."\n" + .'* You cannot specify duplicate CIDR blocks.'."\n" + .'* The CIDR blocks cannot be the same as the `AddEntry.N.Cidr` values.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '192.168.1.0/24', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 201, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '38793DB8-A4B2-4AEC-BFD3-111234E9188D', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.PrefixListName', + 'errorMessage' => 'The parameter PrefixListName is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Description is wrongly formed.', + ], + [ + 'errorCode' => 'InvalidParameter.CidrDuplicated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.CidrMalformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'LimitExceed.MaxEntries', + 'errorMessage' => 'The number of entries exceeds the MaxEntries of the specified prefix list.', + ], + [ + 'errorCode' => 'LimitExceed.Entry', + 'errorMessage' => 'The number of entries added or removed exceeds the limit.', + ], + [ + 'errorCode' => 'TaskConflict', + 'errorMessage' => 'The operation is too frequent, please wait a moment and try again.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"38793DB8-A4B2-4AEC-BFD3-111234E9188D\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 38793DB8-A4B2-4AEC-BFD3-111234E9188D\\r\\n","errorExample":""}]', + 'title' => 'ModifyPrefixList', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'* The specified CIDR block must be valid. For example, 10.0.0.0/8 is a valid CIDR block while 10.0.0.1/8 is not. For more information, see the [What is CIDR?](~~40637#section-jua-0tj-q5m~~) section in the "Network FAQ" topic.'."\n" + ."\n" + .'* When you add or delete an entry, you cannot specify duplicate CIDR blocks. Examples:'."\n" + ."\n" + .' * For IPv4 CIDR blocks, you cannot specify the 10.0.0.0/8 CIDR block in two entries. You cannot specify the 10.0.0.1/32 CIDR block in one entry and the 10.0.0.1 CIDR block in another entry. The two CIDR blocks are the same.'."\n" + .' * For IPv6 CIDR blocks, you cannot specify the 2001:fd01:0:0:0:0:0:0/32 CIDR block in one entry and the 2001:fd01::/32 CIDR block in another entry. The two CIDR blocks are the same.'."\n" + ."\n" + .'* The CIDR block in an entry to be added cannot the same as that in an entry to be deleted. For example, when you add an entry in which the 10.0.0.0/8 CIDR block is specified, make sure that the 10.0.0.0/8 CIDR block is not specified in an entry to be deleted.'."\n" + ."\n" + .'* If you want to modify the description of an entry, you must specify the CIDR block (`AddEntry.N.Cidr`) and new description (`AddEntry.N.Description`) for the entry.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeletePrefixList' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '29269', + 'abilityTreeNodes' => [ + 'FEATUREecsKTKFUC', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the prefix list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-chengdu', + ], + ], + [ + 'name' => 'PrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the prefix list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '38793DB8-A4B2-4AEC-BFD3-111234E9188D', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'NotAllowed.AssociationExist', + 'errorMessage' => 'The specified prefix list has associated resources.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"38793DB8-A4B2-4AEC-BFD3-111234E9188D\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 38793DB8-A4B2-4AEC-BFD3-111234E9188D\\r\\n","errorExample":""}]', + 'title' => 'DeletePrefixList', + 'summary' => 'Deletes a prefix list and all entries in the prefix list.', + 'description' => 'If a prefix list is associated with resources, you cannot delete the prefix list. You must disassociate the prefix list from the resources before you delete the prefix list. You can call the [DescribePrefixListAssociations](~~204724~~) operation to query resources that are associated with a specific prefix list.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreatePortRangeList' => [ + 'summary' => 'Creates a port list. You can associate a port list with resources, such as security groups.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '261375', + 'abilityTreeNodes' => [ + 'FEATUREecs0ZAT7E', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The **token** can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'MaxEntries', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries in the port list. The value cannot be changed after you create the port list. Valid values: 1 to 2000.'."\n" + ."\n" + .'> When you reference a port list in a resource, such as a security group, the maximum number of entries (instead of the actual number of entries) in the port list counts against the rule quota for the resource. Set a proper value for MaxEntries.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'maximum' => '2000', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'PortRangeListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the port list. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with http://, https://, com.aliyun, or com.alibabacloud. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'PortRangeListNameSample', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the port list. The description must be 2 to 256 characters in length and cannot start with http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Description information of PortRangeList', + ], + ], + [ + 'name' => 'Entry', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The port list entries.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The port list entry.'."\n", + 'type' => 'object', + 'properties' => [ + 'PortRange' => [ + 'description' => 'Port range N. Valid values of N: 0 to 200.'."\n" + ."\n" + .'* The total number of entries cannot exceed the `MaxEntries` value.'."\n" + .'* `PortRange` in multiple entries cannot be duplicated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + 'Description' => [ + 'description' => 'The description of port range N. The description must be 2 to 32 characters in length and cannot start with http:// or https://. Valid values of N: 0 to 200.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Description information of Entry', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the port list belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-aek3b6jzp66****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the port list. You can add 0 to 20 tags to the port list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the port list.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the port list.'."\n" + ."\n" + .'The tag key cannot be empty or an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'key for PortRangeList', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the port list.'."\n" + ."\n" + .'The tag value cannot be empty but can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'value for PortRangeList', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The data returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'PortRangeListId' => [ + 'description' => 'The ID of the port list.'."\n", + 'type' => 'string', + 'example' => 'prl-2ze9743****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParam.Entry', + 'errorMessage' => 'The specified parameter Entry is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEntriesCountExceed', + 'errorMessage' => 'The specified MaxEntries exceeded the upper limit.', + ], + [ + 'errorCode' => 'InvalidOperation.EntryCountExceedMaxEntries', + 'errorMessage' => 'The number of entries in the port list exceeds MaxEntries.', + ], + [ + 'errorCode' => 'InvalidParameter.PortRange', + 'errorMessage' => 'The specified parameter PortRange is not valid. It should be two integers less than 65535 in specified format.', + ], + [ + 'errorCode' => 'InvalidParameter.PortRangeListName', + 'errorMessage' => 'The specified parameter PortRangeListName is not valid.', + ], + [ + 'errorCode' => 'LimitExceed.MaxEntries', + 'errorMessage' => 'The number of entries exceeds the MaxEntries of the specified PortRangeList.', + ], + [ + 'errorCode' => 'LimitExceed.Entry', + 'errorMessage' => 'The number of entries added or removed exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidOperation.MaxCountExceed', + 'errorMessage' => 'The number of port range list in the current account has exceeded quota.', + ], + [ + 'errorCode' => 'InvalidParameter.PortRangeDuplicated', + 'errorMessage' => 'The specified PortRange is duplicated.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specifid Description is not valid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"PortRangeListId\\": \\"prl-2ze9743****\\"\\n}","type":"json"}]', + 'title' => 'CreatePortRangeList', + ], + 'DescribePortRangeLists' => [ + 'summary' => 'Queries the port lists.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '262261', + 'abilityTreeNodes' => [ + 'FEATUREecsJ5L925', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The pagination token that is used in the request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '727d41872117f2816343eeb432fbc5bfd21dc824589d2a4be0b5e8707e68181f', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page.'."\n" + ."\n" + .'* Maximum value: 100'."\n" + .'* Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'PortRangeListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the port list. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with http://, https://, com.aliyun, or com.alibabacloud. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PortRangeListNameSample', + ], + ], + [ + 'name' => 'PortRangeListId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the port list. Valid values of N: 0 to 100.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the port list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prl-2ze9743****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group. If you specify this parameter to query resources, up to 1,000 resources that belong to the specified resource group can be returned in the response. You can call the [ListResourceGroups](~~2716558~~) operation to query the most recent resource group list.'."\n" + ."\n" + .'> A default resource group is not supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags that are added to the port list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag (key-value pairs) that is added to the port list.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. Valid values: 1 to 20.'."\n" + ."\n" + .'If you specify a single tag to query resources, up to 1,000 resources to which the tag is added are returned. If you specify multiple tags to query resources, up to 1,000 resources to which all specified tags are added are returned. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'key for PortRangeList'."\n", + ], + 'Value' => [ + 'description' => 'The value of tag N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'value for PortRangeList'."\n", + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response parameters.'."\n", + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. If the return value is empty, no more data is returned.'."\n", + 'type' => 'string', + 'example' => 'AAAAAdDWBF2', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '6040AD98-11C3-5F78-9346-FCA8E9D8960F', + ], + 'PortRangeLists' => [ + 'description' => 'Details of the port lists.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details of the port list.'."\n", + 'type' => 'object', + 'properties' => [ + 'PortRangeListId' => [ + 'description' => 'The ID of the port list.'."\n", + 'type' => 'string', + 'example' => 'prl-2ze9743****', + ], + 'PortRangeListName' => [ + 'description' => 'The name of the port list.'."\n", + 'type' => 'string', + 'example' => 'PortRangeListNameSample', + ], + 'MaxEntries' => [ + 'description' => 'The maximum number of entries in the port list.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'AssociationCount' => [ + 'description' => 'The number of associated resources.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Description' => [ + 'description' => 'The description of the port list.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'CreationTime' => [ + 'description' => 'The time when the port list was created.'."\n", + 'type' => 'string', + 'example' => '2024-12-04T07:11Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which to assign the port list.'."\n", + 'type' => 'string', + 'example' => 'rg-2zeg82g****', + ], + 'Tags' => [ + 'description' => 'The tags of the port list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag of the port list.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagKey' => [ + 'description' => 'The key of tag N.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + 'TagValue' => [ + 'description' => 'The value of tag N.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'LimitExceed.PortRangeListId', + 'errorMessage' => 'The specified number of PortRangeListId exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter is not valid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"NextToken\\": \\"AAAAAdDWBF2\\",\\n \\"RequestId\\": \\"6040AD98-11C3-5F78-9346-FCA8E9D8960F\\",\\n \\"PortRangeLists\\": [\\n {\\n \\"PortRangeListId\\": \\"prl-2ze9743****\\",\\n \\"PortRangeListName\\": \\"PortRangeListNameSample\\",\\n \\"MaxEntries\\": 20,\\n \\"AssociationCount\\": 1,\\n \\"Description\\": \\"This is description.\\",\\n \\"CreationTime\\": \\"2024-12-04T07:11Z\\",\\n \\"ResourceGroupId\\": \\"rg-2zeg82g****\\",\\n \\"Tags\\": [\\n {\\n \\"TagKey\\": \\"TestKey\\",\\n \\"TagValue\\": \\"TestValue\\"\\n }\\n ]\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribePortRangeLists', + ], + 'DescribePortRangeListEntries' => [ + 'summary' => 'Queries the entries of a specified port list.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '262565', + 'abilityTreeNodes' => [ + 'FEATUREecsJ5L925', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PortRangeListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the port list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'prl-2ze9743****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The data returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '882304EC-5CE2-5860-98ED-3FA1D8D74A0C', + ], + 'Entries' => [ + 'description' => 'Port list entries.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Port list entry.'."\n", + 'type' => 'object', + 'properties' => [ + 'PortRange' => [ + 'description' => 'The port range.'."\n", + 'type' => 'string', + 'example' => '80/80', + ], + 'Description' => [ + 'description' => 'The description of the port range.'."\n", + 'type' => 'string', + 'example' => 'Description information of PortRangeList'."\n", + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"882304EC-5CE2-5860-98ED-3FA1D8D74A0C\\",\\n \\"Entries\\": [\\n {\\n \\"PortRange\\": \\"80/80\\",\\n \\"Description\\": \\"Description information of PortRangeList\\\\n\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribePortRangeListEntries', + ], + 'DescribePortRangeListAssociations' => [ + 'summary' => 'Queries the resources that are associated with a port list, such as security groups.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '262566', + 'abilityTreeNodes' => [ + 'FEATUREecsJ5L925', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PortRangeListId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The ID of the port list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'prl-2ze9743****', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of `NextToken`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAARbaCuN6hiD08qrLdwJ9Fh15YZPnzqF7Vs2EB6Ix327v', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The data returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. If the return value is empty, no more data is returned.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'PortRangeListAssociations' => [ + 'description' => 'The resources that are associated with the port list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The resource that is associated with the port list.'."\n", + 'type' => 'object', + 'properties' => [ + 'ResourceId' => [ + 'description' => 'The ID of the resource.'."\n", + 'type' => 'string', + 'example' => 'sg-2zefu72****', + ], + 'ResourceType' => [ + 'description' => 'The type of the resource. Valid value: SecurityGroup.'."\n", + 'type' => 'string', + 'example' => 'SecurityGroup', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The specified parameter is not valid.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"PortRangeListAssociations\\": [\\n {\\n \\"ResourceId\\": \\"sg-2zefu72****\\",\\n \\"ResourceType\\": \\"SecurityGroup\\"\\n }\\n ]\\n}","type":"json"}]', + 'title' => 'DescribePortRangeListAssociations', + ], + 'ModifyPortRangeList' => [ + 'summary' => 'Modifies the name and entries of a port list. You can call this operation to add, modify, and remove entries for a port list.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '262567', + 'abilityTreeNodes' => [ + 'FEATUREecsEHJ4OD', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + [ + 'name' => 'PortRangeListId', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The ID of the port list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'prl-2ze9743****', + ], + ], + [ + 'name' => 'PortRangeListName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the port list. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with http://, https://, com.aliyun, or com.alibabacloud. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PortRangeListNameSample', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the port list. The description must be 2 to 256 characters in length and cannot start with http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'AddEntry', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The entries that you want to add or modify for the port list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Entry N that you want to add or modify for the port list.'."\n", + 'type' => 'object', + 'properties' => [ + 'PortRange' => [ + 'description' => 'The port range in entry N. Valid values of N: 0 to 200. Take note of the following limits:'."\n" + ."\n" + .'* The total number of entries in the port list cannot exceed the `MaxEntries` value.'."\n" + .'* `PortRange` in different entries cannot be duplicated.'."\n" + .'* The value of this parameter cannot be the same as the value of `RemoveEntry.N.PortRange`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + 'Description' => [ + 'description' => 'The description of the port range in entry N. The description must be 2 to 32 characters in length and cannot start with http:// or https://. Valid values of N: 0 to 200.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.'."\n", + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RemoveEntry', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The entries that you want to remove from the port list.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Entry N that you want to remove from the port list.'."\n", + 'type' => 'object', + 'properties' => [ + 'PortRange' => [ + 'description' => 'The port range in entry N. Valid values of N: 0 to 200. Take note of the following limits:'."\n" + ."\n" + .'* `PortRange` in different entries cannot be duplicated.'."\n" + .'* The value of this parameter cannot be the same as the value of `AddEntry.N.PortRange`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The data returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.Conflict', + 'errorMessage' => 'The port range list has conflict task.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + [ + 'errorCode' => 'InvalidOperation.MaxEntriesCountExceed', + 'errorMessage' => 'The specified MaxEntries exceeded the upper limit.', + ], + [ + 'errorCode' => 'InvalidOperation.EntryCountExceedMaxEntries', + 'errorMessage' => 'The number of entries in the port list exceeds MaxEntries.', + ], + [ + 'errorCode' => 'LimitExceed.MaxEntries', + 'errorMessage' => 'The number of entries exceeds the MaxEntries of the specified PortRangeList.', + ], + [ + 'errorCode' => 'LimitExceed.Entry', + 'errorMessage' => 'The number of entries added or removed exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidParameter.PortRangeDuplicated', + 'errorMessage' => 'The specified PortRange is duplicated.', + ], + [ + 'errorCode' => 'InvalidParameter.PortRangeListName', + 'errorMessage' => 'The specified parameter PortRangeListName is not valid.', + ], + [ + 'errorCode' => 'InvalidMaxEntries.LessThanCurrentEntries', + 'errorMessage' => 'The specified MaxEntries is less than current entries.', + ], + [ + 'errorCode' => 'InvalidParameter.PortRange', + 'errorMessage' => 'The specified parameter PortRange is not valid. It should be two integers less than 65535 in specified format.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'Missing mandatory parameter.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specifid Description is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'AuthorizationLimitExceed', + 'errorMessage' => 'The limit of authorization records in the security group reaches.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","type":"json"}]', + 'title' => 'ModifyPortRangeList', + ], + 'DeletePortRangeList' => [ + 'summary' => 'Deletes a port list and all entries in the port list.', + 'methods' => [ + 'get', + 'post', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '262568', + 'abilityTreeNodes' => [ + 'FEATUREecs0ZAT7E', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the port list. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PortRangeListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the port list.'."\n" + ."\n" + .'> If the port list is associated with other resources, you cannot delete the port list. You must disassociate the port list from the resources and then delete the port list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'prl-2ze9743****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'The data returned.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.Conflict', + 'errorMessage' => 'The port range list has conflict task.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.AssociationExist', + 'errorMessage' => 'The specified port range list has association resources.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + ], + ], + 'eventInfo' => [ + 'enable' => true, + 'eventNames' => [], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","type":"json"}]', + 'title' => 'DeletePortRangeList', + ], + 'CreateSecurityGroup' => [ + 'summary' => 'Creates a security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28844', + 'abilityTreeNodes' => [ + 'FEATUREecsZ4BDDO', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the security group. The description must be 2 to 256 characters in length. It cannot start with `http://` or `https://`.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'SecurityGroupName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the security group. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testSecurityGroupName', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the VPC in which you want to create the security group.'."\n" + ."\n" + .'> The VpcId parameter is required only if you want to create security groups of the VPC type. In regions that support the classic network, you can create security groups of the classic network type without the need to specify the VpcId parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp1opxu1zkhn00gzv****', + ], + ], + [ + 'name' => 'SecurityGroupType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the security group. Valid values:'."\n" + ."\n" + .'* normal: basic security group'."\n" + .'* enterprise: advanced security group For more information, see [Advanced security groups](~~120621~~).'."\n" + ."\n" + .'Default value: normal.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'enterprise', + ], + ], + [ + 'name' => 'ServiceManaged', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is not publicly available.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the security group belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the security group. You can add up to 20 tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag to add to the security group.'."\n", + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The key of the tag to add to the security group.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the Tag.N.key parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'Key' => [ + 'description' => 'The key of the tag to add to the security group.'."\n" + ."\n" + .'The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot start with `acs:` or `aliyun`. The tag key cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of the tag to add to the security group.'."\n" + ."\n" + .'The tag value can be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The value of the tag to add to the security group.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use the Tag.N.Value parameter to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'example' => 'sg-bp1fg655nh68xyz9****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter "Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupDiscription.Malformed', + 'errorMessage' => 'Specified security group description is not valid.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'Specified tag key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'Specified tag value is not valid.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidParams.GroupType', + 'errorMessage' => 'The specified security group type is not valid.', + ], + [ + 'errorCode' => 'InvalidParams.VpcIdGroupType', + 'errorMessage' => 'Only VPC instance supports enterprise level security group.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupName.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupName is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'QuotaExceed.SecurityGroup', + 'errorMessage' => 'The maximum number of security groups is reached.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'The VpcId must not empty when only support vpc vm.', + ], + [ + 'errorCode' => 'IncorrectVpcStatus', + 'errorMessage' => 'Current VPC status does not support this operation.', + ], + [ + 'errorCode' => 'IdempotentProcessing', + 'errorMessage' => 'The previous idempotent request(s) is still processing.', + ], + [ + 'errorCode' => 'QuotaExceed.Tags', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified region does not exist.', + ], + [ + 'errorCode' => 'InvalidVpcId.NotFound', + 'errorMessage' => 'Specified VPC does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The service is unavailable, please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"SecurityGroupId\\": \\"sg-bp1fg655nh68xyz9****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\",\\n \\"SecurityGroupId\\":\\"sg-F876FF7BA\\"\\n}"},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n sg-bp1fg655nh68xyz9****\\n","errorExample":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n sg-F876FF7BA\\n"}]', + 'title' => 'CreateSecurityGroup', + 'description' => '* By default, the internal access control policy (InnerAccessPolicy) of the basic security group that you create by calling this operation is internal interconnectivity (**Accept**). You can call the [ModifySecurityGroupPolicy](~~2679846~~) operation to change the value of InnerAccessPolicy for the basic security group.'."\n" + .'* By default, the internal access control policy (InnerAccessPolicy) of the advanced security group that you create by calling this operation is internal isolation (**Drop**). The InnerAccessPolicy value of the advanced security group cannot be changed.'."\n" + .'* You can create a limited number of security groups per region. You can create at least 100 security groups per region. For more information, see the [Security group limits](~~25412#SecurityGroupQuota1~~) section in the "Limits" topic.'."\n" + .'* To create a security group of the Virtual Private Cloud (VPC) type, you must specify VpcId.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSecurityGroups' => [ + 'summary' => 'Queries the basic information of security groups. You can query the information by various filter conditions, such as the region ID, security group ID, and security group type.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28993', + 'abilityTreeNodes' => [ + 'FEATUREecsO3Q7NU', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SecurityGroupIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The security group IDs. Set this parameter to a JSON array that consists of up to 100 security group IDs. Separate the security group IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["sg-bp67acfmxazb4p****", "sg-bp67acfmxazb4p****", "sg-bp67acfmxazb4p****",....]', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) to which the security group belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the security group. Valid values:'."\n" + ."\n" + .'* normal: basic security group'."\n" + .'* enterprise: advanced security group'."\n" + ."\n" + .'> If you do not specify this parameter, both basic and advanced security groups are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'normal', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'e71d8a535bd9cc11', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page. If you specify this parameter, both `MaxResults` and `NextToken` are used for a paged query.'."\n" + ."\n" + .'Maximum value: 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the security group. Valid values:'."\n" + ."\n" + .'* vpc'."\n" + .'* classic'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'SecurityGroupName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the security group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SGTestName', + ], + ], + [ + 'name' => 'IsQueryEcsCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to query the capacity of the security group. If you set this parameter to True, the `EcsCount` and `AvailableInstanceAmount` values in the response are valid.'."\n" + ."\n" + .'> This parameter is deprecated.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the security group belongs. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response. You can call the [ListResourceGroups](~~158855~~) operation to query the most recent resource group list.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is configured.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the security groups.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag to add to the security group.'."\n", + 'type' => 'object', + 'properties' => [ + 'key' => [ + 'description' => 'The tag key of the security group.'."\n" + ."\n" + .'> This parameter will be deprecated in the future. We recommend that you use Tag.N.Key to ensure compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testkey', + ], + 'Key' => [ + 'description' => 'The key of tag N to add to the security group. Valid values of N: 1 to 20.'."\n" + ."\n" + .'Up to 1,000 resources that match the tags specified can be returned in the response. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the security group. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'value' => [ + 'description' => 'The tag value of the security group.'."\n" + ."\n" + .'> This parameter will be deprecated in the future. We recommend that you use Tag.N.Value to ensure compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testvalue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Valid values:'."\n" + ."\n" + .'* true: performs only a dry run. The system checks your AccessKey pair, the permissions of the RAM user, and the required parameters. If the request passes the dry run, the DryRunOperation error code is returned. Otherwise, an error message is returned.'."\n" + .'* false: 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" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The security group ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'FuzzyQuery', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter will be removed in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'ServiceManaged', + 'in' => 'query', + 'allowEmptyValue' => true, + 'schema' => [ + 'description' => 'Specifies whether to query managed security groups. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'RegionId' => [ + 'description' => 'The region ID of the security group.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'NextToken' => [ + 'description' => 'A pagination token. If the return value of this parameter is empty when MaxResults and NextToken are used for a paged query, no next page exists.'."\n", + 'type' => 'string', + 'example' => 'e71d8a535bd9cc11', + ], + 'SecurityGroups' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroup' => [ + 'description' => 'The information about the security groups.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the security group.'."\n", + 'type' => 'object', + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'SecurityGroupName' => [ + 'description' => 'The name of the security group.'."\n", + 'type' => 'string', + 'example' => 'SGTestName', + ], + 'Description' => [ + 'description' => 'The description of the security group.'."\n", + 'type' => 'string', + 'example' => 'TestDescription', + ], + 'SecurityGroupType' => [ + 'description' => 'The type of the security group. Valid values:'."\n" + ."\n" + .'* normal: basic security group'."\n" + .'* enterprise: advanced security group'."\n", + 'type' => 'string', + 'example' => 'normal', + ], + 'VpcId' => [ + 'description' => 'The ID of the VPC to which the security group belongs.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp67acfmxazb4p****', + ], + 'CreationTime' => [ + 'description' => 'The time when the security group was created. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddThh:mmZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2021-08-31T03:12:29Z', + ], + 'EcsCount' => [ + 'description' => 'The number of private IP addresses that are contained in the security group. For more information, see the "Security group capacity" section in [Basic security groups and advanced security groups](~~605897#section-kj9-e46-6v5~~).'."\n" + ."\n" + .'If you set IsQueryEcsCount to True, the return value of EcsCount is valid.'."\n" + ."\n" + .'> This parameter is deprecated. The returned quantity is provided only for reference. The actual quantity may differ from the returned quantity.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'AvailableInstanceAmount' => [ + 'description' => 'The number of private IP addresses that can be added to the security group. For more information, see the "Security group capacity" section in [Basic security groups and advanced security groups](~~605897#section-kj9-e46-6v5~~).'."\n" + ."\n" + .'If you set IsQueryEcsCount to True, the return value of AvailableInstanceAmount is valid.'."\n" + ."\n" + .'> This parameter is deprecated. The returned quantity is provided only for reference. The actual quantity may differ from the returned quantity.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the security group belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'ServiceManaged' => [ + 'description' => 'Indicates whether the user of the security group is an Alibaba Cloud service or a distributor.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'ServiceID' => [ + 'description' => 'The ID of the distributor to which the security group belongs.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '12345678910', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the security group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag of the security group.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The value of the tag.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The key of the tag.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'RuleCount' => [ + 'description' => 'The number of rules in the security group.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'GroupToGroupRuleCount' => [ + 'description' => 'The number of rules that reference security groups in the security group.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + ], + ], + ], + ], + ], + 'TotalCount' => [ + 'description' => 'The total number of security groups returned. If `MaxResults` and `NextToken` are specified in the request, the value of this parameter is not returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'> This parameter will be deprecated in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'> This parameter will be deprecated in the future. We recommend that you use NextToken and MaxResults for a paged query.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'NotSupported.PageNumberAndPageSize', + 'errorMessage' => 'The parameters PageNumber and PageSize are currently not supported, please use NextToken and MaxResults instead.', + ], + [ + 'errorCode' => 'InValidParameter.NextToken', + 'errorMessage' => 'The parameter NextToken is invalid.', + ], + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The input parameter RegionId that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupType', + 'errorMessage' => 'The specified SecurityGroupType is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupId is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupName.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupName is not valid.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"NextToken\\": \\"e71d8a535bd9cc11\\",\\n \\"SecurityGroups\\": {\\n \\"SecurityGroup\\": [\\n {\\n \\"SecurityGroupId\\": \\"sg-bp67acfmxazb4p****\\",\\n \\"SecurityGroupName\\": \\"SGTestName\\",\\n \\"Description\\": \\"TestDescription\\",\\n \\"SecurityGroupType\\": \\"normal\\",\\n \\"VpcId\\": \\"vpc-bp67acfmxazb4p****\\",\\n \\"CreationTime\\": \\"2021-08-31T03:12:29Z\\",\\n \\"EcsCount\\": 0,\\n \\"AvailableInstanceAmount\\": 0,\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"ServiceManaged\\": false,\\n \\"ServiceID\\": 12345678910,\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"RuleCount\\": 100,\\n \\"GroupToGroupRuleCount\\": 5\\n }\\n ]\\n },\\n \\"TotalCount\\": 20,\\n \\"PageNumber\\": 1,\\n \\"PageSize\\": 10\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 1\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 20\\n cn-hangzhou\\n \\n 2021-08-31T03:12:29Z\\n vpc-bp67acfmxazb4p****\\n false\\n TestDescription\\n sg-bp67acfmxazb4p****\\n rg-bp67acfmxazb4p****\\n SGTestName\\n 0\\n 12345678910\\n normal\\n 0\\n \\n TestValue\\n TestKey\\n \\n \\n e71d8a535bd9cc11\\n","errorExample":""}]', + 'title' => 'DescribeSecurityGroups', + 'description' => '* **Paged query**: We recommend that you specify `MaxResults` and `NextToken`.'."\n" + ."\n" + .' * If the response does not include `NextToken`, the current page of results is the last page and no more results are to be returned.'."\n" + .' * During a paged query, when you call the DescribeSecurityGroups operation to retrieve the first page of results, set `MaxResults` to specify the maximum number of entries to return in the call. The return value of `NextToken` is a pagination token that can be used in the next call to retrieve a new page of results.'."\n" + .' * When you call the DescribeSecurityGroups operation to retrieve a new page of results, set `NextToken` to the `NextToken` value returned in the previous call and set `MaxResults` to specify the maximum number of entries to return in this call.'."\n" + ."\n" + .'* When you use Alibaba Cloud CLI to call an API operation, you must specify request parameter values of different data types in required formats. For more information, see [Parameter formats](~~110340~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSecurityGroupAttribute' => [ + 'summary' => 'Queries the details of a specified security group and the security group rules of the security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28991', + 'abilityTreeNodes' => [ + 'FEATUREecsJPHSJM', + ], + ], + 'parameters' => [ + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sg-bp1gxw6bznjjvhu3****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'NicType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network interface controller (NIC) type of the security group rule.'."\n" + ."\n" + .'* Valid values for rules of security groups in the classic network:'."\n" + ."\n" + .' * internet (default)'."\n" + .' * intranet'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** You can query security group rules of only one NIC type in a single call. To query security group rules of both NIC types, call the operation twice.'."\n" + ."\n" + .'* When the security group is in a virtual private cloud (VPC), set the value to intranet, which is the default value for rules of security groups in VPCs.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** If you set this parameter to internet or leave this parameter empty, a value of intranet is automatically used.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'intranet', + 'default' => 'internet', + ], + ], + [ + 'name' => 'Direction', + 'in' => 'query', + 'schema' => [ + 'description' => 'The direction in which the security group rule is applied. Valid values:'."\n" + ."\n" + .'* egress: outbound'."\n" + .'* ingress: inbound'."\n" + .'* all: outbound and inbound'."\n" + ."\n" + .'Default value: all.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'all', + 'default' => 'all', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'title' => '查询凭证(Token)。取值为上一次调用该接口返回的 NextToken 参数值,初次调用接口时无需设置该参数。', + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You do not need to specify this parameter for the first request. You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AAAAAdDWBF2****', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '分页查询时每页的最大条目数。'."\n" + .'最小值为 10。'."\n" + .'最大值为 1000。'."\n" + .'默认值为 500。', + 'description' => 'The maximum number of entries per page.'."\n" + ."\n" + .'* Minimum value: 10.'."\n" + .'* Maximum value: 1000.'."\n" + ."\n" + .'Default value: 500.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '1000', + 'minimum' => '10', + 'example' => '500', + ], + ], + [ + 'name' => 'Attribute', + 'in' => 'query', + 'schema' => [ + 'title' => '安全组属性,取值范围:'."\n" + .'snapshotPolicyIds:查询安全组关联的快照策略信息', + 'description' => 'The attributes of the security group. Valid value:'."\n" + ."\n" + .'* snapshotPolicyIds: queries information about snapshot policies associated with a security group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'snapshotPolicyIds', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'VpcId' => [ + 'description' => 'The ID of the VPC. If a VPC ID is returned, the network type of the security group is VPC. If no VPC ID is returned, the network type of the security group is classic network.'."\n", + 'type' => 'string', + 'example' => 'vpc-bp1opxu1zkhn00gzv****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'InnerAccessPolicy' => [ + 'description' => 'The access control policy of the security group. Valid values:'."\n" + ."\n" + .'* Accept: All instances in the security group can communicate with each other.'."\n" + .'* Drop: All instances in the security group are isolated from each other.'."\n", + 'type' => 'string', + 'example' => 'Accept', + ], + 'Description' => [ + 'description' => 'The description of the security group.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'example' => 'sg-bp1gxw6bznjjvhu3****', + ], + 'SecurityGroupName' => [ + 'description' => 'The name of the security group.'."\n", + 'type' => 'string', + 'example' => 'SecurityGroupName Sample', + ], + 'RegionId' => [ + 'description' => 'The ID of the region.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Permissions' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Permission' => [ + 'description' => 'Details about the security group rules.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'SecurityGroupRuleId' => [ + 'description' => 'The ID of the security group rule.'."\n", + 'type' => 'string', + 'example' => 'sgr-bp12kewq32dfwrdi****', + ], + 'Direction' => [ + 'description' => 'The direction in which the security group rule is applied.'."\n", + 'type' => 'string', + 'example' => 'ingress', + ], + 'SourceGroupId' => [ + 'description' => 'The source security group for inbound access control.'."\n", + 'type' => 'string', + 'example' => 'sg-bp12kc4rqohaf2js****', + ], + 'DestGroupOwnerAccount' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the destination security group belongs.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + 'DestPrefixListId' => [ + 'description' => 'The ID of the destination prefix list for outbound access control.'."\n", + 'type' => 'string', + 'example' => 'pl-x1j1k5ykzqlixabc****', + ], + 'DestPrefixListName' => [ + 'description' => 'The name of the destination prefix list.'."\n", + 'type' => 'string', + 'example' => 'DestPrefixListName Sample', + ], + 'SourceCidrIp' => [ + 'description' => 'The source CIDR block for inbound access control.'."\n", + 'type' => 'string', + 'example' => '0.0.0.0/0', + ], + 'Ipv6DestCidrIp' => [ + 'description' => 'The destination IPv6 CIDR block.'."\n", + 'type' => 'string', + 'example' => '2001:db8:1233:1a00::***', + ], + 'CreateTime' => [ + 'description' => 'The time when the security group rule was created. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'example' => '2018-12-12T07:28:38Z', + ], + 'Ipv6SourceCidrIp' => [ + 'description' => 'The source IPv6 CIDR block.'."\n", + 'type' => 'string', + 'example' => '2001:db8:1234:1a00::***', + ], + 'DestGroupId' => [ + 'description' => 'The ID of the destination security group for outbound access control.'."\n", + 'type' => 'string', + 'example' => 'sg-bp1czdx84jd88i7v****', + ], + 'DestCidrIp' => [ + 'description' => 'The destination CIDR block for outbound access control.'."\n", + 'type' => 'string', + 'example' => '0.0.0.0/0', + ], + 'IpProtocol' => [ + 'description' => 'The transport layer protocol.'."\n", + 'type' => 'string', + 'example' => 'TCP', + ], + 'Priority' => [ + 'description' => 'The priority of the rule.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'DestGroupName' => [ + 'description' => 'The name of the destination security group.'."\n", + 'type' => 'string', + 'example' => 'testDestGroupName', + ], + 'NicType' => [ + 'description' => 'The network type.'."\n", + 'type' => 'string', + 'example' => 'intranet', + ], + 'Policy' => [ + 'description' => 'The access control policy.'."\n", + 'type' => 'string', + 'example' => 'Accept', + ], + 'Description' => [ + 'description' => 'The description of the security group.'."\n", + 'type' => 'string', + 'example' => 'Description Sample 01', + ], + 'PortRange' => [ + 'description' => 'The port range.'."\n", + 'type' => 'string', + 'example' => '80/80', + ], + 'SourcePrefixListName' => [ + 'description' => 'The name of the source prefix list.'."\n", + 'type' => 'string', + 'example' => 'SourcePrefixListName Sample', + ], + 'SourcePrefixListId' => [ + 'description' => 'The ID of the source prefix list for inbound access control.'."\n", + 'type' => 'string', + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'SourceGroupOwnerAccount' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the source security group belongs.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + 'SourceGroupName' => [ + 'description' => 'The name of the source security group.'."\n", + 'type' => 'string', + 'example' => 'testSourceGroupName1', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range.'."\n", + 'type' => 'string', + 'example' => '80/80', + ], + 'PortRangeListId' => [ + 'description' => 'The ID of the port list.'."\n", + 'type' => 'string', + 'example' => 'prl-2ze9743****', + ], + 'PortRangeListName' => [ + 'description' => 'The name of the port list.'."\n", + 'type' => 'string', + 'example' => 'PortRangeListNameSample', + ], + ], + 'description' => '', + ], + ], + ], + ], + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. If the return value of this parameter is empty when you specify `MaxResults` and `NextToken` for a paged query, no more results are to be returned.'."\n", + 'type' => 'string', + 'example' => 'AAAAAdDWBF2****', + ], + 'SnapshotPolicyIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SnapshotPolicyId' => [ + 'title' => '', + 'description' => 'The IDs of the snapshot policies associated with the security group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the snapshot policy associated with the security group.'."\n", + 'type' => 'string', + 'example' => 'sgsp-mj74****', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidNicType.ValueNotSupported', + 'errorMessage' => 'The specified NicType does not exist.', + ], + [ + 'errorCode' => 'InvalidParamter', + 'errorMessage' => 'Invalid Parameter.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The specified parameter "SecurityGroupId" is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The parameter RegionId is missing.', + ], + [ + 'errorCode' => 'InvalidParameter.AttributeNotSupported', + 'errorMessage' => 'The specified value for parameter Attribute is not supported. Valid values: snapshotPolicyIds.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The service is unavailable, please try again later.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"VpcId\\": \\"vpc-bp1opxu1zkhn00gzv****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"InnerAccessPolicy\\": \\"Accept\\",\\n \\"Description\\": \\"This is description.\\",\\n \\"SecurityGroupId\\": \\"sg-bp1gxw6bznjjvhu3****\\",\\n \\"SecurityGroupName\\": \\"SecurityGroupName Sample\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"Permissions\\": {\\n \\"Permission\\": [\\n {\\n \\"SecurityGroupRuleId\\": \\"sgr-bp12kewq32dfwrdi****\\",\\n \\"Direction\\": \\"ingress\\",\\n \\"SourceGroupId\\": \\"sg-bp12kc4rqohaf2js****\\",\\n \\"DestGroupOwnerAccount\\": \\"1234567890\\",\\n \\"DestPrefixListId\\": \\"pl-x1j1k5ykzqlixabc****\\",\\n \\"DestPrefixListName\\": \\"DestPrefixListName Sample\\",\\n \\"SourceCidrIp\\": \\"0.0.0.0/0\\",\\n \\"Ipv6DestCidrIp\\": \\"2001:db8:1233:1a00::***\\",\\n \\"CreateTime\\": \\"2018-12-12T07:28:38Z\\",\\n \\"Ipv6SourceCidrIp\\": \\"2001:db8:1234:1a00::***\\",\\n \\"DestGroupId\\": \\"sg-bp1czdx84jd88i7v****\\",\\n \\"DestCidrIp\\": \\"0.0.0.0/0\\",\\n \\"IpProtocol\\": \\"TCP\\",\\n \\"Priority\\": \\"1\\",\\n \\"DestGroupName\\": \\"testDestGroupName\\",\\n \\"NicType\\": \\"intranet\\",\\n \\"Policy\\": \\"Accept\\",\\n \\"Description\\": \\"Description Sample 01\\",\\n \\"PortRange\\": \\"80/80\\",\\n \\"SourcePrefixListName\\": \\"SourcePrefixListName Sample\\",\\n \\"SourcePrefixListId\\": \\"pl-x1j1k5ykzqlixdcy****\\",\\n \\"SourceGroupOwnerAccount\\": \\"1234567890\\",\\n \\"SourceGroupName\\": \\"testSourceGroupName1\\",\\n \\"SourcePortRange\\": \\"80/80\\",\\n \\"PortRangeListId\\": \\"prl-2ze9743****\\",\\n \\"PortRangeListName\\": \\"PortRangeListNameSample\\"\\n }\\n ]\\n },\\n \\"NextToken\\": \\"AAAAAdDWBF2****\\",\\n \\"SnapshotPolicyIds\\": {\\n \\"SnapshotPolicyId\\": [\\n \\"sgsp-mj74****\\"\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n sg-bp1gxw6bznjjvhu3****\\n Accept\\n SecurityGroupName Sample\\n This is description.\\n cn-hangzhou\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n \\n \\n sgr-bp12swerrtfcy****\\n 0.0.0.0/0\\n Description Sample 01\\n \\n intranet\\n \\n 22/22\\n \\n \\n \\n \\n ingress\\n 1\\n TCP\\n \\n \\n Accept\\n 2018-12-12T07:28:38Z\\n \\n \\n \\n \\n \\n \\n \\n \\n vpc-bp1opxu1zkhn00gzv****\\n","errorExample":""}]', + 'title' => 'DescribeSecurityGroupAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySecurityGroupPolicy' => [ + 'summary' => 'Modifies the internal access control policy of a basic security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29100', + 'abilityTreeNodes' => [ + 'FEATUREecsZSF49P', + ], + ], + 'parameters' => [ + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InnerAccessPolicy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The internal access control policy of the security group. Valid values:'."\n" + ."\n" + .'* Accept: the internal interconnectivity policy'."\n" + .'* Drop: the internal isolation policy'."\n" + ."\n" + .'> The value of this parameter is case-insensitive.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'Drop', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'CEF72CEB-54B6-4AE8-B225-F876FF7BA984', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParamter.RegionId', + 'errorMessage' => 'The RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The SecurityGroupId is invalid. Only letters, numbers and underscores are supported. Maximum length is 100 characters.', + ], + [ + 'errorCode' => 'InvalidPolicy.Malformed', + 'errorMessage' => 'The Policy is invalid. Only \'Accept\' and \'Drop\' are supported. Ignore case.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.InnerAccessPolicy', + 'errorMessage' => 'The InnerAccessPolicy attribute of enterprise level security group can\'t be modified.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}"},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":"\\n CEF72CEB-54B6-4AE8-B225-F876xxxxxxxx\\n"}]', + 'title' => 'ModifySecurityGroupPolicy', + 'description' => '* By default, advanced security groups use the **internal isolation policy**, and Elastic Compute Service (ECS) instances in each advanced security group cannot communicate with each other. The internal access control policy of advanced security groups cannot be modified.'."\n" + .'* You can call the [DescribeSecurityGroupAttribute](~~25555~~) operation to query the internal access control policy of a security group.'."\n" + .'* If the internal access control policy of a security group is set to **Accept**, the security group uses the internal interconnectivity policy and all ECS instances in the security group can communicate with each other over the internal network, regardless of whether custom rules exist in the security group.'."\n" + .'* If the internal access control policy of a security group is set to **Drop** and the security group contains no custom rules, the security group uses the internal isolation policy and all ECS instances in the security group cannot communicate with each other over the internal network. In this case, you can use custom rules to allow ECS instances in the security group to communicate with each other. For example, you can call the [AuthorizeSecurityGroup](~~25554~~) operation to configure custom rules.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySecurityGroupAttribute' => [ + 'summary' => 'Modifies the name or description of a specific security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29097', + 'abilityTreeNodes' => [ + 'FEATUREecs78M0YJ', + ], + ], + 'parameters' => [ + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The security group ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the security group. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n" + ."\n" + .'By default, the parameter is empty, which indicates that the description remains unchanged.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestDescription', + ], + ], + [ + 'name' => 'SecurityGroupName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the security group. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'By default, the parameter is empty, which indicates that the name remains unchanged.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SecurityGroupTestName', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSecurityGroupName.Malformed', + 'errorMessage' => 'Specified security group name is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupDiscription.Malformed', + 'errorMessage' => 'Specified security group description is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Invalid Parameter.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}"},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n"}]', + 'title' => 'ModifySecurityGroupAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteSecurityGroup' => [ + 'summary' => 'Deletes a security group and all security group rules in the security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28886', + 'abilityTreeNodes' => [ + 'FEATUREecsZ4BDDO', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The security group ID. You can call the [DescribeSecurityGroups](~~25556~~) operation to query the security group ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sg-bp1fg655nh68xyz9****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The parameter "RegionId" should not be null.', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.SecurityGroupNotAuthorized', + 'errorMessage' => 'The specified security group is not authorized to operate.', + ], + ], + 403 => [ + [ + 'errorCode' => 'DependencyViolation', + 'errorMessage' => 'There is still instance(s) in the specified security group.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroup.NotFound', + 'errorMessage' => 'The specified security group is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'DeleteSecurityGroup', + 'description' => '* Make sure that no Elastic Compute Service (ECS) instances exist in the security group. You can query instances by calling the [DescribeInstances](~~2679689~~) operation.'."\n" + .'* Make sure that no elastic network interfaces (ENIs) exist in the security group. You can query ENIs by calling the [DescribeNetworkInterfaces](~~2679884~~) operation.'."\n" + .'* Make sure that the security group that you want to delete is not referenced by rules of other security groups. You can query the associations by calling the [DescribeSecurityGroupReferences](~~57320~~) operation.'."\n" + .'* If the `InvalidOperation.DeletionProtection` error code is returned when you call the DeleteSecurityGroup operation to delete a security group, the deletion protection feature is enabled for the security group. When you create a Container Service for Kubernetes (ACK) cluster, the deletion protection feature is enabled for an associated security group to prevent accidental deletion. You cannot manually disable the deletion protection feature for the security group. The deletion protection feature can be automatically disabled only after the ACK cluster is deleted. For more information, see the [Disable deletion protection for a security group](~~353191~~) section of the "Configure and manage security groups for an ACK cluster" topic.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AuthorizeSecurityGroup' => [ + 'summary' => 'Creates inbound security group rules in a security group. You can use the created rules to allow or deny inbound traffic from other objects to Elastic Compute Service (ECS) instances in the security group for fine-grained network access control.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29244', + 'abilityTreeNodes' => [ + 'FEATUREecsN1X6QX', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Permissions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'An array of security group rules. You can specify 1 to 100 security group rules in a request.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Security group rule N.'."\n", + 'type' => 'object', + 'properties' => [ + 'Policy' => [ + 'description' => 'The action of the security group rule. Valid values:'."\n" + ."\n" + .'* accept: allows inbound access.'."\n" + .'* drop: denies inbound access and returns no responses. In this case, the request times out or the connection cannot be established.'."\n" + ."\n" + .'Default value: accept.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'accept', + ], + 'Priority' => [ + 'description' => 'The priority of the security group rule. A smaller value specifies a higher priority. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + ], + 'IpProtocol' => [ + 'description' => 'Network Layer /transport layer protocol. Two types of assignments are supported:'."\n" + ."\n" + .'1. The case-insensitive protocol name. Valid value:'."\n" + ."\n" + .'* ICMP'."\n" + .'* GRE'."\n" + .'* TCP'."\n" + .'* UDP'."\n" + .'* ALL: supports all protocols.'."\n" + ."\n" + .'2. The value of the IANA-compliant protocol number, which is an integer from 0 to 255. List of regions currently available:'."\n" + ."\n" + .'* Philippines (Manila)'."\n" + .'* UK (London)'."\n" + .'* Malaysia (Kuala Lumpur)'."\n" + .'* China (Hohhot)'."\n" + .'* China (Qingdao)'."\n" + .'* US (Silicon Valley)'."\n" + .'* Singapore'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ALL', + ], + 'SourceCidrIp' => [ + 'description' => 'The source IPv4 CIDR block of the security group rule. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + 'Ipv6SourceCidrIp' => [ + 'description' => 'The source IPv6 CIDR block of the security group rule. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'> This parameter is valid only for Elastic Compute Service (ECS) instances that reside in virtual private clouds (VPCs) and support IPv6 CIDR blocks. You cannot specify both this parameter and `SourceCidrIp` in the same request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:250:6000::***', + ], + 'SourceGroupId' => [ + 'description' => 'The ID of the source security group referenced in the security group rule.'."\n" + ."\n" + .'* At least one of `SourceGroupId`, `SourceCidrIp`, `Ipv6SourceCidrIp`, and `SourcePrefixListId` must be specified.'."\n" + .'* If you specify `SourceGroupId` but do not specify `SourceCidrIp` or `Ipv6SourceCidrIp`, you must set `NicType` to `intranet`.'."\n" + .'* If both `SourceGroupId` and `SourceCidrIp` are specified, `SourceCidrIp` takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'SourcePrefixListId' => [ + 'description' => 'The ID of the source prefix list of the security group rule. You can call the [DescribePrefixLists](~~205046~~) operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'Notes:'."\n" + ."\n" + .'* If a security group resides in the classic network, you cannot specify prefix lists in the rules of the security group. For more information about limits on security groups and prefix lists, see [Limits on security groups](~~25412#SecurityGroupQuota1~~).'."\n" + .'* If you specify `SourceCidrIp`, `Ipv6SourceCidrIp`, or `SourceGroupId`, this parameter is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'PortRange' => [ + 'description' => 'The range of destination port numbers for the protocols specified in the security group rule. Valid values:'."\n" + ."\n" + .'* TCP/UDP: Valid values: 1 to 65535. Use a forward slash (/) to separate the start and end ports. Example: 1/200.'."\n" + .'* ICMP:-1/-1.'."\n" + .'* GRE:-1/-1.'."\n" + .'* Set the IpProtocol parameter to ALL:-1/-1.'."\n" + ."\n" + .'For more information about the application scenarios of ports, see [Common ports of typical applications](~~40724~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + 'DestCidrIp' => [ + 'description' => 'The destination IPv4 CIDR block. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + 'Ipv6DestCidrIp' => [ + 'description' => 'The destination IPv6 CIDR block. IP address ranges in the CIDR format and IPv6 format are supported.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n" + ."\n" + .'> This parameter is valid only for VPC-type ECS instances that support IPv6. This parameter and the `DestCidrIp` parameter cannot be set at the same time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:250:6000::***', + ], + 'SourcePortRange' => [ + 'description' => 'The range of source port numbers for the protocols specified in the security group rule. Default value: Month. Valid values:'."\n" + ."\n" + .'* TCP/UDP: Valid values: 1 to 65535. Use a forward slash (/) to separate the start and end ports. Example: 1/200.'."\n" + .'* ICMP protocol:-1/-1.'."\n" + .'* GRE protocol:-1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port range is -1/-1.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '7000/8000', + ], + 'SourceGroupOwnerAccount' => [ + 'description' => 'The Alibaba Cloud account that manages the source security group referenced in the security group rule.'."\n" + ."\n" + .'* If both `SourceGroupOwnerAccount` and `SourceGroupOwnerId` are empty, access permissions are configured for another security group in your Alibaba Cloud account.'."\n" + .'* If you specify `SourceCidrIp`, `SourceGroupOwnerAccount` becomes invalid.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'test@aliyun.com', + ], + 'SourceGroupOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account that manages the source security group referenced in the security group rule.'."\n" + ."\n" + .'* If both `SourceGroupOwnerAccount` and `SourceGroupOwnerId` are empty, access permissions are configured for another security group in your Alibaba Cloud account.'."\n" + .'* If you specify `SourceCidrIp`, `SourceGroupOwnerAccount` becomes invalid.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1234567890', + ], + 'NicType' => [ + 'description' => 'The network interface controller (NIC) type of the security group rule if the security group resides in the classic network. Default value: Month. Valid values:'."\n" + ."\n" + .'* internet: public NIC.'."\n" + .'* intranet: internal NIC.'."\n" + ."\n" + .'If the security group resides in a VPC, this parameter is set to intranet by default and cannot be modified.'."\n" + ."\n" + .'If you specify only DestGroupId when you configure access permissions between security groups, you must set this parameter to intranet.'."\n" + ."\n" + .'Default value: internet.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'intranet', + ], + 'Description' => [ + 'description' => 'The description of the security group rule. The name must be 1 to 512 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + 'PortRangeListId' => [ + 'description' => 'The ID of the port list. You can call the `DescribePortRangeLists` to query the ID of the port list that can be used.'."\n" + ."\n" + .'* If you specify a `Permissions.N.PortRange` parameter, this parameter is ignored.'."\n" + .'* If the network type of the security group is classic network, you cannot set the port list. For more information about limits on security groups and ports, see [Limits on security groups](~~25412#SecurityGroupQuota1~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prl-2ze9743****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Policy', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Policy` to specify whether to allow access.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'accept', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Priority` to specify the rule priority.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.IpProtocol` to specify the protocol.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'docRequired' => false, + 'example' => 'ALL', + ], + ], + [ + 'name' => 'SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceCidrIp` to specify the source IPv4 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Ipv6SourceCidrIp` to specify the source IPv6 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '2001:250:6000::***', + ], + ], + [ + 'name' => 'SourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceGroupId` to specify the ID of the source security group.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SourcePrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourcePrefixListId` to specify the ID of the source prefix list.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + [ + 'name' => 'PortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.PortRange` to specify the range of destination ports.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'docRequired' => false, + 'example' => '22/22', + ], + ], + [ + 'name' => 'DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestCidrIp` to specify the destination IPv4 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Ipv6DestCidrIp` to specify the destination IPv6 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '2001:250:6000::***', + ], + ], + [ + 'name' => 'SourcePortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourcePortRange` to specify the range of source ports.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '22/22', + ], + ], + [ + 'name' => 'SourceGroupOwnerAccount', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceGroupOwnerAccount` to specify the Alibaba Cloud account that manages the source security group.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'test@aliyun.com', + ], + ], + [ + 'name' => 'SourceGroupOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceGroupOwnerId` to specify the ID of the Alibaba Cloud account that manages the source security group.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'deprecated' => true, + 'required' => false, + 'example' => '1234567890', + ], + ], + [ + 'name' => 'NicType', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.NicType` to specify the network interface type.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'intranet', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Description` to specify the rule description.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'This is description.', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified IpProtocol does not exist or IpProtocol and PortRange do not match.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.Malformed', + 'errorMessage' => 'The specified parameter PortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidSourceCidrIp.Malformed', + 'errorMessage' => 'The specified parameter SourceCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidPolicy.Malformed', + 'errorMessage' => 'The specified parameter Policy is not valid.', + ], + [ + 'errorCode' => 'InvalidNicType.ValueNotSupported', + 'errorMessage' => 'The specified NicType does not exist.', + ], + [ + 'errorCode' => 'InvalidNicType.Mismatch', + 'errorMessage' => 'The specified NicType conflicts with the authorization record.', + ], + [ + 'errorCode' => 'InvalidSourceGroupId.Mismatch', + 'errorMessage' => 'Specified security group and source group are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidSourceGroup.NotFound', + 'errorMessage' => 'Specified source security group does not exist.', + ], + [ + 'errorCode' => 'InvalidPriority.Malformed', + 'errorMessage' => 'The parameter Priority is invalid.', + ], + [ + 'errorCode' => 'InvalidPriority.ValueNotSupported', + 'errorMessage' => 'The specified parameter %s is invalid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupDiscription.Malformed', + 'errorMessage' => 'The specified security group rule description parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.InvalidNetworkType', + 'errorMessage' => 'The specified security group network type is not support this operation, please check the security group network types. For VPC security groups, ClassicLink must be enabled.', + ], + [ + 'errorCode' => 'MissingParameter.Source', + 'errorMessage' => 'One of the parameters SourceCidrIp, Ipv6SourceCidrIp, SourceGroupId or SourcePrefixListId in %s must be specified.', + ], + [ + 'errorCode' => 'InvalidParam.PortRange', + 'errorMessage' => 'The specified parameter %s is not valid. It should be two integers less than 65535 in ?/? format.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.ValueNotSupported', + 'errorMessage' => 'The parameter %s must be specified with case insensitive TCP, UDP, ICMP, GRE or All.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupId is not valid.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SourceCidrIp should be different from the DestCidrIp.', + ], + [ + 'errorCode' => 'InvalidSourcePortRange.Malformed', + 'errorMessage' => 'The specified parameter SourcePortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidPortRange.Malformed', + 'errorMessage' => 'The specified parameter PortRange must set.', + ], + [ + 'errorCode' => 'InvalidParam.SourceIp', + 'errorMessage' => 'The Parameters SourceCidrIp and Ipv6SourceCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.DestIp', + 'errorMessage' => 'The Parameters DestCidrIp and Ipv6DestCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv4ProtocolConflictWithIpv6Address', + 'errorMessage' => 'IPv6 address cannot be specified for IPv4-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6ProtocolConflictWithIpv4Address', + 'errorMessage' => 'IPv4 address cannot be specified for IPv6-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParameter.Ipv6CidrIp', + 'errorMessage' => 'The specified Ipv6CidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidGroupAuthParameter.OperationDenied', + 'errorMessage' => 'The security group can not authorize to enterprise level security group.', + ], + [ + 'errorCode' => 'InvalidDestCidrIp.Malformed', + 'errorMessage' => 'The specified parameter DestCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'IPv6 and IPv4 addresses cannot exist at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.PrefixListAddressFamilyMismatch', + 'errorMessage' => 'The address family of the specified prefix list does not match the specified CidrIp.', + ], + [ + 'errorCode' => 'NotSupported.ClassicNetworkPrefixList', + 'errorMessage' => 'The prefix list is not supported when the network type of security group is classic.', + ], + [ + 'errorCode' => 'AuthorizedGroupRule.LimitExceed', + 'errorMessage' => 'You have reached the limit on the number of group authorization rules that you can add to a security group.When authorization object of rule is security group, the limit is 20.', + ], + [ + 'errorCode' => 'InvalidParam.SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.Permissions', + 'errorMessage' => 'The specified parameter Permissions cannot coexist with other parameters.', + ], + [ + 'errorCode' => 'InvalidParam.DuplicatePermissions', + 'errorMessage' => 'There are duplicate permissions in the specified parameter Permissions.', + ], + [ + 'errorCode' => 'InvalidGroupParameter.OperationDenied', + 'errorMessage' => 'The attributes Policy, SourceGroupId, DestGroupId of enterprise level security groups are not allowed to be set or modified.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolNotSupportPortRangeList', + 'errorMessage' => 'The specified protocol does not support the port range list.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.SecurityGroupNotAuthorized', + 'errorMessage' => 'The specified security group is not authorized to operate.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidSourceGroupId.Mismatch', + 'errorMessage' => 'NicType is required or NicType expects intranet.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter SourceGroupId or SourceCidrIp cannot be both blank.', + ], + [ + 'errorCode' => 'AuthorizationLimitExceed', + 'errorMessage' => 'The limit of authorization records in the security group reaches.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SecurityGroupId should be different from the SourceGroupId.', + ], + [ + 'errorCode' => 'InvalidNetworkType.Mismatch', + 'errorMessage' => 'The specified SecurityGroup network type should be same with SourceGroup network type (vpc or classic).', + ], + [ + 'errorCode' => 'InvalidNetworkType.Conflict', + 'errorMessage' => 'The specified SecurityGroup network type should be same with SourceGroup network type (vpc or classic).', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'LimitExceed.PrefixListAssociationResource', + 'errorMessage' => 'The number of resources associated with the prefix list exceeds the limit.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidSourceGroupId.NotFound', + 'errorMessage' => 'The SourceGroupId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'AuthorizeSecurityGroup', + 'description' => '### [](#)Precautions'."\n" + ."\n" + .'* **Quantity limit**: The maximum number of inbound and outbound rules in all security groups associated with an elastic network interface (ENI) cannot exceed 1,000. For more information, see the [Security groups](~~25412#SecurityGroupQuota1~~) section of the "Limits and quotas on ECS" topic.'."\n" + .'* **Rule priorities**: For inbound security group rules, the valid values of Priority range from 1 to 100. A smaller value indicates a higher priority. When multiple security group rules have the same priority, drop rules take precedence.'."\n" + ."\n" + .'### [](#)Considerations'."\n" + ."\n" + .'If the security group rule that you call the AuthorizeSecurityGroup operation to create exists in the security group, the call is successful but no security group rule is created.'."\n" + ."\n" + .'### [](#)Parameters that define a security group rule'."\n" + ."\n" + .'Define an inbound security group rule by configuring the following parameters together:'."\n" + ."\n" + .'* Source: You can specify one parameter from SourceCidrIp (IPv4 address), Ipv6SourceCidrIp (IPv6 address), SourcetPrefixListId (prefix list ID), and SourceGroupId (source security group ID).'."\n" + .'* PortRange: specifies the range of destination port numbers.'."\n" + .'* IpProtocol: specifies the protocol.'."\n" + .'* Policy: specifies the action.'."\n" + ."\n" + .'> Advanced security groups do not support security group rules that reference security groups as authorization objects. Each basic security group can contain up to 20 security group rules that reference security groups as authorization objects.'."\n" + ."\n" + .'### [](#)Sample requests'."\n" + ."\n" + .'Sample requests to create inbound security group rules that control access from different sources in a security group in the China (Hangzhou) region:'."\n" + ."\n" + .'* Sample request to create an inbound security group rule that controls access from a specific CIDR block:'."\n" + ."\n" + .' "RegionId":"cn-hangzhou", // Specify the region.'."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4p****", // Specify the security group.'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "SourceCidrIp":"10.0.0.0/8", // Specify the source IPv4 CIDR block.'."\n" + .' "PortRange":"22/22", // Specify the port range.'."\n" + .' "IpProtocol":"TCP", // Specify the protocol.'."\n" + .' "Policy":"Accept" // Specify the action.'."\n" + .' }'."\n" + .' ]'."\n" + ."\n" + .'* Sample request to create an inbound security group rule that controls access from a security group and an inbound security group rule that controls access from a prefix list:'."\n" + ."\n" + .' "RegionId":"cn-hangzhou",'."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4p****",'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "SourceGroupId":"sg-bp17vs63txqxbd****", // Specify the source security group.'."\n" + .' "PortRange":"22/22",'."\n" + .' "IpProtocol":"TCP",'."\n" + .' "Policy":"Drop"'."\n" + .' },{'."\n" + .' "SourcePrefixListId":"pl-x1j1k5ykzqlixdcy****", // Specify the source prefix list.'."\n" + .' "PortRange":"22/22",'."\n" + .' "IpProtocol":"TCP",'."\n" + .' "Policy":"Drop"'."\n" + .' }'."\n" + .' ]'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySecurityGroupRule' => [ + 'summary' => 'Modifies an inbound security group rule in a security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29310', + 'abilityTreeNodes' => [ + 'FEATUREecsN1X6QX', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000 ', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The security group ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupRuleId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group rule. You can call the [DescribeSecurityGroupAttribute](~~2679845~~) operation to query the IDs of security group rules in a security group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sgr-bp67acfmxa123b***', + ], + ], + [ + 'name' => 'Policy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The action of the security group rule. Valid values:'."\n" + ."\n" + .'* accept: allows access.'."\n" + .'* drop: denies access and returns no responses.'."\n" + ."\n" + .'Default value: accept.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'accept', + 'default' => 'accept', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the security group rule. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + 'pattern' => '^\\d+$', + 'default' => '1', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'Network Layer /transport layer protocol. Two types of assignments are supported:'."\n" + ."\n" + .'1. The case-insensitive protocol name. Valid values:'."\n" + ."\n" + .'* ICMP'."\n" + .'* GRE'."\n" + .'* TCP'."\n" + .'* UDP'."\n" + .'* ALL: supports all protocols.'."\n" + ."\n" + .'2. The value of the IANA-compliant protocol number, which is an integer from 0 to 255. List of regions currently available:'."\n" + ."\n" + .'* Philippines (Manila)'."\n" + .'* UK (London)'."\n" + .'* Malaysia (Kuala Lumpur)'."\n" + .'* China (Hohhot)'."\n" + .'* China (Qingdao)'."\n" + .'* US (Silicon Valley)'."\n" + .'* Singapore'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'all', + ], + ], + [ + 'name' => 'SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IPv4 CIDR block. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IPv6 CIDR block. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'> Only the IP addresses of instances in virtual private clouds (VPCs) are supported. You cannot specify both Ipv6SourceCidrIp and `SourceCidrIp`.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1233:1a00::***', + ], + ], + [ + 'name' => 'SourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source security group ID. You must specify either `SourceGroupId` or `SourceCidrIp` or specify both of them.'."\n" + ."\n" + .'* If `SourceGroupId` is specified but `SourceCidrIp` is not specified, the value of `NicType` must be set to intranet.'."\n" + .'* If both `SourceGroupId` and `SourceCidrIp` are specified, the value of `SourceCidrIp` prevails by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxa123b****', + ], + ], + [ + 'name' => 'SourcePrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the source prefix list to which you want to control access. You can call the [DescribePrefixLists](~~205046~~) operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'If you specify `SourceCidrIp`, `Ipv6SourceCidrIp`, or `SourceGroupId`, this parameter is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + [ + 'name' => 'PortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The range of destination ports that correspond to the transport layer protocol. Valid values:'."\n" + ."\n" + .'* If you set IpProtocol to TCP or UDP, the port number range is 1 to 65535. Separate the start port number and the end port number with a forward slash (/). Example: 1/200.'."\n" + .'* If you set IpProtocol to ICMP, the port number range is -1/-1.'."\n" + .'* If you set IpProtocol to GRE, the port number range is -1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port number range is -1/-1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + ], + [ + 'name' => 'DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IPv4 CIDR block. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IPv6 CIDR block. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'> Only the IP addresses of instances in VPCs are supported. You cannot specify both Ipv6DestCidrIp and `DestCidrIp`.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + ], + [ + 'name' => 'SourcePortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The range of source ports that correspond to the transport layer protocol. Valid values:'."\n" + ."\n" + .'* If you set IpProtocol to TCP or UDP, the port number range is 1 to 65535. Separate the start port number and the end port number with a forward slash (/). Example: 1/200.'."\n" + .'* If you set IpProtocol to ICMP, the port number range is -1/-1.'."\n" + .'* If you set IpProtocol to GRE, the port number range is -1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port number range is -1/-1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + ], + [ + 'name' => 'SourceGroupOwnerAccount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Alibaba Cloud account that manages the source security group when you configure a security group rule across accounts.'."\n" + ."\n" + .'* If both `SourceGroupOwnerId` and `SourceGroupOwnerAccount` are empty, access permissions are configured for another security group managed by your account.'."\n" + .'* If `SourceCidrIp` is specified, `SourceGroupOwnerAccount` is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsforCloud@Alibaba.com', + ], + ], + [ + 'name' => 'SourceGroupOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account that manages the source security group when you configure a security group rule across accounts.'."\n" + ."\n" + .'* If both `SourceGroupOwnerId` and `SourceGroupOwnerAccount` are empty, access permissions are configured for another security group managed by your account.'."\n" + .'* If `SourceCidrIp` is specified, `SourceGroupOwnerId` is ignored.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '12345678910', + ], + ], + [ + 'name' => 'NicType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the network interface controller (NIC).'."\n" + ."\n" + .'> You cannot modify this parameter when you modify a security group rule by specifying the ID of the rule. If you want to change the NIC type of a security group rule, you can create a security group rule of a desired NIC type and delete the existing rule.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'intranet', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the security group rule. The description must be 1 to 512 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is a new security group rule.', + ], + ], + [ + 'name' => 'PortRangeListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the port list. You can call the `DescribePortRangeLists` operation to query the IDs of available port lists.'."\n" + ."\n" + .'* If you specify PortRange, this parameter is ignored.'."\n" + .'* If a security group is in the classic network, you cannot configure port lists in the rules of the security group. For information about the limits on security groups and port lists, see [Security group limits](~~25412#SecurityGroupQuota1~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prl-2ze9743****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified IpProtocol does not exist or IpProtocol and PortRange do not match.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.Malformed', + 'errorMessage' => 'The specified parameter PortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidSourceCidrIp.Malformed', + 'errorMessage' => 'The specified parameter SourceCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidPolicy.Malformed', + 'errorMessage' => 'The specified parameter Policy is not valid.', + ], + [ + 'errorCode' => 'InvalidNicType.ValueNotSupported', + 'errorMessage' => 'The specified NicType does not exist.', + ], + [ + 'errorCode' => 'InvalidNicType.Mismatch', + 'errorMessage' => 'The specified NicType conflicts with the authorization record.', + ], + [ + 'errorCode' => 'InvalidSourceGroupId.Mismatch', + 'errorMessage' => 'Specified security group and source group are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidSourceGroup.NotFound', + 'errorMessage' => 'Specified source security group does not exist.', + ], + [ + 'errorCode' => 'InvalidPriority.Malformed', + 'errorMessage' => 'The parameter Priority is invalid.', + ], + [ + 'errorCode' => 'InvalidPriority.ValueNotSupported', + 'errorMessage' => 'The parameter Priority is invalid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupDiscription.Malformed', + 'errorMessage' => 'The specified security group rule description is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.Source', + 'errorMessage' => 'One of the parameters SourceCidrIp, SourceGroupId or SourcePrefixListId must be specified.', + ], + [ + 'errorCode' => 'InvalidParam.PortRange', + 'errorMessage' => 'The specified parameter %s is not valid. It should be two integers less than 65535 in ?/? format.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.ValueNotSupported', + 'errorMessage' => 'The parameter IpProtocol must be specified with case insensitive TCP, UDP, ICMP, GRE or All.', + ], + [ + 'errorCode' => 'InvalidParam.SourceIp', + 'errorMessage' => 'The Parameters SourceCidrIp and Ipv6SourceCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.DestIp', + 'errorMessage' => 'The Parameters DestCidrIp and Ipv6DestCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv4ProtocolConflictWithIpv6Address', + 'errorMessage' => 'IPv6 address cannot be specified for IPv4-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6ProtocolConflictWithIpv4Address', + 'errorMessage' => 'IPv4 address cannot be specified for IPv6-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParameter.Ipv6CidrIp', + 'errorMessage' => 'The specified Ipv6CidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidSourcePortRange.Malformed', + 'errorMessage' => 'The specified parameter SourcePortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupId is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.SourceCidrIp', + 'errorMessage' => 'The specified param SourceCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'IPv6 and IPv4 addresses cannot exist at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.SecurityGroupRuleId', + 'errorMessage' => 'The specified parameter SecurityGroupRuleId is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.ModifySgRuleEntityType', + 'errorMessage' => 'The source or destination type of the rules cannot be modified.', + ], + [ + 'errorCode' => 'AuthorizationLimitExceed', + 'errorMessage' => 'The limit of authorization records in the security group reaches.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolAndPortRangeMismatch', + 'errorMessage' => 'The specified Protocol and PortRange do not match.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolAndAddressFamilyMismatch', + 'errorMessage' => 'The specified Protocol and address family do not match.', + ], + [ + 'errorCode' => 'InvalidParam.PrefixListAddressFamilyMismatch', + 'errorMessage' => 'The address family of the prefix list does not match the rule.', + ], + [ + 'errorCode' => 'InvalidParam.InvalidModifyRuleRequest', + 'errorMessage' => 'The request parameters are illegal.', + ], + [ + 'errorCode' => 'InvalidOperation.ModifyNicType', + 'errorMessage' => 'NicType is not allowed to modify.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SourceCidrIp should be different from the DestCidrIp.', + ], + [ + 'errorCode' => 'InvalidOperation.RuleDuplicate', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolNotSupportPortRangeList', + 'errorMessage' => 'The specified protocol does not support the port range list.', + ], + [ + 'errorCode' => 'InvalidSourceOrDestGroupId.DirectionMissmatch', + 'errorMessage' => 'The specified SourceGroupId or DestGroupId does not match the direction of the rule.', + ], + [ + 'errorCode' => 'InvalidOperation.ModifyPortRangeType', + 'errorMessage' => 'The PortRange type is not allowed to be modified. You cannot modify a rule from using the port list to not using it, and vice versa.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidSourceGroupId.Mismatch', + 'errorMessage' => 'NicType is required or NicType expects intrnet.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter SourceGroupId or SourceCidrIp cannot be both blank.', + ], + [ + 'errorCode' => 'AuthorizationLimitExceed', + 'errorMessage' => 'The limit of authorization records in the security group reaches.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SecurityGroupId should be different from the SourceGroupId.', + ], + [ + 'errorCode' => 'InvalidNetworkType.Mismatch', + 'errorMessage' => 'The specified SecurityGroup network type should be same with SourceGroup network type (vpc or classic).', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidSourceGroupId.NotFound', + 'errorMessage' => 'The SourceGroupId provided does not exist in our records.', + ], + [ + 'errorCode' => 'SecurityGroupRule.NotFound', + 'errorMessage' => 'The target security group rule not exist.', + ], + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupRuleId.NotFound', + 'errorMessage' => 'The specified SecurityGroupRuleId is not exists.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\":\\"CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\"\\n}"},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n"}]', + 'title' => 'ModifySecurityGroupRule', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* An authorization object in a security group rule can be of one of the following types: IPv4 CIDR block or address, IPv6 CIDR block or address, security group, or prefix list. You cannot call this operation to change the type of an existing authorization object. For example, if an authorization object is an IPv4 CIDR block, you can change the authorization object to a different IPv4 CIDR block or an IPv4 address, but you cannot change the authorization object to an IPv6 CIDR block or address, a security group, or a prefix list.'."\n" + .'* You cannot delete the value of a non-empty parameter. If you want to delete the values of non-empty parameters, we recommend that you create a security group rule and delete the original security group rule.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RevokeSecurityGroup' => [ + 'summary' => 'Deletes inbound security group rules from a specific security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29312', + 'abilityTreeNodes' => [ + 'FEATUREecs9IXIKV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 **ClientToken** value can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 **ClientToken** value can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupRuleId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The security group rule IDs. You can specify 1 to 100 security group rule IDs in a request.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Security group rule N.'."\n" + ."\n" + .'> This parameter is required if you delete a security group rule based on the ID of the security group rule.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sgr-bp67acfmxa123b***', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Permissions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The security group rules. You can specify up to 100 security group rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Security group rule N.'."\n", + 'type' => 'object', + 'properties' => [ + 'Policy' => [ + 'description' => 'The action of the security group rule. Valid values:'."\n" + ."\n" + .'* accept: allows inbound access.'."\n" + .'* drop: denies inbound access and returns no responses. In this case, the request times out or the connection cannot be established.'."\n" + ."\n" + .'Default value: accept.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'accept', + ], + 'Priority' => [ + 'description' => 'The priority of the security group rule. A smaller value specifies a higher priority. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + ], + 'IpProtocol' => [ + 'description' => 'The protocol. The values of this parameter are case-insensitive. Valid values:'."\n" + ."\n" + .'* TCP.'."\n" + .'* UDP.'."\n" + .'* ICMP.'."\n" + .'* ICMPv6.'."\n" + .'* GRE.'."\n" + .'* ALL: All protocols are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TCP', + ], + 'SourceCidrIp' => [ + 'description' => 'The source IPv4 CIDR block of the security group rule. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + 'Ipv6SourceCidrIp' => [ + 'description' => 'The source IPv6 CIDR block of the security group rule. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'> This parameter is valid only for Elastic Compute Service (ECS) instances that reside in virtual private clouds (VPCs) and support IPv6 CIDR blocks. You cannot specify both this parameter and `SourceCidrIp` in the same request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + 'SourceGroupId' => [ + 'description' => 'The ID of the source security group referenced in the security group rule.'."\n" + ."\n" + .'* You must specify at least one of the following parameters: `SourceGroupId`, `SourceCidrIp`, `Ipv6SourceCidrIp`, and `SourcePrefixListId`.'."\n" + .'* If you specify `SourceGroupId` but do not specify `SourceCidrIp` or `Ipv6SourceCidrIp`, you must set NicType to intranet.'."\n" + .'* If you specify both `SourceGroupId` and `SourceCidrIp`, `SourceCidrIp` takes precedence.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Advanced security groups do not support security group rules that reference security groups as authorization objects (sources or destinations of traffic).'."\n" + .'* Each basic security group can contain up to 20 security group rules that reference security groups as authorization objects.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxa123b****', + ], + 'SourcePrefixListId' => [ + 'description' => 'The ID of the source prefix list of the security group rule. You can call the [DescribePrefixLists](~~205046~~) operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If a security group resides in the classic network, you cannot specify prefix lists in the rules of the security group. For information about the limits on security groups and prefix lists, see the [Security groups](~~25412#SecurityGroupQuota1~~) section of the "Limits and quotas on ECS" topic.'."\n" + .'* If you specify `SourceCidrIp`, `Ipv6SourceCidrIp`, or `SourceGroupId`, this parameter is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'PortRange' => [ + 'description' => 'The destination port range of the security group rule. Valid values:'."\n" + ."\n" + .'* If you set IpProtocol to TCP or UDP, the valid values of this parameter are 1 to 65535. Specify a port range in the format of \\/\\. Example: 1/200.'."\n" + .'* If you set IpProtocol to ICMP, the port range is -1/-1.'."\n" + .'* If you set IpProtocol to GRE, the port range is -1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port range is -1/-1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1/200', + ], + 'DestCidrIp' => [ + 'description' => 'The destination IPv4 CIDR block. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + 'Ipv6DestCidrIp' => [ + 'description' => 'The destination IPv6 CIDR block. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n" + ."\n" + .'> This parameter is valid only for ECS instances that reside in VPCs and support IPv6 CIDR blocks. You cannot specify both this parameter and `DestCidrIp` in the same request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1233:1a00::***', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range of the security group rule. Valid values:'."\n" + ."\n" + .'* If you set IpProtocol to TCP or UDP, the valid values of this parameter are 1 to 65535. Specify a port range in the format of \\/\\. Example: 1/200.'."\n" + .'* If you set IpProtocol to ICMP, the port range is -1/-1.'."\n" + .'* If you set IpProtocol to GRE, the port range is -1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port range is -1/-1.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + 'SourceGroupOwnerAccount' => [ + 'description' => 'The Alibaba Cloud account that manages the source security group referenced in the security group rule.'."\n" + ."\n" + .'* If both `SourceGroupOwnerAccount` and `SourceGroupOwnerId` are empty, access control on another security group in your Alibaba Cloud account is removed.'."\n" + .'* If you specify `SourceCidrIp`, `SourceGroupOwnerAccount` is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test@aliyun.com', + ], + 'SourceGroupOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account that manages the source security group referenced in the security group rule.'."\n" + ."\n" + .'* If both `SourceGroupOwnerId` and `SourceGroupOwnerAccount` are empty, access control on another security group in your Alibaba Cloud account is removed.'."\n" + .'* If you specify `SourceCidrIp`, `SourceGroupOwnerId` is ignored.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '12345678910', + ], + 'NicType' => [ + 'description' => 'The network interface controller (NIC) type of the security group rule if the security group resides in the classic network. Valid values:'."\n" + ."\n" + .'* internet: public NIC.'."\n" + .'* intranet: internal NIC.'."\n" + ."\n" + .'If the security group resides in a VPC, this parameter is set to intranet by default and cannot be modified.'."\n" + ."\n" + .'If you specify `SourceGroupId` to delete inbound security group rules that reference the specified security group as an authorization object, you must set this parameter to intranet.'."\n" + ."\n" + .'Default value: internet.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'intranet', + ], + 'Description' => [ + 'description' => 'The description of the security group rule. The description must be 1 to 512 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + 'PortRangeListId' => [ + 'description' => 'The ID of the port list. You can call the `DescribePortRangeLists` operation to query the IDs of available port lists.'."\n" + ."\n" + .'* If you specify `Permissions.N.PortRange`, this parameter is ignored.'."\n" + .'* If a security group resides in the classic network, you cannot reference port lists in the rules of the security group. For information about the limits on security groups and port lists, see the [Security groups](~~25412#SecurityGroupQuota1~~) section of the "Limits and quotas on ECS" topic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prl-2ze9743****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Policy', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Policy` to specify whether to allow inbound access.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'accept', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Priority` to specify the rule priority.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.IpProtocol` to specify the protocol.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'docRequired' => false, + 'example' => 'ALL', + ], + ], + [ + 'name' => 'SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceCidrIp` to specify the source IPv4 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Ipv6SourceCidrIp` to specify the source IPv6 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + ], + [ + 'name' => 'SourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceGroupId` to specify the ID of the source security group.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'sg-bp67acfmxa123b****', + ], + ], + [ + 'name' => 'SourcePrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourcePrefixListId` to specify the ID of the source prefix list.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + [ + 'name' => 'PortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.PortRange` to specify the range of destination ports.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'docRequired' => false, + 'example' => '1/200', + ], + ], + [ + 'name' => 'DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestCidrIp` to specify the destination IPv4 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Ipv6DestCidrIp` to specify the destination IPv6 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '2001:db8:1233:1a00::***', + ], + ], + [ + 'name' => 'SourcePortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourcePortRange` to specify the range of source ports.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '80/80', + ], + ], + [ + 'name' => 'SourceGroupOwnerAccount', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceGroupOwnerAccount` to specify the Alibaba Cloud account that manages the source security group.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'Test@aliyun.com', + ], + ], + [ + 'name' => 'SourceGroupOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceGroupOwnerId` to specify the ID of the Alibaba Cloud account that manages the source security group.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'deprecated' => true, + 'required' => false, + 'example' => '12345678910', + ], + ], + [ + 'name' => 'NicType', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.NicType` to specify the network interface type.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'intranet', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Description` to specify the rule description.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'This is description.', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupId is not valid.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.ValueNotSupported', + 'errorMessage' => 'The parameter IpProtocol must be specified with case insensitive TCP, UDP, ICMP, GRE or All.', + ], + [ + 'errorCode' => 'InvalidIpPortRange.Malformed', + 'errorMessage' => 'The specified parameter PortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidSourceCidrIp.Malformed', + 'errorMessage' => 'The specified parameter SourceCidrIp is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter SourceGroupId or SourceCidrIp cannot be both blank.', + ], + [ + 'errorCode' => 'InvalidPolicy.Malformed', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidNicType.ValueNotSupported', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidSourceGroupId.Mismatch', + 'errorMessage' => 'Specified security group and source group are not in the same VPC.', + ], + [ + 'errorCode' => 'MissingParameter.Source', + 'errorMessage' => 'One of the parameters SourceCidrIp, Ipv6SourceCidrIp, SourceGroupId or SourcePrefixListId in %s must be specified.', + ], + [ + 'errorCode' => 'InvalidParam.PortRange', + 'errorMessage' => 'The specified parameter %s is not valid. It should be two integers less than 65535 in ?/? format.', + ], + [ + 'errorCode' => 'InvalidPriority.Malformed', + 'errorMessage' => 'The parameter Priority is invalid.', + ], + [ + 'errorCode' => 'InvalidPriority.ValueNotSupported', + 'errorMessage' => 'The specified parameter %s is invalid.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SecurityGroupId should be different from the SourceGroupId.', + ], + [ + 'errorCode' => 'InvalidDestCidrIp.Malformed', + 'errorMessage' => 'The specified parameter DestCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.SourceIp', + 'errorMessage' => 'The Parameters SourceCidrIp and Ipv6SourceCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.DestIp', + 'errorMessage' => 'The Parameters DestCidrIp and Ipv6DestCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv4ProtocolConflictWithIpv6Address', + 'errorMessage' => 'IPv6 address cannot be specified for IPv4-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6ProtocolConflictWithIpv4Address', + 'errorMessage' => 'IPv4 address cannot be specified for IPv6-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParameter.Ipv6CidrIp', + 'errorMessage' => 'The specified Ipv6CidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidGroupAuthParameter.OperationDenied', + 'errorMessage' => 'The security group can not authorize to enterprise level security group.', + ], + [ + 'errorCode' => 'InvalidPortRange.Malformed', + 'errorMessage' => 'The specified parameter PortRange must set.', + ], + [ + 'errorCode' => 'InvalidSourcePortRange.Malformed', + 'errorMessage' => 'The specified parameter SourcePortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupDiscription.Malformed', + 'errorMessage' => 'The specified security group rule description is not valid.', + ], + [ + 'errorCode' => 'NotSupported.ClassicNetworkPrefixList', + 'errorMessage' => 'The prefix list is not supported when the network type of security group is classic.', + ], + [ + 'errorCode' => 'InvalidParam.SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Permissions', + 'errorMessage' => 'The specified parameter Permissions cannot coexist with other parameters.', + ], + [ + 'errorCode' => 'InvalidParam.DuplicatePermissions', + 'errorMessage' => 'There are duplicate permissions in the specified parameter Permissions.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified parameter SecurityGroupId is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.SecurityGroupRuleId', + 'errorMessage' => 'The specified parameter SecurityGroupRuleId is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.SecurityGroupRuleIdRepeated', + 'errorMessage' => 'The specified parameter SecurityGroupRuleId is repeated.', + ], + [ + 'errorCode' => 'InvalidGroupParameter.OperationDenied', + 'errorMessage' => 'The attributes Policy, SourceGroupId, DestGroupId of enterprise level security groups are not allowed to be set or modified.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupRule.RuleNotExist', + 'errorMessage' => 'The specified rule does not exist.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolNotSupportPortRangeList', + 'errorMessage' => 'The specified protocol does not support the port range list.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.InvalidNetworkType', + 'errorMessage' => 'The specified security group network type is not support this operation, please check the security group network types. For VPC security groups, ClassicLink must be enabled.', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.SecurityGroupNotAuthorized', + 'errorMessage' => 'The specified security group is not authorized to operate.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidNicType.Mismatch', + 'errorMessage' => 'The specified NicType conflicts with the authorization record.', + ], + [ + 'errorCode' => 'InvalidGroupAuthItem.NotFound', + 'errorMessage' => 'Specified group authorized item does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidSourceGroupId.NotFound', + 'errorMessage' => 'The SourceGroupId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupRuleId.NotFound', + 'errorMessage' => 'The specified SecurityGroupRuleId is not exists.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'RevokeSecurityGroup', + 'description' => '> Alibaba Cloud modified verification rules for the RevokeSecurityGroup operation on July 8, 2024. When you call the RevokeSecurityGroup operation to delete a security group rule that does not exist, the "InvalidParam.SecurityGroupRuleId" error code is returned instead of a success response. Update the RevokeSecurityGroup operation to use the new verification rules with the new error code based on your business requirements.'."\n" + ."\n" + .'You can use one of the following groups of parameters to specify the security group rules that you want to delete:'."\n" + ."\n" + .'* Parameters used to specify the IDs of security group rules. We recommend that you specify the IDs of security group rules to delete the rules.'."\n" + ."\n" + .' * If a specified security group rule ID does not exist, the call to RevokeSecurityGroup fails.'."\n" + ."\n" + .'* Parameters that start with Permissions.'."\n" + ."\n" + .' * If no security group rule matches the specified parameters, the call to RevokeSecurityGroup is successful but no security group rules are deleted.'."\n" + ."\n" + .' * Define an inbound security group rule by configuring the following parameters together:'."\n" + ."\n" + .' * Source: You can specify one parameter from SourceCidrIp (IPv4 address), Ipv6SourceCidrIp (IPv6 address), SourcetPrefixListId (prefix list ID), and SourceGroupId (source security group ID).'."\n" + .' * PortRange: specifies the destination port range.'."\n" + .' * IpProtocol: specifies the protocol.'."\n" + .' * Policy: specifies the action.'."\n" + ."\n" + .'> You cannot specify the IDs of security group rules and the parameters that start with Permissions in the same request.'."\n" + ."\n" + .'### [](#)Sample requests'."\n" + ."\n" + .'* Delete a security group rule based on the rule ID:'."\n" + ."\n" + .''."\n" + ."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4p****", //Specify the ID of the security group.'."\n" + .' "SecurityGroupRuleId":["sgr-bpdfmk****","sgr-bpdfmg****"] //Specify the ID of the security group rule.'."\n" + ."\n" + .'* Delete a security group rule based on an IPv4 CIDR block:'."\n" + ."\n" + .''."\n" + ."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4p****",'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "SourceCidrIp":"10.0.0.0/8", //Specify the source IPv4 CIDR block.'."\n" + .' "IpProtocol":"TCP", //Specify the protocol.'."\n" + .' "PortRange":"80/80", //Specify the destination port range.'."\n" + .' "Policy":"accept" //Specify the action.'."\n" + .' }'."\n" + .' ]'."\n" + ."\n" + .'* Delete a security group rule in which a security group is referenced:'."\n" + ."\n" + .''."\n" + ."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4p****",'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "SourceGroupId":"sg-bp67acfmxa123b****", //Specify the ID of the source security group.'."\n" + .' "IpProtocol":"TCP,"'."\n" + .' "PortRange":"80/80",'."\n" + .' "Policy":"accept"'."\n" + .' ]'."\n" + .' }'."\n" + ."\n" + .'* Delete a security group rule in which a prefix list is referenced:'."\n" + ."\n" + .''."\n" + ."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4p****",'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "SourcePrefixListId":pl-x1j1k5ykzqlixdcy****", //Specify the ID of the source prefix list.'."\n" + .' "IpProtocol":"TCP",'."\n" + .' "PortRange":"80/80",'."\n" + .' "Policy":"accept"'."\n" + .' }'."\n" + .' ]'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AuthorizeSecurityGroupEgress' => [ + 'summary' => 'Creates outbound rules in a security group. You can use the created rules to allow or deny outbound traffic from Elastic Compute Service (ECS) instances in the security group to other objects for fine-grained network access control.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29245', + 'abilityTreeNodes' => [ + 'FEATUREecsN1X6QX', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the source security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the source security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the source security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [Ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000 ', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [Ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000 ', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The security group ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The security group ID.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Permissions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'An array of security group rules. You can specify 1 to 100 security group rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Security group rule N.'."\n", + 'type' => 'object', + 'properties' => [ + 'Policy' => [ + 'description' => 'The action of the security group rule. Valid values:'."\n" + ."\n" + .'* accept: allows outbound access.'."\n" + .'* drop: denies outbound access and returns no responses. In this case, the request times out or the connection cannot be established.'."\n" + ."\n" + .'Default value: accept.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'accept', + ], + 'Priority' => [ + 'description' => 'The priority of security group rule N. A smaller value specifies a higher priority. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + ], + 'IpProtocol' => [ + 'description' => 'Network Layer /transport layer protocol. Two types of assignments are supported:'."\n" + ."\n" + .'1. The case-insensitive protocol name. Valid value:'."\n" + ."\n" + .'* ICMP'."\n" + .'* GRE'."\n" + .'* TCP'."\n" + .'* UDP'."\n" + .'* ALL: supports all protocols.'."\n" + ."\n" + .'2. The value of the IANA-compliant protocol number, which is an integer from 0 to 255. List of regions currently available:'."\n" + ."\n" + .'* Philippines (Manila)'."\n" + .'* UK (London)'."\n" + .'* Malaysia (Kuala Lumpur)'."\n" + .'* China (Hohhot)'."\n" + .'* China (Qingdao)'."\n" + .'* US (Silicon Valley)'."\n" + .'* Singapore'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ALL', + ], + 'DestCidrIp' => [ + 'description' => 'The destination IPv4 CIDR block of the security group rule. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + 'Ipv6DestCidrIp' => [ + 'description' => 'The destination IPv6 CIDR block of the security group rule. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'> This parameter is valid only for VPC-type ECS instances that support IPv6. This parameter and the `DestCidrIp` parameter cannot be set at the same time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1233:1a00::***', + ], + 'DestGroupId' => [ + 'description' => 'The ID of the destination security group that is specified in the security group rule.'."\n" + ."\n" + .'* You must specify at least one of the following parameters: `DestGroupId`, `DestCidrIp`, `Ipv6DestCidrIp`, and `DestPrefixListId`.'."\n" + .'* If you specify `DestGroupId` but do not specify `DestCidrIp`, you must set `NicType` to intranet.'."\n" + .'* If you specify both `DestGroupId` and `DestCidrIp`, `DestCidrIp` takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'DestPrefixListId' => [ + 'description' => 'The ID of the destination prefix list. You can call the [DescribePrefixLists](~~205046~~) operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'Notes:'."\n" + ."\n" + .'* If a security group resides in the classic network, you cannot specify prefix lists in the rules of the security group. For information about the limits on security groups and prefix lists, see the [Security groups](~~25412#SecurityGroupQuota1~~) section of the "Limits and quotas on ECS" topic.'."\n" + .'* If you specify `DestCidrIp`, `Ipv6DestCidrIp`, or `DestGroupId`, this parameter is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'PortRange' => [ + 'description' => 'The destination port range of the security group rule. Valid values:'."\n" + ."\n" + .'* TCP/UDP: Valid values: 1 to 65535. Use a forward slash (/) to separate the start and end ports. Example: 1/200.'."\n" + .'* ICMP:-1/-1.'."\n" + .'* GRE:-1/-1.'."\n" + .'* ALL:-1/-1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + 'SourceCidrIp' => [ + 'description' => 'The source IPv4 CIDR block of the security group rule. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n" + ."\n" + .'This property is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + 'Ipv6SourceCidrIp' => [ + 'description' => 'The source IPv6 CIDR block of the security group rule. or IPv6 address.'."\n" + ."\n" + .'This property is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n" + ."\n" + .'> This parameter is valid only for ECS instances that reside in virtual private clouds (VPCs) and support IPv6 CIDR blocks. You cannot specify this parameter and `DestCidrIp` in the same request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range of the security group rule. Valid values:'."\n" + ."\n" + .'* TCP/UDP protocol: 1 to 65535. Use a forward slash (/) to separate the start and end ports. Example: 1/200.'."\n" + .'* ICMP protocol:-1/-1.'."\n" + .'* GRE protocol:-1/-1.'."\n" + .'* ALL:-1/-1.'."\n" + ."\n" + .'This property is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + 'DestGroupOwnerAccount' => [ + 'description' => 'The Alibaba Cloud account that manages the destination security group.'."\n" + ."\n" + .'* If both `DestGroupOwnerAccount` and `DestGroupOwnerId` are empty, the rule is created to control access to another security group in your Alibaba Cloud account.'."\n" + .'* If `DestCidrIp` is configured, `DestGroupOwnerAccount` is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test@aliyun.com', + ], + 'DestGroupOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account that manages the destination security group.'."\n" + ."\n" + .'* If both `DestGroupOwnerId` and `DestGroupOwnerAccount` are empty, the rule is created to control access to another security group in your Alibaba Cloud account.'."\n" + .'* If you specify `DestCidrIp`, `DestGroupOwnerId` is ignored.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '12345678910', + ], + 'NicType' => [ + 'description' => 'The network interface controller (NIC) type of the security group rule if the security group resides in the classic network. Valid values:'."\n" + ."\n" + .'* internet: public NIC.'."\n" + ."\n" + .'* intranet: internal NIC.'."\n" + ."\n" + .' * If the security group resides in a VPC, this parameter is set to intranet by default and cannot be changed.'."\n" + .' * If you specify only DestGroupId to create a rule that controls access to the specified security group, you must set this parameter to intranet.'."\n" + ."\n" + .'Default value: internet.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'intranet', + ], + 'Description' => [ + 'description' => 'The description of the security group rule. The description can be up to 1 to 512 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + 'PortRangeListId' => [ + 'description' => 'The ID of the port list. You can call the `DescribePortRangeLists` operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'* If you specify `Permissions.N.PortRange`, this parameter is ignored.'."\n" + .'* If a security group resides in the classic network, you cannot reference port lists in the rules of the security group. For more information about limits on security groups and ports, see [Limits on security groups](~~25412#SecurityGroupQuota1~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prl-2ze9743****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Policy', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Policy` to specify whether to allow outbound access.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'accept', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Priority` to specify the rule priority.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.IpProtocol` to specify the protocol.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'docRequired' => false, + 'example' => 'ALL', + ], + ], + [ + 'name' => 'DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestCidrIp` to specify the destination IPv4 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Ipv6DestCidrIp` to specify the destination IPv6 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '2001:db8:1233:1a00::***', + ], + ], + [ + 'name' => 'DestGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestGroupId` to specify the ID of the destination security group.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'DestPrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestPrefixListId` to specify the ID of the destination prefix list.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + [ + 'name' => 'PortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.PortRange` to specify the range of destination ports.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'docRequired' => false, + 'example' => '80/80', + ], + ], + [ + 'name' => 'SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceCidrIp` to specify the source IPv4 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Ipv6SourceCidrIp` to specify the source IPv6 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + ], + [ + 'name' => 'SourcePortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourcePortRange` to specify the range of source ports.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '80/80', + ], + ], + [ + 'name' => 'DestGroupOwnerAccount', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestGroupOwnerAccount` to specify the Alibaba Cloud account that manages the destination security group.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'Test@aliyun.com', + ], + ], + [ + 'name' => 'DestGroupOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestGroupOwnerId` to specify the ID of the Alibaba Cloud account that manages the destination security group.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'deprecated' => true, + 'required' => false, + 'example' => '12345678910', + ], + ], + [ + 'name' => 'NicType', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.NicType` to specify the NIC type.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'intranet', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Description` to specify the description of security group rule N.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'This is description.', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified IpProtocol does not exist or IpProtocol and PortRange do not match.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.Malformed', + 'errorMessage' => 'The specified parameter PortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidDestCidrIp.Malformed', + 'errorMessage' => 'The specified parameter DestCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidPolicy.Malformed', + 'errorMessage' => 'The specified parameter Policy is not valid.', + ], + [ + 'errorCode' => 'InvalidNicType.ValueNotSupported', + 'errorMessage' => 'The specified NicType does not exist.', + ], + [ + 'errorCode' => 'InvalidNicType.Mismatch', + 'errorMessage' => 'The specified NicType conflicts with the authorization record.', + ], + [ + 'errorCode' => 'InvalidDestGroupId.Mismatch', + 'errorMessage' => 'Specified security group and destination group are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidDestGroup.NotFound', + 'errorMessage' => 'Specified destination security group does not exist.', + ], + [ + 'errorCode' => 'InvalidPriority.Malformed', + 'errorMessage' => 'The parameter Priority is invalid.', + ], + [ + 'errorCode' => 'InvalidPriority.ValueNotSupported', + 'errorMessage' => 'The specified parameter %s is invalid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupDiscription.Malformed', + 'errorMessage' => 'The specified security group rule description parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.InvalidNetworkType', + 'errorMessage' => 'The specified security group network type is not support this operation, please check the security group network types. For VPC security groups, ClassicLink must be enabled.', + ], + [ + 'errorCode' => 'MissingParameter.Dest', + 'errorMessage' => 'One of the parameters DestCidrIp, Ipv6DestCidrIp, DestGroupId or DestPrefixListId in %s must be specified.', + ], + [ + 'errorCode' => 'InvalidParam.PortRange', + 'errorMessage' => 'The specified parameter %s is not valid. It should be two integers less than 65535 in ?/? format.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.ValueNotSupported', + 'errorMessage' => 'The parameter %s must be specified with case insensitive TCP, UDP, ICMP, GRE or All.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupId is not valid.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SourceCidrIp should be different from the DestCidrIp.', + ], + [ + 'errorCode' => 'InvalidSourcePortRange.Malformed', + 'errorMessage' => 'The specified parameter SourcePortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidPortRange.Malformed', + 'errorMessage' => 'The specified parameter PortRange must set.', + ], + [ + 'errorCode' => 'InvalidParam.SourceIp', + 'errorMessage' => 'The Parameters SourceCidrIp and Ipv6SourceCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.DestIp', + 'errorMessage' => 'The Parameters DestCidrIp and Ipv6DestCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv4ProtocolConflictWithIpv6Address', + 'errorMessage' => 'IPv6 address cannot be specified for IPv4-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6ProtocolConflictWithIpv4Address', + 'errorMessage' => 'IPv4 address cannot be specified for IPv6-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParameter.Ipv6CidrIp', + 'errorMessage' => 'The specified Ipv6CidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidGroupAuthParameter.OperationDenied', + 'errorMessage' => 'The security group can not authorize to enterprise level security group.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'IPv6 and IPv4 addresses cannot exist at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.PrefixListAddressFamilyMismatch', + 'errorMessage' => 'The address family of the specified prefix list does not match the specified CidrIp.', + ], + [ + 'errorCode' => 'NotSupported.ClassicNetworkPrefixList', + 'errorMessage' => 'The prefix list is not supported when the network type of security group is classic.', + ], + [ + 'errorCode' => 'AuthorizedGroupRule.LimitExceed', + 'errorMessage' => 'You have reached the limit on the number of group authorization rules that you can add to a security group.When authorization object of rule is security group, the limit is 20.', + ], + [ + 'errorCode' => 'InvalidParam.DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.SourceCidrIp', + 'errorMessage' => 'The specified param SourceCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Permissions', + 'errorMessage' => 'The specified parameter Permissions cannot coexist with other parameters.', + ], + [ + 'errorCode' => 'InvalidParam.DuplicatePermissions', + 'errorMessage' => 'There are duplicate permissions in the specified parameter Permissions.', + ], + [ + 'errorCode' => 'InvalidGroupParameter.OperationDenied', + 'errorMessage' => 'The attributes Policy, SourceGroupId, DestGroupId of enterprise level security groups are not allowed to be set or modified.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolNotSupportPortRangeList', + 'errorMessage' => 'The specified protocol does not support the port range list.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.SecurityGroupNotAuthorized', + 'errorMessage' => 'The specified security group is not authorized to operate.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDestGroupId.Mismatch', + 'errorMessage' => 'NicType is required or NicType expects intranet.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter DestGroupId or DestCidrIp cannot be both blank.', + ], + [ + 'errorCode' => 'AuthorizationLimitExceed', + 'errorMessage' => 'The limit of authorization records in the security group reaches.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SecurityGroupId should be different from the SourceGroupId.', + ], + [ + 'errorCode' => 'InvalidNetworkType.Conflict', + 'errorMessage' => 'The specified SecurityGroup network type should be same with SourceGroup network type (vpc or classic).', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.IsSame', + 'errorMessage' => 'The authorized SecurityGroupId should be different from the DestGroupId.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'LimitExceed.PrefixListAssociationResource', + 'errorMessage' => 'The number of resources associated with the prefix list exceeds the limit.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidDestGroupId.NotFound', + 'errorMessage' => 'The DestGroupId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'AuthorizeSecurityGroupEgress', + 'description' => '### [](#)Precautions'."\n" + ."\n" + .'* **Quantity limit**: The maximum number of inbound and outbound rules in all security groups associated with an elastic network interface (ENI) cannot exceed 1,000. For more information, see the [Security group limits](~~25412#SecurityGroupQuota1~~) section of the "Limits" topic.'."\n" + .'* **Rule priorities**: For outbound security group rules, the valid values of Priority range from 1 to 100. A smaller value indicates a higher priority. When multiple security group rules have the same priority, drop rules take precedence.'."\n" + ."\n" + .'### [](#)Considerations'."\n" + ."\n" + .'If the security group rule that you call the AuthorizeSecurityGroupEgress operation to create exists in the security group, the call is successful but no security group rule is created.'."\n" + ."\n" + .'### [](#)Parameters that define a security group rule'."\n" + ."\n" + .'Define an outbound security group rule by configuring the following parameters together:'."\n" + ."\n" + .'* One of the following parameters: DestCidrIp, Ipv6DestCidrIp, DestPrefixListId, and DestGroupId. DestCidrIp specifies the destination IPv4 CIDR block. Ipv6DestCidrIp specifies the destination IPv6 CIDR block. DestPrefixListId specifies the ID of the destination prefix list. DestGroupId specifies the destination security group.'."\n" + .'* PortRange: specifies the range of destination port numbers.'."\n" + .'* IpProtocol: specifies the protocol.'."\n" + .'* Policy: specifies the action.'."\n" + ."\n" + .'> Advanced security groups do not support security group rules that reference security groups as authorization objects. Each basic security group can contain up to 20 security group rules that reference security groups as authorization objects.'."\n" + ."\n" + .'### [](#)Sample requests'."\n" + ."\n" + .'Sample requests to create outbound security group rules that control access to different destinations in a security group in the China (Hangzhou) region:'."\n" + ."\n" + .'* Sample request to create an outbound security group rule that controls access to a specified CIDR block:'."\n" + ."\n" + .' "RegionId":"cn-hangzhou", // The region ID.'."\n" + .' "SecurityGroupId":"sg-bp17vs63txqxbds9***", // The ID of the source security group.'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "DestCidrIp":"10.0.0.0/8", // The destination IPv4 CIDR block.'."\n" + .' "PortRange":"-1/-1", // The range of destination port numbers.'."\n" + .' "IpProtocol":"ICMP", //T he protocol. "Policy":"Accept" // Specify the action.'."\n" + .' }'."\n" + .' ]'."\n" + ."\n" + .'* Sample request to create an outbound security group rule that controls access to a security group and an outbound security group rule that controls access to a prefix list:'."\n" + ."\n" + .' "RegionId":"cn-hangzhou",'."\n" + .' "SecurityGroupId":"sg-bp17vs63txqxbds9***",'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "DestGroupId":"sg-bp67acfmxazb4pi***", // The ID of the destination security group.'."\n" + .' "PortRange":"22/22",'."\n" + .' "IpProtocol":"TCP",'."\n" + .' "Policy":"Drop"'."\n" + .' },{'."\n" + .' "DestPrefixListId":"pl-x1j1k5ykzqlixdcy****", // The destination prefix list.'."\n" + .' "PortRange":"22/22",'."\n" + .' "IpProtocol":"TCP",'."\n" + .' "Policy":"Drop"'."\n" + .' }'."\n" + .' ]'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifySecurityGroupEgressRule' => [ + 'summary' => 'Modifies an outbound security group rule in a security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29309', + 'abilityTreeNodes' => [ + 'FEATUREecsN1X6QX', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length.**** For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupRuleId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group rule. You can call the [DescribeSecurityGroupAttribute](~~2679845~~) operation to query the IDs of security group rules in a security group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sgr-bp67acfmxazb4q****', + ], + ], + [ + 'name' => 'Policy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The action of the security group rule. Valid values:'."\n" + ."\n" + .'* accept: allows access.'."\n" + .'* drop: denies access and returns no responses.'."\n" + ."\n" + .'Default value: accept.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'accept', + 'default' => 'accept', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'The priority of the security group rule. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + 'pattern' => '^\\d+$', + 'default' => '1', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'Network Layer /transport layer protocol. Two types of assignments are supported:'."\n" + ."\n" + .'1. The case-insensitive protocol name. Valid values:'."\n" + ."\n" + .'* ICMP'."\n" + .'* GRE'."\n" + .'* TCP'."\n" + .'* UDP'."\n" + .'* ALL: supports all protocols.'."\n" + ."\n" + .'2. The value of the IANA-compliant protocol number, which is an integer from 0 to 255. List of regions currently available:'."\n" + ."\n" + .'* Philippines (Manila)'."\n" + .'* UK (London)'."\n" + .'* Malaysia (Kuala Lumpur)'."\n" + .'* China (Hohhot)'."\n" + .'* China (Qingdao)'."\n" + .'* US (Silicon Valley)'."\n" + .'* Singapore'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => 'tcp', + ], + ], + [ + 'name' => 'DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IPv4 CIDR block. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The destination IPv6 CIDR block. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'> Only the IP addresses of instances in virtual private clouds (VPCs) are supported. You cannot specify both Ipv6DestCidrIp and `DestCidrIp`.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1233:1a00::***', + ], + ], + [ + 'name' => 'DestGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the destination security group. You must specify at least one of `DestGroupId` and `DestCidrIp`.'."\n" + ."\n" + .'* At least one of DestGroupId, DestCidrIp, Ipv6DestCidrIp, and DestPrefixListId must be specified.'."\n" + .'* If DestGroupId is specified but DestCidrIp is not specified, the NicType parameter can be set only to intranet.'."\n" + .'* If both DestGroupId and DestCidrIp are specified, DestCidrIp takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxa123b****', + ], + ], + [ + 'name' => 'DestPrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the destination prefix list. You can call the [DescribePrefixLists](~~205046~~) operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'If you specify `DestCidrIp`, `Ipv6DestCidrIp`, or `DestGroupId`, this parameter is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + [ + 'name' => 'PortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The range of destination ports that correspond to the transport layer protocol. Valid values:'."\n" + ."\n" + .'* If you set IpProtocol to TCP or UDP, the port number range is 1 to 65535. Separate the start port number and the end port number with a forward slash (/). Example: 1/200.'."\n" + .'* If you set IpProtocol to ICMP, the port number range is -1/-1.'."\n" + .'* If you set IpProtocol to GRE, the port number range is -1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port number range is -1/-1.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => true, + 'example' => '80/80', + ], + ], + [ + 'name' => 'SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IPv4 CIDR block. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source IPv6 CIDR block. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'> Only the IP addresses of instances in VPCs are supported. You cannot specify both Ipv6SourceCidrIp and `SourceCidrIp`.'."\n" + ."\n" + .'By default, this parameter is left empty.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + ], + [ + 'name' => 'SourcePortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'The range of source ports that correspond to the transport layer protocol. Valid values:'."\n" + ."\n" + .'* If you set IpProtocol to TCP or UDP, the port number range is 1 to 65535. Separate the start port number and the end port number with a forward slash (/). Example: 1/200.'."\n" + .'* If you set IpProtocol to ICMP, the port number range is -1/-1.'."\n" + .'* If you set IpProtocol to GRE, the port number range is -1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port number range is -1/-1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '80/80', + ], + ], + [ + 'name' => 'DestGroupOwnerAccount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The Alibaba Cloud account that manages the destination security group when you set security group rule N across accounts.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsforCloud@Alibaba.com', + ], + ], + [ + 'name' => 'DestGroupOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the Alibaba Cloud account that manages the destination security group when you set security group rule N across accounts.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1234567890', + ], + ], + [ + 'name' => 'NicType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network interface controller (NIC) type.'."\n" + ."\n" + .'> You cannot modify this parameter when you modify a security group rule by specifying the ID of the rule. If you want to change the NIC type of a security group rule, you can create a security group rule of a desired NIC type and delete the existing rule.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'intranet', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the security group rule. The description must be 1 to 512 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is a new securitygroup rule.', + ], + ], + [ + 'name' => 'PortRangeListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the port list. You can call the `DescribePortRangeLists` operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'* If you specify PortRange, the value of this parameter is ignored.'."\n" + .'* If the security group is of the classic network type, you cannot reference port lists in the security group rules. For information about the limits on security groups and port lists, see the [Security groups](~~25412#SecurityGroupQuota1~~) section of the "Limits and quotas" topic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prl-2ze9743****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified IpProtocol does not exist or IpProtocol and PortRange do not match.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.Malformed', + 'errorMessage' => 'The specified parameter PortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidDestCidrIp.Malformed', + 'errorMessage' => 'The specified parameter DestCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidPolicy.Malformed', + 'errorMessage' => 'The specified parameter Policy is not valid.', + ], + [ + 'errorCode' => 'InvalidNicType.ValueNotSupported', + 'errorMessage' => 'The specified NicType does not exist.', + ], + [ + 'errorCode' => 'InvalidNicType.Mismatch', + 'errorMessage' => 'The specified NicType conflicts with the authorization record.', + ], + [ + 'errorCode' => 'InvalidDestGroupId.Mismatch', + 'errorMessage' => 'Specified security group and destination group are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidDestGroup.NotFound', + 'errorMessage' => 'Specified destination security group does not exist.', + ], + [ + 'errorCode' => 'InvalidPriority.Malformed', + 'errorMessage' => 'The specified parameter Priority is not valid.', + ], + [ + 'errorCode' => 'InvalidPriority.ValueNotSupported', + 'errorMessage' => 'The specified Priority is invalid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupDiscription.Malformed', + 'errorMessage' => 'The specified security group rule description is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.InvalidNetworkType', + 'errorMessage' => 'The specified security group network type is not support this operation, please check the security group network types. For VPC security groups, ClassicLink must be enabled.', + ], + [ + 'errorCode' => 'MissingParameter.Dest', + 'errorMessage' => 'One of the parameters DestCidrIp, DestGroupId or DestPrefixListId must be specified.', + ], + [ + 'errorCode' => 'InvalidParam.PortRange', + 'errorMessage' => 'The specified parameter %s is not valid. It should be two integers less than 65535 in ?/? format.', + ], + [ + 'errorCode' => 'InvalidIpProtocol.ValueNotSupported', + 'errorMessage' => 'The specified parameter IpProtocol should not be null and only tcp, udp, icmp, gre or all is supported. Ignore case.', + ], + [ + 'errorCode' => 'InvalidParam.SourceIp', + 'errorMessage' => 'The Parameters SourceCidrIp and Ipv6SourceCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.DestIp', + 'errorMessage' => 'The Parameters DestCidrIp and Ipv6DestCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv4ProtocolConflictWithIpv6Address', + 'errorMessage' => 'IPv6 address cannot be specified for IPv4-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6ProtocolConflictWithIpv4Address', + 'errorMessage' => 'IPv4 address cannot be specified for IPv6-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParameter.Ipv6CidrIp', + 'errorMessage' => 'The specified Ipv6CidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidSourcePortRange.Malformed', + 'errorMessage' => 'The specified parameter SourcePortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.SourceCidrIp', + 'errorMessage' => 'The specified param SourceCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.DestCidrIp', + 'errorMessage' => 'The specified param DestCidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'IPv6 and IPv4 addresses cannot exist at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.SecurityGroupRuleId', + 'errorMessage' => 'The specified parameter SecurityGroupRuleId is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.ModifySgRuleEntityType', + 'errorMessage' => 'The source or destination type of the rules cannot be modified.', + ], + [ + 'errorCode' => 'AuthorizationLimitExceed', + 'errorMessage' => 'The limit of authorization records in the security group reaches.', + ], + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolAndPortRangeMismatch', + 'errorMessage' => 'The specified Protocol and PortRange do not match.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolAndAddressFamilyMismatch', + 'errorMessage' => 'The specified Protocol and address family do not match.', + ], + [ + 'errorCode' => 'InvalidParam.PrefixListAddressFamilyMismatch', + 'errorMessage' => 'The address family of the prefix list does not match the rule.', + ], + [ + 'errorCode' => 'InvalidParam.InvalidModifyRuleRequest', + 'errorMessage' => 'The request parameters are illegal.', + ], + [ + 'errorCode' => 'InvalidOperation.ModifyNicType', + 'errorMessage' => 'NicType is not allowed to modify.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SourceCidrIp should be different from the DestCidrIp.', + ], + [ + 'errorCode' => 'InvalidOperation.RuleDuplicate', + 'errorMessage' => '%s.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolNotSupportPortRangeList', + 'errorMessage' => 'The specified protocol does not support the port range list.', + ], + [ + 'errorCode' => 'InvalidSourceOrDestGroupId.DirectionMissmatch', + 'errorMessage' => 'The specified SourceGroupId or DestGroupId does not match the direction of the rule.', + ], + [ + 'errorCode' => 'InvalidOperation.ModifyPortRangeType', + 'errorMessage' => 'The PortRange type is not allowed to be modified. You cannot modify a rule from using the port list to not using it, and vice versa.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidDestGroupId.Mismatch', + 'errorMessage' => 'NicType is required or NicType expects intranet.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter DestGroupId or DestCidrIp cannot be both blank.', + ], + [ + 'errorCode' => 'AuthorizationLimitExceed', + 'errorMessage' => 'The limit of authorization records in the security group reaches.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SecurityGroupId should be different from the SourceGroupId.', + ], + [ + 'errorCode' => 'InvalidNetworkType.Conflict', + 'errorMessage' => 'The specified SecurityGroup network type should be same with SourceGroup network type (vpc or classic).', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.IsSame', + 'errorMessage' => 'The authorized SecurityGroupId should be different from the DestGroupId.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidDestGroupId.NotFound', + 'errorMessage' => 'The DestGroupId provided does not exist in our records.', + ], + [ + 'errorCode' => 'SecurityGroupRule.NotFound', + 'errorMessage' => 'The target security group rule do not exist.', + ], + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupRuleId.NotFound', + 'errorMessage' => 'The specified SecurityGroupRuleId is not exists.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7BA984\\n","errorExample":""}]', + 'title' => 'ModifySecurityGroupEgressRule', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* An authorization object in a security group rule can be of one of the following types: IPv4 CIDR block or address, IPv6 CIDR block or address, security group, or prefix list. You cannot call this operation to change the type of an existing authorization object. For example, if an authorization object is an IPv4 CIDR block, you can change the authorization object to a different IPv4 CIDR block or an IPv4 address, but you cannot change the authorization object to an IPv6 CIDR block or address, a security group, or a prefix list.'."\n" + .'* You cannot delete the value of a non-empty parameter. If you want to delete the values of non-empty parameters, we recommend that you create another rule and delete the original rule.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RevokeSecurityGroupEgress' => [ + 'summary' => 'Deletes outbound security group rules from a specified security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '29313', + 'abilityTreeNodes' => [ + 'FEATUREecs9IXIKV', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the security group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityGroupRuleId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'An array of security group rule IDs. You can specify 1 to 100 security group rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the security group rule.'."\n" + ."\n" + .'> This parameter is required if you delete a security group rule based on the ID of the security group rule.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sgr-bp67acfmxa123b***', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Permissions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The security group rules. You can specify up to 100 security group rules.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Security group rule N.'."\n", + 'type' => 'object', + 'properties' => [ + 'Policy' => [ + 'description' => 'The action of the security group rule. Valid values:'."\n" + ."\n" + .'* accept: allows access.'."\n" + .'* drop: denies access and returns no responses. In this case, the request times out or the connection cannot be established.'."\n" + ."\n" + .'Default value: accept.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'accept', + ], + 'Priority' => [ + 'description' => 'The priority of the security group rule. A smaller value specifies a higher priority. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + ], + 'IpProtocol' => [ + 'description' => 'The protocol type. The values of this parameter are case-insensitive. Valid values:'."\n" + ."\n" + .'* TCP.'."\n" + .'* UDP.'."\n" + .'* ICMP.'."\n" + .'* ICMPv6.'."\n" + .'* GRE.'."\n" + .'* ALL: All protocols are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TCP', + ], + 'DestCidrIp' => [ + 'description' => 'The destination IPv4 CIDR block of the security group rule. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + 'Ipv6DestCidrIp' => [ + 'description' => 'The destination IPv6 CIDR block of the security group rule. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'> This parameter is valid only for Elastic Compute Service (ECS) instances that reside in virtual private clouds (VPCs) and support IPv6 CIDR blocks. You cannot specify both this parameter and `DestCidrIp` in the same request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1233:1a00::***', + ], + 'DestGroupId' => [ + 'description' => 'The ID of the destination security group of the security group rule.'."\n" + ."\n" + .'* You must specify at least one of the following parameters: `DestGroupId`, `DestCidrIp`, `Ipv6DestCidrIp`, and `DestPrefixListId`.'."\n" + .'* If you specify `DestGroupId` but do not specify `DestCidrIp`, you must set `NicType` to intranet.'."\n" + .'* If you specify both `DestGroupId` and `DestCidrIp`, `DestCidrIp` takes precedence.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Advanced security groups do not support security group rules that reference security groups as authorization objects.'."\n" + .'* Each basic security group can contain up to 20 security group rules that reference security groups as authorization objects.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxa123b****', + ], + 'DestPrefixListId' => [ + 'description' => 'The ID of the destination prefix list of the security group rule. You can call the [DescribePrefixLists](~~205046~~) operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If a security group resides in the classic network, you cannot reference prefix lists in the rules of the security group. For information about the limits on security groups and prefix lists, see the [Security group limits](~~25412#SecurityGroupQuota1~~) section of the "Limits and quotas" topic.'."\n" + .'* If you specify `DestCidrIp`, `Ipv6DestCidrIp`, or `DestGroupId`, this parameter is ignored.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + 'PortRange' => [ + 'description' => 'The destination port range of the security group rule. Valid values:'."\n" + ."\n" + .'* If you set IpProtocol to TCP or UDP, the valid values of this parameter are 1 to 65535. Specify a port range in the format of \\/\\. Example: 1/200.'."\n" + .'* If you set IpProtocol to ICMP, the port range is -1/-1.'."\n" + .'* If you set IpProtocol to GRE, the port range is -1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port range is -1/-1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '22/22', + ], + 'SourceCidrIp' => [ + 'description' => 'The source IPv4 CIDR block of the security group rule. IPv4 CIDR blocks and IPv4 addresses are supported.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.0.0.0/8', + ], + 'Ipv6SourceCidrIp' => [ + 'description' => 'The source IPv6 CIDR block of the security group rule. IPv6 CIDR blocks and IPv6 addresses are supported.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n" + ."\n" + .'> This parameter is valid only for ECS instances that reside in VPCs and support IPv6 CIDR blocks. You cannot specify both this parameter and `DestCidrIp` in the same request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + 'SourcePortRange' => [ + 'description' => 'The source port range of the security group rule. Valid values:'."\n" + ."\n" + .'* If you set IpProtocol to TCP or UDP, the valid values of this parameter are 1 to 65535. Specify a port range in the format of \\/\\. Example: 1/200.'."\n" + .'* If you set IpProtocol to ICMP, the port range is -1/-1.'."\n" + .'* If you set IpProtocol to GRE, the port range is -1/-1.'."\n" + .'* If you set IpProtocol to ALL, the port range is -1/-1.'."\n" + ."\n" + .'This parameter is used to support quintuple rules. For more information, see [Security group quintuple rules](~~97439~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '22/22', + ], + 'DestGroupOwnerAccount' => [ + 'description' => 'The Alibaba Cloud account that manages the destination security group specified in the security group rule.'."\n" + ."\n" + .'* If you leave `DestGroupOwnerAccount` and `DestGroupOwnerId` empty, access control configurations are removed from another security group managed by your Alibaba Cloud account.'."\n" + .'* If you specify `DestCidrIp`, `DestGroupOwnerAccount` is invalid.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Test@aliyun.com', + ], + 'DestGroupOwnerId' => [ + 'description' => 'The ID of the Alibaba Cloud account that manages the destination security group specified in the security group rule.'."\n" + ."\n" + .'* If you leave `DestGroupOwnerId` and `DestGroupOwnerAccount` empty, access control configurations are removed from another security group managed by your Alibaba Cloud account.'."\n" + .'* If you specify `DestCidrIp`, `DestGroupOwnerId` is invalid.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '12345678910', + ], + 'NicType' => [ + 'description' => 'The network interface controller (NIC) type of the security group rule if the security group resides in the classic network. Valid values:'."\n" + ."\n" + .'* internet: public NIC.'."\n" + .'* intranet: internal NIC.'."\n" + ."\n" + .'If the security group resides in a VPC, this parameter is set to intranet by default and cannot be modified.'."\n" + ."\n" + .'If you specify `DestGroupId` to delete outbound security group rules that reference the specified security group as an authorization object, you must set this parameter to intranet.'."\n" + ."\n" + .'Default value: internet.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'intranet', + ], + 'Description' => [ + 'description' => 'The description of the security group rule. The description must be 1 to 512 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + 'PortRangeListId' => [ + 'description' => 'The ID of the port list. You can call the `DescribePortRangeLists` operation to query the IDs of available prefix lists.'."\n" + ."\n" + .'* If you specify `Permissions.N.PortRange`, this parameter is ignored.'."\n" + .'* If a security group resides in the classic network, you cannot reference port lists in the rules of the security group. For information about the limits on security groups and port lists, see the [Security group limits](~~25412#SecurityGroupQuota1~~) section of the "Limits and quotas" topic.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prl-2ze9743****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Policy', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Policy` to specify whether to allow outbound access.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'accept', + ], + ], + [ + 'name' => 'Priority', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Priority` to specify the rule priority.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'IpProtocol', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.IpProtocol` to specify the protocol.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'docRequired' => false, + 'example' => 'TCP', + ], + ], + [ + 'name' => 'DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestCidrIp` to specify the destination IPv4 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6DestCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Ipv6DestCidrIp` to specify the destination IPv6 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '2001:db8:1233:1a00::***', + ], + ], + [ + 'name' => 'DestGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestGroupId` to specify the ID of the destination security group.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'sg-bp67acfmxa123b****', + ], + ], + [ + 'name' => 'DestPrefixListId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestPrefixListId` to specify the ID of the destination prefix list.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'pl-x1j1k5ykzqlixdcy****', + ], + ], + [ + 'name' => 'PortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.PortRange` to specify the range of destination ports.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'docRequired' => false, + 'example' => '22/22', + ], + ], + [ + 'name' => 'SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourceCidrIp` to specify the source IPv4 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '10.0.0.0/8', + ], + ], + [ + 'name' => 'Ipv6SourceCidrIp', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Ipv6SourceCidrIp` to specify the source IPv6 CIDR block.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '2001:db8:1234:1a00::***', + ], + ], + [ + 'name' => 'SourcePortRange', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.SourcePortRange` to specify the range of source ports.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => '22/22', + ], + ], + [ + 'name' => 'DestGroupOwnerAccount', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestGroupOwnerAccount` to specify the Alibaba Cloud account that manages the destination security group.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'Test@aliyun.com', + ], + ], + [ + 'name' => 'DestGroupOwnerId', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.DestGroupOwnerId` to specify the ID of the Alibaba Cloud account that manages the destination security group.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'deprecated' => true, + 'required' => false, + 'example' => '12345678910', + ], + ], + [ + 'name' => 'NicType', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.NicType` to specify the network interface type.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'intranet', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'This parameter is deprecated. Use `Permissions.N.Description` to specify the rule description.'."\n", + 'type' => 'string', + 'deprecated' => true, + 'required' => false, + 'example' => 'This is description.', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidIpProtocol.ValueNotSupported', + 'errorMessage' => 'The parameter IpProtocol must be specified with case insensitive TCP, UDP, ICMP, GRE or All.', + ], + [ + 'errorCode' => 'InvalidIpPortRange.Malformed', + 'errorMessage' => 'The specified parameter PortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidDestCidrIp.sMalformed', + 'errorMessage' => 'The specified parameter DestCidrIp is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter DestGroupId or DestCidrIp cannot be both blank.', + ], + [ + 'errorCode' => 'InvalidPolicy.Malformed', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidNicType.ValueNotSupported', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidDestGroupId.Mismatch', + 'errorMessage' => 'Specified security group and destination group are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidDestCidrIp.Malformed', + 'errorMessage' => 'The specified parameter DestCidrIp is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.Dest', + 'errorMessage' => 'One of the parameters DestCidrIp, Ipv6DestCidrIp, DestGroupId or DestPrefixListId in %s must be specified.', + ], + [ + 'errorCode' => 'InvalidParam.PortRange', + 'errorMessage' => 'The specified parameter %s is not valid. It should be two integers less than 65535 in ?/? format.', + ], + [ + 'errorCode' => 'InvalidPriority.Malformed', + 'errorMessage' => 'The parameter Priority is invalid.', + ], + [ + 'errorCode' => 'InvalidPriority.ValueNotSupported', + 'errorMessage' => 'The specified parameter %s is invalid.', + ], + [ + 'errorCode' => 'InvalidParam.SourceIp', + 'errorMessage' => 'The Parameters SourceCidrIp and Ipv6SourceCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.DestIp', + 'errorMessage' => 'The Parameters DestCidrIp and Ipv6DestCidrIp in %s cannot be set at the same time.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv4ProtocolConflictWithIpv6Address', + 'errorMessage' => 'IPv6 address cannot be specified for IPv4-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParam.Ipv6ProtocolConflictWithIpv4Address', + 'errorMessage' => 'IPv4 address cannot be specified for IPv6-specific protocol.', + ], + [ + 'errorCode' => 'InvalidParameter.Ipv6CidrIp', + 'errorMessage' => 'The specified Ipv6CidrIp is not valid.', + ], + [ + 'errorCode' => 'InvalidGroupAuthParameter.OperationDenied', + 'errorMessage' => 'The security group can not authorize to enterprise level security group.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupId is not valid.', + ], + [ + 'errorCode' => 'InvalidPortRange.Malformed', + 'errorMessage' => 'The specified parameter PortRange must set.', + ], + [ + 'errorCode' => 'InvalidSourcePortRange.Malformed', + 'errorMessage' => 'The specified parameter SourcePortRange is not valid.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupDiscription.Malformed', + 'errorMessage' => 'The specified security group rule description is not valid.', + ], + [ + 'errorCode' => 'NotSupported.ClassicNetworkPrefixList', + 'errorMessage' => 'The prefix list is not supported when the network type of security group is classic.', + ], + [ + 'errorCode' => 'InvalidParam.SourceCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.DestCidrIp', + 'errorMessage' => 'The specified parameter %s is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.Permissions', + 'errorMessage' => 'The specified parameter Permissions cannot coexist with other parameters.', + ], + [ + 'errorCode' => 'InvalidParam.DuplicatePermissions', + 'errorMessage' => 'There are duplicate permissions in the specified parameter Permissions.', + ], + [ + 'errorCode' => 'InvalidParam.SecurityGroupRuleId', + 'errorMessage' => 'The specified parameter SecurityGroupRuleId is not valid.', + ], + [ + 'errorCode' => 'InvalidParam.SecurityGroupRuleIdRepeated', + 'errorMessage' => 'The specified parameter SecurityGroupRuleId is repeated.', + ], + [ + 'errorCode' => 'InvalidGroupParameter.OperationDenied', + 'errorMessage' => 'The attributes Policy, SourceGroupId, DestGroupId of enterprise level security groups are not allowed to be set or modified.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupRule.RuleNotExist', + 'errorMessage' => 'The specified rule does not exist.', + ], + [ + 'errorCode' => 'InvalidParam.ProtocolNotSupportPortRangeList', + 'errorMessage' => 'The specified protocol does not support the port range list.', + ], + [ + 'errorCode' => 'InvalidPortRangeListId.NotFound', + 'errorMessage' => 'The specified port range list was not found.', + ], + ], + [ + [ + 'errorCode' => 'InvalidOperation.SecurityGroupNotAuthorized', + 'errorMessage' => 'The specified security group is not authorized to operate.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidNicType.Mismatch', + 'errorMessage' => 'Specified nic type conflicts with the authorization record.', + ], + [ + 'errorCode' => 'InvalidGroupAuthItem.NotFound', + 'errorMessage' => 'Specified group authorized item does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSecurityGroup.IsSame', + 'errorMessage' => 'The authorized SecurityGroupId should be different from the DestGroupId.', + ], + [ + 'errorCode' => 'InvalidParamter.Conflict', + 'errorMessage' => 'The specified SecurityGroupId should be different from the SourceGroupId.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidDestGroupId.NotFound', + 'errorMessage' => 'The DestGroupId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupRuleId.NotFound', + 'errorMessage' => 'The specified SecurityGroupRuleId is not exists.', + ], + [ + 'errorCode' => 'InvalidPrefixListId.NotFound', + 'errorMessage' => 'The specified prefix list was not found.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'RevokeSecurityGroupEgress', + 'description' => '> Alibaba Cloud modified verification rules for the RevokeSecurityGroupEgress operation on July 8, 2024. When you use the RevokeSecurityGroupEgress operation to delete a security group rule that does not exist, the "InvalidSecurityGroupRule.RuleNotExist" error code is returned instead of a success response. Update the RevokeSecurityGroupEgress operation to use the new verification rules with the new error code based on your business requirements.'."\n" + ."\n" + .'You can use one of the following methods to delete a security group rule:'."\n" + ."\n" + .'* Delete a rule by specifying the IDs of security group rules. We recommend that you specify the IDs of security group rules to delete the rules.'."\n" + ."\n" + .' * If a security group rule ID that you specify does not exist, an error is reported.'."\n" + ."\n" + .'* Delete a rule by specifying the Permissions parameter.'."\n" + ."\n" + .' * If no security group rule matches the specified parameters, the call to RevokeSecurityGroup is successful but no security group rules are deleted.'."\n" + ."\n" + .' * Delete a security group rule by configuring the following parameters together:'."\n" + ."\n" + .' * One of the following parameters: DestCidrIp, Ipv6DestCidrIp, DestPrefixListId, and DestGroupId. DestCidrIp specifies the destination IPv4 CIDR block. Ipv6DestCidrIp specifies the destination IPv6 CIDR block. DestPrefixListId specifies the ID of the destination prefix list. DestGroupId specifies the destination security group.'."\n" + .' * PortRange: specifies the range of destination port numbers.'."\n" + .' * IpProtocol: specifies the protocol.'."\n" + .' * Policy: specifies the action.'."\n" + ."\n" + .'> You cannot set the security group rule ID and the Permissions parameter at the same time.'."\n" + ."\n" + .'### [](#)Sample requests'."\n" + ."\n" + .'* Delete a security group rule.'."\n" + ."\n" + .''."\n" + ."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4p****", //The security group ID.'."\n" + .' "SecurityGroupRuleId":["sgr-bpdfmk****","sgr-bpdfmg****"] //The ID of the security group rule.'."\n" + ."\n" + .'* Delete a security group rule based on the CIDR block.'."\n" + ."\n" + .''."\n" + ."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4ph***",'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "IpProtocol":"TCP", //The protocol.'."\n" + .' "DestCidrIp":"10.0.0.0/8", //The destination IPv4 CIDR block.'."\n" + .' "PortRange":"22/22", //The destination port range.'."\n" + .' "Policy":"accept" //The action. }'."\n" + .' ]'."\n" + ."\n" + .'* Delete a security group rule based on the ID of the destination security group.'."\n" + ."\n" + .''."\n" + ."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4ph***",'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "DestGroupId":"sg-bp67acfmxa123b****", //Set the ID of the target security group.'."\n" + .' "IpProtocol":"TCP",'."\n" + .' "PortRange":"22/22",'."\n" + .' "Policy":"accept"'."\n" + .' }'."\n" + .' ]'."\n" + ."\n" + .'* Delete a security group rule based on a specified prefix list.'."\n" + ."\n" + .''."\n" + ."\n" + .' "SecurityGroupId":"sg-bp67acfmxazb4ph***",'."\n" + .' "Permissions":['."\n" + .' {'."\n" + .' "IpProtocol":"TCP",'."\n" + .' "DestPrefixListId":"pl-x1j1k5ykzqlixdcy****", //The ID of the destination prefix list. "PortRange":"22/22",'."\n" + .' "Policy":"accept",'."\n" + .' }'."\n" + .' ]'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeSecurityGroupReferences' => [ + 'summary' => 'Queries the security groups whose rules reference security groups as authorization objects.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28992', + 'abilityTreeNodes' => [ + 'FEATUREecsO3Q7NU', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of security groups. You can specify up to 10 IDs of security groups.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp14vtedjtobkvi****', + ], + 'required' => true, + 'example' => 'sg-bp14vtedjtobkvi****', + 'maxItems' => 10, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'SecurityGroupReferences' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroupReference' => [ + 'description' => 'Details about the references to the specified security groups.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the references to the specified security group.'."\n", + 'type' => 'object', + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The ID of the specified security group.'."\n", + 'type' => 'string', + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'ReferencingSecurityGroups' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ReferencingSecurityGroup' => [ + 'description' => 'Details about the security groups whose rules reference the specified security group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the security group whose rules reference the specified security group.'."\n", + 'type' => 'object', + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group whose rules reference the specified security group.'."\n", + 'type' => 'string', + 'example' => 'sg-bp67acfmxazb4j****', + ], + 'AliUid' => [ + 'description' => 'The ID of the Alibaba Cloud account to which the security group whose rules reference the specified security group belongs.'."\n", + 'type' => 'string', + 'example' => '123456****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidSecurityGroupId.Malformed', + 'errorMessage' => 'The specified parameter SecurityGroupId is essential and size should less than 10', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The SecurityGroupId provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"SecurityGroupReferences\\": {\\n \\"SecurityGroupReference\\": [\\n {\\n \\"SecurityGroupId\\": \\"sg-bp67acfmxazb4p****\\",\\n \\"ReferencingSecurityGroups\\": {\\n \\"ReferencingSecurityGroup\\": [\\n {\\n \\"SecurityGroupId\\": \\"sg-bp67acfmxazb4j****\\",\\n \\"AliUid\\": \\"123456****\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n CEF72CEB-54B6-4AE8-B225-F876FF7B****\\n \\n sg-bp67acfmxazb4ph****\\n \\n 123456****\\n sg-bp67acfmxazb4pi****\\n \\n \\n 1234567890\\n sg-bp67acfmxazb4pj****\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeSecurityGroupReferences', + 'description' => '* If you cannot delete a security group by calling the [DeleteSecurityGroup](~~25558~~) operation, call the DescribeSecurityGroupReferences operation to check whether the security group is referenced by the rules of other security groups. If the security group is referenced by the rules of other security groups, you must call the [RevokeSecurityGroup](~~2679855~~) and [RevokeSecurityGroupEgress](~~2679856~~) operations to remove the references before you can delete the security group.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'JoinSecurityGroup' => [ + 'summary' => 'Adds an Elastic Compute Service (ECS) instance or an elastic network interface (ENI) to a specified security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29040', + 'abilityTreeNodes' => [ + 'FEATUREecsZSF49P', + ], + ], + 'parameters' => [ + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group. You can call the [DescribeSecurityGroups](~~25556~~) operation to query the most recent security group list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n" + ."\n" + .'> If you configure this parameter, you cannot configure `NetworkInterfaceId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ENI ID.'."\n" + ."\n" + .'> If you configure this parameter, you cannot configure `InstanceId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-bp13kd656hxambfe****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n" + ."\n" + .'* If you want to add an instance to a security group, you do not need to specify a region ID.'."\n" + .'* If you want to add an ENI to a security group, you must specify the region ID of the ENI.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InstanceSecurityGroupLimitExceeded', + 'errorMessage' => 'Exceeding the allowed amount of security groups that an instance can be in.', + ], + [ + 'errorCode' => 'InvalidInstanceId.Mismatch', + 'errorMessage' => 'Specified instance and security group are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidInstanceId.Malformed', + 'errorMessage' => 'The specified parameter "InstanceId" is not valid.', + ], + [ + 'errorCode' => 'InvalidOperation.NotSupportEnterpriseGroup', + 'errorMessage' => 'The specified instance type doesn\'t support enterprise level security group.', + ], + [ + 'errorCode' => 'InvalidOperation.MultiGroupType', + 'errorMessage' => 'The specified instance can\'t join different types of security group.', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniAndGroupNotBelongSameUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'NotBelongUser', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidStatus.EniOrInstanceIsBeingCreated', + 'errorMessage' => '%s.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'SecurityGroupInstanceLimitExceeded', + 'errorMessage' => 'The maximum number of instances in a security group is exceeded.', + ], + [ + 'errorCode' => 'InvalidInstanceId.AlreadyExists', + 'errorMessage' => 'The specified instance already exists in the specified security group.', + ], + [ + 'errorCode' => 'AclLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InstanceSecurityGroupLimitExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.NetworkInterfaceCountExceeded', + 'errorMessage' => 'The maximum number of NetworkInterface in a enterprise level security group is exceeded.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.VpcMismatch', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.EniIdAndInstanceId.Conflict', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Forbidden.InstanceIsBeingCreated', + 'errorMessage' => 'The specified instance is being created.', + ], + ], + [ + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n"}]', + 'title' => 'JoinSecurityGroup', + 'description' => '> This operation is not recommended. We recommend that you call the [ModifyInstanceAttribute](~~25503~~) operation to add an instance to or remove an instance from a security group, and call the [ModifyNetworkInterfaceAttribute](~~58513~~) operation to add an ENI to or remove an ENI from a security group.'."\n" + ."\n" + .'* An instance and an ENI cannot be added to a security group at the same time. You cannot specify `InstanceId` and `NetworkInterfaceId` at the same time in a request.'."\n" + .'* The security group and the ECS instance to be added to the security group must reside in the same region.'."\n" + .'* The security group and the instance must be of the same network type. If the network type is Virtual Private Cloud (VPC), the security group and the instance must reside in the same VPC.'."\n" + .'* Before you add an instance to a security group, the instance must be in the **Stopped** or **Running** state.'."\n" + .'* An instance can be added to up to five security groups by default. For more information, see [Security group limits](~~25412#SecurityGroupQuota1~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'LeaveSecurityGroup' => [ + 'summary' => 'Removes an Elastic Compute Service (ECS) instance or an elastic network interface (ENI) from a security group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29041', + 'abilityTreeNodes' => [ + 'FEATUREecs9IXIKV', + ], + ], + 'parameters' => [ + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The security group ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'sg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance ID.'."\n" + ."\n" + .'> If you configure this parameter, you cannot configure `NetworkInterfaceId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'i-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'NetworkInterfaceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ENI ID.'."\n" + ."\n" + .'> If you configure this parameter, you cannot configure `InstanceId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eni-bp13kd656hxambfe****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n" + ."\n" + .'* If you want to remove an instance from a security group, you do not need to specify a region ID.'."\n" + .'* If you want to remove an ENI from a security group, you must specify the ID of the region in which the ENI resides.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceId.Malformed', + 'errorMessage' => 'The specified parameter "InstanceId" is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniState', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidSecurityGroupAssociation.NotFound', + 'errorMessage' => '%s.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InstanceLastSecurityGroup', + 'errorMessage' => 'The specified security group is the last security group for the instance.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The current status of the resource does not support this operation.', + ], + [ + 'errorCode' => 'InstanceLockedForSecurity', + 'errorMessage' => 'The specified operation is denied as your instance is locked for security reasons.', + ], + [ + 'errorCode' => 'InstanceNotInSecurityGroup', + 'errorMessage' => 'The instance not in the group.', + ], + [ + 'errorCode' => 'InvalidOperation.ResourceManagedByCloudProduct', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.AtLeastInOneGroup', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.EniServiceManaged', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidOperation.InvalidEniType', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.Malformed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParam.EniIdAndInstanceId.Conflict', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The specified SecurityGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidEniId.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified virtual switch %s does not exist.', + ], + ], + 504 => [ + [ + 'errorCode' => 'RequestTimeout', + 'errorMessage' => 'The request encounters an upstream server timeout.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n"}]', + 'title' => 'LeaveSecurityGroup', + 'description' => '> This operation is not recommended. We recommend that you call the [ModifyInstanceAttribute](~~25503~~) operation to add an instance to or remove an instance from a security group, and call the [ModifyNetworkInterfaceAttribute](~~58513~~) operation to add an ENI to or remove an ENI from a security group.'."\n" + ."\n" + .'> Alibaba Cloud modified verification rules for the LeaveSecurityGroup operation on July 8, 2024. When you remove an ECS instance or ENI that does not belong to a security group from the security group, the "InvalidSecurityGroupAssociation.NotFound" error code is returned instead of a success response. Update the LeaveSecurityGroup operation to use the new verification rules with the new error code based on your business requirements.'."\n" + ."\n" + .'* You cannot remove an instance and an ENI from a security group at the same time. This indicates that you cannot specify `InstanceId` and `NetworkInterfaceId` in one request.'."\n" + .'* Before you remove an instance from a security group, the instance must be in the **Stopped** (Stopped) or **Running** (Running) state.'."\n" + .'* An instance or ENI must be added to at least one security group. If you remove an instance or ENI from the only security group, the removal request fails and an error is returned.'."\n" + .'* When you remove an instance or ENI that is not in a security group from the security group, the removal request fails and an error is returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateKeyPair' => [ + 'summary' => 'Creates an SSH key pair. The system stores the public key and returns the unencrypted private key. The private key is encoded with PEM in the PKCS#8 format. You must properly store the private key and ensure its confidentiality.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'abilityTreeCode' => '28833', + 'abilityTreeNodes' => [ + 'FEATUREecsNMEQ4B', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the key pair. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'testKeyPairName', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to add the key pair.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the key pair.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the key pair. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the key pair. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://. The tag value cannot start with acs:.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PrivateKeyBody' => [ + 'description' => 'The private key of the key pair. The private key is encoded with PEM in the PKCS#8 format.'."\n", + 'type' => 'string', + 'example' => 'MIIEpAIBAAKCAQEAtReyMzLIcBH78EV2zj****', + ], + 'KeyPairName' => [ + 'description' => 'The name of the key pair.'."\n", + 'type' => 'string', + 'example' => 'testKeyPairName', + ], + 'KeyPairId' => [ + 'description' => 'The ID of the key pair.'."\n", + 'type' => 'string', + 'example' => 'ssh-bp67acfmxazb4p****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'KeyPairFingerPrint' => [ + 'description' => 'The fingerprint of the key pair. The message-digest algorithm 5 (MD5) is used based on the public key fingerprint format defined in RFC 4716. For more information, see [RFC 4716](https://tools.ietf.org/html/rfc4716).'."\n", + 'type' => 'string', + 'example' => '89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:**', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidKeyPairName.Malformed', + 'errorMessage' => 'Specified Key Pair name is not valid.', + ], + [ + 'errorCode' => 'KeyPair.AlreadyExist', + 'errorMessage' => 'The key pair already exist.', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'QuotaExceed.KeyPair', + 'errorMessage' => 'The key pair quota exceeds.', + ], + [ + 'errorCode' => 'QuotaExceed.Tags', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The RegionId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PrivateKeyBody\\": \\"MIIEpAIBAAKCAQEAtReyMzLIcBH78EV2zj****\\",\\n \\"KeyPairName\\": \\"testKeyPairName\\",\\n \\"KeyPairId\\": \\"ssh-bp67acfmxazb4p****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"KeyPairFingerPrint\\": \\"89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:**\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n \\"KeyPairName\\": \\"test\\"\\n \\"KeyPairFingerPrint\\": \\"89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:d7\\"\\n \\"PrivateKeyBody\\": \\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n testKeyPairName\\n ssh-bp67acfmxazb4p****\\n 89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:**\\n MIIEpAIBAAKCAQEAtReyMzLIcBH78EV2zj****\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n test\\n 89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:d7\\n xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\\n"}]', + 'title' => 'CreateKeyPair', + 'description' => 'In addition to calling the CreateKeyPair operation to create a key pair, you can use a third-party tool to create a key pair and then call the [ImportKeyPair](~~51774~~) operation to upload the key pair to an Alibaba Cloud region.'."\n" + ."\n" + .'Up to 500 key pairs can be created in each region. For more information, see the "SSH key pair limits" section in [Limits](~~25412~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ImportKeyPair' => [ + 'summary' => 'Imports the public key of a Rivest-Shamir-Adleman (RSA) key pair that is generated by a third-party tool. After the key pair is imported, Alibaba Cloud stores the public key. You must securely store the private key.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'abilityTreeCode' => '29035', + 'abilityTreeNodes' => [ + 'FEATUREecsJP60NY', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair. The name must be unique. It must be 2 to 128 characters in length. It must start with a letter and cannot start with http:// or https://. It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'testKeyPairName', + ], + ], + [ + 'name' => 'PublicKeyBody', + 'in' => 'query', + 'schema' => [ + 'description' => 'The public key of the key pair.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ABC1234567', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the enterprise resource group to which the SSH key pair belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the key pair.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag to add to the key pair.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the key pair. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain [http:// or https://](http://https://。). The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the key pair. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain [http:// or https://](http://https://。). The tag value cannot start with acs:.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'KeyPairName' => [ + 'description' => 'The name of the key pair.'."\n", + 'type' => 'string', + 'example' => 'testKeyPairName', + ], + 'KeyPairFingerPrint' => [ + 'description' => 'The fingerprint of the key pair. The MD5 message-digest algorithm is used based on the public key fingerprint format defined in RFC 4716.'."\n", + 'type' => 'string', + 'example' => '89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:**', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidKeyPairName.Malformed', + 'errorMessage' => 'Specified Key Pair name is not valid.', + ], + [ + 'errorCode' => 'InvalidPublicKeyBody.Malformed', + 'errorMessage' => 'The PublicKeyBody format is not supported.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "PublicKeyBody" that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'KeyPair.AlreadyExist', + 'errorMessage' => 'The key pair already exist.', + ], + ], + 403 => [ + [ + 'errorCode' => 'QuotaExceed.KeyPair', + 'errorMessage' => 'The key pair quota exceeds.', + ], + ], + [ + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"KeyPairName\\": \\"testKeyPairName\\",\\n \\"KeyPairFingerPrint\\": \\"89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:**\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n \\"KeyPairName\\": \\"test\\"\\n \\"KeyPairFingerPrint\\": \\"89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:d7\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n testKeyPairName\\n 89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:**\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n test\\n 89:f0:ba:62:ac:b8:aa:e1:61:5e:fd:81:69:86:6d:6b:f0:c0:5a:d7\\n"}]', + 'title' => 'ImportKeyPair', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* A maximum of 500 key pairs can be created in each region.'."\n" + ."\n" + .'* The key pair to be imported must support one of the following encryption methods:'."\n" + ."\n" + .' * rsa'."\n" + .' * dsa'."\n" + .' * ssh-rsa'."\n" + .' * ssh-dss'."\n" + .' * ecdsa'."\n" + .' * '."\n" + .' * '."\n" + .' * '."\n" + .' * '."\n" + .' * '."\n" + .' * '."\n" + .' * '."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeKeyPairs' => [ + 'summary' => 'Queries one or more key pairs.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28966', + 'abilityTreeNodes' => [ + 'FEATUREecsVSX1ZN', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the key pair. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair. You can use the asterisk (\\*) symbol as a wildcard in regular expressions to perform a fuzzy search for key pairs. Sample patterns:'."\n" + ."\n" + .'* `*SshKey`: queries key pairs whose names end with SshKey, including the key pair named SshKey.'."\n" + .'* `SshKey*`: queries key pairs whose names start with SshKey, including the key pair named SshKey.'."\n" + .'* `*SshKey*`: queries key pairs whose names include SshKey, including the key pair named SshKey.'."\n" + .'* `SshKey`: queries the key pair named SshKey.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '*SshKey*', + ], + ], + [ + 'name' => 'KeyPairFingerPrint', + 'in' => 'query', + 'schema' => [ + 'description' => 'The fingerprint of the key pair. The message-digest algorithm 5 (MD5) is used based on the public key fingerprint format defined in RFC 4716. For more information, see [RFC 4716](https://tools.ietf.org/html/rfc4716).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ABC1234567', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return. Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page. Maximum value: 50.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + ], + ], + [ + 'name' => 'IncludePublicKey', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to include PublicKey in the response. Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group. If this parameter is specified to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of how this parameter is set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-amnhr7u7c7hj****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.', + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the key pair. Valid values of N: 1 to 20.'."\n" + ."\n" + .'If a single tag is specified to query resources, up to 1,000 resources that are bound with this tag can be displayed in the response. If multiple tags are specified to query resources, up to 1,000 resources that are bound with all these tags can be displayed in the response. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the key pair. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of key pairs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'KeyPairs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'KeyPair' => [ + 'description' => 'The information of the key pairs.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the key pair was created.'."\n", + 'type' => 'string', + 'example' => '2023-09-04T08:33Z', + ], + 'KeyPairName' => [ + 'description' => 'The name of the key pair.'."\n", + 'type' => 'string', + 'example' => 'testKeyPairName', + ], + 'KeyPairFingerPrint' => [ + 'description' => 'The fingerprint of the key pair.'."\n", + 'type' => 'string', + 'example' => 'ABC1234567', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-amnhr7u7c7hj****', + ], + 'PublicKey' => [ + 'description' => 'The content of the public key.'."\n", + 'type' => 'string', + 'example' => 'ssh-rsa****', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the key pair.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value of the key pair.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key of the key pair.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"KeyPairs\\": {\\n \\"KeyPair\\": [\\n {\\n \\"CreationTime\\": \\"2023-09-04T08:33Z\\",\\n \\"KeyPairName\\": \\"testKeyPairName\\",\\n \\"KeyPairFingerPrint\\": \\"ABC1234567\\",\\n \\"ResourceGroupId\\": \\"rg-amnhr7u7c7hj****\\",\\n \\"PublicKey\\": \\"ssh-rsa****\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 2\\n 1\\n \\n \\n 2023-09-04T08:33Z\\n \\n testKeyPairName\\n ABC1234567\\n \\n \\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'DescribeKeyPairs', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'AttachKeyPair' => [ + 'summary' => 'Binds an SSH key pair to one or more Linux instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '28792', + 'abilityTreeNodes' => [ + 'FEATUREecsI3PVYS', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the SSH key pair. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SSH key pair.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'testKeyPairName', + ], + ], + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of instances to which you want to bind the SSH key pair. The value can be a JSON array that consists of up to 50 instance IDs. Separate multiple instance IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["i-bp1gtjxuuvwj17zr****", "i-bp17b7zrsbjwvmfy****", … "i-bp1h6jmbefj1ytos****"]', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'KeyPairName' => [ + 'description' => 'The name of the SSH key pair.'."\n", + 'type' => 'string', + 'example' => 'testKeyPairName', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of instances to which the SSH key pair is bound.'."\n", + 'type' => 'string', + 'example' => '2', + ], + 'FailCount' => [ + 'description' => 'The number of instances to which the SSH key pair fails to be bound.'."\n", + 'type' => 'string', + 'example' => '0', + ], + 'Results' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Result' => [ + 'description' => 'An array that contains the results of the operation.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'The operation status code returned. 200 indicates that the operation was successful.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The operation information returned. When the value of Code is 200, the value of Message is successful.'."\n", + 'type' => 'string', + 'example' => 'successful', + ], + 'InstanceId' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'example' => 'i-m5eg7be9ndloji64****', + ], + 'Success' => [ + 'description' => 'Indicates whether the request was successful.'."\n", + 'type' => 'string', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidKeyPairName.NotFound', + 'errorMessage' => 'The specified KeyPairName does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceIds.ValueNotSupported', + 'errorMessage' => 'The specified parameter InstanceIds is not valid.', + ], + [ + 'errorCode' => 'DependencyViolation.IoOptimize', + 'errorMessage' => 'The specified parameter InstanceIds is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'DependencyViolation.WindowsInstance', + 'errorMessage' => 'The instance creating is windows, cannot use ssh key pair to login', + ], + [ + 'errorCode' => 'InstanceKeyPairLimitExceeded', + 'errorMessage' => 'The specified instances are beyond the permitted range.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"KeyPairName\\": \\"testKeyPairName\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": \\"2\\",\\n \\"FailCount\\": \\"0\\",\\n \\"Results\\": {\\n \\"Result\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"successful\\",\\n \\"InstanceId\\": \\"i-m5eg7be9ndloji64****\\",\\n \\"Success\\": \\"true\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}"},{"type":"xml","example":"\\n\\t2\\n\\t4ADF7A06-66BD-4FBF-A2ED-2364E41D8C06\\n\\t\\n\\t\\t\\n\\t\\t\\tsuccessful\\n\\t\\t\\ti-m5eg7be9ndloji64****\\n\\t\\t\\ttrue\\n\\t\\t\\t200\\n\\t\\t\\n\\t\\t\\n\\t\\t\\tsuccessful\\n\\t\\t\\ti-m5e25x2mwr0hk33d****\\n\\t\\t\\ttrue\\n\\t\\t\\t200\\n\\t\\t\\n\\t\\n\\t0\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n"}]', + 'title' => 'AttachKeyPair', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* SSH key pairs are not supported on Windows instances.'."\n" + .'* If an SSH key pair is bound to an instance, authentication by using the username and password is disabled for the instance.'."\n" + .'* If you bind an SSH key pair to an instance in the **running** state, you must call the [RebootInstance](~~25502~~) operation to restart the instance for the key pair to take effect.'."\n" + .'* If you bind an SSH key pair to an instance in the **stopped** state, you must call the [StartInstance](~~25500~~) operation to start the instance for the key pair to take effect.'."\n" + .'* If an instance is already bound to an SSH key pair, the new SSH key pair will replace the original one.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DetachKeyPair' => [ + 'summary' => 'Unbinds an SSH key pair from Linux Elastic Compute Service (ECS) instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29022', + 'abilityTreeNodes' => [ + 'FEATUREecsI3PVYS', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the SSH key pair. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SSH key pair.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'testKeyPairName', + ], + ], + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of instances from which you want to unbind the SSH key pair. The value can be a JSON array that consists of up to 50 instance IDs. Separate multiple instance IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["i-bp1d6tsvznfghy7y****", "i-bp1ippxbaql9zet7****", … "i-bp1ib7bcz07l****"]', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'KeyPairName' => [ + 'description' => 'The name of the key pair.'."\n", + 'type' => 'string', + 'example' => 'testKeyPairName', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of instances from which you want to unbind the SSH key pair.'."\n", + 'type' => 'string', + 'example' => '2', + ], + 'FailCount' => [ + 'description' => 'The number of instances from which the SSH key pair failed to be unbound.'."\n", + 'type' => 'string', + 'example' => '0', + ], + 'Results' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Result' => [ + 'description' => 'The result set of the unbind operation.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Code' => [ + 'description' => 'The operation status code that is returned. 200 indicates that the operation is successful.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The result of the operation. For example, if the value of `Code` is 200, the value of `Message` is `successful`.'."\n", + 'type' => 'string', + 'example' => 'successful', + ], + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp1d6tsvznfghy7y****', + ], + 'Success' => [ + 'description' => 'Indicates whether the operation is successful.'."\n", + 'type' => 'string', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidKeyPairName.NotFound', + 'errorMessage' => 'The specified KeyPairName does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidInstanceIds.ValueNotSupported', + 'errorMessage' => 'The specified parameter InstanceIds is not valid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'DependencyViolation.WindowsInstance', + 'errorMessage' => 'The instance creating is windows, cannot use ssh key pair to login.', + ], + [ + 'errorCode' => 'InstanceKeyPairLimitExceeded', + 'errorMessage' => 'The specified instances are beyond the permitted range.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"KeyPairName\\": \\"testKeyPairName\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": \\"2\\",\\n \\"FailCount\\": \\"0\\",\\n \\"Results\\": {\\n \\"Result\\": [\\n {\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"successful\\",\\n \\"InstanceId\\": \\"i-bp1d6tsvznfghy7y****\\",\\n \\"Success\\": \\"true\\"\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}"},{"type":"xml","example":"\\n\\t2\\n\\t834B3E6B-2D1D-482F-81A4-810C327D4735\\n\\t\\n\\t\\t\\n\\t\\t\\tsuccessful\\n\\t\\t\\ti-m5eg7be9ndloji64****\\n\\t\\t\\ttrue\\n\\t\\t\\t200\\n\\t\\t\\n\\t\\t\\n\\t\\t\\tsuccessful\\n\\t\\t\\ti-m5e25x2mwr0hk33d****\\n\\t\\t\\ttrue\\n\\t\\t\\t200\\n\\t\\t\\n\\t\\n\\t0\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n"}]', + 'title' => 'DetachKeyPair', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* After you unbind an SSH key pair from an instance, you must call the [RebootInstance](~~25502~~) operation to restart the instance to allow the unbind operation to take effect.'."\n" + .'* After you unbind an SSH key pair from an instance, the username and password authentication method is selected for the instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteKeyPairs' => [ + 'summary' => 'Deletes one or more SSH key pairs.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28874', + 'abilityTreeNodes' => [ + 'FEATUREecsNMEQ4B', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'KeyPairNames', + 'in' => 'query', + 'schema' => [ + 'description' => 'The names of SSH key pairs. The value can be a JSON array that consists of up to 100 SSH key pair names. Separate the names with commas (,).'."\n" + ."\n" + .'> Before you delete an SSH key pair, you can call the [DescribeKeyPairs](~~51773~~) operation to query existing key pairs.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["skp-bp67acfmxazb41****", "skp-bp67acfmxazb42****", … "skp-bp67acfmxazb4p3***"]', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "KeyPairNames" that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidKeyPairNames.ValueNotSupported', + 'errorMessage' => 'The specified parameter "KeyPairNames" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.KeypairAlreadyAttachedInstance', + 'errorMessage' => 'The specified parameter "KeyPairNames" attached to instances can not be deleted.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InstanceKeyPairLimitExceeded', + 'errorMessage' => 'Exceeding the allowed amount of instance which will be deleted.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}"},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n"}]', + 'title' => 'DeleteKeyPairs', + 'description' => 'When you call this operation, take note of the following items:'."\n" + ."\n" + .'* After an SSH key pair is deleted, you cannot query the SSH key pair by calling the [DescribeKeyPairs](~~51773~~) operation.'."\n" + .'* If an SSH key pair is bound to one or more Elastic Compute Service (ECS) instances, the SSH key pair cannot be deleted.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateLaunchTemplate' => [ + 'summary' => 'Creates a launch template. A launch template eliminates the need to configure a large number of parameters every time you create an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29253', + 'abilityTreeNodes' => [ + 'FEATUREecsIZ42RQ', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the launch template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'TemplateTag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the launch template.'."\n" + ."\n" + .'> You can add tags to or query the tags of launch templates by calling API operations. You cannot add tags to or query the tags of launch templates in the ECS console.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the launch template.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the launch template. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the launch template. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the launch template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'LaunchTemplateName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the launch template. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'testLaunchTemplateName', + ], + ], + [ + 'name' => 'VersionDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the launch template version. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testVersionDescription', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image to use to create the instance. You can call the [DescribeImages](~~25534~~) operation to query available images.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'win2008r2_64_ent_sp1_en-us_40G_alibase_20170915.vhd', + ], + ], + [ + 'name' => 'ImageOwnerAlias', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source of the image. Valid values:'."\n" + ."\n" + .'* system: public image provided by Alibaba Cloud.'."\n" + .'* self: custom image that you created.'."\n" + .'* others: shared image from another Alibaba Cloud account.'."\n" + .'* marketplace:[Alibaba Cloud Marketplace](https://marketplace.alibabacloud.com/) image. If Alibaba Cloud Marketplace images are available, you can use the images without the need to subscribe to the images. Take note of the billing details of Alibaba Cloud Marketplace images.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'system', + ], + ], + [ + 'name' => 'PasswordInherit', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use the preset password of the image.'."\n" + ."\n" + .'> If you set the PasswordInherit parameter to true, make sure that you leave the Password parameter empty and the selected image has a preset password.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type of the instance. For more information, see [Instance families](~~25378~~). Alternatively, you can call the [DescribeInstanceTypes](~~25620~~) operation to query the most recent instance type list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group to which to assign the instance. Instances in the same security group can communicate with each other. A security group can contain up to 1,000 instances.'."\n" + ."\n" + .'> You cannot specify both the `SecurityGroupId` and `SecurityGroupIds.N` parameters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp12433upq1y5scen****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which to connect the instance. This parameter is required if you specify the VpcId parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1s5fnvk4gn2tws0****', + ], + ], + [ + 'name' => 'InstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance name. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-). The default value of this parameter is the `InstanceId` value.'."\n" + ."\n" + .'When you create multiple ECS instances at a time, you can batch configure sequential names for the instances. The instance names can contain square brackets (\\[]) and commas (,). For more information, see [Batch configure sequential names or hostnames for multiple instances](~~196048~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'k8s-node-[1,4]-alibabacloud', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance description. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testECSDescription', + ], + ], + [ + 'name' => 'InternetMaxBandwidthIn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum inbound public bandwidth. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* When the purchased outbound public bandwidth is less than or equal to 10 Mbit/s, the valid values of this parameter are 1 to 10 and the default value is 10.'."\n" + .'* When the purchased outbound public bandwidth is greater than 10 Mbit/s, the valid values of this parameter are 1 to the `InternetMaxBandwidthOut` value and the default value is the `InternetMaxBandwidthOut` value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s. Valid values: 0 to 100.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'HostName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance hostname.'."\n" + ."\n" + .'* The hostname cannot start or end with a period (.) or hyphen (-). It cannot contain consecutive periods (.) or hyphens (-).'."\n" + .'* For Windows instances, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. It can contain letters, digits, and hyphens (-).'."\n" + .'* For instances that run other operating systems such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate the hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testHostName', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the zone in which to create the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'SystemDisk.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_essd: Enterprise SSD (ESSD). You can use `SystemDisk.PerformanceLevel` to set the performance level of the ESSD to use as the system disk.'."\n" + .'* cloud_auto: ESSD AutoPL disk.'."\n" + .'* cloud_essd_entry: ESSD Entry disk.'."\n" + ."\n" + .'For non-I/O optimized instances of retired instance types, the default value is cloud. For other types of instances, the default value is cloud_efficiency.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'SystemDisk.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the system disk. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values if you set SystemDisk.Category to cloud: 20 to 500.'."\n" + .'* Valid values if you set SystemDisk.Category to other disk categories: 20 to 2048.'."\n" + ."\n" + .'The value of this parameter must be at least 20 and greater than or equal to the size of the image.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '40', + ], + ], + [ + 'name' => 'SystemDisk.DiskName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the system disk. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testSystemDiskName', + ], + ], + [ + 'name' => 'SystemDisk.Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the system disk. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testSystemDiskDescription', + ], + ], + [ + 'name' => 'SystemDisk.Iops', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is unavailable for general users.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'SystemDisk.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the ESSD to use as the system disk. Default value: PL0. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'For more information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL0', + ], + ], + [ + 'name' => 'SystemDisk.DeleteWithInstance', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the system disk when the instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'SystemDisk.AutoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy to apply to the system disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-gc7c37d4ylw7mtnk****', + ], + ], + [ + 'name' => 'SystemDisk.ProvisionedIops', + 'in' => 'query', + 'schema' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk to use as the system disk. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}'."\n" + ."\n" + .'> This parameter is available only if you set the SystemDisk.Category parameter to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~) and [Modify the performance configurations of an ESSD AutoPL disk](~~413275~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '50000', + ], + ], + [ + 'name' => 'SystemDisk.BurstingEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the performance burst feature for the system disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to create an I/O optimized instance. Valid values:'."\n" + ."\n" + .'* none: creates a non-I/O optimized instance.'."\n" + .'* optimized: creates an I/O optimized instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optimized', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription. If you set this parameter to PrePaid, make sure that your account has sufficient credits.Otherwise, an `InvalidPayMethod` error is returned.'."\n" + .'* PostPaid: pay-as-you-go.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription duration of the instance. Unit: months. This parameter is valid and required only when `InstanceChargeType` is set to `PrePaid`. Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, and 60.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth: pay-by-bandwidth'."\n" + .'* PayByTraffic: pay-by-traffic'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method for network usage is used, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios where demand outstrips resource supplies, these maximum bandwidths may be limited. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + ], + ], + [ + 'name' => 'EnableVmOsConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the operating system configuration of the instance.'."\n" + ."\n" + .'> This parameter will be removed in the future. To ensure future compatibility, we recommend that you use other parameters.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the instance. Valid values:'."\n" + ."\n" + .'* classic: classic network'."\n" + .'* vpc: VPC'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'UserData', + 'in' => 'query', + 'schema' => [ + 'description' => 'The user data of the instance. The user data must be encoded in Base64. The maximum size of raw data is 32 KB.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ZWNobyBoZWxsbyBlY3Mh', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair. This parameter is empty by default.'."\n" + ."\n" + .'* For Windows instances, this parameter is ignored The `Password` parameter takes effect even if the KeyPairName parameter is specified.'."\n" + .'* For Linux instances, the password-based logon method is disabled by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testKeyPairName', + ], + ], + [ + 'name' => 'RamRoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance Resource Access Management (RAM) role. You can call the [ListRoles](~~28713~~) operation provided by RAM to query the instance RAM roles that you created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testRamRoleName', + ], + ], + [ + 'name' => 'AutoReleaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The automatic release time of the instance. Specify the time in the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" + ."\n" + .'* If the value of `ss` is not `00`, the time is automatically rounded down to the nearest minute based on the value of `mm`.'."\n" + .'* The specified time must be at least 30 minutes later than the current time.'."\n" + .'* The specified time can be at most three years later than the current time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2018-01-01T12:05:00Z', + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. This parameter is valid only when the `InstanceChargeType` parameter is set to `PostPaid`. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is a regular pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is created as a spot instance with a user-defined maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is created as a spot instance for which the market price at the time of purchase is automatically used as the bidding price.', + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + ], + ], + [ + 'name' => 'SpotPriceLimit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum hourly price of the instance. The value is accurate to three decimal places. This parameter is valid only when the `SpotStrategy` parameter is set to `SpotWithPriceLimit`.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'maximum' => '999999', + 'minimum' => '0', + 'example' => '0.97', + ], + ], + [ + 'name' => 'SpotDuration', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Default value: 1. Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance runs for 1 hour. The system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released. Spot instances are billed by second. We recommend that you specify a protection period based on your business requirements.'."\n" + ."\n" + .'> This parameter takes effect only if SpotStrategy is set to SpotWithPriceLimit or SpotAsPriceGo.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the instance, Elastic Block Storage (EBS) device, and elastic network interface (ENI).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'TemplateResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the launch template belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityEnhancementStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable security hardening for the operating system. Valid values:'."\n" + ."\n" + .'* Active: enables security hardening. This value is applicable only to public images.'."\n" + .'* Deactive: does not enable security hardening. This value is applicable to all images.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Deactive', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The private IP address to assign to the instance.'."\n" + ."\n" + .'To assign a private IP address to an instance that resides in a VPC, make sure that the IP address is an idle IP address within the CIDR block of the vSwitch specified by the `VSwitchId` parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.1.**.**', + ], + ], + [ + 'name' => 'DeploymentSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the deployment set to which to deploy the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ds-bp1brhwhoqinyjd6****', + ], + ], + [ + 'name' => 'Ipv6AddressCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv6 addresses to randomly generate for the primary elastic network interface (ENI). Valid values: 1 to 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'DataDisk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The data disks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Data disk N.'."\n", + 'type' => 'object', + 'properties' => [ + 'PerformanceLevel' => [ + 'description' => 'The performance level of the ESSD to use as data disk N. The value of N must be the same as that in `DataDisk.N.Category` when DataDisk.N.Category is set to cloud_essd. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10000 random read/write IOPS.'."\n" + .'* PL1 (default): A single ESSD can deliver up to 50000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1000000 random read/write IOPS.'."\n" + ."\n" + .'For information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + 'Description' => [ + 'description' => 'The description of data disk N. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDataDiskDescription', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot to use to create data disk N. Valid values of N: 1 to 16. If you specify `DataDisk.N.SnapshotId`, `DataDisk.N.Size` is ignored. The data disk is created with the size of the specified snapshot.'."\n" + ."\n" + .'> Use snapshots created on or after July 15, 2013. Otherwise, an error is returned and your request is rejected.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp17441ohwka0yuh****', + ], + 'Size' => [ + 'description' => 'The size of data disk N. Valid values of N: 1 to 16. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud: 5 to 2000.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_efficiency: 20 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_ssd: 20 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_essd: vary based on the value of `DataDisk.N.PerformanceLevel`.'."\n" + ."\n" + .' * Valid values if DataDisk.N.PerformanceLevel is set to PL0: 1 to 32768.'."\n" + .' * Valid values if DataDisk.N.PerformanceLevel is set to PL1: 20 to 32768.'."\n" + .' * Valid values if DataDisk.N.PerformanceLevel is set to PL2: 461 to 32768.'."\n" + .' * Valid values if you set DataDisk.N.PerformanceLevel to PL3: 1261 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_auto: 1 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_essd_entry: 10 to 32768.'."\n" + ."\n" + .'The value of this parameter must be greater than or equal to the size of the snapshot specified by `SnapshotId`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + 'Device' => [ + 'description' => 'The mount point of data disk N. The mount points are named based on the number of data disks:'."\n" + ."\n" + .'* 1st to 25th data disks: /dev/xvd`[b-z]`.'."\n" + .'* From the 26th data disk on: /dev/xvd`[aa-zz]`. For example, the 26th data disk is named /dev/xvdaa, the 27th data disk is named /dev/xvdab, and so on.'."\n" + ."\n" + .'> This parameter is applicable to scenarios in which a full image is used to create instances. A full image is an image that contains an operating system, application software, and business data. For these scenarios, you can set the parameter to the mount point of data disk N contained in the full image and modify `DataDisk.N.Size` and `DataDisk.N.Category` to change the category and size of data disk N created based on the image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'DiskName' => [ + 'description' => 'The name of data disk N. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDataDiskName', + ], + 'Category' => [ + 'description' => 'The category of data disk N. Valid values:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: utra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: ESSD'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* cloud_essd_entry: ESSD Entry disk'."\n" + ."\n" + .'For I/O optimized instances, the default value is cloud_efficiency. For non-I/O optimized instances, the default value is cloud.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + 'DeleteWithInstance' => [ + 'description' => 'Specifies whether to release data disk N when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'Encrypted' => [ + 'description' => 'Specifies whether to encrypt data disk N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy to apply to data disk N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-m5e7fa9ute44ssa****', + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set DiskCategory to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~) and [Modify the performance configurations of an ESSD AutoPL disk](~~413275~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '50000', + ], + 'BurstingEnabled' => [ + 'description' => 'Specifies whether to enable the performance burst feature for the system disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key used for the data disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'NetworkInterface', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information of the ENIs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information of ENI N.'."\n", + 'type' => 'object', + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which to connect ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Valid values of N: 1 and 2. If the value of N is 1, you can configure a primary or secondary ENI. If the value of N is 2, you must configure a primary ENI and a secondary ENI.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, you must specify this parameter. In this case, this parameter is equivalent to `VSwitchId`. You cannot specify both NetworkInterface.N.VSwitchId and `VSwitchId` in the same request.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you do not need to specify this parameter. The default value is the VSwitchId value.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1s5fnvk4gn2tws0****', + ], + 'NetworkInterfaceName' => [ + 'description' => 'The name of ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Valid values of N: 1 and 2. If the value of N is 1, you can configure a primary or secondary ENI. If the value of N is 2, you must configure a primary ENI and a secondary ENI.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, you do not need to specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testEniName', + ], + 'Description' => [ + 'description' => 'The description of the secondary ENI. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`. The value of N in `NetworkInterface.N` cannot be greater than 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testEniDescription', + ], + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group to which to assign ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Valid values of N: 1 and 2. If the value of N is 1, you can configure a primary or secondary ENI. If the value of N is 2, you must configure a primary ENI and a secondary ENI.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, you must specify this parameter. In this case, this parameter is equivalent to `SecurityGroupId`, and you cannot specify `SecurityGroupId`, `SecurityGroupIds.N`, or `NetworkInterface.N.SecurityGroupIds.N`.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you do not need to specify this parameter. The default value is the ID of the security group to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg****', + ], + 'PrimaryIpAddress' => [ + 'description' => 'The primary IP address to assign to ENI N.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* Valid values of N: 1 and 2.'."\n" + ."\n" + .' * If the value of N is 1, you can configure a primary or secondary ENI. If you specify this parameter, set `Amount` to a numeric value greater than 1, and set NetworkInterface.N.InstanceType to Primary, the specified number of instances are created and consecutive primary IP addresses starting from the specified IP address are assigned to the instances. In this case, you cannot attach secondary ENIs to the instances.'."\n" + .' * If the value of N is 2, you must configure a primary ENI and a secondary ENI. If you specify this parameter, set `Amount` to a numeric value greater than 1, and set NetworkInterface.N.InstanceType to Primary, you cannot set `NetworkInterface.2.InstanceType` to Secondary to attach a secondary ENI.'."\n" + ."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, this parameter is equivalent to `PrivateIpAddress`. You cannot specify both this parameter and `PrivateIpAddress` in the same request.'."\n" + ."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, the specified primary IP address is assigned to the secondary ENI. The default value is an IP address that is randomly selected from within the CIDR block of the vSwitch to which to connect the secondary ENI.'."\n" + ."\n" + .'> You can attach only a single secondary ENI when you create an instance. After the instance is created, you can call the [CreateNetworkInterface](~~58504~~) and [AttachNetworkInterface](~~58515~~) operations to attach more secondary ENIs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.**.**', + ], + 'SecurityGroupIds' => [ + 'description' => 'The IDs of security groups to which to assign ENI N.'."\n" + ."\n" + .'* Valid values of the first N: 1 and 2. If the value of N is 1, you can configure a primary or secondary ENI. If the value of N is 2, you must configure a primary ENI and a secondary ENI.'."\n" + .'* The second N in this parameter indicates that one or more security group IDs can be specified. The valid values of N vary based on the maximum number of security groups to which an instance can belong. For more information, see the [Security group limits](~~25412#SecurityGroupQuota1~~) section of the "Limits" topic.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, you must specify this parameter or `NetworkInterface.N.SecurityGroupId`. In this case, this parameter is equivalent to `SecurityGroupIds.N`, and you cannot specify `SecurityGroupId`, `SecurityGroupIds.N`, or `NetworkInterface.N.SecurityGroupId`.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you do not need to specify this parameter. The default value is the ID of the security group to which to assign the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N to which to assign ENI N.'."\n" + ."\n" + .'* Valid values of the first N: 1 and 2. If the value of N is 1, you can configure a primary or secondary ENI. If the value of N is 2, you must configure a primary ENI and a secondary ENI.'."\n" + .'* The second N in this parameter indicates that one or more security group IDs can be specified. The valid values of N vary based on the maximum number of security groups to which an instance can belong. For more information, see the [Security group limits](~~25412#SecurityGroupQuota1~~) section of the "Limits" topic.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Primary`, you must specify this parameter or `NetworkInterface.N.SecurityGroupId`. In this case, this parameter is equivalent to `SecurityGroupIds.N`, and you cannot specify `SecurityGroupId`, `SecurityGroupIds.N`, or `NetworkInterface.N.SecurityGroupId`.'."\n" + .'* If you set `NetworkInterface.N.InstanceType` to `Secondary` or leave NetworkInterface.N.InstanceType empty, you do not need to specify this parameter. The default value is the ID of the security group to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + 'maxItems' => 16, + ], + 'InstanceType' => [ + 'description' => 'The type of ENI N. Valid values of N: 1 and 2. If the value of N is 1, you can configure a primary or secondary ENI. If the value of N is 2, you must configure a primary ENI and a secondary ENI.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Primary'."\n" + .'* Secondary'."\n" + ."\n" + .'Default value: Secondary.'."\n", + 'type' => 'string', + 'required' => false, + 'docRequired' => false, + 'example' => 'ecs.g5.large', + ], + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of the primary ENI. Valid values:'."\n" + ."\n" + .'* Standard: uses the TCP communication mode.'."\n" + .'* HighPerformance: uses the remote direct memory access (RDMA) communication mode with Elastic RDMA Interface (ERI) enabled.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + 'DeleteOnRelease' => [ + 'description' => 'Specifies whether to release ENI N when the instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'> This parameter takes effect only for secondary ENIs.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 8, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the instance, disks, and primary ENI that are created from the launch template.'."\n" + ."\n" + .'**Scenario**'."\n" + ."\n" + .'If you created a launch template by calling the CreateLaunchTemplate operation and use the default version that is automatically generated for the launch template to create instances, the specified tags are automatically added to the created instances, disks, and primary ENIs. For more information about the default versions of launch templates, see \\[xxxx]\\(url).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the instance, disks, and primary ENI that are created from the launch template.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the instance, disks, and primary ENI that are created from the launch template. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the instance, disks, and primary ENI that are created from the launch template. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'SecurityGroupIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the security groups to which to assign the instance. The valid values of N are based on the maximum number of security groups to which the instance can belong. For more information, see the "Security group limits" section in [Limits](~~25412~~).'."\n" + ."\n" + .'> You cannot specify both the `SecurityGroupId` and `SecurityGroupIds.N` parameters.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N to which to assign the instance. The valid values of N are based on the maximum number of security groups to which the instance can belong. For more information, see the "Security group limits" section in [Limits](~~25412~~).'."\n" + ."\n" + .'> You cannot specify both the `SecurityGroupId` and `SecurityGroupIds.N` parameters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + ], + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + 'maxItems' => 16, + ], + ], + [ + 'name' => 'SystemDisk.Encrypted', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to encrypt the system disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> If you create an instance in Hong Kong Zone D or Singapore Zone A, you cannot encrypt the system disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DeletionProtection', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable release protection for the instance. This parameter specifies whether you can use the ECS console or call the [DeleteInstance](~~25507~~) operation to release the instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This parameter is applicable only to pay-as-you-go instances. The release protection feature can protect instances against manual releases, but not against automatic releases.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'CreditSpecification', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard: the standard mode. For more information, see the "Standard mode" section in [Overview of burstable instances](~~59977~~).'."\n" + .'* Unlimited: the unlimited mode. For more information, see the "Unlimited mode" section in [Overview of burstable instances](~~59977~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This parameter takes effect only if you set `InstanceChargeType` to `PrePaid`.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'AutoRenewPeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal period of the instance. Valid values:'."\n" + ."\n" + .'Valid values when PeriodUnit is set to Month: 1, 2, 3, 6, 12, 24, 36, 48, and 60.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the subscription period. Valid values:'."\n" + ."\n" + .'Month (default)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'HttpEndpoint', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the access channel for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: enabled.'."\n" + ."\n" + .'> For information about instance metadata, see [Obtain information about an ECS instance, such as instance attributes inside ECS instances from instance metadata service](~~108460~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'enabled', + ], + ], + [ + 'name' => 'HttpTokens', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully use the security hardening mode (IMDSv2) to access instance metadata. Valid values:'."\n" + ."\n" + .'* optional: does not forcefully use the security hardening mode (IMDSv2).'."\n" + .'* required: forcefully uses the security hardening mode (IMDSv2). After you set this parameter to required, you cannot access instance metadata in normal mode.'."\n" + ."\n" + .'Default value: optional.'."\n" + ."\n" + .'> For information about the modes of accessing instance metadata, see [Obtain information about an ECS instance, such as instance attributes inside ECS instances from instance metadata service](~~108460~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optional', + ], + ], + [ + 'name' => 'HttpPutResponseHopLimit', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + ], + [ + 'name' => 'SystemDisk.KMSKeyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the KMS key to use for the system disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + ], + [ + 'name' => 'ImageOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'Details about the image options.'."\n", + 'type' => 'object', + 'properties' => [ + 'LoginAsNonRoot' => [ + 'description' => 'Specifies whether the instance that uses the image supports logons of the ecs-user user. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'SecurityOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'TrustedSystemMode' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'LaunchTemplateId' => [ + 'description' => 'The ID of the launch template.'."\n", + 'type' => 'string', + 'example' => 'lt-m5eiaupmvm2op9d****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'LaunchTemplateVersionNumber' => [ + 'description' => 'The version number of the launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '2', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegion.NotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidLaunchTemplateName.Malformed', + 'errorMessage' => 'The specified parameter LaunchTemplateName is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter "VersionDescription" is not valid.', + ], + [ + 'errorCode' => 'InvalidUserData.SizeExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidUserData.Base64FormatInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidHostName.Malformed', + 'errorMessage' => 'The specified parameter "HostName" is not valid.', + ], + [ + 'errorCode' => 'InvalidParams.CreateEniParams', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'LaunchTemplateLimitExceed', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'LaunchTemplateName.Duplicated', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'QuotaExceed.Tags', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"LaunchTemplateId\\": \\"lt-m5eiaupmvm2op9d****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"LaunchTemplateVersionNumber\\": 20\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n lt-m5eiaupmvm2op9d****\\n 2\\n","errorExample":""}]', + 'title' => 'CreateLaunchTemplate', + 'description' => 'After you create a launch template by calling the CreateLaunchTemplate operation, a default version that has a version number of 1 is automatically generated for the launch template. You can call the `CreateLaunchTemplateVersion` operation to create additional versions for the launch template. Version numbers start from 1 and increment by 1. If you specify a launch template but do not specify a launch template version number when you call the [RunInstances](~~63440~~) operation to create instances, the default version of the launch template is used.'."\n" + ."\n" + .'Launch templates contain preset configurations that are used to create instances, such as the region ID, image ID, instance type, security group ID, and public bandwidth settings. If a specific parameter is not included in a launch template, you need to manually specify the parameter when you use the launch template to create instances.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You can retain up to 30 launch templates in each region in your Alibaba Cloud account. Each launch template can have up to 30 versions.'."\n" + .'* Most parameters in launch templates are optional. When you create a launch template, ECS does not verify the existence or validity of specified parameter values. The parameter values are verified only when you use the launch template to create instances.'."\n" + .'* If you configured a specific parameter in a launch template, you cannot filter out the parameter when you call the [RunInstances](~~63440~~) operation to create instances from the launch template. For example, if you set `HostName` to LocalHost in a launch template but do not specify `HostName` when you call the `RunInstances` operation to create instances from the launch template, the hostname of the created instances is `LocalHost`. If you want to overwrite `LocalHost`, which is the value of HostName in the launch template, you can set `HostName` to MyHost or a different value when you call the `RunInstances` operation.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeLaunchTemplates' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28967', + 'abilityTreeNodes' => [ + 'FEATUREecsIZ42RQ', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the launch template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'TemplateTag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the launch template.'."\n" + ."\n" + .'> You can only call API operations to add tags to and query the tags of a launch template. You cannot add tags to or view the tags of a launch template in the ECS console.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N of the launch template.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the launch template. Valid values of N: 1 to 20.'."\n" + ."\n" + .'If you specify a single tag to query resources, up to 1,000 resources to which the tag is added are returned. If you specify multiple tags to query resources, up to 1,000 resources to which all specified tags are added are returned. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the launch template. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Page starts from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'TemplateResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the launch template belongs. If you specify this parameter to query resources, up to 1,000 resources that belong to the specified resource group can be returned.'."\n" + ."\n" + .'> The default resource group is not supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-acfmxazb4p****', + ], + ], + [ + 'name' => 'LaunchTemplateId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of launch templates.'."\n" + ."\n" + .'* You can query up to 100 launch templates.'."\n" + .'* You must specify LaunchTemplateId or LaunchTemplateName to specify a launch template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the launch template.'."\n" + ."\n" + .'* You can query up to 100 launch templates.'."\n" + .'* You must specify LaunchTemplateId or LaunchTemplateName to specify a launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'lt-m5e3ofjr1zn1aw7q****', + ], + 'required' => false, + 'example' => 'lt-m5e3ofjr1zn1aw7q****', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'LaunchTemplateName', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The names of launch templates.'."\n" + ."\n" + .'* You can query up to 100 launch templates.'."\n" + .'* You must specify LaunchTemplateId or LaunchTemplateName to specify a launch template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The name of the launch template.'."\n" + ."\n" + .'* You can query up to 100 launch templates.'."\n" + .'* You must specify LaunchTemplateId or LaunchTemplateName to specify a launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'wd-152630748****', + ], + 'required' => false, + 'example' => 'wd-152630748****', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '04F0F334-1335-436C-A1D7-6C044FE12CBA', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of launch templates.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'LaunchTemplateSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LaunchTemplateSet' => [ + 'description' => 'The queried launch templates.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the launch template.'."\n", + 'type' => 'object', + 'properties' => [ + 'LaunchTemplateName' => [ + 'description' => 'The name of the launch template.'."\n", + 'type' => 'string', + 'example' => 'wd-152630748****', + ], + 'DefaultVersionNumber' => [ + 'description' => 'The default version number of the launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'ModifiedTime' => [ + 'description' => 'The time when a version was added to or deleted from the launch template.'."\n" + ."\n" + .'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' => '2018-05-14T14:18:00Z', + ], + 'LaunchTemplateId' => [ + 'description' => 'The ID of the launch template.'."\n", + 'type' => 'string', + 'example' => 'lt-m5e3ofjr1zn1aw7q****', + ], + 'CreateTime' => [ + 'description' => 'The time when the launch template was created.'."\n" + ."\n" + .'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' => '2018-05-14T14:18:00Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the launch template belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-acfmxazb4p****', + ], + 'CreatedBy' => [ + 'description' => 'The ID of the Alibaba Cloud account that created the launch template.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + 'LatestVersionNumber' => [ + 'description' => 'The latest version number of the launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the launch template.'."\n" + ."\n" + .'> You can only call API operations to add tags to and query the tags of a launch template. You cannot add tags to or view the tags of a launch template in the ECS console.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag of the launch template.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag key of the launch template.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag value of the launch template.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegion.NotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InnerServiceFailed', + 'errorMessage' => '%s', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + 503 => [ + [ + 'errorCode' => 'ServiceUnavailable', + 'errorMessage' => 'The request has failed due to a temporary failure of the server.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE12CBA\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"LaunchTemplateSets\\": {\\n \\"LaunchTemplateSet\\": [\\n {\\n \\"LaunchTemplateName\\": \\"wd-152630748****\\",\\n \\"DefaultVersionNumber\\": 1,\\n \\"ModifiedTime\\": \\"2018-05-14T14:18:00Z\\",\\n \\"LaunchTemplateId\\": \\"lt-m5e3ofjr1zn1aw7q****\\",\\n \\"CreateTime\\": \\"2018-05-14T14:18:00Z\\",\\n \\"ResourceGroupId\\": \\"rg-acfmxazb4p****\\",\\n \\"CreatedBy\\": \\"20169351435666****\\",\\n \\"LatestVersionNumber\\": 1,\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\r\\n\\t04F0F334-1335-436C-A1D7-6C044FE12CBA\\r\\n\\t1\\r\\n\\t1\\r\\n\\t10\\r\\n\\t\\r\\n\\t\\t\\r\\n\\t\\t\\t2018-05-14T14:18:00Z\\r\\n\\t\\t\\t2018-05-14T14:18:00Z\\r\\n\\t\\t\\tlt-m5e3ofjr1zn1aw7****\\r\\n\\t\\t\\twd-152630748****\\r\\n\\t\\t\\t1\\r\\n\\t\\t\\t1\\r\\n\\t\\t\\t194211134971****\\r\\n\\t\\t\\r\\n\\t\\r\\n","errorExample":""}]', + 'title' => 'DescribeLaunchTemplates', + 'summary' => 'Queries the information of one or more launch templates, such as the total number of launch templates, the creation time of each launch template, and the latest version number of each launch template. When you can this operation, you can specify parameters, such as TemplateTag, TemplateResourceGroupId, and LaunchTemplateId, in the request.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteLaunchTemplate' => [ + 'summary' => 'Deletes a launch template. You can use the LaunchTemplateId or LaunchTemplateName parameter to specify the launch template that you want to delete from the specified region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28875', + 'abilityTreeNodes' => [ + 'FEATUREecsYZ506D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the launch template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'LaunchTemplateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the launch template. For more information, see [DescribeLaunchTemplates](~~73759~~).'."\n" + ."\n" + .'You must specify `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'lt-bp1apo0bbbkuy0rj****', + ], + ], + [ + 'name' => 'LaunchTemplateName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the launch template.'."\n" + ."\n" + .'You must specify `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testLaunchTemplateName', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'LaunchTemplateId' => [ + 'description' => 'The ID of the launch template. For more information, see [DescribeLaunchTemplates](~~73759~~).'."\n" + ."\n" + .'You must specify `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template.'."\n", + 'type' => 'string', + 'example' => 'lt-bp1apo0bbbkuy0rj****', + ], + 'LaunchTemplateVersionNumbers' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'versionNumbers' => [ + 'description' => 'The versions of the deleted launch template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The versions of the deleted launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '[1,2,3]', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegion.NotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InnerServiceFailed', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"LaunchTemplateId\\": \\"lt-bp1apo0bbbkuy0rj****\\",\\n \\"LaunchTemplateVersionNumbers\\": {\\n \\"versionNumbers\\": [\\n 0\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n lt-bp1apo0bbbkuy0rj****\\n [1,2,3]\\n","errorExample":""}]', + 'title' => 'DeleteLaunchTemplate', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* After you delete a launch template, Elastic Compute Service (ECS) instances created based on the launch template are not affected.'."\n" + .'* After you delete a launch template, all versions of the launch template are deleted and cannot be restored. If you want to delete only a specific version of the launch template, call the [DeleteLaunchTemplateVersion](~~2679735~~) operation.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateLaunchTemplateVersion' => [ + 'summary' => 'Creates a version for a launch template. You can use the created version to create Elastic Compute Service (ECS) instances, scaling groups, or auto provisioning groups.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29254', + 'abilityTreeNodes' => [ + 'FEATUREecsV7EC6D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the command. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the command. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'LaunchTemplateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the launch template. For more information, call the [DescribeLaunchTemplates](~~73759~~) operation. You must specify `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'lt-m5eiaupmvm2op9d****', + ], + ], + [ + 'name' => 'LaunchTemplateName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the launch template. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testLaunchTemplateName', + ], + ], + [ + 'name' => 'VersionDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the launch template version. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testVersionDescription', + ], + ], + [ + 'name' => 'ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image to use to create the Elastic Compute Service (ECS) instance. You can call the [DescribeImages](~~25534~~) operation to query available images.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'win2008r2_64_ent_sp1_en-us_40G_alibase_20170915.vhd', + ], + ], + [ + 'name' => 'ImageOwnerAlias', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source of the image.'."\n" + ."\n" + .'> This parameter will be removed in the future. We recommend that you use other parameters to ensure future compatibility.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'system', + ], + ], + [ + 'name' => 'PasswordInherit', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use the password that is preconfigured in the image. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> If you specify PasswordInherit, you must leave Password empty and make sure that a password is preconfigured for the image.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type. For more information, see [Overview of instance families](~~25378~~). You can also call the [DescribeInstanceTypes](~~25620~~) operation to query the most recent list of instance types.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group to which to assign the ECS instance created based on the launch template version. Instances in the same security group can access each other.'."\n" + ."\n" + .'> You cannot specify `SecurityGroupId` and `SecurityGroupIds.N` in the same request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg****', + ], + ], + [ + 'name' => 'VpcId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the virtual private cloud (VPC) in which to create the ECS instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc-bp12433upq1y5scen****', + ], + ], + [ + 'name' => 'VSwitchId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the vSwitch to which to connect the instance. This parameter is required if you specify the VpcId parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1s5fnvk4gn2tws0****', + ], + ], + [ + 'name' => 'InstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance name. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-). The default value of this parameter is the `InstanceId` value.'."\n" + ."\n" + .'When you create multiple ECS instances at a time, you can batch configure sequential names for the instances. The instance names can contain square brackets (\\[]) and commas (,). For more information, see [Batch configure sequential names or hostnames for multiple instances](~~196048~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'k8s-node-[1,4]-alibabacloud', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the instance. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'InternetMaxBandwidthIn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum inbound public bandwidth. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* When the purchased outbound public bandwidth is less than or equal to 10 Mbit/s, the valid values of this parameter are 1 to 10 and the default value is 10.'."\n" + .'* If the purchased outbound public bandwidth is greater than 10 Mbit/s, the valid values of this parameter range from 1 to the `InternetMaxBandwidthOut` value and the default value is the `InternetMaxBandwidthOut` value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '50', + ], + ], + [ + 'name' => 'InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s. Valid values: 0 to 100.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + [ + 'name' => 'HostName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The hostname of the instance.'."\n" + ."\n" + .'* The hostname cannot start or end with a period (.) or hyphen (-). It cannot contain consecutive periods (.) or hyphens (-).'."\n" + .'* For Windows instances, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. It can contain letters, digits, and hyphens (-).'."\n" + .'* For instances that run other operating systems such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate the hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testHostName', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the zone to which the instance belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'SystemDisk.Category', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_auto: Enterprise SSD (ESSD) AutoPL disk.'."\n" + .'* cloud_essd: ESSD. You can use `SystemDisk.PerformanceLevel` to set the performance level of the ESSD to use as the system disk.'."\n" + .'* cloud_essd_entry: ESSD Entry disk.'."\n" + ."\n" + .'For non-I/O optimized instances of retired instance types, the default value is cloud. For other types of instances, the default value is cloud_efficiency.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'SystemDisk.Size', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the system disk. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values if you set SystemDisk.Category to cloud: 20 to 500.'."\n" + .'* Valid values if you set SystemDisk.Category to other disk categories: 20 to 2048.'."\n" + ."\n" + .'The value of this parameter must be at least 20 and greater than or equal to the size of the image.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '40', + ], + ], + [ + 'name' => 'SystemDisk.DiskName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the system disk. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssdSystem', + ], + ], + [ + 'name' => 'SystemDisk.Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the system disk. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testSystemDiskDescription', + ], + ], + [ + 'name' => 'SystemDisk.Iops', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '30000', + ], + ], + [ + 'name' => 'SystemDisk.PerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the ESSD to be used as the system disk. Default value: PL0. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'For more information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL0', + ], + ], + [ + 'name' => 'SystemDisk.DeleteWithInstance', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the system disk when the instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'SystemDisk.AutoSnapshotPolicyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the automatic snapshot policy to apply to the system disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-bp1dgzpaxwc4load****', + ], + ], + [ + 'name' => 'SystemDisk.ProvisionedIops', + 'in' => 'query', + 'schema' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk to use as data disk N. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}'."\n" + ."\n" + .'> This parameter is available only if you set the Category parameter to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~) and [Modify the performance configurations of an ESSD AutoPL disk](~~413275~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '50000', + ], + ], + [ + 'name' => 'SystemDisk.BurstingEnabled', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the performance burst feature. Valid values:'."\n" + ."\n" + .'* true: encrypts the disk.'."\n" + .'* false: does not enable the performance burst feature.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to create an I/O optimized instance. Valid values:'."\n" + ."\n" + .'* none: The instance is not I/O optimized.'."\n" + .'* optimized: creates an I/O optimized instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optimized', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription. If you set this parameter to PrePaid, make sure that your account has sufficient credits. Otherwise, an `InvalidPayMethod` error is returned.'."\n" + .'* PostPaid: pay-as-you-go'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrePaid', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The subscription period of the instance. Unit: months. This parameter is valid and required only when `InstanceChargeType` is set to `PrePaid`. Valid values: 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 24, 36, 48, and 60.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method for network usage. Default value: PayByTraffic. Valid values:'."\n" + ."\n" + .'* PayByBandwidth: pay-by-bandwidth'."\n" + .'* PayByTraffic: pay-by-traffic'."\n" + ."\n" + .'> When the **pay-by-traffic** billing method for network usage is used, the maximum inbound and outbound bandwidths are used as the upper limits of bandwidths instead of guaranteed performance specifications. In scenarios where demand outstrips resource supplies, these maximum bandwidth values may not be reached. If you want guaranteed bandwidths for your instance, use the **pay-by-bandwidth** billing method for network usage.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + ], + ], + [ + 'name' => 'EnableVmOsConfig', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the operating system configuration of the instance.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The network type of the instance. Valid values:'."\n" + ."\n" + .'* classic: classic network'."\n" + .'* vpc: VPC'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vpc', + ], + ], + [ + 'name' => 'UserData', + 'in' => 'query', + 'schema' => [ + 'description' => 'The user data of the instance. The user data must be encoded in Base64. The maximum size of raw data is 32 KB.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ZWNobyBoZWxsbyBl****', + ], + ], + [ + 'name' => 'KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the key pair to bind to the instance.'."\n" + ."\n" + .'* For Windows instances, this parameter is ignored The `Password` parameter is valid even if the KeyPairName parameter is specified.'."\n" + .'* For Linux instances, the password-based logon method is disabled by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testKeyPairName', + ], + ], + [ + 'name' => 'RamRoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance Resource Access Management (RAM) role. You can call the [ListRoles](~~28713~~) operation provided by RAM to query the instance RAM roles that you created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testRamRoleName', + ], + ], + [ + 'name' => 'AutoReleaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The automatic release time of the instance. Specify the time in the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" + ."\n" + .'* If the value of `ss` is not `00`, the time is automatically rounded down to the nearest minute based on the value of `mm`.'."\n" + .'* The specified time must be at least 30 minutes later than the current time.'."\n" + .'* The specified time can be at most three years later than the current time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2018-01-01T12:05:00Z', + ], + ], + [ + 'name' => 'SpotStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The preemption policy for the pay-as-you-go instance. This parameter is valid only when the `InstanceChargeType` parameter is set to `PostPaid`. Default value: NoSpot. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is created as a pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instances of the compute node are spot instances. These types of instances have a specified maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is created as a spot instance for which the market price at the time of purchase is automatically used as the bid price.', + 'type' => 'string', + 'required' => false, + 'example' => 'NoSpot', + ], + ], + [ + 'name' => 'SpotPriceLimit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum hourly price of the spot instance. A maximum of three decimal places are allowed.', + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'maximum' => '999999', + 'minimum' => '0', + 'example' => '0.97', + ], + ], + [ + 'name' => 'SpotDuration', + 'in' => 'query', + 'schema' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Default value: 1. Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance runs for 1 hour. The system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released. Spot instances are billed by second. We recommend that you specify a protection period based on your business requirements.'."\n" + ."\n" + .'> This parameter takes effect only if SpotStrategy is set to SpotWithPriceLimit or SpotAsPriceGo.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'SecurityEnhancementStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable security hardening for the operating system. Valid values:'."\n" + ."\n" + .'* Active: Security hardening is enabled. This value is applicable only to public images.'."\n" + .'* Deactive: Security hardening is disabled. This value is available to all types of images.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + [ + 'name' => 'PrivateIpAddress', + 'in' => 'query', + 'schema' => [ + 'description' => 'The private IP address to assign to the instance.'."\n" + ."\n" + .'To assign a private IP address to an instance of the VPC type, make sure that the IP address is an idle IP address within the CIDR block of the vSwitch specified by the `VSwitchId` parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '10.1.**.**', + ], + ], + [ + 'name' => 'Ipv6AddressCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of IPv6 addresses to randomly generate for the primary elastic network interface (ENI). Valid values: 1 to 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'DeploymentSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the deployment set to which to deploy the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ds-bp1brhwhoqinyjd6****', + ], + ], + [ + 'name' => 'DataDisk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information about the data disks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Data disk N.'."\n", + 'type' => 'object', + 'properties' => [ + 'PerformanceLevel' => [ + 'description' => 'The performance level of the ESSD to use as data disk N. The value of N must be the same as that in `DataDisk.N.Category` when DataDisk.N.Category is set to cloud_essd. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10000 random read/write IOPS.'."\n" + .'* PL1 (default): A single ESSD can deliver up to 50000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1000000 random read/write IOPS.'."\n" + ."\n" + .'For information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + 'Description' => [ + 'description' => 'The description of data disk N. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDataDiskDescription', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot to use to create data disk N. Valid values of N: 1 to 16. When `DataDisk.N.SnapshotId` is specified, `DataDisk.N.Size` is ignored. The data disk is created with the size of the specified snapshot.'."\n" + ."\n" + .'Use snapshots created on or after July 15, 2013. Otherwise, an error is returned and your request is rejected.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp17441ohwka0yuh****', + ], + 'Size' => [ + 'description' => 'The size of data disk N. Valid values of N: 1 to 16. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values if DataDisk.N.Category is set to cloud: 5 to 2000.'."\n" + ."\n" + .'* Valid values if DataDisk.N.Category is set to cloud_efficiency: 20 to 32768.'."\n" + ."\n" + .'* Valid values when DataDisk.N.Category is set to cloud_ssd: 20 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_essd: vary based on the `DataDisk.N.PerformanceLevel` value.'."\n" + ."\n" + .' * Valid values if you set DataDisk.N.PerformanceLevel to PL0: 1 to 32768.'."\n" + .' * Valid values if you set DataDisk.N.PerformanceLevel to PL1: 20 to 32768.'."\n" + .' * Valid values if you set DataDisk.N.PerformanceLevel to PL2: 461 to 32768.'."\n" + .' * Valid values if you set DataDisk.N.PerformanceLevel to PL3: 1261 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_auto: 1 to 32768.'."\n" + ."\n" + .'* Valid values if you set DataDisk.N.Category to cloud_essd_entry: 10 to 32768.'."\n" + ."\n" + .'The value of this parameter must be greater than or equal to the size of the snapshot specified by `SnapshotId`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2000', + ], + 'Device' => [ + 'description' => 'The mount point of data disk N. The mount points are named based on the number of data disks:'."\n" + ."\n" + .'* 1st to 25th data disks: /dev/xvd`[b-z]`.'."\n" + .'* From the 26th data disk on: /dev/xvd`[aa-zz]`. For example, the 26th data disk is named /dev/xvdaa, the 27th data disk is named /dev/xvdab, and so on.'."\n" + ."\n" + .'> This parameter is applicable to scenarios in which a full image is used to create instances. A full image is an image that contains an operating system, application software, and business data. For these scenarios, you can set the parameter to the mount point of data disk N contained in the full image and modify `DataDisk.N.Size` and `DataDisk.N.Category` to change the category and size of data disk N created based on the image.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'DiskName' => [ + 'description' => 'The name of data disk N. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDataDiskName', + ], + 'Category' => [ + 'description' => 'The category of data disk N. Valid values:'."\n" + ."\n" + .'* cloud: basic disk'."\n" + .'* cloud_efficiency: utra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_auto: ESSD AutoPL disk'."\n" + .'* cloud_essd: ESSD'."\n" + .'* cloud_essd_entry: ESSD Entry disk'."\n" + ."\n" + .'For I/O optimized instances, the default value is cloud_efficiency. For non-I/O optimized instances, the default value is cloud.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + 'DeleteWithInstance' => [ + 'description' => 'Specifies whether to release data disk N when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'Encrypted' => [ + 'description' => 'Specifies whether to encrypt data disk N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set DiskCategory to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~) and [Modify the performance configurations of an ESSD AutoPL disk](~~413275~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '50000', + ], + 'BurstingEnabled' => [ + 'description' => 'Specifies whether to enable the performance burst feature for the system disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy to apply to data disk N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-bp67acfmxazb4p****', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key used for the data disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 16, + ], + ], + [ + 'name' => 'NetworkInterface', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information of the elastic network interfaces (ENIs).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information of ENI N.'."\n", + 'type' => 'object', + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which to connect the secondary ENI. The instance and the secondary ENI must reside in the same zone of the same VPC, but they can be connected to different vSwitches. The value of N in `NetworkInterface.N` cannot be greater than 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-bp1s5fnvk4gn2tws0****', + ], + 'NetworkInterfaceName' => [ + 'description' => 'The name of the secondary ENI. The value of N in `NetworkInterface.N` cannot be greater than 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testNetworkInterfaceName', + ], + 'Description' => [ + 'description' => 'The description of the secondary ENI. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`. The value of N in `NetworkInterface.N` cannot be greater than 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testNetworkInterfaceDescription', + ], + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group to which to assign the secondary ENI. The security groups of the secondary ENI and of the instance must belong to the same VPC. The value of N in `NetworkInterface.N` cannot be greater than 1.'."\n" + ."\n" + .'> You cannot specify both `NetworkInterface.N.SecurityGroupId` and `NetworkInterface.N.SecurityGroupIds.N`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg****', + ], + 'PrimaryIpAddress' => [ + 'description' => 'The primary private IP address of the secondary ENI. The value of N in `NetworkInterface.N` cannot be greater than 1.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '192.168.**.**', + ], + 'SecurityGroupIds' => [ + 'description' => 'The IDs of the security groups to which to assign the secondary ENI. The security groups and the secondary ENI must reside in the same VPC. The valid values of N in `SecurityGroupIds.N` vary based on the maximum number of security groups to which a secondary ENI can belong. For more information, see the "Security group limits" section in [Limits](~~25412~~). The value of N in `NetworkInterface.N` cannot be greater than 1.'."\n" + ."\n" + .'> You cannot specify both `NetworkInterface.N.SecurityGroupId` and `NetworkInterface.N.SecurityGroupIds.N`.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N to which to assign the secondary ENI. The security group and the secondary ENI must reside in the same VPC. The valid values of N in `SecurityGroupIds.N` vary based on the maximum number of security groups to which a secondary ENI can belong. For more information, see the "Security group limits" section in [Limits](~~25412~~). The value of N in `NetworkInterface.N` cannot be greater than 1.'."\n" + ."\n" + .'> You cannot specify both `NetworkInterface.N.SecurityGroupId` and `NetworkInterface.N.SecurityGroupIds.N`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'required' => false, + 'example' => 'sg-bp67acfmxazb4p****', + 'maxItems' => 16, + ], + 'InstanceType' => [ + 'description' => 'The type of ENI N. Valid values of N: 1 and 2. If the value of N is 1, you can configure a primary or secondary ENI. If the value of N is 2, you must configure a primary ENI and a secondary ENI.'."\n" + ."\n" + .'Valid values:'."\n" + ."\n" + .'* Primary'."\n" + .'* Secondary'."\n" + ."\n" + .'Default value: Secondary.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of the primary ENI. Valid values:'."\n" + ."\n" + .'* Standard: uses the TCP communication mode.'."\n" + .'* HighPerformance: uses the remote direct memory access (RDMA) communication mode with Elastic RDMA Interface (ERI) enabled.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + 'DeleteOnRelease' => [ + 'description' => 'Specifies whether to release ENI N when the instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'> This parameter takes effect only for secondary ENIs.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 8, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the ECS instance, disks, and primary elastic network interface (ENI) created based on the launch template version.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the ECS instance, disks, and primary ENI created based on the launch template version.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the ECS instance, disks, and primary ENI created based on the launch template version. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the ECS instance, disks, and primary ENI created based on the launch template version. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 21, + ], + ], + [ + 'name' => 'SecurityGroupIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of security group N to which to assign the instance. The valid values of N depend on the maximum number of security groups to which the instance can belong. For more information, see [Quantity limits](~~25412~~).'."\n" + ."\n" + .'> The `SecurityGroupId` parameter and the `SecurityGroupIds.N` parameter are mutually exclusive.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N to which to assign the instance. The valid values of N depend on the maximum number of security groups to which an instance can belong. For more information, see the "Security group limits" section in [Limits](~~25412~~).'."\n" + ."\n" + .'> The `SecurityGroupId` parameter and the `SecurityGroupIds.N` parameter are mutually exclusive.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + ], + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg7****', + 'maxItems' => 16, + ], + ], + [ + 'name' => 'SystemDisk.Encrypted', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to encrypt the system disk. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false'."\n" + ."\n" + .'> You cannot encrypt system disks when you create instances in Hong Kong Zone D or Singapore Zone A.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'DeletionProtection', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable release protection for the instance. This parameter specifies whether you can use the ECS console or call the [DeleteInstance](~~25507~~) operation to release the instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This parameter is applicable only to pay-as-you-go instances. The release protection feature can protect instances against manual releases, but not against automatic releases.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'CreditSpecification', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard: the standard mode. For more information, see the "Standard mode" section in [Overview of burstable instances](~~59977~~).'."\n" + .'* Unlimited: the unlimited mode. For more information, see the "Unlimited mode" section in [Overview of burstable instances](~~59977~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal for the instance. This parameter is valid only if `InstanceChargeType` is set to `PrePaid`. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'AutoRenewPeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal period of the instance. Valid values:'."\n" + ."\n" + .'Valid values when PeriodUnit is set to Month: 1, 2, 3, 6, 12, 24, 36, 48, and 60.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the subscription period. Valid values:'."\n" + ."\n" + .'Month (default)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'HttpEndpoint', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable the access channel for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: enabled.'."\n" + ."\n" + .'> For information about instance metadata, see [Obtain information about an ECS instance, such as instance attributes inside ECS instances from instance metadata service](~~108460~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'enabled', + ], + ], + [ + 'name' => 'HttpTokens', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully use the security hardening mode (IMDSv2) to access instance metadata. Valid values:'."\n" + ."\n" + .'* optional: does not forcefully use the security hardening mode (IMDSv2).'."\n" + .'* required: forcefully uses the security hardening mode (IMDSv2). After you set this parameter to required, you cannot access instance metadata in normal mode.'."\n" + ."\n" + .'Default value: optional.'."\n" + ."\n" + .'> For information about the modes of accessing instance metadata, see [Obtain information about an ECS instance, such as instance attributes inside ECS instances from instance metadata service](~~108460~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optional', + ], + ], + [ + 'name' => 'HttpPutResponseHopLimit', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + ], + [ + 'name' => 'SystemDisk.KMSKeyId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the KMS key to use for the system disk.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + ], + [ + 'name' => 'ImageOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'Details about the image options.'."\n", + 'type' => 'object', + 'properties' => [ + 'LoginAsNonRoot' => [ + 'description' => 'Specifies whether the instance that uses the image supports logons of the ecs-user user. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'SecurityOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'TrustedSystemMode' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'LaunchTemplateVersionNumber' => [ + 'description' => 'The number of the created version of the launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '2', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DExxxxx', + ], + 'LaunchTemplateId' => [ + 'description' => 'The ID of the launch template. For more information, see [DescribeLaunchTemplates](~~73759~~).'."\n" + ."\n" + .'You must specify `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template.'."\n", + 'type' => 'string', + 'example' => 'lt-bp1apo0bbbkuy0rj****'."\n", + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegion.NotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter "Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidUserData.SizeExceeded', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidUserData.Base64FormatInvalid', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidHostName.Malformed', + 'errorMessage' => 'The specified parameter "HostName" is not valid.', + ], + [ + 'errorCode' => 'InvalidParams.CreateEniParams', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Duplicate.TagKey', + 'errorMessage' => 'The Tag.N.Key contain duplicate key.', + ], + ], + 403 => [ + [ + 'errorCode' => 'LaunchTemplateVersionLimitExceed', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidLaunchTemplate.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"LaunchTemplateVersionNumber\\": 2,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DEX****\\",\\n \\"LaunchTemplateId\\": \\"lt-bp1apo0bbbkuy0rj****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DEX****\\n lt-bp1apo0bbbkuy0rj****\\n","errorExample":""}]', + 'title' => 'CreateLaunchTemplateVersion', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'If you want to modify the parameters of a launch template version, you can create another version with different parameter settings for the launch template. You can create up to 30 versions for each launch template.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeLaunchTemplateVersions' => [ + 'summary' => 'Queries the information of launch template versions, such as the total number of launch templates, launch template names, and launch template version numbers.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'list', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '65904', + 'abilityTreeNodes' => [ + 'FEATUREecsV7EC6D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the launch template.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'LaunchTemplateVersion', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The versions of the launch template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Version N of the launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1', + ], + 'required' => false, + 'example' => '1', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'LaunchTemplateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the launch template.'."\n" + ."\n" + .'You must set `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'lt-bp168lnahrdwl39p****', + ], + ], + [ + 'name' => 'LaunchTemplateName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the launch template.'."\n" + ."\n" + .'You must set `LaunchTemplateId` or `LaunchTemplateName` to specify a launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testLaunchTemplateName', + ], + ], + [ + 'name' => 'MinVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum version number in the version range to query. This parameter is used together with `MaxVersion` to specify a version range to query.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'MaxVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum version number in the version range to query. This parameter is used together with `MinVersion` to specify a version range to query.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'DefaultVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to query the default version.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'DetailFlag', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to query the configurations of the launch template. Valid values:'."\n" + ."\n" + .'* true: queries the basic information and other details of the launch template. The details include the image ID and system disk size.'."\n" + .'* false: queries only the basic information of the launch template. The basic information includes the template ID, template name, and default version.'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The response.'."\n", + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '3989ED0C-20A1-4351-A127-2067FF8390AX', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of launch templates.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'LaunchTemplateVersionSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LaunchTemplateVersionSet' => [ + 'description' => 'Details about the launch template versions.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the launch template versions.'."\n", + 'type' => 'object', + 'properties' => [ + 'LaunchTemplateName' => [ + 'description' => 'The name of the launch template.'."\n", + 'type' => 'string', + 'example' => 'testLaunchTemplateName', + ], + 'DefaultVersion' => [ + 'description' => 'Indicates whether the launch template version is the default version.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'VersionNumber' => [ + 'description' => 'The number of the launch template version.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '1', + ], + 'ModifiedTime' => [ + 'description' => 'The time when the launch template version was modified.'."\n", + 'type' => 'string', + 'example' => '2022-01-17T08:40:00Z', + ], + 'LaunchTemplateId' => [ + 'description' => 'The ID of the launch template.'."\n", + 'type' => 'string', + 'example' => 'lt-bp67acfmxazb4p****', + ], + 'CreateTime' => [ + 'description' => 'The time when the launch template version was created.'."\n", + 'type' => 'string', + 'example' => '2022-01-17T08:22:43Z', + ], + 'CreatedBy' => [ + 'description' => 'The ID of the Alibaba Cloud account that created the launch template.'."\n", + 'type' => 'string', + 'example' => '123456789****', + ], + 'VersionDescription' => [ + 'description' => 'The description of the launch template version.'."\n", + 'type' => 'string', + 'example' => 'testVersionDescription', + ], + 'LaunchTemplateData' => [ + 'description' => 'The configurations of the launch template.'."\n", + 'type' => 'object', + 'properties' => [ + 'DeploymentSetId' => [ + 'description' => 'The ID of the deployment set.'."\n", + 'type' => 'string', + 'example' => 'ds-bp1brhwhoqinyjd6****', + ], + 'VpcId' => [ + 'description' => 'The ID of the virtual private cloud (VPC).'."\n", + 'type' => 'string', + 'example' => 'v-bp67acfmxazb4p****', + ], + 'SystemDisk.PerformanceLevel' => [ + 'description' => 'The performance level of the Enterprise SSD (ESSD) to use as the system disk. Default value: PL0. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'For information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n", + 'type' => 'string', + 'example' => 'PL0', + ], + 'KeyPairName' => [ + 'description' => 'The name of the key pair.'."\n", + 'type' => 'string', + 'example' => 'testKeyPairName', + ], + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group to which to assign the instance.'."\n" + ."\n" + .'> `SecurityGroupId` and `SecurityGroupIds` are mutually exclusive in the response.'."\n", + 'type' => 'string', + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'NetworkType' => [ + 'description' => 'The network type. Valid values:'."\n" + ."\n" + .'* classic: classic network'."\n" + .'* vpc: VPC'."\n", + 'type' => 'string', + 'example' => 'vpc', + ], + 'SpotStrategy' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is a regular pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is a spot instance with a user-defined maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is a spot instance for which the market price at the time of purchase is automatically used as the bid price. The market price can be up to the pay-as-you-go price.', + 'type' => 'string', + 'example' => 'NoSpot', + ], + 'EnableVmOsConfig' => [ + 'description' => 'Indicates whether the operating system configuration of the instance is enabled.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'Description' => [ + 'description' => 'The description of the system disk.'."\n", + 'type' => 'string', + 'example' => 'testInstanceDescription', + ], + 'SpotDuration' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance runs for 1 hour. The system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released. Spot instances are billed by second. We recommend that you specify a protection period based on your business requirements.'."\n" + ."\n" + .'> This parameter is returned when SpotStrategy is set to SpotWithPriceLimit or SpotAsPriceGo.', + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'InstanceName' => [ + 'description' => 'The name of the instance.'."\n", + 'type' => 'string', + 'example' => 'testInstanceName', + ], + 'SecurityEnhancementStrategy' => [ + 'description' => 'Indicates whether Security Hardening is enabled.'."\n", + 'type' => 'string', + 'example' => 'active', + ], + 'UserData' => [ + 'description' => 'The user data of the instance, which is Base64-encoded.'."\n", + 'type' => 'string', + 'example' => 'SGVsbG9FQ1M=', + ], + 'SystemDisk.DiskName' => [ + 'description' => 'The name of the system disk.'."\n", + 'type' => 'string', + 'example' => 'testSystemDiskName', + ], + 'SystemDisk.Size' => [ + 'description' => 'The size of the system disk. Unit: GiB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '40', + ], + 'SpotPriceLimit' => [ + 'description' => 'The maximum hourly price of the spot instance.', + 'type' => 'number', + 'format' => 'float', + 'example' => '0.98', + ], + 'PasswordInherit' => [ + 'description' => 'Indicates whether the username and password preset in the image are used.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'PrivateIpAddress' => [ + 'description' => 'The private IP address to assign to the instance.'."\n", + 'type' => 'string', + 'example' => '10.1.**.**', + ], + 'ImageId' => [ + 'description' => 'The ID of the image.'."\n", + 'type' => 'string', + 'example' => 'm-bp67acfmxazb4p****', + ], + 'SystemDisk.DeleteWithInstance' => [ + 'description' => 'Indicates whether to release the system disk when the instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'SystemDisk.Category' => [ + 'description' => 'The category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud: basic disk.'."\n" + .'* cloud_efficiency: ultra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_essd: ESSD. You can use SystemDisk.PerformanceLevel to set the performance level of the ESSD used as the system disk.'."\n" + ."\n" + .'For non-I/O optimized instances of retired instance types, the default value is cloud. For other types of instances, the default value is cloud_efficiency.'."\n", + 'type' => 'string', + 'example' => 'cloud_ssd', + ], + 'AutoReleaseTime' => [ + 'description' => 'The automatic release time of the instance.'."\n", + 'type' => 'string', + 'example' => '2018-05-14T14:18:00Z', + ], + 'SystemDisk.Description' => [ + 'description' => 'The description of the system disk.'."\n", + 'type' => 'string', + 'example' => 'testSystemDiskDescription', + ], + 'ImageOwnerAlias' => [ + 'description' => 'The source of the image. Valid values:'."\n" + ."\n" + .'* system: public image provided by Alibaba Cloud'."\n" + .'* self: custom image that you created'."\n" + .'* others: shared image from another Alibaba Cloud account'."\n" + .'* marketplace: Alibaba Cloud Marketplace image'."\n", + 'type' => 'string', + 'example' => 'system', + ], + 'HostName' => [ + 'description' => 'The hostname of the instance.'."\n", + 'type' => 'string', + 'example' => 'testHostName', + ], + 'SystemDisk.Iops' => [ + 'description' => 'The number of IOPS on the system disk.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '101800', + ], + 'SystemDisk.AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'sp-bp1j0alc2z1fhvie****', + ], + 'InternetMaxBandwidthOut' => [ + 'description' => 'The maximum outbound public bandwidth.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '100', + ], + 'InternetMaxBandwidthIn' => [ + 'description' => 'The maximum inbound public bandwidth.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'InstanceType' => [ + 'description' => 'The instance type of the instance.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'Period' => [ + 'description' => 'The subscription duration of the instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PrePaid: subscription'."\n" + .'* PostPaid: pay-as-you-go'."\n", + 'type' => 'string', + 'example' => 'Postpaid', + ], + 'IoOptimized' => [ + 'description' => 'Indicates whether the instance is I/O optimized.'."\n", + 'type' => 'string', + 'example' => 'none', + ], + 'RamRoleName' => [ + 'description' => 'The name of the instance Resource Access Management (RAM) role.'."\n", + 'type' => 'string', + 'example' => 'testRamRoleName', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which to connect the instance.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp67acfmxazb4p****', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the launch template belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'InternetChargeType' => [ + 'description' => 'The billing method for network usage.'."\n", + 'type' => 'string', + 'example' => 'PayByTraffic', + ], + 'ZoneId' => [ + 'description' => 'The zone ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-g', + ], + 'Ipv6AddressCount' => [ + 'description' => 'The number of IPv6 addresses to assign to the instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'DataDisks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DataDisk' => [ + 'description' => 'Details about the data disks.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the data disk.'."\n", + 'type' => 'object', + 'properties' => [ + 'PerformanceLevel' => [ + 'description' => 'The performance level of the ESSD to use as a data disk. This parameter is returned only when the value of `Category` is cloud_essd. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n", + 'type' => 'string', + 'example' => 'PL1', + ], + 'Description' => [ + 'description' => 'The description of the data disk.'."\n", + 'type' => 'string', + 'example' => 'testDiskDescription', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot to use to create the data disk.'."\n", + 'type' => 'string', + 'example' => 's-bp67acfmxazb4p****', + ], + 'Device' => [ + 'description' => 'The mount point of the data disk. The mount points are named based on the number of data disks:'."\n" + ."\n" + .'* 1st to 25th data disks: /dev/xvd`[b-z]`.'."\n" + .'* From the 26th data disk on: /dev/xvd`[aa-zz]`. For example, the 26th data disk is named /dev/xvdaa, the 27th data disk is named /dev/xvdab, and so on.'."\n" + ."\n" + .'> This parameter is applicable to scenarios in which a full image is used to create instances. A full image is an image that contains an operating system, application software, and business data. For these scenarios, you can set the parameter to the mount point of data disk N contained in the full image and modify `DataDisk.N.Size` and `DataDisk.N.Category` to change the category and size of data disk N created based on the image.'."\n", + 'type' => 'string', + 'example' => '/dev/xvda', + ], + 'Size' => [ + 'description' => 'The size of the data disk.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2000', + ], + 'DiskName' => [ + 'description' => 'The name of the data disk.'."\n", + 'type' => 'string', + 'example' => 'testDiskName', + ], + 'Category' => [ + 'description' => 'The category of the data disk.'."\n", + 'type' => 'string', + 'example' => 'cloud_ssd', + ], + 'DeleteWithInstance' => [ + 'description' => 'Indicates whether to release the data disk when the instance is released.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'Encrypted' => [ + 'description' => 'Indicates whether the data disk is encrypted.'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set DataDisk.N.Category to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~) and [Modify the performance configurations of an ESSD AutoPL disk](~~413275~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '50000', + ], + 'BurstingEnabled' => [ + 'description' => 'Indicates whether the performance burst feature is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy.'."\n", + 'type' => 'string', + 'example' => 'sp-wz91dz3ghear2a5s****', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key used for the data disk.'."\n", + 'type' => 'string', + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + ], + ], + ], + ], + ], + 'NetworkInterfaces' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'NetworkInterface' => [ + 'description' => 'Details about the secondary elastic network interfaces (ENIs).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the secondary ENI.'."\n", + 'type' => 'object', + 'properties' => [ + 'NetworkInterfaceName' => [ + 'description' => 'The name of the secondary ENI.'."\n", + 'type' => 'string', + 'example' => 'testNetworkInterfaceName', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch to which to connect the ENI.'."\n", + 'type' => 'string', + 'example' => 'vsw-bp67acfmxazb4p****', + ], + 'Description' => [ + 'description' => 'The description of the secondary ENI.'."\n", + 'type' => 'string', + 'example' => 'testNetworkInterfacesDescription', + ], + 'PrimaryIpAddress' => [ + 'description' => 'The primary private IP address of the secondary ENI.'."\n", + 'type' => 'string', + 'example' => '203.0.*.*', + ], + 'SecurityGroupId' => [ + 'description' => 'The ID of the security group to which to assign the secondary ENI. The security group and the ENI must belong to the same VPC.'."\n" + ."\n" + .'> SecurityGroupId and SecurityGroupIds are mutually exclusive in the response.'."\n", + 'type' => 'string', + 'example' => 'sg-bp67acfmxazb4p****', + ], + 'SecurityGroupIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The IDs of the security groups to which to assign the secondary ENI.'."\n" + ."\n" + .'> SecurityGroupId and SecurityGroupIds are mutually exclusive in the response.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the security group to which to assign the secondary ENI.'."\n" + ."\n" + .'> SecurityGroupId and SecurityGroupIds are mutually exclusive in the response.'."\n", + 'type' => 'string', + 'example' => '["sg-bp15ed6xe1yxeycg7****"]', + ], + ], + ], + ], + 'InstanceType' => [ + 'description' => 'The instance type of the instance.'."\n", + 'type' => 'string', + 'example' => 'ecs.s2.xlarge', + ], + 'NetworkInterfaceTrafficMode' => [ + 'description' => 'The communication mode of the primary ENI. Valid values:'."\n" + ."\n" + .'* Standard: uses the TCP communication mode.'."\n" + .'* HighPerformance: uses the remote direct memory access (RDMA) communication mode with Elastic RDMA Interface (ERI) enabled.'."\n", + 'type' => 'string', + 'example' => 'Standard', + ], + 'DeleteOnRelease' => [ + 'description' => 'Indicates whether to retain the ENI when the associated instance is released. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceTag' => [ + 'description' => 'The tags to add to the instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags to add to the instance.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag to add to the instance.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of the tag to add to the instance.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + ], + ], + ], + ], + ], + 'SecurityGroupIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'SecurityGroupId' => [ + 'description' => 'The IDs of the security groups to which to assign the instance.'."\n" + ."\n" + .'> `SecurityGroupId` and `SecurityGroupIds` are mutually exclusive in the response.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the security group to which to assign the instance.'."\n" + ."\n" + .'> `SecurityGroupId` and `SecurityGroupIds` are mutually exclusive in the response.'."\n", + 'type' => 'string', + 'example' => '["sg-bp15ed6xe1yxeycg7****"]', + ], + ], + ], + ], + 'SystemDisk.ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set DataDisk.N.Category to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~) and [Modify the performance configurations of an ESSD AutoPL disk](~~413275~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '50000', + ], + 'SystemDisk.BurstingEnabled' => [ + 'description' => 'Indicates whether the performance burst feature is enabled. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'SystemDisk.Encrypted' => [ + 'description' => 'Indicates whether the system disk is encrypted. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> If you create an instance in Hong Kong Zone D or Singapore Zone A, you cannot encrypt the system disk.'."\n", + 'type' => 'string', + 'example' => 'false', + ], + 'DeletionProtection' => [ + 'description' => 'Indicates whether release protection is enabled for the instance. This parameter indicates whether you can use the ECS console or call the [DeleteInstance](~~25507~~) operation to release the instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> This parameter is applicable only to pay-as-you-go instances. The release protection feature can protect instances against manual releases, but not against automatic releases.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'CreditSpecification' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard: the standard mode. For more information, see the "Standard mode" section in [Overview of burstable instances](~~59977~~).'."\n" + .'* Unlimited: the unlimited mode. For more information, see the "Unlimited mode" section in [Overview of burstable instances](~~59977~~).'."\n", + 'type' => 'string', + 'example' => 'Standard', + ], + 'AutoRenew' => [ + 'description' => 'Indicates whether auto-renewal is enabled for the instance. This parameter is valid only if `InstanceChargeType` is set to `PrePaid`. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'AutoRenewPeriod' => [ + 'description' => 'The auto-renewal period of the instance. Valid values:'."\n" + ."\n" + .'Valid values when PeriodUnit is set to Month: 1, 2, 3, 6, 12, 24, 36, 48, and 60.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PeriodUnit' => [ + 'description' => 'The unit of the subscription period. Valid values:'."\n" + ."\n" + .'Month (default)'."\n", + 'type' => 'string', + 'example' => 'Month', + ], + 'HttpEndpoint' => [ + 'description' => 'Indicates whether the access channel is enabled for instance metadata. Valid values:'."\n" + ."\n" + .'* enabled'."\n" + .'* disabled'."\n" + ."\n" + .'Default value: enabled.'."\n" + ."\n" + .'> For information about instance metadata, see [Obtain information about an ECS instance, such as instance attributes, by using instance metadata](~~108460~~).'."\n", + 'type' => 'string', + 'example' => 'enabled', + ], + 'HttpTokens' => [ + 'description' => 'Indicates whether the security hardening mode (IMDSv2) is forcefully used to access instance metadata. Valid values:'."\n" + ."\n" + .'* optional: The security hardening mode (IMDSv2) is not forcefully used.'."\n" + .'* required: The security hardening mode (IMDSv2) is forcefully used. After you set this parameter to required, you cannot access instance metadata in normal mode.'."\n" + ."\n" + .'Default value: optional.'."\n" + ."\n" + .'> For more information about the modes of accessing instance metadata, see [Obtain information about an ECS instance, such as instance attributes, by using instance metadata](~~108460~~).'."\n", + 'type' => 'string', + 'example' => 'optional', + ], + 'HttpPutResponseHopLimit' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'SystemDisk.KMSKeyId' => [ + 'description' => 'The ID of the KMS key to use for the system disk.'."\n", + 'type' => 'string', + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****'."\n", + ], + 'ImageOptions' => [ + 'description' => 'Details about the image options.'."\n", + 'type' => 'object', + 'properties' => [ + 'LoginAsNonRoot' => [ + 'description' => 'Specifies whether the instance that uses the image supports logons of the ecs-user user. Valid values:'."\n" + ."\n" + .'- true'."\n" + .'- false', + 'type' => 'boolean', + 'example' => 'false', + ], + ], + ], + 'SecurityOptions' => [ + 'type' => 'object', + 'properties' => [ + 'TrustedSystemMode' => [ + 'type' => 'string', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegion.NotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InnerServiceFailed', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidLaunchTemplate.NotFound', + 'errorMessage' => 'The specified LaunchTemplate is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"3989ED0C-20A1-4351-A127-2067FF8390AX\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"LaunchTemplateVersionSets\\": {\\n \\"LaunchTemplateVersionSet\\": [\\n {\\n \\"LaunchTemplateName\\": \\"testLaunchTemplateName\\",\\n \\"DefaultVersion\\": true,\\n \\"VersionNumber\\": 1,\\n \\"ModifiedTime\\": \\"2022-01-17T08:40:00Z\\",\\n \\"LaunchTemplateId\\": \\"lt-bp67acfmxazb4p****\\",\\n \\"CreateTime\\": \\"2022-01-17T08:22:43Z\\",\\n \\"CreatedBy\\": \\"123456789****\\",\\n \\"VersionDescription\\": \\"testVersionDescription\\",\\n \\"LaunchTemplateData\\": {\\n \\"DeploymentSetId\\": \\"ds-bp1brhwhoqinyjd6****\\",\\n \\"VpcId\\": \\"v-bp67acfmxazb4p****\\",\\n \\"SystemDisk.PerformanceLevel\\": \\"PL0\\",\\n \\"KeyPairName\\": \\"testKeyPairName\\",\\n \\"SecurityGroupId\\": \\"sg-bp67acfmxazb4p****\\",\\n \\"NetworkType\\": \\"vpc\\",\\n \\"SpotStrategy\\": \\"NoSpot\\",\\n \\"EnableVmOsConfig\\": false,\\n \\"Description\\": \\"testInstanceDescription\\",\\n \\"SpotDuration\\": 1,\\n \\"InstanceName\\": \\"testInstanceName\\",\\n \\"SecurityEnhancementStrategy\\": \\"active\\",\\n \\"UserData\\": \\"SGVsbG9FQ1M=\\",\\n \\"SystemDisk.DiskName\\": \\"testSystemDiskName\\",\\n \\"SystemDisk.Size\\": 40,\\n \\"SpotPriceLimit\\": 0.98,\\n \\"PasswordInherit\\": true,\\n \\"PrivateIpAddress\\": \\"10.1.**.**\\",\\n \\"ImageId\\": \\"m-bp67acfmxazb4p****\\",\\n \\"SystemDisk.DeleteWithInstance\\": true,\\n \\"SystemDisk.Category\\": \\"cloud_ssd\\",\\n \\"AutoReleaseTime\\": \\"2018-05-14T14:18:00Z\\",\\n \\"SystemDisk.Description\\": \\"testSystemDiskDescription\\",\\n \\"ImageOwnerAlias\\": \\"system\\",\\n \\"HostName\\": \\"testHostName\\",\\n \\"SystemDisk.Iops\\": 101800,\\n \\"SystemDisk.AutoSnapshotPolicyId\\": \\"sp-bp1j0alc2z1fhvie****\\",\\n \\"InternetMaxBandwidthOut\\": 100,\\n \\"InternetMaxBandwidthIn\\": 5,\\n \\"InstanceType\\": \\"ecs.g5.large\\",\\n \\"Period\\": 1,\\n \\"InstanceChargeType\\": \\"Postpaid\\",\\n \\"IoOptimized\\": \\"none\\",\\n \\"RamRoleName\\": \\"testRamRoleName\\",\\n \\"VSwitchId\\": \\"vsw-bp67acfmxazb4p****\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"InternetChargeType\\": \\"PayByTraffic\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\",\\n \\"Ipv6AddressCount\\": 1,\\n \\"DataDisks\\": {\\n \\"DataDisk\\": [\\n {\\n \\"PerformanceLevel\\": \\"PL1\\",\\n \\"Description\\": \\"testDiskDescription\\",\\n \\"SnapshotId\\": \\"s-bp67acfmxazb4p****\\",\\n \\"Device\\": \\"/dev/xvdb\\\\n\\",\\n \\"Size\\": 2000,\\n \\"DiskName\\": \\"testDiskName\\",\\n \\"Category\\": \\"cloud_ssd\\",\\n \\"DeleteWithInstance\\": true,\\n \\"Encrypted\\": \\"false\\",\\n \\"ProvisionedIops\\": 50000,\\n \\"BurstingEnabled\\": true,\\n \\"AutoSnapshotPolicyId\\": \\"sp-wz91dz3ghear2a5s****\\",\\n \\"KMSKeyId\\": \\"0e478b7a-4262-4802-b8cb-00d3fb40****\\"\\n }\\n ]\\n },\\n \\"NetworkInterfaces\\": {\\n \\"NetworkInterface\\": [\\n {\\n \\"NetworkInterfaceName\\": \\"testNetworkInterfaceName\\",\\n \\"VSwitchId\\": \\"vsw-bp67acfmxazb4p****\\",\\n \\"Description\\": \\"testNetworkInterfacesDescription\\",\\n \\"PrimaryIpAddress\\": \\"203.0.*.*\\",\\n \\"SecurityGroupId\\": \\"sg-bp67acfmxazb4p****\\",\\n \\"SecurityGroupIds\\": {\\n \\"SecurityGroupId\\": [\\n \\"[\\\\\\"sg-bp15ed6xe1yxeycg7****\\\\\\"]\\"\\n ]\\n },\\n \\"InstanceType\\": \\"ecs.s2.xlarge\\",\\n \\"NetworkInterfaceTrafficMode\\": \\"Standard\\",\\n \\"DeleteOnRelease\\": true\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"InstanceTag\\": [\\n {\\n \\"Key\\": \\"TestKey\\",\\n \\"Value\\": \\"TestValue\\"\\n }\\n ]\\n },\\n \\"SecurityGroupIds\\": {\\n \\"SecurityGroupId\\": [\\n \\"[\\\\\\"sg-bp15ed6xe1yxeycg7****\\\\\\"]\\"\\n ]\\n },\\n \\"SystemDisk.ProvisionedIops\\": 50000,\\n \\"SystemDisk.BurstingEnabled\\": true,\\n \\"SystemDisk.Encrypted\\": \\"false\\",\\n \\"DeletionProtection\\": false,\\n \\"CreditSpecification\\": \\"Standard\\",\\n \\"AutoRenew\\": true,\\n \\"AutoRenewPeriod\\": 1,\\n \\"PeriodUnit\\": \\"Month\\",\\n \\"HttpEndpoint\\": \\"enabled\\",\\n \\"HttpTokens\\": \\"optional\\",\\n \\"HttpPutResponseHopLimit\\": 3,\\n \\"SystemDisk.KMSKeyId\\": \\"0e478b7a-4262-4802-b8cb-00d3fb40****\\\\n\\",\\n \\"ImageOptions\\": {\\n \\"LoginAsNonRoot\\": false\\n },\\n \\"SecurityOptions\\": {\\n \\"TrustedSystemMode\\": \\"vTPM\\"\\n }\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 10\\n 3989ED0C-20A1-4351-A127-2067FF8390AX\\n 1\\n 1\\n \\n testLaunchTemplateName\\n true\\n 1\\n 2022-01-17T08:40:00Z\\n lt-bp67acfmxazb4p****\\n 2022-01-17T08:22:43Z\\n 123456789****\\n testVersionDescription\\n \\n ds-bp1brhwhoqinyjd6****\\n v-bp67acfmxazb4p****\\n PL0\\n testKeyPairName\\n sg-bp67acfmxazb4p****\\n vpc\\n NoSpot\\n false\\n testInstanceDescription\\n 1\\n testInstanceName\\n active\\n SGVsbG9FQ1M=\\n testSystemDiskName\\n 40\\n 0.98\\n true\\n 10.1.**.**\\n m-bp67acfmxazb4p****\\n true\\n cloud_ssd\\n 2018-05-14T14:18:00Z\\n testSystemDiskDescription\\n system\\n testHostName\\n 101800\\n 100\\n 5\\n ecs.g5.large\\n 1\\n Postpaid\\n none\\n testRamRoleName\\n vsw-bp67acfmxazb4p****\\n rg-bp67acfmxazb4p****\\n PayByTraffic\\n cn-hangzhou-g\\n 1\\n \\n PL1\\n testDiskDescription\\n s-bp67acfmxazb4p****\\n /dev/xvda\\n 2000\\n testDiskName\\n cloud_ssd\\n true\\n false\\n \\n \\n testNetworkInterfaceName\\n vsw-bp67acfmxazb4p****\\n testNetworkInterfacesDescription\\n 203.0.*.*\\n sg-bp67acfmxazb4p****\\n [\\"sg-bp15ed6xe1yxeycg7****\\"]\\n \\n \\n TestKey\\n TestValue\\n \\n [\\"sg-bp15ed6xe1yxeycg7****\\"]\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeLaunchTemplateVersions', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyLaunchTemplateDefaultVersion' => [ + 'summary' => 'Changes the default version of a launch template. When you call this operation, you can specify DefaultVersionNumber in the request. If you do not specify a version when you create Elastic Compute Service (ECS) instances based on a launch template, the default version of the launch template is used.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29081', + 'abilityTreeNodes' => [ + 'FEATUREecsV7EC6D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the launch template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'LaunchTemplateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the launch template. You must specify the LaunchTemplateId or LaunchTemplateName parameter to determine an instance launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'lt-s-bp177juajht6****', + ], + ], + [ + 'name' => 'LaunchTemplateName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance launch template. You must specify the LaunchTemplateId or LaunchTemplateName parameter to determine an instance launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testLaunchTemplateName', + ], + ], + [ + 'name' => 'DefaultVersionNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The default version number of the instance launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => true, + 'example' => '2', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'LaunchTemplateId' => [ + 'description' => 'The ID of the launch template. For more information, see [DescribeLaunchTemplates](~~73759~~).'."\n", + 'type' => 'string', + 'example' => 'lt-bp1apo0bbbkuy0rj****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegion.NotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InnerServiceFailed', + 'errorMessage' => '%s', + ], + ], + [ + [ + 'errorCode' => 'InvalidLaunchTemplate.NotFound', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidLaunchTemplateVersion.NotFound', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"LaunchTemplateId\\": \\"lt-bp1apo0bbbkuy0rj****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n lt-bp1apo0bbbkuy0rj****\\n","errorExample":""}]', + 'title' => 'ModifyLaunchTemplateDefaultVersion', + 'description' => '## Debugging'."\n" + ."\n" + .'[OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates the sample code of the operation for different SDKs.](https://api.aliyun.com/#product=Ecs\\&api=ModifyLaunchTemplateDefaultVersion\\&type=RPC\\&version=2014-05-26)'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteLaunchTemplateVersion' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '65903', + 'abilityTreeNodes' => [ + 'FEATUREecsV7EC6D', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the launch template. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DeleteVersion', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The version numbers of the launch template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Version number N of the launch template. Valid values of N: 1 to 29. You can call the [DescribeLaunchTemplateVersions](~~73761~~) operation to query all versions of the launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '2', + ], + 'required' => true, + 'example' => '2', + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'LaunchTemplateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the launch template. For more information, call the [DescribeLaunchTemplates](~~73759~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'lt-bp1apo0bbbkuy0rj****', + ], + ], + [ + 'name' => 'LaunchTemplateName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testLaunchTemplateName', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'LaunchTemplateVersions' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LaunchTemplateVersion' => [ + 'description' => 'The deleted launch template versions.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'LaunchTemplateId' => [ + 'description' => 'The ID of the launch template.'."\n", + 'type' => 'string', + 'example' => 'lt-m5eiaupmvm2op9d****', + ], + 'LaunchTemplateVersionNumber' => [ + 'description' => 'The version number of the launch template.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'example' => '2', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRegion.NotExist', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidOperation.DeleteDefaultVersion', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InnerServiceFailed', + 'errorMessage' => '%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"LaunchTemplateVersions\\": {\\n \\"LaunchTemplateVersion\\": [\\n {\\n \\"LaunchTemplateId\\": \\"lt-bp1apo0bbbkuy0rj****\\",\\n \\"LaunchTemplateVersionNumber\\": 2\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n \\n lt-bp1apo0bbbkuy0rj****\\n 2\\n \\n","errorExample":""}]', + 'title' => 'DeleteLaunchTemplateVersion', + 'summary' => 'Deletes versions of a launch template. When you call this operation, you can specify parameters, such as LaunchTemplateId and DeleteVersion, in the request.', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* You cannot delete the default version of a launch template by calling this operation. To delete the default version of a launch template, you must delete the launch template.'."\n" + .'* If the version of a launch template that you want to delete is the default version, call the [ModifyLaunchTemplateDefaultVersion](~~2679734~~) operation or go to the **Launch Templates** page in the Elastic Compute Service (ECS) console to change the default version to a different version, and then delete the original default version.'."\n" + .'* After you delete a version of a launch template, the ECS instances that were created based on the version are not affected.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateAutoProvisioningGroup' => [ + 'summary' => 'Creates an auto provisioning group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28814', + 'abilityTreeNodes' => [ + 'FEATUREecs9VD134', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the auto provisioning group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'AutoProvisioningGroupName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the auto provisioning group. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'apg-test', + ], + ], + [ + 'name' => 'AutoProvisioningGroupType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The delivery type of the auto provisioning group. Valid values:'."\n" + ."\n" + .'* request: one-time asynchronous delivery. When the auto provisioning group is started, it attempts to asynchronously deliver an instance cluster that meets the target capacity only once. The group does not retry the operation regardless of whether all the instances are delivered.'."\n" + .'* instant: one-time synchronous delivery. When the auto provisioning group is started, it attempts to synchronously deliver an instance cluster that meets the target capacity only once. The list of delivered instances and the causes of delivery failures are returned in the response.'."\n" + .'* maintain: continuous delivery. When the auto provisioning group is started, it attempts to deliver an instance cluster that meets the target capacity, and monitors the real-time capacity. If the target capacity of the auto provisioning group is not reached, the auto provisioning group continues to create instances until the target capacity is reached.'."\n" + ."\n" + .'Default value: maintain.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'maintain', + ], + ], + [ + 'name' => 'SpotAllocationStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The policy for creating spot instances. Valid values:'."\n" + ."\n" + .'* lowest-price: cost optimization policy. The auto provisioning group selects the lowest-priced instance type to create instances.'."\n" + .'* diversified: balanced distribution policy. The auto provisioning group creates instances in zones that are specified in extended configurations and then evenly distributes the instances across the zones.'."\n" + .'* capacity-optimized: capacity-optimized distribution policy. The auto provisioning group creates instances of the optimal instance types across the optimal zones based on resource availability.'."\n" + ."\n" + .'Default value: lowest-price.', + 'type' => 'string', + 'required' => false, + 'example' => 'diversified', + ], + ], + [ + 'name' => 'SpotInstanceInterruptionBehavior', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operation to be performed on the spot instance when it is interrupted. Valid values:'."\n" + ."\n" + .'* stop: stops the spot instance.'."\n" + .'* terminate: releases the spot instance.'."\n" + ."\n" + .'Default value: terminate.', + 'type' => 'string', + 'required' => false, + 'example' => 'terminate', + ], + ], + [ + 'name' => 'SpotInstancePoolsToUseCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of spot instances of the lowest-priced instance type to be created by the auto provisioning group. This parameter takes effect when `SpotAllocationStrategy` is set to `lowest-price`.'."\n" + ."\n" + .'The value must be smaller than the N value specified in `LaunchTemplateConfig.N`.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'PayAsYouGoAllocationStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The policy for creating pay-as-you-go instances. Valid values:'."\n" + ."\n" + .'* lowest-price: cost optimization policy. The auto provisioning group selects the lowest-priced instance type to create instances.'."\n" + .'* prioritized: priority-based policy. The auto provisioning group creates instances based on the priority specified by `LaunchTemplateConfig.N.Priority`.'."\n" + ."\n" + .'Default value: lowest-price.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'prioritized', + ], + ], + [ + 'name' => 'ExcessCapacityTerminationPolicy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release scaled-in instances when the real-time capacity of the auto provisioning group exceeds the target capacity and the group is triggered to scale in. Valid values:'."\n" + ."\n" + .'* termination: releases the scaled-in instances in the auto provisioning group.'."\n" + .'* no-termination: removes the scaled-in instances from the auto provisioning group but does not release the instances.'."\n" + ."\n" + .'Default value: no-termination.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'termination', + 'default' => 'no-termination', + ], + ], + [ + 'name' => 'ValidFrom', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time at which to start the auto provisioning group. The period of time between this point in time and the point in time specified by `ValidUntil` is the validity period of the auto provisioning group.'."\n" + ."\n" + .'Specify the time in the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" + ."\n" + .'By default, an auto provisioning group is started immediately after it is created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2019-04-01T15:10:20Z', + ], + ], + [ + 'name' => 'ValidUntil', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time at which the auto provisioning group expires. The period of time between this point in time and the point in time specified by `ValidFrom` is the validity period of the auto provisioning group.'."\n" + ."\n" + .'Specify the time in the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time must be in UTC.'."\n" + ."\n" + .'Default value: 2099-12-31T23:59:59Z.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2019-06-01T15:10:20Z', + ], + ], + [ + 'name' => 'TerminateInstancesWithExpiration', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release instances in the auto provisioning group when the group expires. Valid values:'."\n" + ."\n" + .'* true: releases the instances.'."\n" + .'* false: only removes the instances from the auto provisioning group but does not release them.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'TerminateInstances', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release instances in the auto provisioning group when the auto provisioning group is deleted. Valid values:'."\n" + ."\n" + .'* true: releases the instances.'."\n" + .'* false: retains the instances.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'MaxSpotPrice', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum price of spot instances in the auto provisioning group.'."\n" + ."\n" + .'> When both `MaxSpotPrice` and `LaunchTemplateConfig.N.MaxPrice` are specified, the smaller one of the two parameter values is used.', + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '2', + ], + ], + [ + 'name' => 'TotalTargetCapacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total target capacity of the auto provisioning group. The value must be a positive integer.'."\n" + ."\n" + .'The total target capacity of the auto provisioning group must be greater than or equal to the sum of the target capacity of pay-as-you-go instances specified by `PayAsYouGoTargetCapacity` and the target capacity of spot instances specified by `SpotTargetCapacity`.', + 'type' => 'string', + 'required' => true, + 'example' => '60', + ], + ], + [ + 'name' => 'PayAsYouGoTargetCapacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The target capacity of pay-as-you-go instances in the auto provisioning group. The value must be less than or equal to the `TotalTargetCapacity` value.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '30', + ], + ], + [ + 'name' => 'SpotTargetCapacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The target capacity of spot instances in the auto provisioning group. The value must be less than or equal to the `TotalTargetCapacity` value.', + 'type' => 'string', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'DefaultTargetCapacityType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of supplemental instances. When the sum of the `PayAsYouGoTargetCapacity` and `SpotTargetCapacity` values is smaller than the `TotalTargetCapacity` value, the auto provisioning group creates instances of the specified type to meet the total target capacity. Valid values:'."\n" + ."\n" + .'* PayAsYouGo: pay-as-you-go'."\n" + .'* Spot: spot instance'."\n" + ."\n" + .'Default value: Spot.', + 'type' => 'string', + 'required' => false, + 'example' => 'Spot', + ], + ], + [ + 'name' => 'LaunchTemplateId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the launch template associated with the auto provisioning group. You can call the [DescribeLaunchTemplates](~~73759~~) operation to query available launch templates. When both LaunchTemplateId and `LaunchConfiguration.*` parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'lt-bp1fgzds4bdogu03****', + ], + ], + [ + 'name' => 'LaunchTemplateVersion', + 'in' => 'query', + 'schema' => [ + 'description' => 'The version of the launch template associated with the auto provisioning group. You can call the [DescribeLaunchTemplateVersions](~~73761~~) operation to query the versions of available launch templates.'."\n" + ."\n" + .'Default value: the default version of the launch template.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'LaunchConfiguration.ImageId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the image to be used to create the instance. You can call the [DescribeImages](~~25534~~) operation to query available image resources. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'm-bp1g7004ksh0oeuc****', + ], + ], + [ + 'name' => 'LaunchConfiguration.SecurityGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the security group to which to assign the instance. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg****', + ], + ], + [ + 'name' => 'LaunchConfiguration.IoOptimized', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether the instance is I/O optimized. Valid values:'."\n" + ."\n" + .'* none: The instance is not I/O optimized.'."\n" + .'* optimized: The instance is I/O optimized.'."\n" + ."\n" + .'For instances of retired instance types, the default value is none. For instances of other instance types, the default value is optimized.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'optimized ', + ], + ], + [ + 'name' => 'LaunchConfiguration.InternetChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method for network usage. Valid values:'."\n" + ."\n" + .'* PayByBandwidth: pay-by-bandwidth'."\n" + .'* PayByTraffic: pay-by-traffic'."\n" + ."\n" + .'> When the pay-by-traffic billing method for network usage is used, the maximum inbound and outbound bandwidth values are used as the upper limits of bandwidth instead of guaranteed performance specifications. When demands outstrip resource supplies, the maximum bandwidths may be limited. If you want guaranteed bandwidth for your instance, use the pay-by-bandwidth billing method.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PayByTraffic', + ], + ], + [ + 'name' => 'LaunchConfiguration.InternetMaxBandwidthIn', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum inbound public bandwidth. Unit: Mbit/s. Valid values:'."\n" + ."\n" + .'* When the maximum outbound public bandwidth is less than or equal to 10 Mbit/s, the valid values of this parameter are 1 to 10 and the default value is 10.'."\n" + .'* When the maximum outbound public bandwidth is greater than 10 Mbit/s, the valid values of this parameter are 1 to the value of `LaunchConfiguration.InternetMaxBandwidthOut`, and the default value is the value of `LaunchConfiguration.InternetMaxBandwidthOut`.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'LaunchConfiguration.InternetMaxBandwidthOut', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum outbound public bandwidth. Unit: Mbit/s. Valid values: 0 to 100.'."\n" + ."\n" + .'Default value: 0.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'LaunchConfiguration.InstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance name. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n" + ."\n" + .'The default value of this parameter is the `InstanceId` value.'."\n" + ."\n" + .'When you batch create instances, you can batch configure sequential names for the instances. For more information, see [Batch configure sequential names or hostnames for multiple instances](~~196048~~).'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'k8s-node-[1,4]-alibabacloud', + ], + ], + [ + 'name' => 'LaunchConfiguration.HostName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance hostname. Take note of the following items:'."\n" + ."\n" + .'* The hostname cannot start or end with a period (.) or hyphen (-). The hostname cannot contain consecutive periods (.) or hyphens (-).'."\n" + .'* For Windows instances, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. It can contain letters, digits, and hyphens (-).'."\n" + .'* For instances that run other operating systems such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate a hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-).'."\n" + .'* You cannot specify both `LaunchConfiguration.HostName` and `LaunchConfiguration.HostNames.N`. Otherwise, an error is returned.'."\n" + .'* When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'k8s-node-[1,4]-ecshost', + ], + ], + [ + 'name' => 'LaunchConfiguration.InstanceDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance description. The description must be 2 to 256 characters in length. The description can contain letters and cannot start with `http://` or `https://`. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Instance_Description', + ], + ], + [ + 'name' => 'LaunchConfiguration.KeyPairName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The key pair name.'."\n" + ."\n" + .'* For Windows instances, this parameter is ignored. This parameter is empty by default.'."\n" + .'* By default, password-based logon is disabled for Linux instances.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'KeyPair_Name', + ], + ], + [ + 'name' => 'LaunchConfiguration.RamRoleName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the instance Resource Access Management (RAM) role. You can call the [ListRoles](~~28713~~) operation provided by RAM to query the instance RAM roles that you created. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'RAM_Name', + ], + ], + [ + 'name' => 'LaunchConfiguration.SecurityEnhancementStrategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable security hardening. Valid values:'."\n" + ."\n" + .'* Active: enables security hardening. This value is applicable only to public images.'."\n" + .'* Deactive: disables security hardening. This value is applicable to all image types.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + [ + 'name' => 'LaunchConfiguration.UserData', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance user data. The user data must be encoded in Base64. The raw data can be up to 32 KB in size. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ZWNobyBoZWxsbyBlY3Mh', + ], + ], + [ + 'name' => 'LaunchConfiguration.SystemDiskCategory', + 'in' => 'query', + 'schema' => [ + 'description' => 'The category of the system disk. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: ultra disk'."\n" + .'* cloud_ssd: standard SSD'."\n" + .'* cloud_essd: enhanced SSD (ESSD)'."\n" + .'* cloud: basic disk'."\n" + ."\n" + .'For non-I/O optimized instances of retired instance types, the default value is cloud. For other instances, the default value is cloud_efficiency.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + [ + 'name' => 'LaunchConfiguration.SystemDiskSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The size of the system disk. Valid values: 20 to 500. Unit: GiB. The value must be at least 20 and greater than or equal to the size of the image specified by LaunchConfiguration.ImageId.'."\n" + ."\n" + .'Default value: 40 or the size of the image specified by LaunchConfiguration.ImageId, whichever is greater.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '40', + ], + ], + [ + 'name' => 'LaunchConfiguration.SystemDiskName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the system disk. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, periods (.), colons (:), underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'This parameter is empty by default.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssdSystem', + ], + ], + [ + 'name' => 'LaunchConfiguration.SystemDiskDescription', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the system disk. The description must be 2 to 256 characters in length. The description can contain letters and cannot start with `http://` or `https://`.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'SystemDisk_Description', + ], + ], + [ + 'name' => 'LaunchConfiguration.SystemDiskPerformanceLevel', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance level of the ESSD to be used as the system disk. Valid values:'."\n" + ."\n" + .'* PL0 (default): A single ESSD can deliver up to 10,000 random read/write IOPS.'."\n" + .'* PL1: A single ESSD can deliver up to 50,000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100,000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1,000,000 random read/write IOPS.'."\n" + ."\n" + .'For more information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL0', + ], + ], + [ + 'name' => 'LaunchConfiguration.PasswordInherit', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to use the password preset in the image. Valid values:'."\n" + ."\n" + .'* true: uses the password preset in the image.'."\n" + .'* false: does not use the password preset in the image.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'LaunchConfiguration.ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the instance. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'LaunchConfiguration.CreditSpecification', + 'in' => 'query', + 'schema' => [ + 'description' => 'The performance mode of the burstable instance. Valid values:'."\n" + ."\n" + .'* Standard: the standard mode. For more information, see the "Standard mode" section in the [Overview of burstable instances](~~59977~~) topic.'."\n" + .'* Unlimited: the unlimited mode. For more information, see the "Unlimited mode" section in the [Overview of burstable instances](~~59977~~) topic.'."\n" + ."\n" + .'This parameter is empty by default.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Standard', + ], + ], + [ + 'name' => 'LaunchConfiguration.Password', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance password. The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. The password can contain the following special characters:'."\n" + ."\n" + .'``( ) ` ~ ! @ # $ % ^ & * - _ + = | { } ``: ; \' < > , . ? /`` For Windows instances, the password cannot start with a forward slash (/). When both LaunchTemplateId and LaunchConfiguration.* parameters are specified, LaunchTemplateId takes precedence. `'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'EcsV587!', + ], + ], + [ + 'name' => 'LaunchConfiguration.DeploymentSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the deployment set.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ds-bp1frxuzdg87zh4p****', + ], + ], + [ + 'name' => 'LaunchTemplateConfig', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The extended configurations of the launch template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Extended configuration N of the launch template.'."\n", + 'type' => 'object', + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch in extended configuration N. The zone of the ECS instances created from the extended configuration is determined by the vSwitch.'."\n" + ."\n" + .'> If you specify one or more `LaunchTemplateConfig.N.*` parameters, you must also specify `LaunchTemplateConfig.N.VSwitchId`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-sn5bsitu4lfzgc5o7****', + ], + 'MaxPrice' => [ + 'description' => 'The maximum price of spot instances in extended configuration N.'."\n" + ."\n" + .'> If you specify one or more `LaunchTemplateConfig.N.*` parameters, you must also specify `LaunchTemplateConfig.N.MaxPrice`.', + 'type' => 'number', + 'format' => 'double', + 'required' => false, + 'example' => '3', + ], + 'Priority' => [ + 'description' => 'The priority of extended configuration N. A value of 0 indicates the highest priority. Valid values: 0 to ∞.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'InstanceType' => [ + 'description' => 'The instance type in extended configuration N. Valid values of N: 1 to 20. For information about the valid values of this parameter, see [Overview of instance families](~~25378~~).', + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + 'WeightedCapacity' => [ + 'description' => 'The weight of the instance type in extended configuration N. A greater weight indicates that a single instance has more computing power and fewer instances are required. The value must be greater than 0.'."\n" + ."\n" + .'The weight is calculated based on the computing power of the specified instance type and the minimum computing power of a single instance in the cluster to be created by the auto provisioning group. For example, assume that the minimum computing power of a single instance is 8 vCPUs and 60 GiB of memory.'."\n" + ."\n" + .'* For an instance type with 8 vCPUs and 60 GiB of memory, you can set the weight to 1.'."\n" + .'* For an instance type with 16 vCPUs and 120 GiB of memory, you can set the weight to 2.'."\n", + 'type' => 'number', + 'format' => 'double', + 'required' => false, + 'example' => '2', + ], + 'MaxQuantity' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => 'false', + ], + 'Cores' => [ + 'description' => 'The numbers of vCPUs of instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Number N of vCPUs of the instance type. This parameter is used to filter instance types. For more information, see [Overview of instance families](~~25378~~). Valid values of N: 1 to 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '2', + ], + 'required' => false, + 'maxItems' => 5, + ], + 'Memories' => [ + 'description' => 'The memory sizes of instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Memory size N of the instance type. Unit: GiB. This parameter is used to filter instance types. For more information, see [Overview of instance families](~~25378~~). Valid values of N: 1 to 10.'."\n", + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '4', + ], + 'required' => false, + 'maxItems' => 5, + ], + 'InstanceFamilyLevel' => [ + 'description' => 'The instance family level of the instance type in extended configuration N. This parameter is used to filter instance types. Valid values of Nextended configuration N, Valid values:'."\n" + ."\n" + .'* EntryLevel: entry level (shared instance types). Instance types of this level are the most cost-effective but may not ensure stable computing performance. Instance types of this level are suitable for scenarios in which the CPU utilization is low. For more information, see [Shared instance families](~~108489~~).'."\n" + .'* EnterpriseLevel: enterprise level. Instance types of this level provide stable performance and dedicated resources and are suitable for business scenarios that require high stability. For more information, see [Overview of instance families](~~25378~~).'."\n" + .'* CreditEntryLevel: credit entry level. This value is valid only for burstable instances. CPU credits are used to ensure computing performance. Instance types of this level are suitable for scenarios in which the CPU utilization is low but may fluctuate in specific cases. For information about burstable instances, see [Overview](~~59977~~).'."\n" + ."\n" + .'Valid values of N: 1 to 10.', + 'type' => 'string', + 'required' => false, + 'example' => 'EnterpriseLevel', + ], + 'ExcludedInstanceTypes' => [ + 'description' => 'The instance types that you want to exclude.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Instance type N that you want to exclude in extended configuration N. You can use an asterisk (\\*) as the wildcard character to exclude an instance type or instance family. Examples:'."\n" + ."\n" + .'* ecs.c6.large: excludes the ecs.c6.large instance type.'."\n" + .'* ecs.c6.\\*: excludes the c6 instance family.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => ' ecs.n1.small/ecs.n1.*/*7*', + ], + 'required' => false, + 'maxItems' => 5, + ], + 'Architectures' => [ + 'description' => 'The architectures of the instance types.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Architecture N of the instance type in extended configuration N. Valid values:'."\n" + ."\n" + .'* X86: x86 architecture.'."\n" + .'* Heterogeneous: heterogeneous computing, such as GPU-accelerated or FPGA-accelerated.'."\n" + .'* BareMetal: ECS Bare Metal Instance.'."\n" + .'* Arm: Arm architecture.'."\n" + .'* SuperComputeCluster: Super Computing Cluster.'."\n" + ."\n" + .'By default, all values are included.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'X86', + ], + 'required' => false, + 'maxItems' => 5, + ], + 'BurstablePerformance' => [ + 'description' => 'Specifies whether to include burstable instance types. Valid values:'."\n" + ."\n" + .'* Exclude: excludes burstable instance types.'."\n" + .'* Include: includes burstable instance types.'."\n" + .'* Required: includes only burstable instance types.'."\n" + ."\n" + .'Default value: Include.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Include', + ], + 'ImageId' => [ + 'description' => 'The ID of the image. You can use this parameter to specify the image that is used by the current resource pool. If you do not specify this parameter, the image that is configured in `LaunchConfiguration.ImageId` or the launch template is used by default. You can call the [DescribeImages](~~25534~~) operation to query the available images. Note: This parameter is supported only when `AutoProvisioningGroupType` is set to instant.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aliyun_3_x64_20G_alibase_20210425.vhd', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'LaunchConfiguration.DataDisk', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The cloud disks in the extended configurations of the launch template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The cloud disk in the extended configurations of the launch template.'."\n", + 'type' => 'object', + 'properties' => [ + 'PerformanceLevel' => [ + 'description' => 'The performance level of the Enterprise SSD (ESSD) to use as data disk N. The value of N in this parameter must be the same as the value of N in `LaunchConfiguration.DataDisk.N.Category`. Valid values:'."\n" + ."\n" + .'* PL0: A single ESSD can deliver up to 10000 random read/write IOPS.'."\n" + .'* PL1 (default): A single ESSD can deliver up to 50000 random read/write IOPS.'."\n" + .'* PL2: A single ESSD can deliver up to 100000 random read/write IOPS.'."\n" + .'* PL3: A single ESSD can deliver up to 1000000 random read/write IOPS.'."\n" + ."\n" + .'For information about ESSD performance levels, see [ESSDs](~~122389~~).'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PL1', + ], + 'KmsKeyId' => [ + 'description' => 'The ID of the Key Management Service (KMS) key to use for data disk N. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + 'Description' => [ + 'description' => 'The description of data disk N. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'DataDisk_Description', + ], + 'SnapshotId' => [ + 'description' => 'The ID of the snapshot to use to create data disk N. Valid values of N: 1 to 16.'."\n" + ."\n" + .'If you specify this parameter, `LaunchConfiguration.DataDisk.N.Size` is ignored. The size of data disk N is the same as that of the snapshot specified by this parameter. Use snapshots created after July 15, 2013. Otherwise, an error is returned and your request is rejected.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 's-bp17441ohwka0yuh****', + ], + 'Size' => [ + 'description' => 'The size of data disk N. Valid values of N: 1 to 16. Unit: GiB. Valid values:'."\n" + ."\n" + .'* Valid values if you set LaunchConfiguration.DataDisk.N.Category to cloud_efficiency: 20 to 32768.'."\n" + ."\n" + .'* Valid values if you set LaunchConfiguration.DataDisk.N.Category to cloud_ssd: 20 to 32768.'."\n" + ."\n" + .'* Valid values if you set LaunchConfiguration.DataDisk.N.Category to cloud_essd: vary based on the `LaunchConfiguration.DataDisk.N.PerformanceLevel` value.'."\n" + ."\n" + .' * Valid values if you set LaunchConfiguration.DataDisk.N.PerformanceLevel to PL0: 40 to 32768.'."\n" + .' * Valid values if you set LaunchConfiguration.DataDisk.N.PerformanceLevel to PL1: 20 to 32768.'."\n" + .' * Valid values if you set LaunchConfiguration.DataDisk.N.PerformanceLevel to PL2: 461 to 32768.'."\n" + .' * Valid values if you set LaunchConfiguration.DataDisk.N.PerformanceLevel to PL3: 1261 to 32768.'."\n" + ."\n" + .'* Valid values if you set LaunchConfiguration.DataDisk.N.Category to cloud: 5 to 2000.'."\n" + ."\n" + .'> The value of this parameter must be greater than or equal to the size of the snapshot specified by `LaunchConfiguration.DataDisk.N.SnapshotId`.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '20', + ], + 'Device' => [ + 'description' => 'The mount point of data disk N. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '/dev/vd1', + ], + 'DiskName' => [ + 'description' => 'The name of data disk N. The name must be 2 to 128 characters in length. The name must start with a letter but cannot start with `http://` or `https://`. The name can contain letters, digits, periods (.), colons (:), underscores (\\_), and hyphens (-).'."\n" + ."\n" + .'This parameter is left empty by default.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssdData', + ], + 'Category' => [ + 'description' => 'The category of data disk N. Valid values of N: 1 to 16. Valid values:'."\n" + ."\n" + .'* cloud_efficiency: utra disk.'."\n" + .'* cloud_ssd: standard SSD.'."\n" + .'* cloud_essd: ESSD.'."\n" + .'* cloud: basic disk.'."\n" + ."\n" + .'For I/O optimized instances, the default value is cloud_efficiency. For non-I/O optimized instances, the default value is cloud.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + 'DeleteWithInstance' => [ + 'description' => 'Specifies whether to release data disk N when the instance to which the data disk is attached is released. Valid values:'."\n" + ."\n" + .'* true: releases data disk N when the associated instance is released.'."\n" + .'* false: does not release data disk N when the associated instance is released.'."\n" + ."\n" + .'Default value: true.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'Encrypted' => [ + 'description' => 'Specifies whether to encrypt data disk N. Valid values:'."\n" + ."\n" + .'* true: encrypts system disk N.'."\n" + .'* false: does not encrypt system disk N.'."\n" + ."\n" + .'Default value: false. Valid values:'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'EncryptAlgorithm' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk to use as the system disk. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set LaunchConfiguration.DataDisk.N.Category to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '40000', + ], + 'BurstingEnabled' => [ + 'description' => 'Specifies whether to enable the performance burst feature for the system disk. Valid values:'."\n" + ."\n" + .'* true: force attaches the disk to the instance.'."\n" + .'* false: disables the performance burst feature for the system disk.'."\n" + ."\n" + .'> This parameter is available only if you set LaunchConfiguration.DataDisk.N.Category to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy to apply to data disk N.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when the AutoProvisioningGroupType parameter is set to instant.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-bp67acfmxazb4p****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'LaunchConfiguration.Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tag in the extended configurations of the launch template.', + 'type' => 'array', + 'items' => [ + 'description' => 'The tag in the extended configurations of the launch template.', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of the tag. Valid values of N: 1 to 20. The tag key cannot be an empty string. It can be up to 128 characters in length and cannot start with acs: or aliyun. It cannot contain `http://` or `https://`. If both the LaunchTemplateId and LaunchConfiguration.* parameters are specified, the LaunchTemplateId parameter takes precedence.', + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of the tag. Valid values of N: 1 to 20. The tag value can be an empty string. It can be up to 128 characters in length. It cannot start with acs: or contain `http://` or `https://`. If both the LaunchTemplateId and LaunchConfiguration.* parameters are specified, the LaunchTemplateId parameter takes precedence.', + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'SystemDiskConfig', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information of system disks on the instance.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information of system disks on the instance.', + 'type' => 'object', + 'properties' => [ + 'DiskCategory' => [ + 'description' => 'The category of the system disk. You can specify multiple disk categories, and the disk categories are prioritized in the order in which they are specified. If a specified disk category is unavailable, the system uses the next available disk category. Valid values:'."\n" + ."\n" + .'- cloud_efficiency: ultra disk.'."\n" + .'- cloud_ssd: standard SSD.'."\n" + .'- cloud_essd: ESSD'."\n" + .'- cloud: basic disk.', + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_ssd', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'DataDiskConfig', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The information of data disks on the instance.', + 'type' => 'array', + 'items' => [ + 'description' => 'The information of data disks on the instance.', + 'type' => 'object', + 'properties' => [ + 'DiskCategory' => [ + 'description' => 'The category of data disk N. You can use this parameter to specify multiple disk categories, and the disk categories are prioritized in the order in which they are specified. If a specified disk category is unavailable, the system uses the next available disk category. Valid values:'."\n" + ."\n" + .'- cloud_efficiency: ultra disk'."\n" + .'- cloud_ssd: standard SSD'."\n" + .'- cloud_essd: ESSD'."\n" + .'- cloud: basic disk', + 'type' => 'string', + 'required' => false, + 'example' => 'cloud_efficiency', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 10, + ], + ], + [ + 'name' => 'LaunchConfiguration.HostNames', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The hostname of instance N. You can use this parameter to specify different hostnames for multiple instances. Take note of the following items:'."\n" + ."\n" + .'- This parameter takes effect only when `AutoProvisioningGroupType` is set to instant. '."\n" + .'- The value of N indicates the number of instances. Valid values of N: 1 to 1000. The value of N must be the same as the TotalTargetCapacity value. '."\n" + .'- The hostname cannot start or end with a period (.) or hyphen (-). The hostname cannot contain consecutive periods (.) or hyphens (-). '."\n" + .'- For Windows instances, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. The hostname can contain letters, digits, and hyphens (-). '."\n" + .'- For instances that run other operating systems such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate the hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-). '."\n" + .'- You cannot specify both `LaunchConfiguration.HostName` and `LaunchConfiguration.HostNames.N`. Otherwise, an error is returned. '."\n" + .'- When both LaunchTemplateId and LaunchConfiguration.* parameters are specified, LaunchTemplateId takes precedence.', + 'type' => 'array', + 'items' => [ + 'description' => 'The hostname of instance N. You can use this parameter to specify different hostnames for multiple instances. Take note of the following items:'."\n" + ."\n" + .'- This parameter takes effect only when `AutoProvisioningGroupType` is set to instant. '."\n" + .'- The value of N indicates the number of instances. Valid values of N: 1 to 1000. The value of N must be the same as the TotalTargetCapacity value. '."\n" + .'- The hostname cannot start or end with a period (.) or hyphen (-). The hostname cannot contain consecutive periods (.) or hyphens (-). '."\n" + .'- For Windows instances, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. The hostname can contain letters, digits, and hyphens (-). '."\n" + .'- For instances that run other operating systems such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate the hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-). '."\n" + .'- You cannot specify both `LaunchConfiguration.HostName` and `LaunchConfiguration.HostNames.N`. Otherwise, an error is returned. '."\n" + .'- When both LaunchTemplateId and LaunchConfiguration.* parameters are specified, LaunchTemplateId takes precedence.', + 'type' => 'string', + 'required' => false, + 'example' => 'ecs-host-01 ', + ], + 'required' => false, + 'example' => 'ecs-host-01', + 'maxItems' => 1000, + ], + ], + [ + 'name' => 'MinTargetCapacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The minimum target capacity of the auto provisioning group. The value must be a positive integer. When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'- This parameter takes effect only when `AutoProvisioningGroupType` is set to instant. '."\n" + .'- If the number of instances that can be created in the current region is smaller than the value of this parameter, the operation cannot be called and no instances are created. '."\n" + .'- If the number of instances that can be created in the current region is greater than the value of this parameter, instances can be created based on the specified parameters.', + 'type' => 'string', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'LaunchConfiguration.SecurityGroupIds', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the security groups to which the new ECS instances belong.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of security group N to which to assign the instance. When both LaunchTemplateId and LaunchConfiguration.* parameters are specified, LaunchTemplateId takes precedence.', + 'type' => 'string', + 'required' => false, + 'example' => 'sg-bp15ed6xe1yxeycg****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'LaunchConfiguration.SystemDisk', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The system disk information of instances. When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'object', + 'properties' => [ + 'Encrypted' => [ + 'description' => 'Specifies whether to encrypt the system disk. Valid values:'."\n" + ."\n" + .'* true: encrypts system disk N.'."\n" + .'* false: does not encrypt system disk N.'."\n" + ."\n" + .'Default value: false. Valid values:'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'false', + ], + 'KMSKeyId' => [ + 'description' => 'The ID of the KMS key to use for system disk N.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0e478b7a-4262-4802-b8cb-00d3fb40****', + ], + 'EncryptAlgorithm' => [ + 'description' => 'The algorithm to use to encrypt the system disk. Valid values:'."\n" + ."\n" + .'* aes-256'."\n" + .'* sm4-128'."\n" + ."\n" + .'Default value: aes-256.'."\n" + ."\n" + .'When both LaunchTemplateId and LaunchConfiguration.\\* parameters are specified, LaunchTemplateId takes precedence.'."\n" + ."\n" + .'> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'aes-256', + ], + 'ProvisionedIops' => [ + 'description' => 'The provisioned read/write IOPS of the ESSD AutoPL disk to use as the system disk. Valid values: 0 to min{50,000, 1,000 × Capacity - Baseline IOPS}.'."\n" + ."\n" + .'Baseline IOPS = min{1,800 + 50 × Capacity, 50,000}.'."\n" + ."\n" + .'> This parameter is available only if you set LaunchConfiguration.SystemDisk.Category to cloud_auto. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '40000', + ], + 'BurstingEnabled' => [ + 'description' => 'Specifies whether to enable the performance burst feature for the system disk. Valid values:'."\n" + ."\n" + .'* true: force attaches the disk to the instance.'."\n" + .'* false: disables the performance burst feature for the system disk.'."\n" + ."\n" + .'> This parameter is available only if you set `LaunchConfiguration.SystemDisk.Category` to `cloud_auto`. For more information, see [ESSD AutoPL disks](~~368372~~).'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + 'AutoSnapshotPolicyId' => [ + 'description' => 'The ID of the automatic snapshot policy to apply to the system disk.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when the AutoProvisioningGroupType parameter is set to instant.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'sp-bp67acfmxazb4p****', + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'LaunchConfiguration.Arn', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'Rolearn' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'acs:ram::123456789012****:role/adminrole', + ], + 'RoleType' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '34458433936495****:alice', + ], + 'AssumeRoleFor' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '123456789012****', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + [ + 'name' => 'HibernationOptionsConfigured', + 'in' => 'query', + 'schema' => [ + 'description' => '>This parameter is in invitational preview and is not publicly available.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'LaunchConfiguration.AutoReleaseTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The automatic release time of the pay-as-you-go instance. Specify the time in the [ISO 8601](~~25696~~) standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in Coordinated Universal Time (UTC).'."\n" + ."\n" + .'* If the value of `ss` is not `00`, the start time is automatically rounded down to the nearest minute based on the value of `mm`.'."\n" + .'* The specified time must be at least 30 minutes later than the current time.'."\n" + .'* The specified time can be at most three years later than the current time.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2018-01-01T12:05:00Z', + ], + ], + [ + 'name' => 'LaunchConfiguration.ImageFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the image family. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `aliyun` or `acs:`. The name cannot contain `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'hangzhou-daily-update', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the auto provisioning group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the auto provisioning group.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the auto provisioning group.'."\n" + ."\n" + .'Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the auto provisioning group.'."\n" + ."\n" + .'Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourcePoolOptions', + 'in' => 'query', + 'style' => 'json', + 'schema' => [ + 'description' => 'The resource pool options to use to create instances. When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when the auto provisioning group creates pay-as-you-go instances.'."\n" + .'* This parameter takes effect only if you set `AutoProvisioningGroupType` to instant.'."\n", + 'type' => 'object', + 'properties' => [ + 'Strategy' => [ + 'description' => 'Specifies which resource pools to use to create instances. Resource pools include the public pool and the private pools that are associated with elasticity assurance and capacity reservations in the Active state. Valid values:'."\n" + ."\n" + .'* PrivatePoolFirst: uses private pools first. If you set this parameter to PrivatePoolFirst, you can specify ResourcePoolOptions.PrivatePoolIds or leave ResourcePoolOptions.PrivatePoolIds empty. If you specify ResourcePoolOptions.PrivatePoolIds, the specified private pools are used first. If you leave ResourcePoolOptions.PrivatePoolIds empty or the private pools that you specify in ResourcePoolOptions.PrivatePoolIds have insufficient capacity, matching open private pools are used. If no matching open private pools exist, the public pool is used.'."\n" + .'* PrivatePoolOnly: uses only private pools. If you set this parameter to PrivatePoolOnly, you must specify ResourcePoolOptions.PrivatePoolIds. If the private pools that you specify in ResourcePoolOptions.PrivatePoolIds have insufficient capacity, instances cannot be created.'."\n" + .'* PublicPoolOnly: uses the public pool.'."\n" + ."\n" + .'Default value: PublicPoolOnly.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PrivatePoolFirst', + ], + 'PrivatePoolIds' => [ + 'description' => 'The IDs of private pools. The ID of a private pool is the same as the ID of the elasticity assurance or capacity reservation that is associated with the private pool. You can specify the IDs of only targeted private pools for this parameter.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of private pool N. The ID of a private pool is the same as the ID of the elasticity assurance or capacity reservation that is associated with the private pool. You can specify the ID of only a targeted private pool for this parameter. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eap-bp67acfmxazb4****', + ], + 'required' => false, + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'LaunchConfiguration', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The startup parameter.'."\n", + 'type' => 'object', + 'properties' => [ + 'Period' => [ + 'description' => 'The subscription period of the instance. The unit is specified by `PeriodUnit`. This parameter takes effect and is required only if the subscription billing method is selected. Valid values:'."\n" + ."\n" + .'Valid values if PeriodUnit is set to Month: 1, 2, 3, 6, and 12.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'PeriodUnit' => [ + 'description' => 'The unit of the subscription period. Default value: Month. Valid values:'."\n" + ."\n" + .'Month'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + 'AutoRenew' => [ + 'description' => 'Specifies whether to enable auto-renewal for the reserved instance. This parameter is required only when the instance uses the subscription billing method. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + 'AutoRenewPeriod' => [ + 'description' => 'The auto-renewal period of the instance. Valid values:'."\n" + ."\n" + .'Valid values when PeriodUnit is set to Month: 1, 2, 3, 6, 12, 24, 36, 48, and 60.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'SpotDuration' => [ + 'description' => 'The protection period of the spot instance. Unit: hours. Default value: 1. Valid values: Valid values:'."\n" + ."\n" + .'* 1: After a spot instance is created, Alibaba Cloud ensures that the instance is not automatically released within 1 hour. After the 1-hour protection period ends, the system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + .'* 0: After a spot instance is created, Alibaba Cloud does not ensure that the instance runs for 1 hour. The system compares the bid price with the market price and checks the resource inventory to determine whether to retain or release the instance.'."\n" + ."\n" + .'Alibaba Cloud sends an ECS system event to notify you 5 minutes before the instance is released. The spot instance is billed by second. We recommend that you specify an appropriate protection period based on your business requirements.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when the AutoProvisioningGroupType parameter is set to instant.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'SpotInterruptionBehavior' => [ + 'description' => 'The interruption event of the spot instances. Valid values:'."\n" + ."\n" + .'* Terminate: The instance is released.'."\n" + .'* Stop: The instance is stopped in economical mode.'."\n" + ."\n" + .'For information about the economical mode, see [Economical mode](~~63353~~).'."\n" + ."\n" + .'Default value: Terminate.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when the AutoProvisioningGroupType parameter is set to instant.', + 'type' => 'string', + 'required' => false, + 'example' => 'Terminate', + ], + 'ImageOptions' => [ + 'description' => 'The image options.'."\n" + ."\n" + .'When you specify this parameter, take note of the following items:'."\n" + ."\n" + .'* This parameter takes effect only when the AutoProvisioningGroupType parameter is set to instant.'."\n", + 'type' => 'object', + 'properties' => [ + 'LoginAsNonRoot' => [ + 'description' => 'Specifies whether the instance that uses the image supports logons of the ecs-user user. Valid value:'."\n" + ."\n" + .'* true: The instance that uses the image supports logons of the ecs-user user.'."\n" + .'* false: The instance that uses the image does not support logons of the ecs-user user.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + 'required' => false, + ], + 'SchedulerOptions' => [ + 'type' => 'object', + 'properties' => [ + 'DedicatedHostId' => [ + 'type' => 'string', + ], + 'DedicatedHostClusterId' => [ + 'type' => 'string', + ], + ], + ], + 'SecurityOptions' => [ + 'type' => 'object', + 'properties' => [ + 'TrustedSystemMode' => [ + 'type' => 'string', + ], + ], + ], + 'CpuOptions' => [ + 'type' => 'object', + 'properties' => [ + 'Core' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + 'ThreadsPerCore' => [ + 'type' => 'integer', + 'format' => 'int32', + ], + ], + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'PrePaidOptions', + 'in' => 'query', + 'style' => 'flat', + 'schema' => [ + 'description' => 'The capacity details of the subscription instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'SpecifyCapacityDistribution' => [ + 'description' => 'The minimum capacity set for different instance types. This parameter is valid only when `AutoProvisioningGroupType` is set to request.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Minimum capacity N for instance types.'."\n", + 'type' => 'object', + 'properties' => [ + 'InstanceTypes' => [ + 'description' => 'Details about the instance types. Duplicate instance types are not allowed and the instance types are within the LaunchTemplateConfig.InstanceType range.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The instance type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.c6.large', + ], + 'required' => false, + ], + 'MinTargetCapacity' => [ + 'description' => 'The minimum number of instances to be delivered within the `InstanceTypes` range.'."\n" + ."\n" + .'> `sum(MinTargetCapacity)<= TotalTargetCapacity` indicates that the sum of MinTargetCapacity values of all instance types cannot exceed the TotalTargetCapacity value. If any instance type set cannot meet the MinTargetCapacity requirement due to insufficient inventory or other reasons, the entire request fails.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '5', + ], + ], + 'required' => false, + ], + 'required' => false, + ], + ], + 'required' => false, + ], + ], + [ + 'name' => 'ExecutionMode', + 'in' => 'query', + 'schema' => [ + 'type' => 'string', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'AutoProvisioningGroupId' => [ + 'description' => 'The ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'example' => 'apg-sn54avj8htgvtyh8****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '745CEC9F-0DD7-4451-9FE7-8B752F39****', + ], + 'LaunchResults' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LaunchResult' => [ + 'description' => 'The instances created by the auto provisioning group. The values of the parameters in this array are returned only when AutoProvisioningGroupType is set to `instant`.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => 'The zone ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-g', + ], + 'ErrorMsg' => [ + 'description' => 'The error message returned when the instance cannot be created.'."\n", + 'type' => 'string', + 'example' => 'Specific parameter is not valid.', + ], + 'InstanceType' => [ + 'description' => 'The instance type of the instance.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'ErrorCode' => [ + 'description' => 'The error code returned when the instance cannot be created.'."\n", + 'type' => 'string', + 'example' => 'InvalidParameter', + ], + 'SpotStrategy' => [ + 'description' => 'The bidding policy for the pay-as-you-go instance. Valid values:'."\n" + ."\n" + .'* NoSpot: The instance is a regular pay-as-you-go instance.'."\n" + .'* SpotWithPriceLimit: The instance is a spot instance for which you specify the maximum hourly price.'."\n" + .'* SpotAsPriceGo: The instance is a spot instance for which the market price at the time of purchase is used as the bid price.', + 'type' => 'string', + 'example' => 'NoSpot', + ], + 'Amount' => [ + 'description' => 'The number of created instances.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'InstanceIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The IDs of created instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the created instance.'."\n", + 'type' => 'string', + 'example' => '["i-bp67acfmxazb4p****"]', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidAutoProvisioningGroupName.Malformed', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroupName" is not valid.', + ], + [ + 'errorCode' => 'InvalidAutoProvisioningGroupType.ValueNotSupported', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroupType" is not supported.', + ], + [ + 'errorCode' => 'InvalidFleetExcessCapacityTerminationPolicy.ValueNotSupported', + 'errorMessage' => 'The specified parameter "ExcessCapacityTerminationPolicy" is not supported.', + ], + [ + 'errorCode' => 'InvalidDefaultTargetCapacityType.ValueNotSupported', + 'errorMessage' => 'The specified parameter "DefaultTargetCapacityType" is not supported.', + ], + [ + 'errorCode' => 'InvalidSpotAllocationStrategy.ValueNotSupported', + 'errorMessage' => 'The specified parameter "SpotAllocationStrategy" is not supported.', + ], + [ + 'errorCode' => 'InvalidSpotInstanceInterruptionBehavior.ValueNotSupported', + 'errorMessage' => 'The specified parameter "SpotInstanceInterruptionBehavior" is not supported.', + ], + [ + 'errorCode' => 'InvalidPayAsYouGoAllocationStrategy.ValueNotSupported', + 'errorMessage' => 'The specified parameter "PayAsYouGoAllocationStrategy" is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.SpotAllocationStrategy', + 'errorMessage' => 'The specified parameter "SpotAllocationStrategy" is empty.', + ], + [ + 'errorCode' => 'MissingParameter.LaunchTemplateConfigs', + 'errorMessage' => 'The specified parameter "LaunchTemplateConfigs" is empty.', + ], + [ + 'errorCode' => 'InvalidValidTime.MalFormed', + 'errorMessage' => 'The specified parameter "ValidTime" is not supported.', + ], + [ + 'errorCode' => 'InvalidLaunchTemplateVersion.ValueNotSupported', + 'errorMessage' => 'The specified parameter "LaunchTemplateVersion" is not valid.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroup" should not be null.', + ], + [ + 'errorCode' => 'InvalidRegion.ValueNotSupported', + 'errorMessage' => 'The specified Region does not exist.', + ], + [ + 'errorCode' => 'InvalidDescription.ValueNotSupported', + 'errorMessage' => 'The specified description is illegal.', + ], + [ + 'errorCode' => 'InvalidLaunchTemplate.ValueNotSupported', + 'errorMessage' => 'The SecurityGroupId or imageId in LaunchTemplate is not exists.', + ], + [ + 'errorCode' => 'InvalidCapacity.ValueNotSupported', + 'errorMessage' => 'The Capacity is illegal, or the TargetCapacity is large than SpotCapacity + PayAsYouGoCapacity.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The instanceType is illegal.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'InvalidLaunchTemplateConfigs.SizeExceed', + 'errorMessage' => 'The size of LaunchTemplateConfigs exceeds limit.', + ], + [ + 'errorCode' => 'InvalidParameter.SpotInstancePoolsToUseCount', + 'errorMessage' => 'The specified parameter "SpotInstancePoolsToUseCount" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.ResourceGroupId', + 'errorMessage' => 'The specified parameter "ResourceGroupId" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.TargetCapacity', + 'errorMessage' => 'The Capacity is illegal, TotalTargetCapacity, PayAsYouGoTargetCapacity, SpotTargetCapacity must be specified, meanwhile, the TargetCapacity must be larger than or equal to the sum of SpotCapacity and OnDemandCapacity.', + ], + [ + 'errorCode' => 'MissingParameter.WeightedCapacity', + 'errorMessage' => 'The WeightedCapacity of LaunchTemplateConfig should not be empty.', + ], + [ + 'errorCode' => 'InvalidParameter.WeightedCapacityBeyondRange', + 'errorMessage' => 'The WeightedCaTpacity of LaunchTemplateConfig beyond permitted range.', + ], + [ + 'errorCode' => 'InvalidParameter.MaxPrice', + 'errorMessage' => 'The specified parameter "MaxSpotPrice" or "MaxPrice" of LaunchTemplateConfig is not valid.', + ], + [ + 'errorCode' => 'NoPermission', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'Duplicate.DiskCategory', + 'errorMessage' => 'The specified disk configs contains duplicate DiskCategory.', + ], + [ + 'errorCode' => 'InvalidImageFamily.Confict', + 'errorMessage' => 'The specified parameter ImageFamily should be empty when the parameter ImageId is specified.', + ], + [ + 'errorCode' => 'Invalid.ResourcePoolOptions.PrivatePoolIds', + 'errorMessage' => 'The zone or instancetype of the ResourcePoolOptions.PrivatePoolIds does not match the LaunchTemplateConfig.', + ], + [ + 'errorCode' => 'Invalid.ResourcePoolOptions.Strategy', + 'errorMessage' => 'The specified ResourcePoolOptions.Strategy is invalid.', + ], + [ + 'errorCode' => 'Invalid.ResourcePoolOptionsPrivatePoolIds.SizeExceed', + 'errorMessage' => 'The size of ResourcePoolOptions.PrivatePoolIds exceeds limit.', + ], + [ + 'errorCode' => 'MissingParameter.ResourcePoolOptions.PrivatePoolIds', + 'errorMessage' => 'The specified ResourcePoolOptions.PrivatePoolIds should not be null when ResourcePoolOptions.Strategy is PrivatePoolOnly.', + ], + [ + 'errorCode' => 'InvalidSpotDuration', + 'errorMessage' => 'The specified SpotDuration is not valid.', + ], + [ + 'errorCode' => 'InvalidSpotInterruptionBehavior', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidParameter.SecurityGroupIdRepeated', + 'errorMessage' => 'The SecurityGroupId is repeated.', + ], + [ + 'errorCode' => 'VpcMismatch.SecurityGroupAndVSwitch', + 'errorMessage' => 'Specified security group and virtual switch are not in the same VPC.', + ], + [ + 'errorCode' => 'InvalidMinTargetCapacity.NotSatisfied', + 'errorMessage' => 'The inventory of specified InstanceType does not meet the MinTargetCapacity.', + ], + [ + 'errorCode' => 'InvalidParameterRange.MinTargetCapacity', + 'errorMessage' => 'The MinTargetCapacity exceeds the limit[0-TotalTargetCapacity].', + ], + [ + 'errorCode' => 'InvalidUserData.Base64FormatInvalid', + 'errorMessage' => 'The specified parameter UserData must be base64 encoded.', + ], + [ + 'errorCode' => 'InvalidUserData.SizeExceeded', + 'errorMessage' => 'The specified parameter UserData exceeds the size.', + ], + [ + 'errorCode' => 'InvalidAutoReleaseTime.Malformed', + 'errorMessage' => 'The specified parameter AutoReleaseTime is not valid.', + ], + [ + 'errorCode' => 'QuotaExceeded.AutoProvisioningGroup', + 'errorMessage' => 'The count of AutoProvisioningGroup exceeds the limit.', + ], + ], + 403 => [ + [ + 'errorCode' => 'TotalTargetCapacityLimitExceed', + 'errorMessage' => 'The TotalTargetCapacity exceeds the limit[0-2000].', + ], + [ + 'errorCode' => 'SpotTargetCapacityLimitExceed', + 'errorMessage' => 'The SpotTargetCapacity exceeds the limit[0-2000].', + ], + [ + 'errorCode' => 'PayAsYouGoTargetCapacityLimitExceed', + 'errorMessage' => 'The PayAsYouGoTargetCapacity exceeds the limit[0-2000].', + ], + ], + [ + [ + 'errorCode' => 'InvalidResourcePoolOptionsPrivatePoolIds.NotFound', + 'errorMessage' => 'The ResourcePoolOptions.PrivatePoolIds do not exist.', + ], + [ + 'errorCode' => 'InvalidSecurityGroupId.NotFound', + 'errorMessage' => 'The SecurityGroupId %s provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified virtual switch %s does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"AutoProvisioningGroupId\\": \\"apg-sn54avj8htgvtyh8****\\",\\n \\"RequestId\\": \\"745CEC9F-0DD7-4451-9FE7-8B752F39****\\",\\n \\"LaunchResults\\": {\\n \\"LaunchResult\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-g\\",\\n \\"ErrorMsg\\": \\"Specific parameter is not valid.\\",\\n \\"InstanceType\\": \\"ecs.g5.large\\",\\n \\"ErrorCode\\": \\"InvalidParameter\\",\\n \\"SpotStrategy\\": \\"NoSpot\\",\\n \\"Amount\\": 1,\\n \\"InstanceIds\\": {\\n \\"InstanceId\\": [\\n \\"[\\\\\\"i-bp67acfmxazb4p****\\\\\\"]\\"\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n apg-sn54avj8htgvtyh8****\\n 745CEC9F-0DD7-4451-9FE7-8B752F39****\\n","errorExample":""}]', + 'title' => 'CreateAutoProvisioningGroup', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'* Auto Provisioning is a service that allows quick deployment of an instance cluster that consists of spot instances and pay-as-you-go instances. Auto Provisioning supports push-button deployment of instance clusters across different billing methods, instance families, and zones. For more information, see [Use auto provisioning group-related API operations to create multiple ECS instances at the same time](~~200772~~).'."\n" + .'* Auto Provisioning uses auto provisioning groups to schedule and maintain computing resources. You can use auto provisioning groups to obtain a steady supply of computing resources. This helps reduce the impact on compute capacity when spot instances are reclaimed.'."\n" + .'* Auto Provisioning is provided free of charge. However, you are charged for instance resources that are created in auto provisioning groups. For more information, see [Overview of spot instances](~~52088~~) and [Pay-as-you-go](~~40653~~).'."\n" + .'* When you specify both a launch template (`LaunchTemplateId`) and extended configurations (`LaunchConfiguration.*` parameters), LaunchTemplateId takes precedence.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeAutoProvisioningGroups' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28900', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '2', + 'default' => '10', + ], + ], + [ + 'name' => 'AutoProvisioningGroupName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testAutoProvisioningGroupName', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the auto provisioning group belongs.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'AutoProvisioningGroupId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the auto provisioning group. You can specify up to 20 IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'apg-sn54avj8htgvtyh8****', + ], + 'required' => false, + 'example' => 'apg-sn54avj8htgvtyh8****', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'AutoProvisioningGroupStatus', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The status of the auto provisioning group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The status of auto provisioning group N. Valid values:'."\n" + ."\n" + .'* submitted: The auto provisioning group is created but has not started to execute scheduling tasks.'."\n" + .'* active: The auto provisioning group is executing scheduling tasks.'."\n" + .'* deleted: The auto provisioning group is deleted.'."\n" + .'* deleted-running: The auto provisioning group is being deleted.'."\n" + .'* modifying: The auto provisioning group is being modified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'active', + ], + 'required' => false, + 'example' => 'active', + 'maxItems' => 10, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags that are added to the auto provisioning group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N that is added to the auto provisioning group.'."\n" + ."\n" + .'Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N that is added to the auto provisioning group.'."\n" + ."\n" + .'Valid values of N: 1 to 20. The tag value can be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '745CEC9F-0DD7-4451-9FE7-8B752F39****', + ], + 'PageNumber' => [ + 'description' => 'The number of the page returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of queried auto provisioning groups.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'AutoProvisioningGroups' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AutoProvisioningGroup' => [ + 'description' => 'Details about the auto provisioning groups.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the auto provisioning group was created.'."\n", + 'type' => 'string', + 'example' => '2019-04-01T15:10:20Z', + ], + 'AutoProvisioningGroupName' => [ + 'description' => 'The name of the auto provisioning group.'."\n", + 'type' => 'string', + 'example' => 'EcsDocTest', + ], + 'Status' => [ + 'description' => 'The status of the auto provisioning group. Valid values:'."\n" + ."\n" + .'* submitted: The auto provisioning group was created but did not execute scheduling tasks.'."\n" + .'* active: The auto provisioning group was executing scheduling tasks.'."\n" + .'* deleted: The auto provisioning group was deleted.'."\n" + .'* delete-running: The auto provisioning group was being deleted.'."\n" + .'* modifying: The auto provisioning group was being modified.'."\n", + 'type' => 'string', + 'example' => 'submitted', + ], + 'TerminateInstances' => [ + 'description' => 'Indicates whether to release instances in the auto provisioning group when the auto provisioning group is deleted. Valid values:'."\n" + ."\n" + .'* true: releases the instances.'."\n" + .'* false: only removes the instances from the auto provisioning group but does not release the instances.'."\n", + 'type' => 'boolean', + 'example' => 'false', + ], + 'MaxSpotPrice' => [ + 'description' => 'The maximum price of spot instances in the auto provisioning group.'."\n" + ."\n" + .'> When both the MaxSpotPrice and LaunchTemplateConfig.N.MaxPrice parameters are specified, the smaller one of the two parameter values is used.'."\n" + ."\n" + .'The LaunchTemplateConfig.N.Priority parameter is set when the auto provisioning group is created, and cannot be modified.', + 'type' => 'number', + 'format' => 'float', + 'example' => '2', + ], + 'State' => [ + 'description' => 'The overall status of instance scheduling in the auto provisioning group. Valid values:'."\n" + ."\n" + .'* fulfilled: Scheduling was complete and the instances were delivered.'."\n" + .'* pending-fulfillment: The instances were being created.'."\n" + .'* pending-termination: The instances were being removed.'."\n" + .'* error: An exception occurred during scheduling and the instances were not delivered.'."\n", + 'type' => 'string', + 'example' => 'fulfilled', + ], + 'LaunchTemplateId' => [ + 'description' => 'The ID of the launch template associated with the auto provisioning group.'."\n", + 'type' => 'string', + 'example' => 'lt-bp1fgzds4bdogu03****', + ], + 'ValidFrom' => [ + 'description' => 'The time at which the auto provisioning group is started. The provisioning group is effective until the point in time specified by `ValidUntil`.'."\n", + 'type' => 'string', + 'example' => '2019-04-01T15:10:20Z', + ], + 'LaunchTemplateVersion' => [ + 'description' => 'The version of the launch template associated with the auto provisioning group.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'TerminateInstancesWithExpiration' => [ + 'description' => 'Indicates whether to release instances in the auto provisioning group when the group expires. Valid values:'."\n" + ."\n" + .'* true: releases the instances.'."\n" + .'* false: only removes the instances from the auto provisioning group but does not release the instances.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'RegionId' => [ + 'description' => 'The region ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'ValidUntil' => [ + 'description' => 'The time at which the auto provisioning group expires. The period of time between this point in time and the point in time specified by the `ValidFrom` parameter is the validity period of the auto provisioning group.'."\n", + 'type' => 'string', + 'example' => '2019-06-01T15:10:20Z', + ], + 'AutoProvisioningGroupType' => [ + 'description' => 'The delivery type of the auto provisioning group. Valid values:'."\n" + ."\n" + .'* request: one-time delivery. When the auto provisioning group is started, it delivers instances only once. If the instances fail to be delivered, the auto provisioning group does not retry the delivery.'."\n" + .'* maintain: continuous delivery. When the auto provisioning group is started, it attempts to deliver instances that meet the target capacity and monitors the real-time capacity. If the target capacity of the auto provisioning group is not reached, the auto provisioning group continues to create instances until the target capacity is reached.'."\n", + 'type' => 'string', + 'example' => 'maintain', + ], + 'AutoProvisioningGroupId' => [ + 'description' => 'The ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'example' => 'apg-sn54avj8htgvtyh8****', + ], + 'ExcessCapacityTerminationPolicy' => [ + 'description' => 'Indicates whether to release the scaled-in instances when the real-time capacity of the auto provisioning group exceeds the target capacity and the group is triggered to scale in. Valid values:'."\n" + ."\n" + .'* termination: releases the scaled-in instances.'."\n" + .'* no-termination: only removes the scaled-in instances from the auto provisioning group but does not release the instances.'."\n", + 'type' => 'string', + 'example' => 'termination', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the auto provisioning group belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'LaunchTemplateConfigs' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'LaunchTemplateConfig' => [ + 'description' => 'Details about the extended configurations.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'MaxPrice' => [ + 'description' => 'The maximum price of the instance type specified in the extended configuration.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '3', + ], + 'Priority' => [ + 'description' => 'The priority of the instance type specified in the extended configuration. A value of 0 indicates the highest priority.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '1', + ], + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch specified in the extended configuration.'."\n", + 'type' => 'string', + 'example' => 'vsw-sn5bsitu4lfzgc5o7****', + ], + 'WeightedCapacity' => [ + 'description' => 'The weight of the instance type specified in the extended configuration.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '2', + ], + 'InstanceType' => [ + 'description' => 'The instance type that is specified in the extended configuration.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + ], + ], + ], + ], + ], + 'SpotOptions' => [ + 'description' => 'The policy related to spot instances.', + 'type' => 'object', + 'properties' => [ + 'InstancePoolsToUseCount' => [ + 'description' => 'The number of instances that the auto provisioning group creates by selecting the instance type of the lowest price.'."\n" + ."\n" + .'> This parameter is set when the auto provisioning group is created, and cannot be modified.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'AllocationStrategy' => [ + 'description' => 'The policy for creating spot instances. Valid values:'."\n" + ."\n" + .'* lowest-price: cost optimization policy. This policy indicates that the lowest-priced instance type is used to create instances.'."\n" + .'* diversified: balanced distribution policy. This policy indicates that instances are created evenly across multiple zones specified in the extended configuration.', + 'type' => 'string', + 'example' => 'diversified', + ], + 'InstanceInterruptionBehavior' => [ + 'description' => 'The action to be performed after the excess spot instances are stopped. Valid values:'."\n" + ."\n" + .'* stop: retains the excess spot instances in the stopped state.'."\n" + .'* terminate: releases the excess spot instances.', + 'type' => 'string', + 'example' => 'stop', + ], + ], + ], + 'PayAsYouGoOptions' => [ + 'description' => 'The policies related to pay-as-you-go instances.'."\n", + 'type' => 'object', + 'properties' => [ + 'AllocationStrategy' => [ + 'description' => 'The policy for creating pay-as-you-go instances. Valid values:'."\n" + ."\n" + .'* lowest-price: cost optimization policy. This policy indicates that lowest-cost instance types are used to create instances.'."\n" + .'* prioritized: priority-based policy. This policy indicates that instances are created based on the priority specified by the LaunchTemplateConfig.N.Priority parameter.'."\n" + ."\n" + .'> The LaunchTemplateConfig.N.Priority parameter is set when the auto provisioning group is created, and cannot be modified.'."\n", + 'type' => 'string', + 'example' => 'prioritized', + ], + ], + ], + 'TargetCapacitySpecification' => [ + 'description' => 'The settings of the target capacity of the auto provisioning group.'."\n", + 'type' => 'object', + 'properties' => [ + 'SpotTargetCapacity' => [ + 'description' => 'The target capacity of spot instances that the auto provisioning group provisions.', + 'type' => 'number', + 'format' => 'float', + 'example' => '20', + ], + 'PayAsYouGoTargetCapacity' => [ + 'description' => 'The target capacity of pay-as-you-go instances that the auto provisioning group provisions.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '30', + ], + 'DefaultTargetCapacityType' => [ + 'description' => 'The type of supplemental instances. When the sum of the `PayAsYouGoTargetCapacity` and `SpotTargetCapacity` values is less than the `TotalTargetCapacity` value, the auto provisioning group creates instances of the specified billing method to meet the target capacity. Valid values:'."\n" + ."\n" + .'* PayAsYouGo: pay-as-you-go instances.'."\n" + .'* Spot: spot instances.', + 'type' => 'string', + 'example' => 'Spot', + ], + 'TotalTargetCapacity' => [ + 'description' => 'The target capacity of the auto provisioning group. The capacity consists of the following parts:'."\n" + ."\n" + .'* PayAsYouGoTargetCapacity'."\n" + .'* SpotTargetCapacity'."\n" + .'* The supplemental capacity besides instance capacities specified by PayAsYouGoTargetCapacity and SpotTargetCapacity.'."\n", + 'type' => 'number', + 'format' => 'float', + 'example' => '60', + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags that are added to the auto provisioning group.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TagKey' => [ + 'description' => 'The key of tag N that is added to the auto provisioning group.'."\n" + ."\n" + .'Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + 'TagValue' => [ + 'description' => 'The value of tag N that is added to the auto provisioning group.'."\n" + ."\n" + .'Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain http:// or https://.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParamter.RegionId', + 'errorMessage' => 'The regionId should not be null.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroupName" is not valid.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"745CEC9F-0DD7-4451-9FE7-8B752F39****\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 10,\\n \\"AutoProvisioningGroups\\": {\\n \\"AutoProvisioningGroup\\": [\\n {\\n \\"CreationTime\\": \\"2019-04-01T15:10:20Z\\",\\n \\"AutoProvisioningGroupName\\": \\"EcsDocTest\\",\\n \\"Status\\": \\"submitted\\",\\n \\"TerminateInstances\\": false,\\n \\"MaxSpotPrice\\": 2,\\n \\"State\\": \\"fulfilled\\",\\n \\"LaunchTemplateId\\": \\"lt-bp1fgzds4bdogu03****\\",\\n \\"ValidFrom\\": \\"2019-04-01T15:10:20Z\\",\\n \\"LaunchTemplateVersion\\": \\"1\\",\\n \\"TerminateInstancesWithExpiration\\": true,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"ValidUntil\\": \\"2019-06-01T15:10:20Z\\",\\n \\"AutoProvisioningGroupType\\": \\"maintain\\",\\n \\"AutoProvisioningGroupId\\": \\"apg-sn54avj8htgvtyh8****\\",\\n \\"ExcessCapacityTerminationPolicy\\": \\"termination\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"LaunchTemplateConfigs\\": {\\n \\"LaunchTemplateConfig\\": [\\n {\\n \\"MaxPrice\\": 3,\\n \\"Priority\\": 1,\\n \\"VSwitchId\\": \\"vsw-sn5bsitu4lfzgc5o7****\\",\\n \\"WeightedCapacity\\": 2,\\n \\"InstanceType\\": \\"ecs.g5.large\\"\\n }\\n ]\\n },\\n \\"SpotOptions\\": {\\n \\"InstancePoolsToUseCount\\": 2,\\n \\"AllocationStrategy\\": \\"diversified\\",\\n \\"InstanceInterruptionBehavior\\": \\"stop\\"\\n },\\n \\"PayAsYouGoOptions\\": {\\n \\"AllocationStrategy\\": \\"prioritized\\"\\n },\\n \\"TargetCapacitySpecification\\": {\\n \\"SpotTargetCapacity\\": 20,\\n \\"PayAsYouGoTargetCapacity\\": 30,\\n \\"DefaultTargetCapacityType\\": \\"Spot\\",\\n \\"TotalTargetCapacity\\": 60\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagKey\\": \\"TestKey\\",\\n \\"TagValue\\": \\"TestValue\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 1\\n 10\\n 85331AC9-82C0-4604-9A14-048865BE****\\n \\n \\n false\\n false\\n 2019-06-17T15:22Z\\n maintain\\n \\n lowest-price\\n \\n test61****\\n \\n no-termination\\n active\\n 5\\n 1\\n 2100-01-01T07:59Z\\n \\n 180\\n 300\\n 120\\n PayAsYouGo\\n \\n fulfilled\\n lt-uf657o6auob6aivd****\\n cn-shanghai\\n apg-uf6c7pl7b30t4m98****\\n \\n 1\\n terminate\\n lowest-price\\n \\n \\n \\n 3\\n 1\\n vsw-uf6qbjwokzl67uqqf****\\n 1\\n ecs.c5.xlarge\\n \\n \\n 2\\n 2\\n vsw-uf6n6iy1ib39eqvph****\\n 1\\n ecs.g5.large\\n \\n \\n 1\\n 3\\n vsw-uf6gs8uerj5osels4****\\n 1\\n ecs.hfc5.large\\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeAutoProvisioningGroups', + 'summary' => 'Queries information about one or more auto provisioning groups.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeAutoProvisioningGroupInstances' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28899', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the auto provisioning group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'AutoProvisioningGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'apg-uf6jel2bbl62wh13****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'B48A12CD-1295-4A38-A8F0-0E92C937****', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of queried instances in the auto provisioning group.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'Instances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Instance' => [ + 'description' => 'The information about the instances in the auto provisioning group.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the instance.'."\n", + 'type' => 'string', + 'example' => 'Running', + ], + 'CreationTime' => [ + 'description' => 'The time when the instance was created.'."\n", + 'type' => 'string', + 'example' => '2017-12-10T04:04Z', + ], + 'IsSpot' => [ + 'description' => 'Indicates whether the instance is a spot instance.', + 'type' => 'boolean', + 'example' => 'true', + ], + 'CPU' => [ + 'description' => 'The number of vCPU cores of the instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'InstanceId' => [ + 'description' => 'The instance ID.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4p****', + ], + 'NetworkType' => [ + 'description' => 'The network type of the instance. Valid values:'."\n" + ."\n" + .'* vpc: Virtual Private Cloud (VPC)'."\n" + .'* classic: classic network'."\n", + 'type' => 'string', + 'example' => 'vpc', + ], + 'InstanceType' => [ + 'description' => 'The ECS instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'RegionId' => [ + 'description' => 'The region ID of the container group.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'IoOptimized' => [ + 'description' => 'Indicates whether the instance is an I/O optimized instance.'."\n", + 'type' => 'boolean', + 'example' => 'true', + ], + 'OsType' => [ + 'description' => 'The operating system type of the instance. Valid values:'."\n" + ."\n" + .'* windows'."\n" + .'* linux'."\n", + 'type' => 'string', + 'example' => 'linux', + ], + 'ZoneId' => [ + 'description' => 'The ID of the zone to which the instance belongs.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-g', + ], + 'Memory' => [ + 'description' => 'The memory capacity of the instance. Unit: MiB.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1024', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroupId" should not be null.', + ], + [ + 'errorCode' => 'MissingParamter.RegionId', + 'errorMessage' => 'The regionId should not be null.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'User not authorized to operate on the specified resource, or this API doesn\'t support RAM.', + ], + ], + [ + [ + 'errorCode' => 'InvalidAutoProvisioningGroupId.NotFound', + 'errorMessage' => 'The specified AutoProvisioningGroupId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"B48A12CD-1295-4A38-A8F0-0E92C937****\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 2,\\n \\"Instances\\": {\\n \\"Instance\\": [\\n {\\n \\"Status\\": \\"Running\\",\\n \\"CreationTime\\": \\"2017-12-10T04:04Z\\",\\n \\"IsSpot\\": true,\\n \\"CPU\\": 2,\\n \\"InstanceId\\": \\"i-bp67acfmxazb4p****\\",\\n \\"NetworkType\\": \\"vpc\\",\\n \\"InstanceType\\": \\"ecs.g5.large\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"IoOptimized\\": true,\\n \\"OsType\\": \\"linux\\",\\n \\"ZoneId\\": \\"cn-hangzhou-g\\",\\n \\"Memory\\": 1024\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 2\\n 2\\n A43735F7-30BD-4D89-AB8A-030EB24B****\\n \\n \\n 2019-06-17T15:25Z\\n true\\n linux\\n vpc\\n Running\\n 8192\\n cn-shanghai\\n i-bp67acfmxazb4p****\\n 2\\n cn-shanghai-a\\n ecs.g5.large\\n \\n \\n 2019-06-17T15:25Z\\n true\\n linux\\n vpc\\n Running\\n 8192\\n cn-shanghai\\n i-bp67acfmxazb5p****\\n 2\\n cn-shanghai-a\\n ecs.g5.large\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeAutoProvisioningGroupInstances', + 'summary' => 'Queries information about Elastic Compute Service (ECS) instances in an auto provisioning group.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyAutoProvisioningGroup' => [ + 'summary' => 'Modifies the configurations of an auto provisioning group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29043', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the auto-provisioning group. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AutoProvisioningGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-provisioning group ID.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'apg-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'ExcessCapacityTerminationPolicy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release the removed instances when the real-time capacity of the auto-provisioning group exceeds the target capacity and a scale-in event is triggered. Valid values:'."\n" + ."\n" + .'* termination: releases the removed instances.'."\n" + .'* no-termination: removes the instances from the auto-provisioning group but does not release them.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'no-termination', + ], + ], + [ + 'name' => 'DefaultTargetCapacityType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of supplemental instances. When the sum of the PayAsYouGoTargetCapacity and SpotTargetCapacity values is smaller than the TotalTargetCapacity value, the auto-provisioning group creates instances of the specified type to meet the target capacity. Valid values:'."\n" + ."\n" + .'* PayAsYouGo: pay-as-you-go instances'."\n" + .'* Spot: spot instances', + 'type' => 'string', + 'required' => false, + 'example' => 'Spot', + ], + ], + [ + 'name' => 'TerminateInstancesWithExpiration', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release instances that are located in the auto-provisioning group after the group expires. Valid values:'."\n" + ."\n" + .'* true: releases instances that are located in the auto-provisioning group.'."\n" + .'* false: removes instances from the auto-provisioning group but does not release them.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'MaxSpotPrice', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum price of spot instances in the auto-provisioning group.'."\n" + ."\n" + .'> When both the MaxSpotPrice and LaunchTemplateConfig.N.MaxPrice parameters are specified, the smaller one of the two parameter values is used. The LaunchTemplateConfig.N.MaxPrice parameter is specified when the auto-provisioning group is created, and cannot be modified.', + 'type' => 'number', + 'format' => 'float', + 'required' => false, + 'example' => '0.5', + ], + ], + [ + 'name' => 'TotalTargetCapacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total target capacity of the auto-provisioning group. The value must be a positive integer.'."\n" + ."\n" + .'The total target capacity of the auto-provisioning group must be greater than or equal to the sum of the target capacity of pay-as-you-go instances specified by the PayAsYouGoTargetCapacity parameter as well as the target capacity of spot instances specified by the SpotTargetCapacity parameter.', + 'type' => 'string', + 'required' => false, + 'example' => '70', + ], + ], + [ + 'name' => 'PayAsYouGoTargetCapacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The target capacity of pay-as-you-go instances in the auto-provisioning group. Valid values: Set this parameter to a value smaller than the TotalTargetCapacity value.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '30', + ], + ], + [ + 'name' => 'SpotTargetCapacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The target capacity of spot instances in the auto-provisioning group. Valid values: Set this parameter to a value smaller than the TotalTargetCapacity value.', + 'type' => 'string', + 'required' => false, + 'example' => '30', + ], + ], + [ + 'name' => 'AutoProvisioningGroupName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the auto-provisioning group. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with http:// or https://.[ It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).](http://https://。、(:)、(\\_)(-)。)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'apg-test', + ], + ], + [ + 'name' => 'LaunchTemplateConfig', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The extended configurations of the launch template.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Extended configuration N.'."\n", + 'type' => 'object', + 'properties' => [ + 'VSwitchId' => [ + 'description' => 'The ID of the vSwitch in extended configuration N. The zone of the instances created from the extended configuration is determined by the vSwitch.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'vsw-sn5bsitu4lfzgc5o7****', + ], + 'MaxPrice' => [ + 'description' => 'The maximum price of spot instances in extended configuration N.', + 'type' => 'number', + 'format' => 'double', + 'required' => false, + 'example' => '3', + ], + 'Priority' => [ + 'description' => 'The priority of extended configuration N. A value of 0 indicates the highest priority. The value must be greater than 0.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + 'InstanceType' => [ + 'description' => 'The instance type in extended configuration N. Valid values of N: 1 to 20. For more information about the valid values of this parameter, see [Instance families](~~25378~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + 'WeightedCapacity' => [ + 'description' => 'The weight of the instance type specified in the extended configuration. A greater weight indicates that a single instance has more computing power and fewer instances are required. The value must be greater than 0.'."\n" + ."\n" + .'The weight is calculated based on the computing power of the instance type and the minimum computing power of a single instance in the cluster that can created by the auto-provisioning group. For example, assume that the minimum computing power of a single instance is 8 vCPUs and 60 GiB of memory.'."\n" + ."\n" + .'* For an instance type with 8 vCPUs and 60 GiB of memory, you can set the weight to 1.'."\n" + .'* For an instance type with 16 vCPUs and 120 GiB of memory, you can set the weight to 2.'."\n", + 'type' => 'number', + 'format' => 'double', + 'required' => false, + 'example' => '2', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'B48A12CD-1295-4A38-A8F0-0E92C937****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroupId" should not be null.', + ], + [ + 'errorCode' => 'NoPermission', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'InvalidLaunchTemplateConfigs.SizeExceed', + 'errorMessage' => 'The size of LaunchTemplateConfigs exceeds limit.', + ], + [ + 'errorCode' => 'QuotaExceed.LaunchTemplateConfigs', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'VpcMismatch.SecurityGroupAndVSwitch', + 'errorMessage' => 'Specified security group and virtual switch are not in the same VPC.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'User not authorized to operate on the specified resource, or this API doesn\'t support RAM.', + ], + [ + 'errorCode' => 'InvalidName.Malformed', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroupName" is not valid.', + ], + [ + 'errorCode' => 'AutoProvisioningGroup.Unauthorized', + 'errorMessage' => 'Unauthorized to operate current action.', + ], + [ + 'errorCode' => 'AutoProvisioningGroup.IncorrectStatus', + 'errorMessage' => 'Current status of AutoProvisioningGroup does not support curren action.', + ], + [ + 'errorCode' => 'InvalidParameter.TargetCapacity', + 'errorMessage' => 'The Capacity is illegal, TotalTargetCapacity, PayAsYouGoTargetCapacity, SpotTargetCapacity must be specified, meanwhile, the TargetCapacity must be larger than or equal to the sum of SpotCapacity and OnDemandCapacity.', + ], + ], + [ + [ + 'errorCode' => 'InvalidAutoProvisioningGroupId.NotFound', + 'errorMessage' => 'The specified AutoProvisioningGroupId does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.MaxPrice', + 'errorMessage' => 'The specified parameter "MaxSpotPrice" is not valid.', + ], + [ + 'errorCode' => 'InvalidVSwitchId.NotFound', + 'errorMessage' => 'The specified virtual switch %s does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B48A12CD-1295-4A38-A8F0-0E92C937****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 928E2273-5715-46B9-A730-238DC996****\\n","errorExample":""}]', + 'title' => 'ModifyAutoProvisioningGroup', + 'description' => 'Before you call this operation, take note of the following items:'."\n" + ."\n" + .'* If you modify the capacity or capacity-related settings of an auto-provisioning group, the group executes a scheduling task after the group is modified.'."\n" + .'* You cannot modify an auto-provisioning group when the group is being deleted.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeAutoProvisioningGroupHistory' => [ + 'summary' => 'Queries the scheduling tasks of an auto provisioning group.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28898', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number of the returned page. Pages start from page 1.'."\n" + ."\n" + .'Default value: 1'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: 1 to 100.'."\n" + ."\n" + .'and the default value is 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '5', + 'default' => '10', + ], + ], + [ + 'name' => 'AutoProvisioningGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'apg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The beginning of the time range of the queried data. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2019-04-01T15:10:20Z', + ], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The end of the time range of the queried data. The time follows the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHH:mm:ssZ format. The time is displayed in UTC.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2019-06-20T15:10:20Z', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => 'B48A12CD-1295-4A38-A8F0-0E92C937****', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The number of queried scheduling tasks in the auto provisioning group.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'AutoProvisioningGroupHistories' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AutoProvisioningGroupHistory' => [ + 'description' => 'An array consisting of AutoProvisioningGroupHistory data.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The execution status of the single scheduling task. Valid values:'."\n" + ."\n" + .'* prepare: The scheduling task is being executed.'."\n" + .'* success: The scheduling task is executed.'."\n" + .'* failed: The scheduling task failed to be executed.'."\n", + 'type' => 'string', + 'example' => 'success', + ], + 'StartTime' => [ + 'description' => 'The start time of executing the single scheduling task.'."\n", + 'type' => 'string', + 'example' => '2019-04-01T15:10:20Z', + ], + 'TaskId' => [ + 'description' => 'The ID of the scheduling task.'."\n", + 'type' => 'string', + 'example' => 'apg-task-bp67acfmxazb4p****', + ], + 'LastEventTime' => [ + 'description' => 'The execution time of the last instance creation performed by the single scheduling task.'."\n", + 'type' => 'string', + 'example' => '2019-04-01T15:10:20Z', + ], + 'ActivityDetails' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ActivityDetail' => [ + 'description' => 'An array consisting of ActivityDetail data.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The execution status of instance creation performed by the single scheduling task. Valid values:'."\n" + ."\n" + .'* Successful: Instances are created.'."\n" + .'* Failed: Instances failed to be created.'."\n" + .'* InProgress: Instances are being created.'."\n" + .'* Warning: Some instances are created.'."\n", + 'type' => 'string', + 'example' => 'Successful', + ], + 'Detail' => [ + 'description' => 'The execution details of instance creation performed by the single scheduling task.'."\n", + 'type' => 'string', + 'example' => 'New ECS instances "i-bp67acfmxazb4p****, i-bp67acfmxazb5p****" created.', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroupId" should not be null.', + ], + [ + 'errorCode' => 'MissingParamter.RegionId', + 'errorMessage' => 'The regionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.periodTime', + 'errorMessage' => 'The format of startTime or endTime is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'User not authorized to operate on the specified resource, or this API doesn\'t support RAM.', + ], + ], + [ + [ + 'errorCode' => 'InvalidAutoProvisioningGroupId.NotFound', + 'errorMessage' => 'The specified AutoProvisioningGroupId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"B48A12CD-1295-4A38-A8F0-0E92C937****\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 10,\\n \\"AutoProvisioningGroupHistories\\": {\\n \\"AutoProvisioningGroupHistory\\": [\\n {\\n \\"Status\\": \\"success\\",\\n \\"StartTime\\": \\"2019-04-01T15:10:20Z\\",\\n \\"TaskId\\": \\"apg-task-bp67acfmxazb4p****\\",\\n \\"LastEventTime\\": \\"2019-04-01T15:10:20Z\\",\\n \\"ActivityDetails\\": {\\n \\"ActivityDetail\\": [\\n {\\n \\"Status\\": \\"Successful\\",\\n \\"Detail\\": \\"New ECS instances \\\\\\"i-bp67acfmxazb4p****, i-bp67acfmxazb5p****\\\\\\" created.\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 1\\n 10\\n BA55349F-6E36-4E64-964B-419515D1****\\n \\n \\n success\\n \\n \\n New ECS instances i-bp67acfmxazb4ph***, i-bp67acfmxazb4pi*** created.\\n Successful\\n \\n \\n 2019-06-17T08:48:00Z\\n 2019-06-17T08:47:52Z\\n apg-task-uf66bqtabg10wcf6****\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeAutoProvisioningGroupHistory', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteAutoProvisioningGroup' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28856', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'AutoProvisioningGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the auto provisioning group.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'apg-bpuf6jel2bbl62wh13****', + ], + ], + [ + 'name' => 'TerminateInstances', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to release instances in the auto provisioning group. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'> By default, this parameter inherits the value of `TerminateInstances` that you specified when you call the `CreateAutoProvisioningGroup` operation to create an auto provisioning group. You can also change the value of `TerminateInstances` when you call the DeleteAutoProvisioningGroup operation to delete the auto provisioning group.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'B48A12CD-1295-4A38-A8F0-0E92C937****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.InstanceType', + 'errorMessage' => 'The specified parameter "TerminateInstances" should be not empty.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The specified parameter "AutoProvisioningGroupId" should not be null.', + ], + [ + 'errorCode' => 'NoPermission', + 'errorMessage' => '%s', + ], + ], + 403 => [ + [ + 'errorCode' => 'Forbidden.RAM', + 'errorMessage' => 'User not authorized to operate on the specified resource, or this API doesn\'t support RAM.', + ], + [ + 'errorCode' => 'AutoProvisioningGroup.Unauthorized', + 'errorMessage' => 'Unauthorized to operate current action.', + ], + [ + 'errorCode' => 'AutoProvisioningGroup.IncorrectStatus', + 'errorMessage' => 'Current status of AutoProvisioningGroup does not support curren action.', + ], + ], + [ + [ + 'errorCode' => 'InvalidAutoProvisioningGroupId.NotFound', + 'errorMessage' => 'The specified AutoProvisioningGroupId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"B48A12CD-1295-4A38-A8F0-0E92C937****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 928E2273-5715-46B9-A730-238DC996****\\n","errorExample":""}]', + 'title' => 'DeleteAutoProvisioningGroup', + 'summary' => 'Deletes an auto provisioning group. When you call this operation, you can specify AutoProvisioningGroupId and TerminateInstances in the request.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateDeploymentSet' => [ + 'summary' => 'Creates a deployment set in a region.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28821', + 'abilityTreeNodes' => [ + 'FEATUREecsZSKDHB', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'Creates a deployment set in a specific region.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'OnUnableToRedeployFailedInstance', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the deployment set. You can call the [DescribeRegions](~~25609~~) operation to query the most recent list of regions.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'CancelMembershipAndStart', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The emergency solution to use in the situation where instances in the deployment set cannot be evenly distributed to different zones due to resource insufficiency after the instances failover. Valid values:'."\n" + ."\n" + .'* CancelMembershipAndStart: removes the instances from the deployment set and starts the instances immediately after they are failed over.'."\n" + .'* KeepStopped: leaves the instances in the Stopped state and starts them after resources are replenished.'."\n" + ."\n" + .'Default value: CancelMembershipAndStart.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the deployment set. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'DeploymentSetName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the deployment set. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain digits, letters, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDeploymentSetName', + ], + ], + [ + 'name' => 'Domain', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Default', + ], + ], + [ + 'name' => 'Granularity', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'host', + ], + ], + [ + 'name' => 'Strategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The deployment strategy. Valid values:'."\n" + ."\n" + .'* Availability: high availability strategy'."\n" + .'* AvailabilityGroup: high availability group strategy'."\n" + .'* LowLatency: low latency strategy'."\n" + ."\n" + .'Default value: Availability.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Availability', + ], + ], + [ + 'name' => 'GroupCount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The deployment strategy. Valid values:'."\n" + ."\n" + .'* Availability: high availability strategy.'."\n" + .'* AvailabilityGroup: high availability group strategy.'."\n" + ."\n" + .'Default value: Availability.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'DeploymentSetId' => [ + 'description' => 'The ID of the deployment set.'."\n", + 'type' => 'string', + 'example' => 'ds-bp1frxuzdg87zh4pzq****', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter RegionId that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidDeploymentSetName.Malformed', + 'errorMessage' => 'Specified deployment set name is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter Description is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Domain', + 'errorMessage' => 'The specified parameter Domain is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Strategy', + 'errorMessage' => 'The specified parameter Strategy is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.granularity', + 'errorMessage' => 'The specified parameter Granularity is not valid.', + ], + [ + 'errorCode' => 'DependencyViolation.domain.granularity', + 'errorMessage' => 'The DeploymentSet domain and granularity is violation.', + ], + [ + 'errorCode' => 'DependencyViolation.strategy.granularity', + 'errorMessage' => 'The DeploymentSet strategy and granularity is violation.', + ], + [ + 'errorCode' => 'DeploymentSet.GroupQuotaFull', + 'errorMessage' => 'The deploymentSet group quota is full.', + ], + [ + 'errorCode' => 'InvalidParameter.GroupCount', + 'errorMessage' => 'The specified parameter "GroupCount" is not valid.', + ], + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The zoneId provided does not exist in our records.', + ], + [ + 'errorCode' => 'QuotaExceed.DeploymentSet', + 'errorMessage' => 'The deploymentSet quota is full.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"DeploymentSetId\\": \\"ds-bp1frxuzdg87zh4pzq****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n ds-bp1frxuzdg87zh4pzq****\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'CreateDeploymentSet', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeDeploymentSetSupportedInstanceTypeFamily' => [ + 'summary' => 'Queries the instance families that support different deployment strategies. When you call this operation, specify parameters, such as RegionId and Strategy, in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28919', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Strategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The deployment strategy. Valid values:'."\n" + ."\n" + .'* Availability: high availability strategy'."\n" + .'* AvailabilityGroup: high availability group strategy'."\n" + .'* LowLatency: low latency strategy'."\n" + ."\n" + .'Default value: Availability.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Availability', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'InstanceTypeFamilies' => [ + 'description' => 'The instance families that support the deployment strategy.'."\n", + 'type' => 'string', + 'example' => 'ecs.i2g,ecs.i1,ecs.i2ne,ecs.i2gne', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B7DB-A3DC7DE1****', + ], + ], + 'description' => '', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"InstanceTypeFamilies\\": \\"ecs.i2g,ecs.i1,ecs.i2ne,ecs.i2gne\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B7DB-A3DC7DE1****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B7DB-A3DC7DE1****\\n ecs.sccgn6ex,ecs.i2g,ecs.i1,ecs.i2ne,ecs.i2gne,ecs.hfc6,ecs.hfg6,ecs.hfr6,ecs.sn1nec,ecs.sn2nec,ecs.se1nec,ecs.c6,ecs.g6,ecs.r6,ecs.scch5s,ecs.sccg5s,ecs.ic5,ecs.c5,ecs.d1,ecs.d1-c14d3,ecs.d1-c8d3,ecs.d1ne,ecs.g5,ecs.hfc5,ecs.hfg5,ecs.i2,ecs.mn4,ecs.n1,ecs.n1.tiny,ecs.n2,ecs.n4,ecs.r5,ecs.se1,ecs.se1ne,ecs.sn1,ecs.sn1ne,ecs.sn2,ecs.sn2ne,ecs.xn4,ecs.s1,ecs.s2,ecs.s3,ecs.t1,ecs.scch5,ecs.ebmg5,ecs.sccg5,ecs.sccgn6,ecs.re6,ecs.d2,ecs.d2s,ecs.d2c,ecs.sccgn6ne-inc,ecs.g5ne\\n","errorExample":""}]', + 'title' => 'DescribeDeploymentSetSupportedInstanceTypeFamily', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'For information about instance families, see [Overview of instance families](~~25378~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeDeploymentSets' => [ + 'summary' => 'Queries detailed information about one or more deployment sets.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28918', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the deployment set. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page.'."\n" + ."\n" + .'Valid values: 1 to 50.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '50', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'DeploymentSetIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of deployment sets. The value can be a JSON array that consists of deployment set IDs in the format of `["ds-xxxxxxxxx", "ds-yyyyyyyyy", ... "ds-zzzzzzzzz"]`. You can specify up to 100 deployment set IDs in each request. Separate the deployment set IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["ds-bp67acfmxazb4ph****", "ds-bp67acfmxazb4pi****", … "ds-bp67acfmxazb4pj****"]', + ], + ], + [ + 'name' => 'NetworkType', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'Strategy', + 'in' => 'query', + 'schema' => [ + 'description' => 'The deployment strategy. Valid values:'."\n" + ."\n" + .'* Availability: high availability strategy'."\n" + .'* AvailabilityGroup: high availability group strategy'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Availability', + ], + ], + [ + 'name' => 'DeploymentSetName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the deployment set. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with `http://` or `https://`. The name can contain digits, letters, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDeploymentSetName', + ], + ], + [ + 'name' => 'Granularity', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'Domain', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of queried deployment sets.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RegionId' => [ + 'description' => 'The ID of the region.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'DeploymentSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'DeploymentSet' => [ + 'description' => 'Details about the deployment sets.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the deployment set was created.'."\n", + 'type' => 'string', + 'example' => '2021-12-07T06:01:46Z', + ], + 'Strategy' => [ + 'description' => 'The deployment strategy.'."\n", + 'type' => 'string', + 'example' => 'LooseDispersion', + ], + 'DeploymentSetId' => [ + 'description' => 'The ID of the deployment set.'."\n", + 'type' => 'string', + 'example' => 'ds-bp67acfmxazb4ph****', + ], + 'AccountId' => [ + 'type' => 'integer', + 'format' => 'int64', + ], + 'DeploymentStrategy' => [ + 'description' => 'The deployment strategy. The return value of this parameter is the value of the `Strategy` request parameter.'."\n", + 'type' => 'string', + 'example' => 'Availability', + ], + 'DeploymentSetDescription' => [ + 'description' => 'The description of the deployment set.'."\n", + 'type' => 'string', + 'example' => 'testDeploymentSetDescription', + ], + 'Domain' => [ + 'description' => 'The deployment domain.'."\n", + 'type' => 'string', + 'example' => 'default', + ], + 'GroupCount' => [ + 'description' => 'The number of deployment set groups in the deployment set.'."\n" + ."\n" + .'> This parameter is valid only when the Strategy request parameter is set to AvailabilityGroup.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'Granularity' => [ + 'description' => 'The deployment granularity.'."\n", + 'type' => 'string', + 'example' => 'host', + ], + 'DeploymentSetName' => [ + 'description' => 'The name of the deployment set.'."\n", + 'type' => 'string', + 'example' => 'testDeploymentSetName', + ], + 'InstanceAmount' => [ + 'description' => 'The number of instances in the deployment set.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '3', + ], + 'InstanceIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The IDs of the Elastic Compute Service (ECS) instances in the deployment set.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the ECS instance in the deployment set.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4ph****', + ], + ], + ], + ], + 'Capacities' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Capacity' => [ + 'description' => 'Details of the capacities of the deployment set. This parameter is valid only when the deployment set contains ECS instances. The value contains information about the capacities of the deployment set in different zones.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'ZoneId' => [ + 'description' => 'The ID of the zone. Only the zone IDs of existing ECS instances in the deployment set are returned.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-i', + ], + 'UsedAmount' => [ + 'description' => 'The number of ECS instances that reside in the zone in the deployment set.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'AvailableAmount' => [ + 'description' => 'The number of ECS instances that can be added to the deployment set within the zone.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '18', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidDeploymentSetIds.TooManyInput', + 'errorMessage' => 'The parameter DeploymentSets size should less than 100.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 1,\\n \\"PageNumber\\": 1,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"DeploymentSets\\": {\\n \\"DeploymentSet\\": [\\n {\\n \\"CreationTime\\": \\"2021-12-07T06:01:46Z\\",\\n \\"Strategy\\": \\"LooseDispersion\\",\\n \\"DeploymentSetId\\": \\"ds-bp67acfmxazb4ph****\\",\\n \\"AccountId\\": 0,\\n \\"DeploymentStrategy\\": \\"Availability\\",\\n \\"DeploymentSetDescription\\": \\"testDeploymentSetDescription\\",\\n \\"Domain\\": \\"default\\",\\n \\"GroupCount\\": 3,\\n \\"Granularity\\": \\"host\\",\\n \\"DeploymentSetName\\": \\"testDeploymentSetName\\",\\n \\"InstanceAmount\\": 3,\\n \\"InstanceIds\\": {\\n \\"InstanceId\\": [\\n \\"i-bp67acfmxazb4ph****\\"\\n ]\\n },\\n \\"Capacities\\": {\\n \\"Capacity\\": [\\n {\\n \\"ZoneId\\": \\"cn-hangzhou-i\\",\\n \\"UsedAmount\\": 2,\\n \\"AvailableAmount\\": 18\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n 2021-12-07T06:01:46Z\\n host\\n testDeploymentSetDescription\\n default\\n \\n i-bp67acfmxazb4ph****\\n i-bp67acfmxazb4pi****\\n i-bp67acfmxazb4pj****\\n \\n 3\\n LooseDispersion\\n testDeploymentSetName\\n Availability\\n ds-bp67acfmxazb4ph****\\n \\n \\n 1\\n cn-hangzhou-h\\n 19\\n \\n \\n 2\\n cn-hangzhou-i\\n 18\\n \\n \\n \\n \\n 1\\n 1\\n 1\\n cn-hangzhou\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n","errorExample":""}]', + 'title' => 'DescribeDeploymentSets', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceDeployment' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29073', + 'abilityTreeNodes' => [ + 'FEATUREecs7AL3YP', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4ph***', + ], + ], + [ + 'name' => 'DedicatedHostId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the destination dedicated host. You can call the [DescribeDedicatedHosts](~~134242~~) operation to query the most recent list of dedicated hosts.'."\n" + ."\n" + .'When you migrate an instance from a shared host to a dedicated host or between dedicated hosts, take note of the following items:'."\n" + ."\n" + .'* To migrate the instance to a specific dedicated host, specify this parameter.'."\n" + .'* To migrate the instance to a system-selected dedicated host, leave this parameter empty and set `Tenancy` to host.'."\n" + ."\n" + .'For information about the automatic deployment feature, see [Functions and features](~~118938~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dh-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'DeploymentSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the destination deployment set.'."\n" + ."\n" + .'This parameter is required when you add an instance to a deployment set or change the deployment set of an instance.'."\n" + ."\n" + .'> You cannot change the deployment set when you modify dedicated host configurations, including the `Tenancy`, `Affinity`, and `DedicatedHostId` parameters.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ds-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'DeploymentSetGroupNo', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the deployment set group in which to deploy the instance in the destination deployment set. This parameter is valid only when the destination deployment set uses the high availability group strategy (AvailabilityGroup). Valid values: 1 to 7.'."\n" + ."\n" + .'> If you call this operation to deploy an instance to a deployment set that uses the high availability group strategy (`AvailablilityGroup`) and leave this parameter empty, the system evenly distributes instances among the deployment set groups in the deployment set. If you call this operation to change the deployment set of an instance and specify the current deployment set of the instance as the destination deployment set, the system evenly distributes instances again among the deployment set groups in the deployment set.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '3', + ], + ], + [ + 'name' => 'Force', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to forcefully change the host of the instance when the deployment set of the instance is changed. Valid values:'."\n" + ."\n" + .'* true: forcefully changes the host of the instance when the deployment set of the instance is changed. Hosts can be forcefully changed only for instances in the Running (Running) or Stopped (Stopped) state. The instances that are in the Stopped (Stopped) state do not include pay-as-you-go instances that are stopped in economical mode.'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** If the specified instance has local disks attached, the local disks are forcefully changed when the host of the instance is forcefully changed. This may cause data loss in the local disks. Proceed with caution.'."\n" + ."\n" + .'* false: does not forcefully change the host of the instance when the deployment set of the instance is changed. You can add the instance to a deployment set only when the instance remains on the current host. When the Force parameter is set to false, the deployment set may fail to be changed.'."\n" + ."\n" + .'Default value: false.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + [ + 'name' => 'Affinity', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to associate the instance with a dedicated host. Valid values:'."\n" + ."\n" + .'* host: associates the instance with a dedicated host. When you start a stopped instance in economical mode, the instance remains on its original dedicated host.'."\n" + .'* default: does not associate the instance with a dedicated host. When you start a stopped instance in economical mode, the instance can be automatically deployed to another dedicated host in the automatic deployment resource pool if the resources of the original dedicated host are insufficient.'."\n" + ."\n" + .'If you want to migrate the instance from a shared host to a dedicated host, use the default value. Default value: default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'host', + ], + ], + [ + 'name' => 'Tenancy', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to deploy the instance on a dedicated host. Set the value to host, which indicates that the instance is deployed on a dedicated host.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'host', + ], + ], + [ + 'name' => 'MigrationType', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to stop the instance before it is migrated to the destination dedicated host. Valid values:'."\n" + ."\n" + .'* reboot: stops the instance before it is migrated.'."\n" + .'* live: migrates the instance without stopping it. If you set MigrationType to live, you must specify DedicatedHostId. In this case, you cannot change the instance type of the instance when the instance is migrated.'."\n" + ."\n" + .'Default value: reboot.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'live', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type to which the instance is changed. You can call the [DescribeInstanceTypes](~~25620~~) operation to query the most recent list of instance types.'."\n" + ."\n" + .'You can change the instance type of an instance when you migrate the instance to a dedicated host. The new instance type must match the type of the specified dedicated host. For more information, see [Dedicated host types](~~68564~~).'."\n" + ."\n" + .'* If you specify this parameter, you must also specify `DedicatedHostId`.'."\n" + .'* You cannot change the instance type of an instance if you use the automatic deployment feature to migrate the instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.c6.large', + ], + ], + [ + 'name' => 'DedicatedHostClusterId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the dedicated host cluster.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'dc-bp67acfmxazb4ph****', + ], + ], + [ + 'name' => 'RemoveFromDeploymentSet', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to remove the specified instance from the specified deployment set. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n" + ."\n" + .'> If you set this parameter to true, you must specify InstanceId and DeploymentSetId and make sure that the specified instance belongs to the specified deployment set.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '04F0F334-1335-436C-A1D7-6C044FE7****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'OperationDenied.UnstoppedInstance', + 'errorMessage' => 'Operation denied due to unstopped instance.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostStatus.NotSupport', + 'errorMessage' => 'Operation denied due to dedicated host status.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededDedicatedHost', + 'errorMessage' => 'Instance expired date can\'t exceed dedicated host expired date.', + ], + [ + 'errorCode' => 'NoAvaliableDedicatedHost', + 'errorMessage' => 'There\'s no enough resource on the specified dedicated host.', + ], + [ + 'errorCode' => 'OperationDenied.LocalDiskInstance', + 'errorMessage' => 'Operation denied due to instance has local disk.', + ], + [ + 'errorCode' => 'InvalidParameter.Param', + 'errorMessage' => 'Requested param is invalid.', + ], + [ + 'errorCode' => 'InvalidParam.Tenancy', + 'errorMessage' => 'The specified Tenancy is invalid.', + ], + [ + 'errorCode' => 'InvalidParam.DedicatedHostId', + 'errorMessage' => 'The specified dedicated host id is the same with present host id!', + ], + [ + 'errorCode' => 'InvalidDedicatedHost.NotEnoughResource', + 'errorMessage' => 'There\'s no available dedicated host to perform the operation.', + ], + [ + 'errorCode' => 'OperationDenied.InvalidInstance', + 'errorMessage' => 'The specified instance is not dedicated instance.', + ], + [ + 'errorCode' => 'ChargeTypeViolation.PostPaidDedicatedHost', + 'errorMessage' => 'Prepaid instance onto postpaid dedicated host is not allowed.', + ], + [ + 'errorCode' => 'OperationDenied.NotSupport', + 'errorMessage' => 'Ecs on dedicatedHost has been migrated.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified DedicatedHostId does not exist.', + ], + [ + 'errorCode' => 'OperationDenied.CannotPerform', + 'errorMessage' => 'Live migration cannot be performed.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType does not exist or beyond the permitted range.', + ], + [ + 'errorCode' => 'InvalidParameter.Tenancy', + 'errorMessage' => 'The specified Tenancy is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Affinity', + 'errorMessage' => 'The specified Affinity is invalid.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupport', + 'errorMessage' => 'The parameter EcsMigrationType conflict with InstanceType, live migration do not support InstanceType alter on ddh.', + ], + [ + 'errorCode' => 'InvalidParam.InstanceId', + 'errorMessage' => 'The specified InstanceId should be on dedicatedHost.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostClusterId.NotFound', + 'errorMessage' => 'The specified DedicatedHostClusterId does not exist.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostClusterId.Invalid', + 'errorMessage' => 'The specified Dedicated Host Cluster is invalid.', + ], + [ + 'errorCode' => 'InvalidDestinationZone.DeploymentSetMismatch', + 'errorMessage' => 'Error happened, %s.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The resource is out of usage.', + ], + [ + 'errorCode' => 'InvalidDeploymentSetId.NoAvailableResources', + 'errorMessage' => 'There are no available resources for the specified deployment, you can set the parameter force to true to retry, or wait for additional resource to become available.', + ], + ], + [ + [ + 'errorCode' => 'InvalidDeploymentSetId.NotFound', + 'errorMessage' => 'The specified deployment set does not exist.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostId.NotFound', + 'errorMessage' => 'The specified DedicatedHostId does not exist.', + ], + [ + 'errorCode' => 'InvalidInstanceId.NotFound', + 'errorMessage' => 'The specified InstanceId does not exist.', + ], + [ + 'errorCode' => 'OperationDenied.UnstoppedInstance', + 'errorMessage' => 'Operation denied due to unstopped instance.', + ], + [ + 'errorCode' => 'InvalidInstanceNetworkType.NotSupport', + 'errorMessage' => 'The specified Instance network type not support.', + ], + [ + 'errorCode' => 'InvalidInstanceChargeType.NotSupport', + 'errorMessage' => 'The Dedicated host not support the specified instance charge type.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupport', + 'errorMessage' => 'The Dedicated host not support the specified instance type.', + ], + [ + 'errorCode' => 'InvalidParameter.DeploymentSetGroupNo', + 'errorMessage' => 'Parameter DeploymentSetGroupNo is invalid.', + ], + [ + 'errorCode' => 'InvalidDedicatedHostId.NotSupport', + 'errorMessage' => 'Cannot choose instance present host as destination host.', + ], + [ + 'errorCode' => 'InvalidDedicatedHost.NotFound', + 'errorMessage' => 'No available host.', + ], + [ + 'errorCode' => 'InvalidParam.DedicatedHostId', + 'errorMessage' => 'Parameter dedicated host id must been provided in such operation.', + ], + [ + 'errorCode' => 'InvalidDedicatedHost.ZoneNotMatch', + 'errorMessage' => 'The specify dedicated host zone location not match the instance zone location.', + ], + [ + 'errorCode' => 'InvalidOperation.NotSupport', + 'errorMessage' => 'The specified DedicatedHost operation not supported on MPS.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE7****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 04F0F334-1335-436C-A1D7-6C044FE7****\\n","errorExample":""}]', + 'title' => 'ModifyInstanceDeployment', + 'summary' => 'Changes the deployment set of an Elastic Compute Service (ECS) instance or migrates an ECS instance to a dedicated host. You can change the instance type of an ECS instance when you migrate the instance.', + 'description' => 'Take note of the following items:'."\n" + ."\n" + .'* The instance must be in the **Stopped** (Stopped) state. The instance is automatically restarted after it is migrated.'."\n" + .'* The network type of the instance must be Virtual Private Cloud (VPC).'."\n" + .'* The instance and the destination dedicated host to which to migrate the instance must belong to the same account and reside in the same region and zone.'."\n" + .'* A pay-as-you-go instance can be migrated to a subscription dedicated host. A subscription instance can be migrated only between subscription dedicated hosts. The expiration date of the subscription instance cannot be later than that of the destination dedicated host.'."\n" + .'* You can migrate only pay-as-you-go instances from a shared host to a dedicated host. You cannot migrate subscription instances or spot instances from a shared host to a dedicated host.'."\n" + .'* You can redeploy an instance to a specific dedicated host cluster.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyDeploymentSetAttribute' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29055', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'DeploymentSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the deployment set.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ds-bp1frxuzdg87zh4p****', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the deployment set. The description must be 2 to 256 characters in length and cannot start with http:// or https://.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestDescription', + ], + ], + [ + 'name' => 'DeploymentSetName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the deployment set. The name must be 2 to 128 characters in length and can contain letters, digits, colons (:), underscores (\\_), periods (.), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'DeploymentSetTestName', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the deployment set. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter RegionId that is mandatory for processing this request is not supplied.', + ], + [ + 'errorCode' => 'InvalidDeploymentSetName.Malformed', + 'errorMessage' => 'Specified deployment set name is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter Description is not valid.', + ], + [ + 'errorCode' => 'InvalidDeploymentSetId.NotFound', + 'errorMessage' => 'The specified DeploymentSetId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":"{\\n\\t\\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE73368\\"\\n}"},{"type":"xml","example":"\\n\\t04F0F334-1335-436C-A1D7-6C044FE73368\\n","errorExample":"\\n\\t04F0F334-1335-436C-A1D7-6C044FE73368\\n"}]', + 'title' => 'ModifyDeploymentSetAttribute', + 'summary' => 'Modifies the name and description of a deployment set.', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DeleteDeploymentSet' => [ + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '28862', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the deployment set. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'DeploymentSetId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the deployment set that you want to delete.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ds-bp1g5ahlkal88d7x****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter "DeploymentSetId" that is mandatory for processing this request is not supplied.', + ], + ], + 403 => [ + [ + 'errorCode' => 'DependencyViolation.NotEmpty', + 'errorMessage' => 'There are still instance(s) in the specified DeploymentSetId.', + ], + [ + 'errorCode' => 'DependencyViolation.ReferByHPC', + 'errorMessage' => 'The specified deployment set is still referred by an HPC cluster.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":"\\n\\t04F0F334-1335-436C-A1D7-6C044FE73368\\n"},{"type":"xml","example":"\\n\\t04F0F334-1335-436C-A1D7-6C044FE73368\\n","errorExample":"https://ecs.example.com/?Action=DeleteDeploymentSet\\n&RegionId=cn-hangzhou\\n&DeploymentSetId=ds-bp1frxuzdg87zh4pzqkc\\n&<公共请求参数>"}]', + 'title' => 'DeleteDeploymentSet', + 'summary' => 'Deletes a deployment set.', + 'description' => 'Before you delete a deployment set, make sure that no instances exist in the deployment set. If instances exist in the deployment set, move the instances to a different deployment set or release the instances before you delete the deployment set. For more information, see [Change the deployment set of an instance](~~108407~~) and [Release an ECS instance](~~25442~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'CreateElasticityAssurance' => [ + 'summary' => 'Creates an elasticity assurance in a region. When you call this operation, you can specify parameters, such as ZoneId, InstanceType, Period, PeriodUnit, and AutoRenew, in the request.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28824', + 'abilityTreeNodes' => [ + 'FEATUREecsC0XNJQ', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the elasticity assurance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the elasticity assurance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the elasticity assurance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag to add to the elasticity assurance.'."\n", + 'type' => 'object', + 'properties' => [ + 'Value' => [ + 'description' => 'The value of tag N to add to the elasticity assurance. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot start with `acs:`. The tag value cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'Key' => [ + 'description' => 'The key of tag N to add to the elasticity assurance. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The validity period of the elasticity assurance. The unit of the validity period is determined by the value of `PeriodUnit`. Specifies whether to check the image used by the instance supports hot migration. Valid values:'."\n" + ."\n" + .'* When the value of `PeriodUnit` is `Month`, the valid values are 1, 2, 3, 4, 5, 6, 7, 8, and 9.'."\n" + .'* When the value of `PeriodUnit` is `Year`, the valid values are 1, 2, 3, 4, and 5.'."\n" + .'* When the value of `PeriodUnit` is `Day`, the valid values are 1 to 365.'."\n" + ."\n" + .'Default value: 1'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the validity period of the elasticity assurance. Valid values:'."\n" + ."\n" + .'* Month'."\n" + ."\n" + .'* Year'."\n" + ."\n" + .'* Day'."\n" + ."\n" + .' **'."\n" + ."\n" + .' **Note** If you set `PeriodUnit` to `Day`, you must specify RecurrenceRules to create a time-segmented elasticity assurance.'."\n" + ."\n" + .'Default value: Year.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Year', + 'default' => 'Year', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that you want to use to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The `token` can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the elasticity assurance. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with `http://` or `https://`. It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eapTestName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the elasticity assurance. The description must be 2 to 256 characters in length. It cannot start with `http://` or `https://`.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'PrivatePoolOptions.MatchCriteria', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the private pool with which you want to associate the elasticity assurance. Valid values:'."\n" + ."\n" + .'* Open: open private pool. If you use the elasticity assurance to create ECS instances, the open private pool that is associated with the elasticity assurance is automatically matched. If no capacity is available in the open private pool, resources in the public pool are automatically used to create the ECS instances.'."\n" + .'* Target: targeted private pool. If you use the elasticity assurance to create ECS instances, the specified private pool that is associated with the elasticity assurance is automatically matched. If no capacity is available in the private pool, the ECS instances fail to be created.'."\n" + ."\n" + .'Default value: Open.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Open', + 'default' => 'Open', + ], + ], + [ + 'name' => 'AssuranceTimes', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total number of times that the elasticity assurance can be used. Set the value to Unlimited. This value specifies that the elasticity assurance can be used for an unlimited number of times within its validity period.'."\n" + ."\n" + .'Default value: Unlimited.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Unlimited', + 'default' => 'Unlimited', + ], + ], + [ + 'name' => 'InstanceAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total number of instances of an instance type for which you want to reserve capacity.'."\n" + ."\n" + .'Valid values: 1 to 1000.'."\n" + ."\n" + .'> You must specify this parameter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '2', + ], + ], + [ + 'name' => 'InstanceCpuCoreCount', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is no longer used.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => 'null', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time when the elasticity assurance takes effect. The default value is the time when the CreateElasticityAssurance operation is called to create the elasticity assurance. Specify the time in the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2020-10-30T06:32:00Z', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the zone in which to create the elasticity assurance. An elasticity assurance can be used to reserve resources within a single zone.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the zone in which to create the elasticity assurance. An elasticity assurance can be used to reserve resources within a single zone.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-h', + ], + 'required' => true, + 'example' => 'cn-hangzhou-h', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The instance type. An elasticity assurance can be created to reserve the capacity of a single instance type.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The instance type. An elasticity assurance can be created to reserve the capacity of a single instance type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.c6.xlarge', + ], + 'required' => true, + 'example' => 'ecs.c6.xlarge', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'RecurrenceRules', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The assurance schedules based on which the capacity reservation takes effect.'."\n" + ."\n" + .'> Time-segmented elasticity assurances are available only in specific regions and to specific users. To use time-segmented elasticity assurances, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The assurance schedule based on which the capacity reservation takes effect.'."\n", + 'type' => 'object', + 'properties' => [ + 'StartHour' => [ + 'description' => 'The start time of the assurance period for the capacity reservation. Specify an on-the-hour point in time.'."\n" + ."\n" + .'> You must specify both `StartHour` and `EndHour`. EndHour must be at least four hours later than StartHour.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '4', + ], + 'RecurrenceType' => [ + 'description' => 'The type of the assurance schedule. Valid values:'."\n" + ."\n" + .'* Daily'."\n" + .'* Weekly'."\n" + .'* Monthly'."\n" + ."\n" + .'> You must specify both `RecurrenceType` and `RecurrenceValue`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Daily', + ], + 'EndHour' => [ + 'description' => 'The end time of the assurance period for the capacity reservation. Specify an on-the-hour point in time.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + 'RecurrenceValue' => [ + 'description' => 'The days of the week or month on which the capacity reservation takes effect or the interval, in number of days, at which the capacity reservation takes effect.'."\n" + ."\n" + .'* If you set `RecurrenceType` to `Daily`, you can specify only one value for this parameter. Valid values: 1 to 31. The value specifies that the capacity reservation takes effect every few days.'."\n" + .'* If you set `RecurrenceType` to `Weekly`, you can specify multiple values for this parameter. Separate the values with commas (,). Valid values: 0, 1, 2, 3, 4, 5, and 6, which specify Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, and Saturday, respectively. Example: `1,2`, which specifies that the capacity reservation takes effect on Monday and Tuesday.'."\n" + .'* If you set `RecurrenceType` to `Monthly`, you can specify two values in the `A-B` format for this parameter. Valid values of A and B: 1 to 31. B must be greater than or equal to A. For example, `1-5` indicates that the execution is repeated from the 1st to 5th of each month.'."\n" + ."\n" + .'> You must specify both `RecurrenceType` and `RecurrenceValue`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '1', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal for the elasticity assurance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'AutoRenewPeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal period. Unit: month. Valid values: 1, 2, 3, 6, 12, 24, and 36.'."\n" + ."\n" + .'* Default value when `PeriodUnit` is set to Month: 1.'."\n" + .'* Default value when `PeriodUnit` is set to Year: 12.'."\n" + ."\n" + .'> If you set `AutoRenew` to `true`, you must specify this parameter.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PrivatePoolOptionsId' => [ + 'description' => 'The elasticity assurance ID.'."\n", + 'type' => 'string', + 'example' => 'eap-bp67acfmxazb4****', + ], + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'string', + 'example' => '1234567890', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidOperation.PeriodUnitUnsupported', + 'errorMessage' => 'TimeDivisionElasticityAssurance only supports PeriodUnit of Day.', + ], + [ + 'errorCode' => 'InvalidParameter.RegionId', + 'errorMessage' => 'The specified RegionId is invalid.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified instanceType or zone is not available or not authorized.', + ], + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidStartTime.NotSupported', + 'errorMessage' => 'The specified StartTime should be within 180 calendar days from the current date, and you must specify a precision to hour.', + ], + [ + 'errorCode' => 'InvalidStartTime.MalFormed', + 'errorMessage' => 'The specified StartTime is out of the permitted range.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptionsName.MalFormed', + 'errorMessage' => 'The specified PrivatePoolOptions.Name is not valid.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The specified ZoneId is not valid.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The specified InstanceType is not valid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool status is not valid.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + [ + 'errorCode' => 'Invalid.PeriodUnit', + 'errorMessage' => 'Only Month or Year is supported for PeriodUnit.', + ], + [ + 'errorCode' => 'AccountForbidden.ProductCreationLimited', + 'errorMessage' => 'The commodity must be officially operated by Aliyun and in pay-as-you-go billing method.', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => 'There is no authority to create private pool in the specified region.', + ], + [ + 'errorCode' => 'PriceNotFound', + 'errorMessage' => 'The price of your queried resource is not available now, please try other resources.', + ], + [ + 'errorCode' => 'InvalidRecurrenceRules.CountLimitExceeded', + 'errorMessage' => 'The count of RecurrenceRules exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidRecurrenceRulesStartHourEndHour.TooShort', + 'errorMessage' => 'The recurrence hour between RecurrenceRules.StartHour and RecurrenceRules.EndHour is too short.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesStartHourEndHour', + 'errorMessage' => 'The specified parameter RecurrenceRules.StartHour or RecurrenceRules.EndHour is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueMonthly', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Monthly is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueWeekly', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Weekly is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueDaily', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Daily is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceType', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceType is invalid.', + ], + [ + 'errorCode' => 'InvalidAutoRenewPeriod.ValueNotSupported', + 'errorMessage' => 'The specified autoRenewPeriod is invalid.', + ], + [ + 'errorCode' => 'InvalidOperation.ElasticityAssuranceActiveTimeTooShort', + 'errorMessage' => 'The total active time of the ElasticityAssurance is too short.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Zone.NotOpen', + 'errorMessage' => 'The specified zone is not granted to you to buy resources yet.', + ], + [ + 'errorCode' => 'InvalidResourceType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The resource is out of stock in the specified zone. Please try other types, or choose other regions and zones.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified InstanceType is invalid.', + ], + [ + 'errorCode' => 'Invalid.ZoneIds', + 'errorMessage' => 'At least one of the specified ZoneIds are invalid.', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => 'The specified zone is not available for purchase.', + ], + [ + 'errorCode' => 'QuotaExceed.ElasticityAssuranceCapacity', + 'errorMessage' => 'ElasticityAssurance Capacity quota exceeded.', + ], + [ + 'errorCode' => 'InvalidAccount.NotSupportEA', + 'errorMessage' => 'According to business rules, this account cannot purchase ECS ElasticityAssurance.', + ], + ], + [ + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The specified zoneId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PrivatePoolOptionsId\\": \\"eap-bp67acfmxazb4****\\",\\n \\"OrderId\\": \\"1234567890\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n eap-bp67acfmxazb4****\\n 1234567890\\n","errorExample":""}]', + 'title' => 'CreateElasticityAssurance', + 'description' => 'Elasticity Assurance provides a new method to purchase and use guaranteed resources in a flexible manner. Elasticity Assurance is a resource reservation service that provides assured access to resources for pay-as-you-go Elastic Compute Service (ECS) instances. For more information, see [Overview of Elasticity Assurance](~~193630~~).'."\n" + ."\n" + .'* After you purchase an elasticity assurance, you cannot request a refund for the elasticity assurance. For information about the billing of elasticity assurances, see [Resource assurance](~~432502~~).'."\n" + .'* Elasticity assurances can be used to create only pay-as-you-go ECS instances.'."\n" + .'* Elasticity assurances only support the unlimited mode. You can set `AssuranceTimes` only to `Unlimited`. Elasticity assurances in unlimited mode can be used for an unlimited number of times within their terms. Elasticity assurances in unlimited mode take effect immediately after creation.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeElasticityAssurances' => [ + 'summary' => 'Queries the details of elasticity assurances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '28928', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the elasticity assurances. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group. If you configure this parameter to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of whether you configure this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N. Valid values of N: 1 to 20.'."\n" + ."\n" + .'If you specify a tag to query resources, up to 1,000 resources with this tag are returned in the response. If you specify multiple tags to query resources, up to 1,000 resources with all these tags are returned in the response. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries to return on each page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the request to retrieve a new page of results. You must specify the token that is obtained from the previous query as the value of NextToken.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Ids', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of the elasticity assurances. The value can be a JSON array that consists of up to 100 elasticity assurance IDs. Separate the IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["eap-bp67acfmxazb4****", "eap-bp67acfmxazb5****"]', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is deprecated.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'null', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.c6.large', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the elasticity assurances.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-h', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. Set the value to PostPaid. Only pay-as-you-go instances can be created by using elasticity assurances.'."\n" + ."\n" + .'Default value: PostPaid.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the elasticity assurance. Valid values:'."\n" + ."\n" + .'* All: All states.'."\n" + .'* Deactivated: The elasticity assurance is pending activation. This state is in invitational preview.'."\n" + .'* Preparing: The elasticity assurance is being prepared.'."\n" + .'* Prepared: The elasticity assurance is to take effect.'."\n" + .'* Active: The elasticity assurance is in effect.'."\n" + .'* Released: The elasticity assurance is released.'."\n" + ."\n" + .'If you do not specify this parameter, elasticity assurances in states other than Pending and Released are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + [ + 'name' => 'PackageType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the elasticity assurance. Valid values:'."\n" + ."\n" + .'* ElasticityAssurance: the general-purpose elasticity assurance. RecurrenceRules is not specified for a general-purpose elasticity assurance.'."\n" + .'* TimeDivisionElasticityAssurance: the time-segmented elasticity assurance. RecurrenceRules is specified for a time-segmented assurance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ElasticityAssurance', + 'default' => 'ElasticityAssurance', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results. If NextToken is empty, no next page exists.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'MaxResults' => [ + 'description' => 'The maximum number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'ElasticityAssuranceSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ElasticityAssuranceItem' => [ + 'description' => 'Details about the elasticity assurances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the elasticity assurance.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the elasticity assurance. Valid values:'."\n" + ."\n" + .'* Preparing'."\n" + .'* Prepared'."\n" + .'* Active'."\n" + .'* Released'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'PrivatePoolOptionsMatchCriteria' => [ + 'description' => 'The type of the private pool associated with the elasticity assurance. Valid values:'."\n" + ."\n" + .'* Open: open private pool'."\n" + .'* Target: specific private pool'."\n", + 'type' => 'string', + 'example' => 'Target', + ], + 'PrivatePoolOptionsId' => [ + 'description' => 'The ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'example' => 'eap-bp1ir35kqtn8ywci****', + ], + 'UsedAssuranceTimes' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '0', + ], + 'LatestStartTime' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'PrivatePoolOptionsName' => [ + 'description' => 'The name of the elasticity assurance.'."\n", + 'type' => 'string', + 'example' => 'eapTestName', + ], + 'RegionId' => [ + 'description' => 'The region ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'EndTime' => [ + 'description' => 'The time when the elasticity assurance expires.'."\n", + 'type' => 'string', + 'example' => '2021-12-03T16:00Z', + ], + 'StartTime' => [ + 'description' => 'The time when the elasticity assurance takes effect.'."\n", + 'type' => 'string', + 'example' => '2020-12-03T05:25Z', + ], + 'Description' => [ + 'description' => 'The description of the elasticity assurance.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'TotalAssuranceTimes' => [ + 'description' => 'The total number of times that the elasticity assurance is applied.'."\n", + 'type' => 'string', + 'example' => 'Unlimited', + ], + 'AllocatedResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AllocatedResource' => [ + 'description' => 'Details of the allocated resources.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details of the allocated resources.'."\n", + 'type' => 'object', + 'properties' => [ + 'UsedAmount' => [ + 'description' => 'The number of instances that have used the elasticity assurance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'TotalAmount' => [ + 'description' => 'The total number of instances for which capacity of an instance type is reserved.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'AvailableAmount' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '5', + ], + 'zoneId' => [ + 'description' => 'The zone ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-h', + ], + 'InstanceType' => [ + 'description' => 'The instance type.'."\n", + 'type' => 'string', + 'example' => 'ecs.c6.large', + ], + 'ElasticityAssuranceUsages' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ElasticityAssuranceUsage' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'object', + 'properties' => [ + 'AccountId' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'example' => '1144775968548340', + ], + 'ServiceName' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'name', + ], + 'UsedAmount' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the elasticity assurance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tags of the elasticity assurance.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The value of the tag.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The key of the tag.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the instance. The value can be only PostPaid. Only pay-as-you-go instances can be created by using elasticity assurances.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'StartTimeType' => [ + 'description' => 'Indicates when the elasticity assurance takes effect. Valid values:'."\n" + ."\n" + .'* Now: The elasticity assurance takes effect immediately after it is created.'."\n" + .'* Later: The elasticity assurance takes effect at a specified time.'."\n", + 'type' => 'string', + 'example' => 'Now', + ], + 'ElasticityAssuranceOwnerId' => [ + 'description' => '> This parameter is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'e114477596854834', + ], + 'RecurrenceRules' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'RecurrenceRule' => [ + 'description' => 'The recurrence rules of the time-segmented assurances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The recurrence rule of the time-segmented assurance.'."\n", + 'type' => 'object', + 'properties' => [ + 'RecurrenceType' => [ + 'description' => 'The type of the recurrence rule. Valid values:'."\n" + ."\n" + .'* Daily'."\n" + .'* Weekly'."\n" + .'* Monthly'."\n", + 'type' => 'string', + 'example' => 'Daily', + ], + 'RecurrenceValue' => [ + 'description' => 'The recurrence value of the time-segmented assurance. Valid values:'."\n" + ."\n" + .'* If you set `RecurrenceType` to `Daily`, you can set RecurrenceValue to only one value. Valid values: 1 to 31. The time-segmented assurance is performed every few days.'."\n" + .'* If you set `RecurrenceType` to `Weekly`, you can set RecurrenceValue to one or more values. Separate the values with commas (,). The values that correspond to Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, and Saturday are 0, 1, 2, 3, 4, 5, and 6. For example, `1,2` indicates that the time-segmented assurance is performed on Monday and Tuesday of every week.'."\n" + .'* If you set `RecurrenceType` to `Monthly`, you can set RecurrenceValue to two values in the `A-B` format. Valid values of A and B: 1 to 31. B must be greater than or equal to A. For example, `1-5` indicates that the time-segmented assurance is performed from the 1st to the 5th of each month.'."\n", + 'type' => 'string', + 'example' => '1', + ], + 'StartHour' => [ + 'description' => 'The time when the time-segmented assurance takes effect.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'exclusiveMaximum' => true, + 'example' => '4', + ], + 'EndHour' => [ + 'description' => 'The time when the time-segmented assurance ends.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + ], + ], + ], + ], + ], + 'PackageType' => [ + 'description' => 'The type of the elasticity assurance. Valid values:'."\n" + ."\n" + .'* ElasticityAssurance: the general-purpose elasticity assurance.'."\n" + .'* TimeDivisionElasticityAssurance: the time-segmented assurance of the elasticity assurance.'."\n", + 'type' => 'string', + 'example' => 'ElasticityAssurance', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.Name', + 'errorMessage' => 'The specified PrivatePoolOptions.Name is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified PrivatePoolOptions.Ids is invalid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The specified resource group is not found.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 10,\\n \\"ElasticityAssuranceSet\\": {\\n \\"ElasticityAssuranceItem\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"PrivatePoolOptionsMatchCriteria\\": \\"Target\\",\\n \\"PrivatePoolOptionsId\\": \\"eap-bp1ir35kqtn8ywci****\\",\\n \\"UsedAssuranceTimes\\": 0,\\n \\"LatestStartTime\\": \\"null\\",\\n \\"PrivatePoolOptionsName\\": \\"eapTestName\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"EndTime\\": \\"2021-12-03T16:00Z\\",\\n \\"StartTime\\": \\"2020-12-03T05:25Z\\",\\n \\"Description\\": \\"This is description.\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"TotalAssuranceTimes\\": \\"Unlimited\\",\\n \\"AllocatedResources\\": {\\n \\"AllocatedResource\\": [\\n {\\n \\"UsedAmount\\": 2,\\n \\"TotalAmount\\": 2,\\n \\"AvailableAmount\\": 5,\\n \\"zoneId\\": \\"cn-hangzhou-h\\",\\n \\"InstanceType\\": \\"ecs.c6.large\\",\\n \\"ElasticityAssuranceUsages\\": {\\n \\"ElasticityAssuranceUsage\\": [\\n {\\n \\"AccountId\\": \\"1144775968548340\\",\\n \\"ServiceName\\": \\"name\\",\\n \\"UsedAmount\\": 1\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"StartTimeType\\": \\"Now\\",\\n \\"ElasticityAssuranceOwnerId\\": \\"e114477596854834\\",\\n \\"RecurrenceRules\\": {\\n \\"RecurrenceRule\\": [\\n {\\n \\"RecurrenceType\\": \\"Daily\\",\\n \\"RecurrenceValue\\": \\"1\\",\\n \\"StartHour\\": 4,\\n \\"EndHour\\": 10\\n }\\n ]\\n },\\n \\"PackageType\\": \\"ElasticityAssurance\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n Active\\n 0\\n This is description.\\n 2021-12-03T16:00Z\\n rg-bp67acfmxazb4p****\\n eapTestName\\n \\n PostPaid\\n 2020-12-03T05:25Z\\n Now\\n Target\\n \\n \\n 2\\n cn-hangzhou-h\\n 2\\n ecs.c6.large\\n \\n \\n eap-bp1ir35kqtn8ywci****\\n Unlimited\\n cn-hangzhou\\n \\n \\n TestKey\\n TestValue\\n \\n \\n \\n \\n 1\\n caeba0bbb2be03f84eb48b699f0a4883\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 10\\n","errorExample":""}]', + 'title' => 'DescribeElasticityAssurances', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeElasticityAssuranceInstances' => [ + 'summary' => 'Queries the running Elastic Compute Service (ECS) instances that use an elasticity assurance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28927', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the elasticity assurance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries to return on each page.'."\n" + ."\n" + .'Maximum value: 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The token used to start the query. Set the value to the NextToken value obtained from the response to the preceding request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eap-bp67acfmxazb4****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'The token used to start the next query.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'MaxResults' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'ElasticityAssuranceItem' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceIdSet' => [ + 'description' => 'Details about the instances that match and use the elasticity assurance.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The instance ID'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4****', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id is invalid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 2,\\n \\"MaxResults\\": 10,\\n \\"ElasticityAssuranceItem\\": {\\n \\"InstanceIdSet\\": [\\n {\\n \\"InstanceId\\": \\"i-bp67acfmxazb4****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2\\n CAF995AD-487E-4A2F-A064-A209CBA9B4EC\\n fdf5da380c6d6b48\\n 10\\n \\n \\n i-bp67acfmxazb4****\\n \\n \\n i-bp67acfmxazb5****\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeElasticityAssuranceInstances', + 'description' => 'When an elasticity assurance expires, data about the association between the instances and the private pool generated by the elasticity assurance becomes invalid. When you call this operation to query the expired elasticity assurance, no value is returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyElasticityAssurance' => [ + 'summary' => 'Modifies information about an elasticity assurance, including the name, description, and capacity. Only capacity scale-in is supported .', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29060', + 'abilityTreeNodes' => [ + 'FEATUREecs7WMRSF', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the elasticity assurance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eap-bp67acfmxazb4****', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the elasticity assurance. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with http:// or https://. The name can contain digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eapTestName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the elasticity assurance. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'InstanceAmount', + 'in' => 'query', + 'schema' => [ + 'title' => '', + 'description' => 'The total number of instances for which you want to reserve capacity. Valid values: the number of created instances to 1000. This parameter is mutually exclusive with other parameters in the same request.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '10', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'RecurrenceRules', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The assurance schedules of the time-segmented elasticity assurance.'."\n" + ."\n" + .'> Time-segmented elasticity assurances are available only in specific regions and to specific users. To use time-segmented elasticity assurances, [submit a ticket](https://smartservice.console.aliyun.com/service/create-ticket-intl).'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The assurance schedule of the time-segmented elasticity assurance.'."\n" + ."\n" + .'> The modified assurance schedule takes effect the next day after the modification.'."\n", + 'type' => 'object', + 'properties' => [ + 'RecurrenceType' => [ + 'description' => 'The type of the assurance schedule. Valid values:'."\n" + ."\n" + .'* Daily'."\n" + .'* Weekly'."\n" + .'* Monthly'."\n" + ."\n" + .'> If you specify this parameter, you must specify `RecurrenceType` and `RecurrenceValue`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Daily', + ], + 'RecurrenceValue' => [ + 'description' => 'The days of the week or month on which the capacity reservation of the time-segmented elasticity assurance takes effect or the interval, in number of days, at which the capacity reservation takes effect.'."\n" + ."\n" + .'* If you set `RecurrenceType` to `Daily`, you can specify only one value. Valid values: 1 to 31. The value specifies that the capacity reservation takes effect every few days.'."\n" + .'* If you set `RecurrenceType` to `Weekly`, you can specify multiple values. Separate the values with commas (,). Valid values: 0, 1, 2, 3, 4, 5, and 6, which specify Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, and Saturday, respectively. Example: `1,2`, which specifies that the capacity reservation takes effect on Monday and Tuesday.'."\n" + .'* If you set `RecurrenceType` to `Monthly`, you can specify two values in the `A-B` format. Valid values of A and B: 1 to 31. B must be greater than or equal to A. Example: `1-5`, which specifies that the capacity reservation takes effect every day from the first day up to the fifth day of each month.'."\n" + ."\n" + .'> If this parameter is specified, you must specify `RecurrenceType` and `RecurrenceValue`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '5', + ], + 'StartHour' => [ + 'description' => 'The start time of the assurance period for the capacity reservation of the time-segmented elasticity assurance. Specify an on-the-hour point in time.'."\n" + ."\n" + .'> You must specify both `StartHour` and `EndHour`. The EndHour value must be at least 4 hours later than the StartHour value.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '24', + 'minimum' => '0', + 'example' => '4', + ], + 'EndHour' => [ + 'description' => 'The end time of the assurance period for the capacity reservation of the time-segmented elasticity assurance. Specify an on-the-hour point in time.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '24', + 'minimum' => '0', + 'example' => '10', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8455DD10-84F8-43C9-8365-5F448EB169B6', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidRecurrenceRules.CountLimitExceeded', + 'errorMessage' => 'The count of RecurrenceRules exceeds the limit.', + ], + [ + 'errorCode' => 'InvalidRecurrenceRules.Unsupported', + 'errorMessage' => 'The specified parameter RecurrenceRules does not support for this resource package.', + ], + [ + 'errorCode' => 'InvalidRecurrenceRulesStartHourEndHour.TooShort', + 'errorMessage' => 'The recurrence hour between RecurrenceRules.StartHour and RecurrenceRules.EndHour is too short.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesStartHourEndHour', + 'errorMessage' => 'The specified parameter RecurrenceRules.StartHour or RecurrenceRules.EndHour is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueMonthly', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Monthly is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueWeekly', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Weekly is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceValueDaily', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceValue for Daily is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.RecurrenceRulesRecurrenceType', + 'errorMessage' => 'The specified parameter RecurrenceRules.RecurrenceType is invalid.', + ], + [ + 'errorCode' => 'InvalidInstanceAmount.ValueNotSupported', + 'errorMessage' => 'The specified parameter InstanceAmount is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.ValueNotSupported', + 'errorMessage' => 'The specified Description is invalid.', + ], + [ + 'errorCode' => 'InvalidEndTime.ValueNotSupported', + 'errorMessage' => 'The specified EndTime is invalid.', + ], + [ + 'errorCode' => 'InvalidStartTime.ValueNotSupported', + 'errorMessage' => 'The specified StartTime is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivatePoolOptions.Name', + 'errorMessage' => 'The parameter PrivatePoolOptions.Name is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.ClientToken', + 'errorMessage' => 'The parameter ClientToken is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Description', + 'errorMessage' => 'The parameter Description is invalid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidUser.Unauthorized', + 'errorMessage' => 'The user is not authorized.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidOperation.ModifyTotalActiveTimeUnsupported', + 'errorMessage' => 'Not support to modify the total active time of resource package.', + ], + [ + 'errorCode' => 'IncorrectPrivatePoolStatus', + 'errorMessage' => 'The current status of the private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone; try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'InvalidPrivatePoolOptionsName.ValueNotSupported', + 'errorMessage' => 'The specified PrivatePoolOptions.Name is invalid.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The specified Platform is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.PlatformNotSupported', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.EndTimeTypeNotSupported', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.StartTimeNotSupported', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.InstanceAmountNotSupported', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceAmount.ValueNotSupported', + 'errorMessage' => 'The specified InstanceAmount is invalid.', + ], + [ + 'errorCode' => 'InvalidPrivatePoolOptions.Id', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceAmount.LessThanUsedAmount', + 'errorMessage' => 'The specified parameter InstanceAmount is less than UsedAmount.', + ], + [ + 'errorCode' => 'InvalidOperation.InstanceAmountAndOtherAttributesUnsupported', + 'errorMessage' => 'Modify InstanceAmount and other attributes simultaneously is not supported.', + ], + [ + 'errorCode' => 'QuotaExceed.ElasticityAssuranceCapacity', + 'errorMessage' => 'ElasticityAssurance Capacity quota exceeded.', + ], + ], + [ + [ + 'errorCode' => 'InvalidPrivatePoolId.NotFound', + 'errorMessage' => 'The specified private pool does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8455DD10-84F8-43C9-8365-5F448EB169B6\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 8455DD10-84F8-43C9-8365-5F448EB169B6\\r\\n","errorExample":""}]', + 'title' => 'ModifyElasticityAssurance', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RenewElasticityAssurances' => [ + 'summary' => 'Renews elasticity assurances that you purchased.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'create', + 'abilityTreeCode' => '235538', + 'abilityTreeNodes' => [ + 'FEATUREecsCFPC21', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the elasticity assurance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~2680071~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The renewal duration. The unit of the renewal duration is determined by the `PeriodUnit` value. Valid values:'."\n" + ."\n" + .'* Valid values if you set `PeriodUnit` to `Month`: 1, 2, 3, 4, 5, 6, 7, 8, and 9.'."\n" + .'* Valid values if you set `PeriodUnit` to `Year`: 1, 2, and 3.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the renewal duration. Valid values:'."\n" + ."\n" + .'* Month'."\n" + .'* Year'."\n" + ."\n" + .'Default value: Year.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Year', + 'default' => 'Year', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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.'."\n" + ."\n" + .'The `token` can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'AutoPay', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable automatic payment. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: true.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of elasticity assurances.'."\n" + ."\n" + .'**Limits**: You can renew up to 20 elasticity assurances at a time.'."\n" + ."\n" + .'You can call the [DescribeElasticityAssurances](~~2679748~~) operation to query the elasticity assurances that you purchased.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eap-bp67acfmxazb4****', + ], + 'required' => false, + 'maxItems' => 20, + 'minItems' => 1, + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal for the elasticity assurance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'AutoRenewPeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal period. Unit: month. Valid values: 1, 2, 3, 6, 12, 24, and 36.'."\n" + ."\n" + .'* If you set `PeriodUnit` to Month, the default value is 1.'."\n" + .'* If you set `PeriodUnit` to Year, the default value is 12.'."\n" + ."\n" + .'> This parameter is required if you set `AutoRenew` to `true`.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'OrderId' => [ + 'description' => 'The ID of the renewal order.'."\n", + 'type' => 'string', + 'example' => '182372800****', + ], + 'PrivatePoolOptionsIdSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'PrivatePoolOptionsId' => [ + 'description' => 'The IDs of the elasticity assurances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'example' => 'eap-bp67acfmxazb4****', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidPeriodUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PeriodUnit is not valid.', + ], + [ + 'errorCode' => 'InvalidChargeType.ValueNotSupported', + 'errorMessage' => 'ChargeType is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified parameter PrivatePoolOptions.Id does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.PeriodUnit', + 'errorMessage' => 'The specified PeriodUnit is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Period', + 'errorMessage' => 'The specified parameter Period or PeriodUnit is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivatePoolOptionsId', + 'errorMessage' => 'The specified parameter PrivatePoolOptions.Id is invalid.', + ], + [ + 'errorCode' => 'InvalidAutoRenewPeriod.ValueNotSupported', + 'errorMessage' => 'The specified autoRenewPeriod is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerAccount', + 'errorMessage' => 'ResourceOwnerAccount is Invalid.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has been in arrears.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + [ + 'errorCode' => 'InvalidOperation.PackageTypeUnsupported', + 'errorMessage' => 'Not support to renew this type of resource package.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + [ + 'errorCode' => 'IncorrectPrivatePoolStatus', + 'errorMessage' => 'The current status of the private pool does not support this operation.', + ], + [ + 'errorCode' => 'InvalidPrivatePoolId.NotFound', + 'errorMessage' => 'The specified private pool does not exist.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"OrderId\\": \\"182372800****\\",\\n \\"PrivatePoolOptionsIdSet\\": {\\n \\"PrivatePoolOptionsId\\": [\\n \\"eap-bp67acfmxazb4****\\"\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'RenewElasticityAssurances', + ], + 'ModifyElasticityAssuranceAutoRenewAttribute' => [ + 'summary' => 'Modifies the auto-renewal attribute of elasticity assurances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '263144', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region to which the elasticity assurance belongs. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal period for the elasticity assurance.'."\n" + ."\n" + .'* Valid values when `PeriodUnit` is set to `Year`: 1, 3, and 5.'."\n" + .'* Valid values when `PeriodUnit` is set to `Month`: 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the renewal duration. Valid values:'."\n" + ."\n" + .'* Month'."\n" + .'* Year'."\n" + ."\n" + .'Default value: Month.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'RenewalStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal status of the elasticity assurance. Valid values:'."\n" + ."\n" + .'* AutoRenewal: Auto-renewal is enabled for the elasticity assurance.'."\n" + .'* Normal: Auto-renewal is disabled for the elasticity assurance.'."\n" + .'* NotRenewal: The elasticity assurance is not renewed. The system no longer sends an expiration notification but sends only a renewal notification three days before the elasticity assurance expires. You can change the value of this parameter from NotRenewal to `Normal` for an elasticity assurance, and then manually renew the elasticity assurance. Alternatively, you can set the RenewalStatus parameter to AutoRenewal.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Normal', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of elasticity assurances.'."\n" + ."\n" + .'> You can renew up to 50 elasticity assurances at a time.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the elasticity assurance to be modified.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eap-bp1bgwq0gqeukw1l****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2A4EA075-CB5B-41B7-B0EB-70D339F64DE7', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Invalid.PrivatePoolOptionsId', + 'errorMessage' => 'The specified PrivatePoolOptions.Id is invalid.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'InvalidParameter.Period', + 'errorMessage' => 'The specified Period is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.PeriodUnit', + 'errorMessage' => 'The specified PeriodUnit is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptionsId', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidParameter.RenewalStatus', + 'errorMessage' => 'The specified parameter RenewalStatus is not valid.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"2A4EA075-CB5B-41B7-B0EB-70D339F64DE7\\"\\n}","type":"json"}]', + 'title' => 'ModifyElasticityAssuranceAutoRenewAttribute', + ], + 'DescribeElasticityAssuranceAutoRenewAttribute' => [ + 'summary' => 'Queries the auto-renewal attribute of elasticity assurances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '263139', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the elasticity assurance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of elasticity assurances.'."\n" + ."\n" + .'**Limits**: You can specify up to 50 elasticity assurance IDs in a single request.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eap-bp67acfmxazb4****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'description' => 'The information of queried elasticity assurances.'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'ElasticityAssuranceRenewAttributes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ElasticityAssuranceRenewAttribute' => [ + 'description' => 'The auto-renewal attribute of the elasticity assurances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The auto-renewal attribute of the elasticity assurance.'."\n", + 'type' => 'object', + 'properties' => [ + 'PeriodUnit' => [ + 'description' => 'The unit of the auto-renewal period. Valid values:'."\n" + ."\n" + .'* Month (default)'."\n" + .'* Year'."\n", + 'type' => 'string', + 'example' => 'Month', + ], + 'Period' => [ + 'description' => 'The auto-renewal period. Valid values: Valid values: 1, 2, 3, 6, 12, 24, and 36.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'PrivatePoolOptionsId' => [ + 'description' => 'The ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'example' => 'eap-bp67acfmxazb4****'."\n", + ], + 'RenewalStatus' => [ + 'description' => 'Indicates whether auto-renewal is enabled for the elasticity assurance. Valid values:'."\n" + ."\n" + .'* AutoRenewal: Auto-renewal is enabled for the elasticity assurance.'."\n" + .'* Normal: Auto-renewal is disabled for the elasticity assurance.'."\n" + .'* NotRenewal: The elasticity assurance is not renewed.'."\n", + 'type' => 'string', + 'example' => 'Normal', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'Invalid.PrivatePoolOptionsId', + 'errorMessage' => 'The specified PrivatePoolOptions.Id is invalid.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptionsId', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"ElasticityAssuranceRenewAttributes\\": {\\n \\"ElasticityAssuranceRenewAttribute\\": [\\n {\\n \\"PeriodUnit\\": \\"Month\\",\\n \\"Period\\": 1,\\n \\"PrivatePoolOptionsId\\": \\"eap-bp67acfmxazb4****\\\\n\\",\\n \\"RenewalStatus\\": \\"Normal\\"\\n }\\n ]\\n }\\n}","type":"json"}]', + 'title' => 'DescribeElasticityAssuranceAutoRenewAttribute', + ], + 'PurchaseElasticityAssurance' => [ + 'summary' => 'Purchases an elasticity assurance that is not in the Active state and for which resources are prepared.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '245831', + 'abilityTreeNodes' => [ + 'FEATUREecs7WMRSF', + ], + 'tenantRelevance' => 'publicInformation', + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to purchase the elasticity assurance. You can call the [DescribeRegions](~~2679950~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The validity period of the elasticity assurance. The unit of the validity period is determined by the PeriodUnit value. Valid values:'."\n" + ."\n" + .'* When PeriodUnit is set to Month, valid values are 1, 2, 3, 4, 5, 6, 7, 8, and 9.'."\n" + .'* When PeriodUnit is set to Year, valid values are 1, 2, 3, 4, and 5.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the validity period of the elasticity assurance. Valid values:'."\n" + ."\n" + .'* Month'."\n" + .'* Year'."\n" + ."\n" + .'Default value: Year.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + 'default' => 'Year', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the elasticity assurance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'eap-bp67acfmxazb4****', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'allowEmptyValue' => false, + 'schema' => [ + 'title' => '幂等参数', + 'description' => 'The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The `token` can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'PrivatePoolOptions.MatchCriteria', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the private pool with which you want to associate the elasticity assurance. Valid values:'."\n" + ."\n" + .'* Open: open private pool. If you use the elasticity assurance to create Elastic Compute Service (ECS) instances, the open private pool that is associated with the elasticity assurance is automatically matched. If no capacity is available in the open private pool, resources in the public pool are automatically used to create the ECS instances.'."\n" + .'* Target: targeted private pool. If you use the elasticity assurance to create ECS instances, the specified private pool that is associated with the elasticity assurance is automatically matched. If no capacity is available in the private pool, the ECS instances fail to be created.'."\n" + ."\n" + .'Default value: Open.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Open', + 'default' => 'Open', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time when the elasticity assurance takes effect. The default value is the time when the elasticity assurance is created. Specify the time in the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2024-06-18T00:00Z', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'title' => 'Schema of Response', + 'description' => 'Schema of Response'."\n", + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'title' => 'Id of the request', + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidStartTime.MalFormed', + 'errorMessage' => 'The specified StartTime is out of the permitted range.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.PeriodUnit', + 'errorMessage' => 'The specified PeriodUnit is not supported.', + ], + ], + [ + [ + 'errorCode' => 'InvalidUser.Unauthorized', + 'errorMessage' => 'The user is not authorized.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectPrivatePoolStatus', + 'errorMessage' => 'The current status of the private pool does not support this operation.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'Internal error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","type":"json"}]', + 'title' => 'PurchaseElasticityAssurance', + 'description' => 'Before you call this operation, familiarize yourself with the billing rules and [pricing](https://www.alibabacloud.com/zh?spm=5176.28117011.nav-v2-dropdown-language.exp-location-zh.9ae4165bF98IHz&\\_p_lc=1) of elasticity assurances.'."\n" + ."\n" + .'Before you purchase an elasticity assurance, you can call the [DescribeElasticityAssurances](~~2679748~~) operation to query the elasticity assurances that you can purchase.'."\n", + ], + 'CreateCapacityReservation' => [ + 'summary' => 'Creates a capacity reservation.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '28816', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to create the capacity reservation. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which you want to assign the capacity reservation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the capacity reservation.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'Value' => [ + 'description' => 'The value of tag N to add to the capacity reservation. Valid values of N: 1 to 20. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + 'Key' => [ + 'description' => 'The key of tag N to add to the capacity reservation. Valid values of N: 1 to 20. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The client token that is used to ensure the idempotency of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The `token` can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '0c593ea1-3bea-11e9-b96b-88e9fe637760', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The capacity reservation name. The name must be 2 to 128 characters in length. It must start with a letter but cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'crpTestName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the capacity reservation. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'PrivatePoolOptions.MatchCriteria', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the private pool to generate after the capacity reservation takes effect. Valid values:'."\n" + ."\n" + .'* Open: open private pool'."\n" + .'* Target: targeted private pool'."\n" + ."\n" + .'Default value: Open.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Open', + 'default' => 'Open', + ], + ], + [ + 'name' => 'InstanceAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total number of instances for which the capacity of an instance type is reserved.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'minimum' => '1', + 'example' => '2', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type. You can create a capacity reservation to reserve the capacity of only one instance type. You can call the [DescribeInstanceTypes](~~25620~~) operation to query the instance types provided by ECS.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecs.g6.xlarge', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The mode in which the capacity reservation takes effect. You can call the CreateCapacityReservation operation to create only immediate capacity reservations.'."\n" + ."\n" + .'> If you do not specify this parameter, the capacity reservation immediately takes effect.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2021-10-30T05:32:00Z', + ], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time when the capacity reservation expires. Specify the time in the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2021-10-30T06:32:00Z', + ], + ], + [ + 'name' => 'EndTimeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The release mode of the capacity reservation. Valid values:'."\n" + ."\n" + .'* Limited: The capacity reservation is automatically released at a specified time. If you specify this parameter, you must specify the `EndTime` parameter.'."\n" + .'* Unlimited: The capacity reservation is manually released. The capacity reservation can be released anytime.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Unlimited', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system of the image used by the instance. This parameter corresponds to the `Platform` parameter of regional reserved instances. If the operating system of a capacity reservation matches the operating system of a regional reserved instance, you can apply the regional reserved instance to offset fees of the unused capacity of the capacity reservation. Valid values:'."\n" + ."\n" + .'* Windows: Windows Server operating system'."\n" + .'* Linux: Linux and UNIX-like operating system'."\n" + ."\n" + .'Default value: Linux.'."\n" + ."\n" + .'> This parameter is unavailable.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Linux', + 'default' => 'linux', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The ID of the zone in which you want to create the capacity reservation. A capacity reservation can reserve resources within only one zone.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the zone in which you want to create the capacity reservation. A capacity reservation can reserve resources within only one zone.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-h', + ], + 'required' => true, + 'example' => 'cn-hangzhou-h', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PrivatePoolOptionsId' => [ + 'description' => 'The capacity reservation ID.'."\n", + 'type' => 'string', + 'example' => 'crp-bp67acfmxazb4****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.RegionId', + 'errorMessage' => 'The specified RegionId is invalid.', + ], + [ + 'errorCode' => 'NoStock', + 'errorMessage' => 'The stock in the availability zone is insufficient.', + ], + [ + 'errorCode' => 'MissingParameter', + 'errorMessage' => 'The input parameter StartTime is missing.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified instanceType or zone is not available or not authorized.', + ], + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidStartTime.NotSupported', + 'errorMessage' => 'The specified StartTime should be within 180 calendar days from the current date, and you must specify a precision to hour.', + ], + [ + 'errorCode' => 'InvalidStartTime.MalFormed', + 'errorMessage' => 'The specified StartTime is out of the permitted range.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptionsName.MalFormed', + 'errorMessage' => 'The specified PrivatePoolOptions.Name is not valid.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The specified ZoneId is not valid.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The specified InstanceType is not valid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + [ + 'errorCode' => 'Invalid.TimeSlot', + 'errorMessage' => 'The param time slot is invalid.', + ], + [ + 'errorCode' => 'Invalid.EndTime', + 'errorMessage' => 'The specified parameter "EndTime" is not valid.', + ], + [ + 'errorCode' => 'StartTime.NotNeed', + 'errorMessage' => 'The specified parameter "StartTime" should leave empty.', + ], + [ + 'errorCode' => 'AccountForbidden.ProductCreationLimited', + 'errorMessage' => 'The commodity must be officially operated by Aliyun and in pay-as-you-go billing method.', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => 'There is no authority to create private pool in the specified region.', + ], + [ + 'errorCode' => 'PriceNotFound', + 'errorMessage' => 'The price of your queried resource is not available now, please try other resources.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Zone.NotOpen', + 'errorMessage' => 'The specified zone is not granted to you to buy resources yet.', + ], + [ + 'errorCode' => 'InvalidResourceType.NotSupported', + 'errorMessage' => '%s', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The resource is out of stock in the specified zone. Please try other types, or choose other regions and zones.', + ], + [ + 'errorCode' => 'InvalidInstanceType.NotSupported', + 'errorMessage' => 'The specified InstanceType is invalid.', + ], + [ + 'errorCode' => 'Invalid.ZoneIds', + 'errorMessage' => 'At least one of the specified ZoneIds are invalid.', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => 'The specified zone is not available for purchase.', + ], + ], + [ + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The specified zoneId does not exist.', + ], + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PrivatePoolOptionsId\\": \\"crp-bp67acfmxazb4****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n crp-bp67acfmxazb4****\\n","errorExample":""}]', + 'title' => 'CreateCapacityReservation', + 'description' => 'When you create a capacity reservation, you can specify attributes such as a zone and an instance type. The system uses a private pool to reserve resources that match the specified attributes. For more information, see [Overview of Immediate Capacity Reservation](~~193633~~).'."\n" + ."\n" + .'* Currently, only immediate capacity reservations are supported. Immediate capacity reservations take effect immediately after you purchase them. After you purchase an immediate capacity reservation, you are charged for the specified instance type based on the pay-as-you-go billing method regardless of whether you use the capacity reservation to create pay-as-you-go instances. Billing stops when you manually release the capacity reservation or when the capacity reservation expires and is automatically released.'."\n" + ."\n" + .' * You can call the [CreateInstance](~~25499~~) or [RunInstances](~~63440~~) operation to specify private pool attributes when you create instances. To modify the attributes of a private pool, you can call the [ModifyInstanceAttachmentAttributes](~~190006~~) operation. If an instance matches a private pool associated with a capacity reservation, you are charged based on the configurations of the instance such as the instance type, disks, and public bandwidth.'."\n" + .' * Before you use a private pool associated with a capacity reservation to create pay-as-you-go instances, you are charged only for the specified instance type.'."\n" + ."\n" + .'* You can apply savings plans or regional reserved instances to offset hourly billing of unused immediate capacity reservations, and hourly fees of the instances that match the immediate capacity reservations. However, you cannot use zonal reserved instances to offset the hourly fees. We recommend that you purchase reserved instances or savings plans before you purchase immediate capacity reservations. This way, you can access resources free of charge within the coverage of the reserved instances or savings plans.'."\n" + ."\n" + .'> You can call the CreateCapacityReservation operation to create only immediate capacity reservations. You can create immediate or scheduled capacity reservations in the Elastic Compute Service (ECS) console. For more information, see [Overview](~~193626#section-oil-qh5-xvx~~).'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeCapacityReservations' => [ + 'summary' => 'Queries the details of capacity reservations.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28907', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the capacity reservation. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which the capacity reservation belongs. If you specify this parameter to query resources, up to 1,000 resources that belong to the specified resource group can be displayed in the response.'."\n" + ."\n" + .'> Resources in the default resource group are displayed in the response regardless of whether you specify this parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the capacity reservation.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N of the capacity reservation.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the capacity reservation. Valid values of N: 1 to 20.'."\n" + ."\n" + .'If you specify a single tag to query resources, up to 1,000 resources to which the tag is added are returned. If you specify multiple tags to query resources, up to 1,000 resources to which all specified tags are added are returned. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the capacity reservation. Valid values of N: 1 to 20.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The maximum number of entries per page.'."\n" + ."\n" + .'Maximum value: 100'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You must specify the token that is obtained from the previous query as the value of the NextToken parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Ids', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of capacity reservations. The value can be a JSON array that consists of up to 100 capacity reservation IDs. Separate the IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '["crp-bp1gubrkqutenqdd****", "crp-bp67acfmxazb5****"]', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system of the instance. Valid values:'."\n" + ."\n" + .'* windows: Windows operating systems.'."\n" + .'* linux: Linux operating systems.'."\n" + .'* all: all operating system types.'."\n" + ."\n" + .'Default value: all.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'linux', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type of the capacity reservation. You can specify this parameter to query only effective capacity reservations. To query capacity reservations that are released, you must specify PrivatePoolOptions.Ids.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.c6.large', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the capacity reservation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-h', + ], + ], + [ + 'name' => 'InstanceChargeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The billing method of the instance. Valid values:'."\n" + ."\n" + .'* PostPaid: pay-as-you-go.'."\n" + .'* PrePaid: subscription.'."\n" + ."\n" + .'Default value: PostPaid.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'PostPaid', + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'schema' => [ + 'description' => 'The status of the capacity reservation. Valid values:'."\n" + ."\n" + .'* All: All states.'."\n" + .'* Pending: The capacity reservation is being initialized. Scheduled capacity reservations enter the Pending state after they are created.'."\n" + .'* Preparing: The capacity reservation is being prepared. Scheduled capacity reservations are in the Preparing state while resources are being provisioned.'."\n" + .'* Prepared: The capacity reservation is to take effect. After resources are provisioned, scheduled capacity reservations remain in the Prepared state until they take effect.'."\n" + .'* Active: The capacity reservation is in effect.'."\n" + .'* Released: The capacity reservation is manually or automatically released when it expires.'."\n" + ."\n" + .'If you do not specify this parameter, capacity reservations in states other than Pending and Released are queried.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.If NextToken is empty, no next page exists.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'MaxResults' => [ + 'description' => 'The maximum number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'CapacityReservationSet' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'CapacityReservationItem' => [ + 'description' => 'Details of the capacity reservations.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details of the capacity reservation.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status of the capacity reservation. Valid values:'."\n" + ."\n" + .'* Pending: The capacity reservation is being initialized.'."\n" + .'* Preparing: The capacity reservation is being prepared.'."\n" + .'* Prepared: The capacity reservation is to take effect.'."\n" + .'* Active: The capacity reservation is in effect.'."\n" + .'* Released: The capacity reservation has been released manually or automatically when it expired.'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'TimeSlot' => [ + 'description' => '> This parameter is in invitational preview and is not publicly available.'."\n", + 'type' => 'string', + 'example' => 'null', + ], + 'PrivatePoolOptionsMatchCriteria' => [ + 'description' => 'The type of the private pool generated after the capacity reservation takes effect. Valid values:'."\n" + ."\n" + .'* Open: open private pool. If you use the capacity reservation to create Elastic Compute Service (ECS) instances, the open private pool that is associated with the capacity reservation is automatically matched. If no capacity is available in the open private pool, resources in the public pool are automatically used to create the instances.'."\n" + .'* Target: targeted private pool. If you use the capacity reservation to create ECS instances, the targeted private pool that is associated with the capacity reservation is automatically matched. If no capacity is available in the private pool, the instances fail to be created.'."\n", + 'type' => 'string', + 'example' => 'Open', + ], + 'PrivatePoolOptionsId' => [ + 'description' => 'The ID of the capacity reservation.'."\n", + 'type' => 'string', + 'example' => 'crp-bp1gubrkqutenqdd****', + ], + 'PrivatePoolOptionsName' => [ + 'description' => 'The name of the capacity reservation.'."\n", + 'type' => 'string', + 'example' => 'crpTestName', + ], + 'RegionId' => [ + 'description' => 'The region ID of the capacity reservation.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'InstanceChargeType' => [ + 'description' => 'The billing method of the instances created by using the capacity reservation. Valid values:'."\n" + ."\n" + .'* PostPaid: pay-as-you-go.'."\n" + .'* PrePaid: subscription.'."\n", + 'type' => 'string', + 'example' => 'PostPaid', + ], + 'EndTime' => [ + 'description' => 'The time when the capacity reservation expires.'."\n", + 'type' => 'string', + 'example' => '2021-02-19T03:02Z', + ], + 'StartTime' => [ + 'description' => 'The time when the capacity reservation takes effect.'."\n", + 'type' => 'string', + 'example' => '2021-02-19T02:01Z', + ], + 'Description' => [ + 'description' => 'The description of the capacity reservation.'."\n", + 'type' => 'string', + 'example' => 'This is description.', + ], + 'EndTimeType' => [ + 'description' => 'The release mode of the capacity reservation. Valid values:'."\n" + ."\n" + .'* Limited: The capacity reservation is automatically released at a specified time.'."\n" + .'* Unlimited: The capacity reservation is manually released. You can release the capacity reservation anytime.'."\n", + 'type' => 'string', + 'example' => 'Unlimited', + ], + 'ResourceGroupId' => [ + 'description' => 'The ID of the resource group to which the capacity reservation belongs.'."\n", + 'type' => 'string', + 'example' => 'rg-bp67acfmxazb4p****', + ], + 'Platform' => [ + 'description' => 'The operating system type of the instances created by using the capacity reservation. Valid values:'."\n" + ."\n" + .'* windows'."\n" + .'* linux'."\n", + 'type' => 'string', + 'example' => 'linux', + ], + 'AllocatedResources' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'AllocatedResource' => [ + 'description' => 'Details of the allocated resources.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'UsedAmount' => [ + 'description' => 'The number of instances that have used the capacity reservation.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'TotalAmount' => [ + 'description' => 'The total number of instances for which the capacity of an instance type is reserved.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'AvailableAmount' => [ + 'description' => 'The number of available instances.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '2', + ], + 'zoneId' => [ + 'description' => 'The zone ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-h', + ], + 'InstanceType' => [ + 'description' => 'The instance type of the instances.'."\n", + 'type' => 'string', + 'example' => 'ecs.c6.large', + ], + 'CapacityReservationUsages' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'CapacityReservationUsage' => [ + 'description' => 'Details of instance usage.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details of instance usage.'."\n", + 'type' => 'object', + 'properties' => [ + 'AccountId' => [ + 'description' => 'The ID of the Alibaba Cloud account.'."\n", + 'type' => 'string', + 'example' => '105909559088****', + ], + 'ServiceName' => [ + 'description' => 'The name of the Alibaba Cloud service.'."\n", + 'type' => 'string', + 'example' => 'maxcompute.aliyuncs.com', + ], + 'UsedAmount' => [ + 'description' => 'The number of instances that are used by the Alibaba Cloud account or service.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags that are added to the capacity reservation.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => '', + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + 'StartTimeType' => [ + 'description' => 'The mode in which the capacity reservation takes effect. Valid values:'."\n" + ."\n" + .'* Now: The capacity reservation takes effect immediately after it is created.'."\n" + .'* Later: The capacity reservation takes effect at a specified time.'."\n", + 'type' => 'string', + 'example' => 'Now', + ], + 'SavingPlanId' => [ + 'description' => 'The ID of the savings plan used with the capacity reservation.'."\n", + 'type' => 'string', + 'example' => 'spn-c29b5e18pJMT****', + ], + 'ReservedInstanceId' => [ + 'description' => 'The ID of the reserved instance used with the capacity reservation.'."\n", + 'type' => 'string', + 'example' => 'ri-bpzhex2ulpzf53****', + ], + 'CapacityReservationOwnerId' => [ + 'description' => 'The ID of the capacity reservation owner.'."\n", + 'type' => 'string', + 'example' => '100************7'."\n", + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.Name', + 'errorMessage' => 'The specified PrivatePoolOptions.Name is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified PrivatePoolOptions.Ids is invalid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + [ + 'errorCode' => 'InvalidParameter.RegionId', + 'errorMessage' => 'The specified RegionId is not exist.', + ], + [ + 'errorCode' => 'InvalidPermission.ResourceShareAssocoated', + 'errorMessage' => 'The current resource is associated to a shared relationship and cannot be released.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\",\\n \\"TotalCount\\": 1,\\n \\"MaxResults\\": 10,\\n \\"CapacityReservationSet\\": {\\n \\"CapacityReservationItem\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"TimeSlot\\": \\"null\\",\\n \\"PrivatePoolOptionsMatchCriteria\\": \\"Open\\",\\n \\"PrivatePoolOptionsId\\": \\"crp-bp1gubrkqutenqdd****\\",\\n \\"PrivatePoolOptionsName\\": \\"crpTestName\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"InstanceChargeType\\": \\"PostPaid\\",\\n \\"EndTime\\": \\"2021-02-19T03:02Z\\",\\n \\"StartTime\\": \\"2021-02-19T02:01Z\\",\\n \\"Description\\": \\"This is description.\\",\\n \\"EndTimeType\\": \\"Unlimited\\",\\n \\"ResourceGroupId\\": \\"rg-bp67acfmxazb4p****\\",\\n \\"Platform\\": \\"linux\\",\\n \\"AllocatedResources\\": {\\n \\"AllocatedResource\\": [\\n {\\n \\"UsedAmount\\": 2,\\n \\"TotalAmount\\": 2,\\n \\"AvailableAmount\\": 2,\\n \\"zoneId\\": \\"cn-hangzhou-h\\",\\n \\"InstanceType\\": \\"ecs.c6.large\\",\\n \\"CapacityReservationUsages\\": {\\n \\"CapacityReservationUsage\\": [\\n {\\n \\"AccountId\\": \\"105909559088****\\",\\n \\"ServiceName\\": \\"maxcompute.aliyuncs.com\\",\\n \\"UsedAmount\\": 20\\n }\\n ]\\n }\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n },\\n \\"StartTimeType\\": \\"Now\\",\\n \\"SavingPlanId\\": \\"spn-c29b5e18pJMT****\\",\\n \\"ReservedInstanceId\\": \\"ri-bpzhex2ulpzf53****\\",\\n \\"CapacityReservationOwnerId\\": \\"100************7\\\\n\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n caeba0bbb2be03f84eb48b699f0a****\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n 10\\n \\n \\n Active\\n This is description.\\n 2021-02-19T03:02Z\\n linux\\n rg-bp67acfmxazb4p****\\n crpTestName\\n PostPaid\\n 2021-02-19T02:01Z\\n Now\\n Open\\n \\n spn-c29b5e18pJMT****\\n ri-bpzhex2ulpzf53****\\n \\n \\n 2\\n cn-hangzhou-h\\n 2\\n ecs.c6.large\\n \\n \\n crp-bp1gubrkqutenqdd****\\n Unlimited\\n cn-hangzhou\\n \\n \\n TestKey\\n TestValue\\n \\n \\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeCapacityReservations', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeCapacityReservationInstances' => [ + 'summary' => 'Queries the Elastic Compute Service (ECS) instances that match a capacity reservation.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28906', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the capacity reservation. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'MaxResults', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'* Valid values: 1 to 100.'."\n" + .'* Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + [ + 'name' => 'NextToken', + 'in' => 'query', + 'schema' => [ + 'description' => 'The pagination token that is used in the next request to retrieve a new page of results. You must specify the token that is obtained from the previous query as the value of the NextToken parameter.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the capacity reservation.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'crp-bp67acfmxazb4****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'NextToken' => [ + 'description' => 'A pagination token. It can be used in the next request to retrieve a new page of results.'."\n", + 'type' => 'string', + 'example' => 'caeba0bbb2be03f84eb48b699f0a4883', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'MaxResults' => [ + 'description' => 'The maximum number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'CapacityReservationItem' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'InstanceIdSet' => [ + 'description' => 'Details about the instances that match the capacity reservation.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The instance that matches the capacity reservation.'."\n", + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4****', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id is invalid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"NextToken\\": \\"caeba0bbb2be03f84eb48b699f0a4883\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"TotalCount\\": 10,\\n \\"MaxResults\\": 10,\\n \\"CapacityReservationItem\\": {\\n \\"InstanceIdSet\\": [\\n {\\n \\"InstanceId\\": \\"i-bp67acfmxazb4****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 2\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n caeba0bbb2be03f84eb48b699f0a4883\\n 10\\n \\n \\n i-bp67acfmxazb4****\\n \\n \\n i-bp67acfmxazb5****\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeCapacityReservationInstances', + 'extraInfo' => ' ', + ], + 'ModifyCapacityReservation' => [ + 'summary' => 'Modifies the information of a capacity reservation, including the name, description, release mode, and the total number of Elastic Compute Service (ECS) instances for which capacity is reserved.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29047', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the capacity reservation. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The capacity reservation ID.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'crp-bp67acfmxazb4****', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the capacity reservation. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with `http://` or `https://`. It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eapTestName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the capacity reservation. The description must be 2 to 256 characters in length. It cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'This is description.', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The mode in which the capacity reservation takes effect. Only immediate capacity reservations are supported. You do not need to specify a value for this parameter.'."\n" + ."\n" + .'> If you do not specify a value for this parameter, the capacity reservation immediately takes effect.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Now', + ], + ], + [ + 'name' => 'EndTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The expiration time of the capacity reservation. This parameter takes effect only when `EndTimeType` is set to Limited. Specify the time in the ISO 8601 standard in the `yyyy-MM-ddTHH:mm:ssZ` format. The time must be in UTC. For more information, see [ISO 8601](~~25696~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2021-10-30T06:32:00Z', + ], + ], + [ + 'name' => 'EndTimeType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The release mode of the capacity reservation. Valid values:'."\n" + ."\n" + .'* Limited: The capacity reservation is automatically released at the specified point in time. If you configure this parameter, you must also configure `EndTime`.'."\n" + .'* Unlimited: The capacity reservation must be manually released. You can release it anytime.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Unlimited', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system of the image used by the instance. Valid values:'."\n" + ."\n" + .'* Windows'."\n" + .'* Linux'."\n" + ."\n" + .'> This parameter is unavailable.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Linux', + ], + ], + [ + 'name' => 'InstanceAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The total number of instances for which capacity is reserved. Valid values: the number of used instances to 1000.'."\n" + ."\n" + .'> When you increase the number of instances, the increase may fail due to insufficient resources.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '100', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8455DD10-84F8-43C9-8365-5F448EB169B6', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceAmount.ValueNotSupported', + 'errorMessage' => 'The specified parameter InstanceAmount is not valid.', + ], + [ + 'errorCode' => 'InvalidDescription.ValueNotSupported', + 'errorMessage' => 'The specified Description is invalid.', + ], + [ + 'errorCode' => 'InvalidEndTime.ValueNotSupported', + 'errorMessage' => 'The specified EndTime is invalid.', + ], + [ + 'errorCode' => 'InvalidStartTime.ValueNotSupported', + 'errorMessage' => 'The specified StartTime is invalid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidUser.Unauthorized', + 'errorMessage' => 'The user is not authorized.', + ], + ], + 403 => [ + [ + 'errorCode' => 'IncorrectPrivatePoolStatus', + 'errorMessage' => 'The current status of the private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone; try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'InvalidPrivatePoolOptionsName.ValueNotSupported', + 'errorMessage' => 'The specified PrivatePoolOptions.Name is invalid.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The specified Platform is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.PlatformNotSupported', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.EndTimeTypeNotSupported', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.StartTimeNotSupported', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.InstanceAmountNotSupported', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'InvalidInstanceAmount.ValueNotSupported', + 'errorMessage' => 'The specified InstanceAmount is invalid.', + ], + [ + 'errorCode' => 'InvalidPrivatePoolOptions.Id', + 'errorMessage' => 'The specified private pool does not support this operation.', + ], + [ + 'errorCode' => 'OperationDenied.InstanceTypeNotAuthorized', + 'errorMessage' => 'The specified InstanceType is not available or not authorized.', + ], + ], + [ + [ + 'errorCode' => 'InvalidPrivatePoolId.NotFound', + 'errorMessage' => 'The specified private pool does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8455DD10-84F8-43C9-8365-5F448EB169B6\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 8455DD10-84F8-43C9-8365-5F448EB169B6\\r\\n","errorExample":""}]', + 'title' => 'ModifyCapacityReservation', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeInstanceAttachmentAttributes' => [ + 'summary' => 'Queries the information about the private pools that Elastic Compute Service (ECS) instances match.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '28945', + 'abilityTreeNodes' => [ + 'FEATUREecsQDYV10', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the elasticity assurance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceIds', + 'in' => 'query', + 'schema' => [ + 'description' => 'The IDs of the instances. The value can be a JSON array that consists of up to 100 instance IDs. Separate the IDs with commas (,).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => '["i-bp67acfmxazb4****", "i-bp67acfmxazb5****", "i-bp67acfmxazb6****"]', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number.'."\n" + ."\n" + .'Page starts from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + 'default' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '10', + 'default' => '10', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of entries returned.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'Instances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Instance' => [ + 'description' => 'The information about the association between private pools and instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The information about the association between the private pool and the instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'InstanceId' => [ + 'description' => 'The ID of the instance.'."\n", + 'type' => 'string', + 'example' => 'i-bp67acfmxazb4****', + ], + 'PrivatePoolOptionsMatchCriteria' => [ + 'description' => 'The match mode of the private pool. Valid values:'."\n" + ."\n" + .'* Open: open private pool. Instances automatically match an open private pool.'."\n" + .'* Target: specified private pool. Instances match a specified private pool.'."\n" + .'* None: no private pool. Instances do not use private pools.'."\n", + 'type' => 'string', + 'example' => 'Open', + ], + 'PrivatePoolOptionsId' => [ + 'description' => 'The ID of the private pool. If the value of `PrivatePoolOptionsMatchCriteria` is `Open`, the value of PrivatePoolOptionsId is the ID of the private pool that is automatically matched to the instance.'."\n", + 'type' => 'string', + 'example' => 'eap-bp67acfmxazb4****', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidParameter.TooManyInstanceIds', + 'errorMessage' => 'Instance ids cannot be more than 100.', + ], + [ + 'errorCode' => 'Abs.InvalidInstanceIds.MalFormed', + 'errorMessage' => 'The specified InstanceIds is not valid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidInstanceIds.NotFound', + 'errorMessage' => 'The specified InstanceIds does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'Invalid parameters.', + ], + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"Instances\\": {\\n \\"Instance\\": [\\n {\\n \\"InstanceId\\": \\"i-bp67acfmxazb4****\\",\\n \\"PrivatePoolOptionsMatchCriteria\\": \\"Open\\",\\n \\"PrivatePoolOptionsId\\": \\"eap-bp67acfmxazb4****\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n \\n i-bp67acfmxazb4****\\n Open\\n eap-bp67acfmxazb4****\\n \\n \\n 1\\n 395245CB-A6FD-4777-8F83-A0B0DFE43F23\\n 10\\n 1\\n","errorExample":""}]', + 'title' => 'DescribeInstanceAttachmentAttributes', + 'description' => '## [](#)Usage notes'."\n" + ."\n" + .'After an elasticity assurance or a capacity reservation is created, a private pool is generated and associated with information about the instances that are created by using the private pool. You can specify a private pool when you create an instance. This way, the instance matches the elasticity assurance or capacity reservation that is associated with the private pool.'."\n" + ."\n" + .'When a private pool expires, data related to the association between instances and the private pool becomes invalid. If you call this operation to query information about the private pool, empty values are returned.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyInstanceAttachmentAttributes' => [ + 'summary' => 'Changes the type of the private pool for an Elastic Compute Service (ECS) instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29068', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the private pool. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'InstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the instance for which you want to modify the attributes of the private pool.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'i-bp67acfmxazb4****', + ], + ], + [ + 'name' => 'PrivatePoolOptions.MatchCriteria', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new type of private pool. Valid values:'."\n" + ."\n" + .'* Open: open private pool. The system matches the instance with an open private pool. If no matching open private pools exist, the system uses resources in the public pool to start the instance.'."\n" + .'* Target: specified private pool. The system uses the capacity in a specified private pool to start the instance. If the specified private pool is unavailable, the instance cannot be started. You must use `PrivatePoolOptions.Id` to specify the ID of a private pool.'."\n" + .'* None: no private pool. The capacity in private pools is not used to start the instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'Open', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the private pool. Set the value to the ID of the elasticity assurance or capacity reservation that generates the private pool.'."\n" + ."\n" + .'* This parameter is required when `PrivatePoolOptions.MatchCriteria` is set to `Target`.'."\n" + .'* This parameter must be empty when `PrivatePoolOptions.MatchCriteria` is set to `Open` or `None`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'eap-bp67acfmxazb4****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceId', + 'errorMessage' => 'The specified InstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidResourcePackage.BizStatus', + 'errorMessage' => 'The resource package business status is not supported.', + ], + [ + 'errorCode' => 'InvalidInstanceId.MalFormed', + 'errorMessage' => 'The specified InstanceId is not valid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.NoStock', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool is expired or inactive.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + ], + 403 => [ + [ + 'errorCode' => 'InvalidOperation.PrePaidInstanceUnsupported', + 'errorMessage' => 'Not support to modify the private pool options of prepay instances.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\r\\n","errorExample":""}]', + 'title' => 'ModifyInstanceAttachmentAttributes', + 'description' => 'A private pool is generated after an elasticity assurance or a capacity reservation is created. The private pool is associated with information about the instances that use the private pool. You can specify whether to use a private pool when you create an ECS instance to match the instance with the associated elasticity assurance or capacity reservation.'."\n" + ."\n" + .'* After you call this operation to modify the private pool attributes of an ECS instance, you do not need to restart the instance for the changes to take effect.'."\n" + ."\n" + .'* When you call the following operations on an ECS instance, the system attempts to match the instance with active private pools. If the instance is already matched to a specified private pool, the call to an operation may fail when the private pool capacity is used up or the private pool expires. If the call fails, call the ModifyInstanceAttachmentAttributes operation to change the type of the private pool to `Open`.'."\n" + ."\n" + .' * [StartInstance](~~2679679~~): start an ECS instance that is stopped in economical mode.'."\n" + .' * [ReActivateInstances](~~2679707~~): reactivates an ECS instance that has expired or is reclaimed due to an overdue payment.'."\n" + .' * [ModifyInstanceChargeType](~~2679704~~): changes the billing method of an ECS instance.'."\n" + .' * [ModifyPrepayInstanceSpec](~~2679706~~): changes the instance type of an ECS instance.'."\n" + .' * [ReplaceSystemDisk](~~2679771~~): replaces the operating system of an ECS instance.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ReleaseCapacityReservation' => [ + 'summary' => 'Releases a capacity reservation.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'delete', + 'abilityTreeCode' => '29147', + 'abilityTreeNodes' => [ + 'FEATUREecs7WMRSF', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the capacity reservation. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PrivatePoolOptions.Id', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the capacity reservation.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'crp-bp67acfmxazb4****', + ], + ], + [ + 'name' => 'DryRun', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to perform only a dry run, without performing the actual request. Set the value to false. This indicates that the system directly releases the capacity reservation.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.Name', + 'errorMessage' => 'The specified PrivatePoolOptions.Name is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified PrivatePoolOptions.Ids is invalid.', + ], + [ + 'errorCode' => 'DedicatedHostNotSupported', + 'errorMessage' => 'DedicatedHost is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'SpotNotSupported', + 'errorMessage' => 'Spot is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'ClassicNetworkNotSupported', + 'errorMessage' => 'Classic network is not supported for PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceId', + 'errorMessage' => 'Instance does not exist.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.MatchCriteria', + 'errorMessage' => 'Target mode does not support this operation.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Id', + 'errorMessage' => 'The specified PrivatePoolOptions.Id should not be null.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Id', + 'errorMessage' => 'The PrivatePool does not exist.', + ], + [ + 'errorCode' => 'Invalid.InstanceType', + 'errorMessage' => 'The InstanceType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.InstanceChargeType', + 'errorMessage' => 'The InstanceChargeType does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.ZoneId', + 'errorMessage' => 'The ZoneId does not match the PrivatePool.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.status', + 'errorMessage' => 'The PrivatePool has been used up.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The Platform does not match the PrivatePool.', + ], + [ + 'errorCode' => 'InvalidAliUid', + 'errorMessage' => 'The PrivatePool does not belong to the user of the Instance.', + ], + [ + 'errorCode' => 'MissingParameter.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceAmount" can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'The specified parameter "InstanceCpuCoreCount" and "InstanceAmount" must not be empty at the same time.', + ], + [ + 'errorCode' => 'Invalid.TooManyPrivatePoolOptions.Ids', + 'errorMessage' => 'Too many PrivatePoolOptions.Ids in this request.', + ], + [ + 'errorCode' => 'Invalid.TooManyZoneIds', + 'errorMessage' => 'Too many ZoneIds in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyInstanceTypes', + 'errorMessage' => 'Too many InstanceTypes in the request.', + ], + [ + 'errorCode' => 'Invalid.TooManyUnpaidPrivatePool', + 'errorMessage' => 'Too many PrivatePools create but still unpaid.', + ], + [ + 'errorCode' => 'Invalid.InstanceCpuCoreCountOrInstanceAmount', + 'errorMessage' => 'Both InstanceCpuCoreCount and InstanceAmount are provided.', + ], + [ + 'errorCode' => 'Invalid.PrivatePoolOptions.Ids', + 'errorMessage' => 'The specified parameter "PrivatePoolOptions.Ids" exist invalid element Id.', + ], + [ + 'errorCode' => 'Invalid.PackageType', + 'errorMessage' => 'The specified parameter "PackageType" is invalid.', + ], + [ + 'errorCode' => 'Invalid.PrivatePool.Purchase', + 'errorMessage' => 'The PrivatePool has already paid.', + ], + [ + 'errorCode' => 'Invalid.AssuranceTimes.NotSupported', + 'errorMessage' => 'The value of AssuranceTimes is not supported.', + ], + [ + 'errorCode' => 'RepeatStartPrivatePool', + 'errorMessage' => 'PrivatePool has already been started.', + ], + [ + 'errorCode' => 'Invalid.Action.ReleaseCapacityReservation', + 'errorMessage' => 'Release action is not supported when using Limited endTimeType, please change it to Unlimited first.', + ], + [ + 'errorCode' => 'InvalidOperation.ReleasePrivatePoolUnsupported', + 'errorMessage' => 'The specified private pool does not support release.', + ], + [ + 'errorCode' => 'InvalidPermission.ResourceShareAssocoated', + 'errorMessage' => 'The current resource is associated to a shared relationship and cannot be released.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error, exception or failure.', + ], + ], + ], + 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","type":"json"}]', + 'title' => 'ReleaseCapacityReservation', + 'description' => 'If the release mode of a capacity reservation that takes effect immediately is set to manual release, you can call this operation to release the capacity reservation.'."\n", + ], + 'PurchaseReservedInstancesOffering' => [ + 'summary' => 'Purchases a regional or zonal reserved instance to offset the bills of pay-as-you-go Elastic Compute Service (ECS) instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'create', + 'abilityTreeCode' => '29128', + 'abilityTreeNodes' => [ + 'FEATUREecsG3KXW4', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to purchase a reserved instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the reserved instance. You can add up to 20 tags.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The tag key to add to the reserved instance. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The tag value to add to the reserved instance. The tag value cannot be an empty string. The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp199lyny9b3****', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the zone in which to purchase the reserved instance. This parameter takes effect and is required only if you set `Scope` to `Zone`. You can call the [DescribeZones](~~25610~~) operation to query the most recent zone list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-g', + ], + ], + [ + 'name' => 'ReservedInstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the reserved instance. The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with http:// or https://. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testReservedInstanceName', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type that the reserved instance can match.'."\n" + ."\n" + .'> The instance types that support reserved instances are subject to updates. For more information, see [Reserved instance overview](~~100370#3c1b682051vt4~~).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'Scope', + 'in' => 'query', + 'schema' => [ + 'description' => 'The scope of reserved instance N. Valid values:'."\n" + ."\n" + .'* Region: regional'."\n" + .'* Zone: zonal'."\n" + ."\n" + .'Default value: Region.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Zone', + ], + ], + [ + 'name' => 'InstanceAmount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of pay-as-you-go instances of the same instance type that the reserved instance can match. Valid values: 1 to 50.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '3', + ], + ], + [ + 'name' => 'OfferingType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The payment option of the reserved instance. Valid values:'."\n" + ."\n" + .'* No Upfront'."\n" + .'* Partial Upfront'."\n" + .'* All Upfront'."\n" + ."\n" + .'Default value: All Upfront.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'All Upfront', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the reserved instance. The description can be 2 to 256 characters in length and cannot start with [http:// or https://](http://https://。).'."\n" + ."\n" + .'This parameter is left empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'Platform', + 'in' => 'query', + 'schema' => [ + 'description' => 'The operating system of the image used by the instance. Valid values:'."\n" + ."\n" + .'* Windows: Windows Server operating system'."\n" + .'* Linux: Linux and UNIX-like operating system'."\n" + ."\n" + .'Default value: Linux.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Linux', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The validity period of the reserved instance.'."\n" + ."\n" + .'Valid values: 1 and 3.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the validity period of the reserved instance.'."\n" + ."\n" + .'Valid value: Year.'."\n" + ."\n" + .'Default value: Year.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Year', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 **ClientToken** value can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal for the reserved instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false (default)'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'AutoRenewPeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal term of the reserved instance. Unit: months. This parameter takes effect only when AutoRenew is set to true.'."\n" + ."\n" + .'Valid values: 12 and 36.'."\n" + ."\n" + .'Default value when PeriodUnit is set to Year: 12.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time when you want the reserved instance to take effect. Specify the time in the [ISO 8601 standard](~~25696~~) in the `yyyy-MM-ddTHHZ` format. The time must be in UTC.'."\n" + ."\n" + .'> If you do not specify this parameter, the reserved instance takes effect starting on the hour when the reserved instance is purchased. For example, if you purchase a reserved instance at 13:45:35 on November 1, 2024, the reserved instance takes effect starting 13:00:00 on November 1, 2024.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2024-07-04T15Z', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '8C314443-AF0D-4766-9562-C83B7F1A3C8B', + ], + 'ReservedInstanceIdSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ReservedInstanceId' => [ + 'description' => 'The IDs of the reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the reserved instance.'."\n", + 'type' => 'string', + 'example' => 'ecsri-2ze53qonjqxg7r****', + ], + ], + ], + ], + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'string', + 'example' => '23841229****', + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidStartTime.ScopeNotMatch', + 'errorMessage' => 'Zonal reservedInstance not supported for scheduled creating.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified parameter "Description" is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The specified region and cluster do not match.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidPeriodUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PeriodUnit is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidChargeType.ValueNotSupported', + 'errorMessage' => 'ChargeType is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Scope', + 'errorMessage' => 'The specified parameter \'Scope\' is invalid.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceStatus.ValueNotSupported', + 'errorMessage' => 'ReservedInstance status is not supported.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceOfferingType.ValueNotSupported', + 'errorMessage' => 'The OfferingType is not supported.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceOfferingClass.ValueNotSupported', + 'errorMessage' => 'The OfferingClass is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.ZoneId', + 'errorMessage' => 'The specified zoneId should be not empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceType', + 'errorMessage' => 'The instanceType should be not empty.', + ], + [ + 'errorCode' => 'MissingParameter.ReservedInstanceId', + 'errorMessage' => 'The ids of reservedInstance can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.ReservedInstanceConfiguration', + 'errorMessage' => 'The configurations of reservedInstance can not be empty.', + ], + [ + 'errorCode' => 'InvalidParameter.SplitOrMerge', + 'errorMessage' => 'The Many-to-many of modification is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceTypeAndAmountBothEmpty', + 'errorMessage' => 'The instanceType and amount can not be both empty.', + ], + [ + 'errorCode' => 'InvalidReservedInstancePlatform.ValueNotSupported', + 'errorMessage' => 'The Platform is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.ReservedInstanceName', + 'errorMessage' => 'ReservedInstanceName is invalid.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceZone.ValueNotSupported', + 'errorMessage' => 'The zoneId is not exist.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified InstanceType or Zone is not authorized for current user.', + ], + [ + 'errorCode' => 'InvalidInstanceType.ValueNotSupported', + 'errorMessage' => 'The specified InstanceType beyond the permitted range.', + ], + ], + 403 => [ + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The creation of Host to the specified Zone is not allowed.', + ], + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone; try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'NodeControllerUnavailable', + 'errorMessage' => 'The Node Controller is temporarily unavailable.', + ], + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerAccount', + 'errorMessage' => 'ResourceOwnerAccount is Invalid.', + ], + [ + 'errorCode' => 'Zone.NotOpen', + 'errorMessage' => 'The specified zone is not granted to you to buy resources yet.', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => 'The specified zone is not available for purchase.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has been in arrears.', + ], + [ + 'errorCode' => 'InvalidStartTime.MalFormed', + 'errorMessage' => 'The specified StartTime is not valid.', + ], + [ + 'errorCode' => 'InvalidStartTime.NotSupported', + 'errorMessage' => 'The specified startTime is not supported.', + ], + [ + 'errorCode' => 'RegionUnauthorized', + 'errorMessage' => 'You are not authorized to perform the operation in the specified region.', + ], + ], + [ + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The ZoneId provided does not exist in our records.', + ], + [ + 'errorCode' => 'PaymentMethodNotFound', + 'errorMessage' => 'No payment method has been registered on the account.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8C314443-AF0D-4766-9562-C83B7F1A3C8B\\",\\n \\"ReservedInstanceIdSets\\": {\\n \\"ReservedInstanceId\\": [\\n \\"ecsri-2ze53qonjqxg7r****\\"\\n ]\\n },\\n \\"OrderId\\": \\"23841229****\\"\\n}","errorExample":"{\\n \\"RequestId\\": \\"51AB7717-6E1A-4D1D-A44D-54CBxxxxxxxx\\",\\n \\"ReservedInstanceId\\":\\"ri-instance\\"\\n}"},{"type":"xml","example":"\\n 8C314443-AF0D-4766-9562-C83B7F1A3C8B\\n \\n ecsri-2ze53qonjqxg7r****\\n \\n","errorExample":"\\n 51AB7717-6E1A-4D1D-A44D-54CBxxxxxxxx\\n ri-instance\\n"}]', + 'title' => 'PurchaseReservedInstancesOffering', + 'description' => '**Before you call this operation, make sure that you are familiar with the billing methods and [pricing](https://www.alibabacloud.com/zh/pricing-calculator#/commodity/vm_intl) of reserved instances.**'."\n" + ."\n" + .'* Before you call this operation, make sure that you are familiar with the billing rules of reserved instances. For more information, see [Reserved instances](~~100371~~).'."\n" + .'* You can retain up to 20 regional reserved instances in all regions per Alibaba Cloud account.'."\n" + .'* You can retain up to 20 zonal reserved instances per zone per Alibaba Cloud account.'."\n" + ."\n" + .'## [](#)Sample requests'."\n" + ."\n" + .'* Purchase a one-year regional reserved instance in the China (Hangzhou) region to offset the bills of three ecs.g5.large Linux pay-as-you-go instances.'."\n" + ."\n" + .''."\n" + ."\n" + .' "RegionId":"cn-hangzhou", // Specify the China (Hangzhou) region."InstanceType":"ecs.g5.large", // Specify the instance type."Scope":"Region", // Set the scope of the reserved instance to regional."InstanceAmount":3, // Specify the reserved instance to match three pay-as-you-go instances of the same instance type."OfferingType":"All Upfront", // Specify the payment option. In this example, the default value is used, which is All Upfront."Platform":"Linux", // Specify the operating system platform of the ECS instances eligible for the reserved instance. In this example, the Linux or Unix-like operating system is used."Period":1, // Specify the term of the reserved instance. In this example, the one-year duration is used."PeriodUnit":"Year", // Set the unit of the term to year.'."\n" + ."\n" + .'* Purchase a two-year zonal reserved instance in Hangzhou Zone H to offset the bills of five ecs.g5.large Windows pay-as-you-go instances.'."\n" + ."\n" + .''."\n" + ."\n" + .' "RegionId":"cn-hangzhou",'."\n" + .' "ZoneId":"cn-hangzhou-h", // Specify Hangzhou Zone H."InstanceType":"ecs.g5.large",'."\n" + .' "Scope":"Zone", // Set the scope of the reserved instance to zonal."InstanceAmount":5, // Specify the reserved instance to match five pay-as-you-go instances of the same instance type."OfferingType":"All Upfront",'."\n" + .' "Platform":"Windows", // Specify the operating system platform of the ECS instances eligible for the reserved instance. In this example, the Windows operating system is used."Period":2, // Specify the term of the reserved instance. In this example, the two-year duration is used."PeriodUnit":"Year", // Set the unit of the term to year.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeReservedInstances' => [ + 'summary' => 'Queries the details of reserved instances that you have purchased in a specific region. You can query the details of reserved instances based on parameters, such as tags and reserved instance attributes.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '29291', + 'abilityTreeNodes' => [ + 'FEATUREecsMCS2C4', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the reserved instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The page number. Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page. Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '50', + 'default' => '10', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags of the reserved instance. You can specify up to 20 tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N of the reserved instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N of the reserved instance. The tag key cannot be empty and can be up to 128 characters in length. It cannot start with aliyun or acs: and cannot contain http:// or https://.'."\n" + ."\n" + .'> If you specify a single tag to query resources, up to 1,000 resources to which the tag is added are returned. If you specify multiple tags to query resources, up to 1,000 resources to which all specified tags are added are returned. To query more than 1,000 resources that have specified tags added, call the [ListTagResources](~~110425~~) operation.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N of the reserved instance. The tag value cannot be empty and can be up to 128 characters in length. It cannot start with `acs:` and cannot contain `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the reserved instance. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ZoneId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The zone ID of the reserved instance. This parameter is valid and required if you set Scope to Zone. You can call the [DescribeZones](~~25610~~) operation to query the most recent zone list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-z', + ], + ], + [ + 'name' => 'ReservedInstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the reserved instance.'."\n" + ."\n" + .'> Only exact search is supported.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testReservedInstanceName', + ], + ], + [ + 'name' => 'LockReason', + 'in' => 'query', + 'schema' => [ + 'description' => 'The reason why the reserved instance is locked. Valid values:'."\n" + ."\n" + .'* financial: The reserved instance is locked because the account has overdue payments or the service expires.'."\n" + .'* security: The reserved instance is locked due to security reasons.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'security', + ], + ], + [ + 'name' => 'InstanceType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance type of the reserved instance. For information about the valid values, see [Overview of instance families](~~25378~~).'."\n" + ."\n" + .'> Specify the instance type that you selected when you purchased the reserved instance. If the reserved instance is a regional reserved instance, it can be used to offset the bills of instance types that belong to the same instance family as the specified instance type, regardless of instance specifications.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5.large', + ], + ], + [ + 'name' => 'InstanceTypeFamily', + 'in' => 'query', + 'schema' => [ + 'description' => 'The instance family of the reserved instance. For information about the valid values, see [Overview of instance families](~~25378~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecs.g5', + ], + ], + [ + 'name' => 'Scope', + 'in' => 'query', + 'schema' => [ + 'description' => 'The scope level of the reserved instance. Valid values:'."\n" + ."\n" + .'* Region: regional'."\n" + .'* Zone: zonal'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Region', + ], + ], + [ + 'name' => 'OfferingType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The payment option of the reserved instance. Valid values:'."\n" + ."\n" + .'* No Upfront'."\n" + .'* Partial Upfront'."\n" + .'* All Upfront'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'All Upfront', + ], + ], + [ + 'name' => 'AllocationType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The allocation type of the reserved instances. Valid values:'."\n" + ."\n" + .'* Normal: queries all reserved instances that belong to the current account.'."\n" + .'* Shared: queries the reserved instances that are shared between the current main account and linked accounts.'."\n" + ."\n" + .'Default value: Normal.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Normal', + ], + ], + [ + 'name' => 'ReservedInstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of reserved instances. You can specify up to 100 IDs of reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of reserved instance N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ri-bpzhex2ulpzf53****', + ], + 'required' => false, + 'example' => 'ri-bpzhex2ulpzf53****', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The status of the reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The status of reserved instance N. Valid values:'."\n" + ."\n" + .'* Creating: The reserved instance is being created.'."\n" + .'* Active: The reserved instance is active.'."\n" + .'* Retired: The reserved instance expired.'."\n" + .'* Updating: The attributes of the reserved instance are being modified.'."\n" + .'* Expired: The reserved instance has expired. The reserved instance becomes invalid immediately after it expires. This value is currently obsolete and will be removed in the future.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + 'required' => false, + 'example' => 'Active', + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => 'E572643C-6A29-49D6-9D4E-6CFA4E063A3E', + ], + 'PageNumber' => [ + 'description' => 'The page number.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of reserved instances.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'ReservedInstances' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ReservedInstance' => [ + 'description' => 'Details about the reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the reserved instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'Status' => [ + 'description' => 'The status.'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'CreationTime' => [ + 'description' => 'The creation time.'."\n", + 'type' => 'string', + 'example' => '2018-12-10T12:07Z', + ], + 'ReservedInstanceName' => [ + 'description' => 'The name.'."\n", + 'type' => 'string', + 'example' => 'riZbpzhex2ulpzf53****', + ], + 'ReservedInstanceId' => [ + 'description' => 'The reserved instance ID.'."\n", + 'type' => 'string', + 'example' => 'ri-bpzhex2ulpzf53****', + ], + 'InstanceType' => [ + 'description' => 'The instance type of the pay-as-you-go instances that can be matched to the reserved instance.'."\n", + 'type' => 'string', + 'example' => 'ecs.g5.large', + ], + 'InstanceAmount' => [ + 'description' => 'The number of pay-as-you-go instances that are of the same instance type as the reserved instance and can be matched to the reserved instance.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RegionId' => [ + 'description' => 'The region ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'OfferingType' => [ + 'description' => 'The payment option.'."\n", + 'type' => 'string', + 'example' => 'All Upfront', + ], + 'StartTime' => [ + 'description' => 'The effective time.'."\n", + 'type' => 'string', + 'example' => '2018-12-10T12:00Z', + ], + 'Description' => [ + 'description' => 'The description.'."\n", + 'type' => 'string', + 'example' => 'testDescription', + ], + 'AllocationStatus' => [ + 'description' => 'Indicates the sharing status of the reserved instance when the AllocationType parameter is set to Shared. Valid values:'."\n" + ."\n" + .'* allocated: The reserved instance is allocated to another account.'."\n" + .'* beAllocated: The reserved instance is allocated by another account.'."\n", + 'type' => 'string', + 'example' => 'allocated', + ], + 'ExpiredTime' => [ + 'description' => 'The expiration time.'."\n", + 'type' => 'string', + 'example' => '2019-12-10T12:07Z', + ], + 'ResourceGroupId' => [ + 'description' => 'The resource group ID.'."\n", + 'type' => 'string', + 'example' => 'EcsDocTest', + ], + 'ZoneId' => [ + 'description' => 'The zone ID.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou-z', + ], + 'Platform' => [ + 'description' => 'The operating system of the image used by the instance. Valid values:'."\n" + ."\n" + .'* Windows'."\n" + .'* Linux'."\n", + 'type' => 'string', + 'example' => 'Linux', + ], + 'Scope' => [ + 'description' => 'The scope.'."\n", + 'type' => 'string', + 'example' => 'region', + ], + 'OperationLocks' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'OperationLock' => [ + 'description' => 'Details about the lock status of the reserved instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Details about the lock status of the reserved instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'LockReason' => [ + 'description' => 'The reason why the instance is locked.'."\n", + 'type' => 'string', + 'example' => 'security', + ], + ], + ], + ], + ], + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tags of the reserved instance.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The tag of the reserved instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The tag value.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + 'TagKey' => [ + 'description' => 'The tag key.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParamter.RegionId', + 'errorMessage' => 'The regionId should not be null.', + ], + [ + 'errorCode' => 'InvalidRegion.NotFound', + 'errorMessage' => 'The specified parameter RegionId is not valid.', + ], + [ + 'errorCode' => 'InvalidZone.NotFound', + 'errorMessage' => 'The specified parameter ZoneId is not valid.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceOfferingType.ValueNotSupported', + 'errorMessage' => 'the OfferingType is not supported', + ], + [ + 'errorCode' => 'InvalidReservedInstanceOfferingClass.ValueNotSupported', + 'errorMessage' => 'the OfferingClass is not supported', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified InstanceType or Zone is not authorized for current user.', + ], + [ + 'errorCode' => 'InvalidEndTime.ValueNotSupported', + 'errorMessage' => 'The specified endTime is out of the permitted range.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceLockReason.ValueNotSupported', + 'errorMessage' => 'The specified LockReason is not supported.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceStatus.ValueNotSupported', + 'errorMessage' => 'The specified Status is not supported.', + ], + [ + 'errorCode' => 'InvalidAllocationType.ValueNotSupported', + 'errorMessage' => 'The specified AllocationType is not supported.', + ], + ], + 403 => [ + [ + 'errorCode' => 'RAM.ApiNotSupported', + 'errorMessage' => 'This call is not supported from ram accessing.', + ], + ], + [ + [ + 'errorCode' => 'InvalidRegionId.NotFound', + 'errorMessage' => 'The specified RegionId does not exist in our records.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 1,\\n \\"RequestId\\": \\"E572643C-6A29-49D6-9D4E-6CFA4E063A3E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"ReservedInstances\\": {\\n \\"ReservedInstance\\": [\\n {\\n \\"Status\\": \\"Active\\",\\n \\"CreationTime\\": \\"2018-12-10T12:07Z\\",\\n \\"ReservedInstanceName\\": \\"riZbpzhex2ulpzf53****\\",\\n \\"ReservedInstanceId\\": \\"ri-bpzhex2ulpzf53****\\",\\n \\"InstanceType\\": \\"ecs.g5.large\\",\\n \\"InstanceAmount\\": 10,\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"OfferingType\\": \\"All Upfront\\",\\n \\"StartTime\\": \\"2018-12-10T12:00Z\\",\\n \\"Description\\": \\"testDescription\\",\\n \\"AllocationStatus\\": \\"allocated\\",\\n \\"ExpiredTime\\": \\"2019-12-10T12:07Z\\",\\n \\"ResourceGroupId\\": \\"EcsDocTest\\",\\n \\"ZoneId\\": \\"cn-hangzhou-z\\",\\n \\"Platform\\": \\"Linux\\",\\n \\"Scope\\": \\"region\\",\\n \\"OperationLocks\\": {\\n \\"OperationLock\\": [\\n {\\n \\"LockReason\\": \\"security\\"\\n }\\n ]\\n },\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestValue\\",\\n \\"TagKey\\": \\"TestKey\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":"{\\n \\"code\\":\\"200\\",\\n \\"data\\":{\\n \\"data\\":[\\n {\\n \\"CreationTime\\":\\"2018-12-10T12:07Z\\",\\n \\"ExpiredTime\\":\\"2019-12-10T16:00Z\\",\\n \\"InstanceAmount\\":1,\\n \\"ReservedInstanceId\\":\\"ri-0xzhex2ulpzf53rxme2j\\",\\n \\"InstanceType\\":\\"ecs.g5.large\\",\\n \\"OfferingType\\":\\"All Upfront\\",\\n \\"RegionId\\":\\"cn-hangzhou-test-307\\",\\n \\"ReservedInstanceName\\":\\"riZ0xzhex2ulpzf53rxme2jZ\\",\\n \\"Scope\\":\\"region\\",\\n \\"StartTime\\":\\"2018-12-10T12:00Z\\",\\n \\"Status\\":\\"active\\"\\n }\\n ],\\n \\"PageNumber\\":1,\\n \\"PageSize\\":50,\\n \\"Total\\":1\\n },\\n \\"httpStatusCode\\":200,\\n \\"message\\":\\"successful\\",\\n \\"requestId\\":\\"E572643C-6A29-49D6-9D4E-6CFA4E063A3E\\",\\n \\"success\\":true\\n}"},{"type":"xml","example":"\\n \\n \\n 2018-12-10T12:07Z\\n 2019-12-10T16:00Z\\n 1\\n ri-0xzhex2ulpzf53****\\n ecs.g5.large\\n All Upfront\\n cn-hangzhou-test-307\\n riZ0xzhex2ulpzf53****\\n region\\n 2018-12-10T12:00Z\\n Active\\n \\n \\n TestKey\\n TestValue\\n \\n \\n \\n \\n E572643C-6A29-49D6-9D4E-6CFA4E063A3E\\n 1\\n 50\\n 1\\n","errorExample":"\\n \\n\\t2018-12-10T12:07Z\\n\\t2019-12-10T16:00Z\\n\\t1\\n\\tri-xxx\\n\\tecs.g5.large\\n\\tAll Upfront\\n\\tcn-hangzhou\\n\\triZ0xzhex2ulpzf53xxxxx\\n\\tregion\\n\\t2018-12-10T12:00Z\\n\\tactive\\n \\n \\n\\t2018-12-10T12:07Z\\n\\t2019-12-10T16:00Z\\n\\t1\\n\\tri-xxxx\\n\\tecs.g5.large\\n\\tAll Upfront\\n\\tcn-hangzhou\\n\\triZ0xzhex2ulpzfxxxxxx\\n\\tregion\\n\\t2018-12-10T12:00Z\\n\\tactive\\n \\n 1\\n 50\\n 2\\n"}]', + 'title' => 'DescribeReservedInstances', + 'description' => '### [](#)Scenarios'."\n" + ."\n" + .'* Query all reserved instances in a specific region.'."\n" + .'* Query the details of a reserved instance based on the ID or name.'."\n" + .'* Query your purchased reserved instances based on the instance type or instance family.'."\n" + .'* Query your purchased reserved instances based on the scope or status of reserved instances.'."\n" + ."\n" + .'### [](#)Sample requests'."\n" + ."\n" + .'**Example: Query all purchased reserved instances in the China (Hangzhou) region**'."\n" + ."\n" + .' "RegionId":"cn-hangzhou", //The ID of the region.'."\n" + ."\n" + .'**Example: Query the details of the reserved instance whose ID is ecsri-bp129enntoynwwj5\\*\\*\\*\\* in the China (Hangzhou) region**'."\n" + ."\n" + .' "RegionId":"cn-hangzhou", //The ID of the region."ReservedInstanceId":"ecsri-bp129enntoynwwj5****" //The ID of the reserved instance.'."\n" + ."\n" + .'**Example: Query the reserved instances that can be used to offset the bills of ecs.c5.2xlarge instances in the China (Hangzhou) region**'."\n" + ."\n" + .' "RegionId":"cn-hangzhou", //The ID of the region."InstanceType":"ecs.c5.2xlarge", //The instance type.'."\n" + ."\n" + .'**Example: Query the regional reserved instances that are within the validity period in the China (Hangzhou) region**'."\n" + ."\n" + .' "RegionId":"cn-hangzhou", //The ID of the region."Scope":"Region", //Set the scope of the reserved instance to regional."Status":["Active"] //Set the status to Active, which indicates that the reserved instance is within the validity period.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyReservedInstances' => [ + 'summary' => 'Modifies the configurations of a reserved instance, such as the instance type, quantity, and zone, to split, merge, or change the scope of the reserved instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '29091', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the reserved instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ReservedInstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of reserved instances that you want to modify. You can specify up to 20 reserved instance IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the reserved instance.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecsri-bp15xx2****', + ], + 'required' => true, + 'docRequired' => true, + 'example' => 'ReservedInstanceId.1="ecsri-bp1cx3****",ReservedInstanceId.2="ecsri-bp15xx2****"......', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Configuration', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The configurations of the new reserved instances. You can specify up to 100 new reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The configurations of the new reserved instance.'."\n", + 'type' => 'object', + 'properties' => [ + 'ReservedInstanceName' => [ + 'description' => 'The name of the new reserved instance.'."\n" + ."\n" + .'The name must be 2 to 128 characters in length. The name must start with a letter and cannot start with http:// or https://. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testReservedInstanceName', + ], + 'ZoneId' => [ + 'description' => 'The zone ID of the new reserved instance.'."\n" + ."\n" + .'This parameter is required when you set `Scope` to `Zone`.'."\n" + ."\n" + .'You can call the [DescribeZones](~~25609~~) operation to query the most recent zone list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou-i', + ], + 'Scope' => [ + 'description' => 'The scope level of the new reserved instance. Valid values:'."\n" + ."\n" + .'* Region'."\n" + .'* Zone'."\n" + ."\n" + .'Default value: Region.'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'Zone', + ], + 'InstanceType' => [ + 'description' => 'The instance types that the new reserved instance can match.'."\n" + ."\n" + .'> The supported instance types are continuously updated. For information about the instance types supported by reserved instances, see [Overview of reserved instances](~~100370#3c1b682051vt4~~).'."\n", + 'type' => 'string', + 'required' => true, + 'docRequired' => true, + 'example' => 'ecs.c5.4xlarge ', + ], + 'InstanceAmount' => [ + 'description' => 'The number of pay-as-you-go instances of the specified instance type that the new reserved instance can match. The value of this parameter must be greater than or equal to 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'docRequired' => true, + 'example' => '1', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'Details about the reserved instance.'."\n", + 'type' => 'string', + 'example' => 'ED9E4A5F-FF4D-4C96-BE80-6B4227060DD7', + ], + 'ReservedInstanceIdSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ReservedInstanceId' => [ + 'description' => 'The IDs of the reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the reserved instance.'."\n", + 'type' => 'string', + 'example' => '{"ReservedInstanceId":"ecsri-bp1cx3****","ecsri-bp15xx2****"]}', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The specified region and cluster do not match.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidPeriodUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PeriodUnit is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidChargeType.ValueNotSupported', + 'errorMessage' => 'ChargeType is not valid.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified InstanceType or Zone is not authorized for current user.', + ], + ], + 403 => [ + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone; try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Sales of this resource are temporarily suspended in the specified region; please try again later.', + ], + [ + 'errorCode' => 'NodeControllerUnavailable', + 'errorMessage' => 'The Node Controller is temporarily unavailable.', + ], + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerAccount', + 'errorMessage' => 'ResourceOwnerAccount is Invalid.', + ], + [ + 'errorCode' => 'Zone.NotOpen', + 'errorMessage' => 'The specified zone is not granted to you to buy resources yet.', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => 'The specified zone is not available for purchase.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has been in arrears.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceName.Malformed', + 'errorMessage' => 'The specified parameter ReservedInstanceName is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Scope', + 'errorMessage' => 'The specified parameter \'Scope\' is invalid.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceStatus.ValueNotSupported', + 'errorMessage' => 'ReservedInstance status is not supported.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceOfferingType.ValueNotSupported', + 'errorMessage' => 'The OfferingType is not supported.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceOfferingClass.ValueNotSupported', + 'errorMessage' => 'The OfferingClass is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.ZoneId', + 'errorMessage' => 'The specified zoneId should be not empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceType', + 'errorMessage' => 'The instanceType should be not empty.', + ], + [ + 'errorCode' => 'MissingParameter.ReservedInstanceId', + 'errorMessage' => 'The ids of reservedInstance can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.ReservedInstanceConfiguration', + 'errorMessage' => 'The configurations of reservedInstance can not be empty.', + ], + [ + 'errorCode' => 'InvalidParameter.SplitOrMerge', + 'errorMessage' => 'The Many-to-many of modification is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceTypeAndAmountBothEmpty', + 'errorMessage' => 'The instanceType and amount can not be both empty.', + ], + [ + 'errorCode' => 'InvalidReservedInstancePlatform.ValueNotSupported', + 'errorMessage' => 'The Platform is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.ReservedInstanceName', + 'errorMessage' => 'The reservedInstanceName is invalid.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceZone.ValueNotSupported', + 'errorMessage' => 'The zoneId is not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.ValueNotSupported', + 'errorMessage' => 'The instanceTypeFamily of the instance to be changed must be consistent.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The status of specified reservedInstance must be active.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The platform of reservedInstance is invalid.', + ], + [ + 'errorCode' => 'InvalidScope.ValueNotSupported', + 'errorMessage' => 'The scope of reservedInstance is invalid. The valid value is Zone or Region.', + ], + [ + 'errorCode' => 'InvalidConfiguration.ValueNotSupported', + 'errorMessage' => 'The modification Configuration should not be empty.', + ], + [ + 'errorCode' => 'InvalidZoneId.ValueNotSupported', + 'errorMessage' => 'The specified zoneId should be same.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The parameter is invalid.Please check it.', + ], + [ + 'errorCode' => 'InvalidInstanceAmount.ValueNotSupported', + 'errorMessage' => 'The instanceAmount is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.OnlyModifyName', + 'errorMessage' => 'It is not allowed to modify the ReservedInstanceName only.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceId.NotFound', + 'errorMessage' => 'The specified parameter ReservedInstanceId is invalid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The ZoneId provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"ED9E4A5F-FF4D-4C96-BE80-6B4227060DD7\\",\\n \\"ReservedInstanceIdSets\\": {\\n \\"ReservedInstanceId\\": [\\n \\"\\\\\\"ecsri-bp1cx3****\\\\\\"\\"\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n \\n ecsri-bp1cx3****\\n ecsri-bp15xx2****\\n \\n ED9E4A5F-FF4D-4C96-BE80-6B4227060DD7\\n","errorExample":""}]', + 'title' => 'ModifyReservedInstances', + 'description' => 'This operation is an asynchronous operation. After you call this operation to modify a reserved instance, the operation starts the modification process and returns the ID of the resulting new reserved instance. The original reserved instance enters the `Updating` state and then the `Inactive` state. At the same time, the resulting new reserved instance is generated and enters the Creating state and then the Active state. You can call the [DescribeReservedInstances](~~2679781~~) operation to query the states of the reserved instance.'."\n" + ."\n" + .'* You can modify the configurations of a reserved instance only if the reserved instance is in the **Active** state.'."\n" + .'* Make sure that the [computing power](~~140660#2742f3844abzz~~) of the reserved instance remains unchanged before and after the modification. Otherwise, the modification fails.'."\n" + .'* You cannot split, merge, or change the scope of a reserved instance at the same time.'."\n" + ."\n" + .'For more information, see [Split, merge, or modify reserved instances](~~100375~~).'."\n" + ."\n" + .'## [](#)Sample requests'."\n" + ."\n" + .'* **Sample request to split a reserved instance**: Split a regional reserved instance that is scoped to the China (Hangzhou) region and can match two pay-as-you-go instances of the ecs.g5.xlarge instance type into two regional reserved instances that are scoped to the China (Hangzhou) region and each can match one pay-as-you-go instance of the ecs.g5.large instance type:'."\n" + ."\n" + .''."\n" + ."\n" + .' "RegionId":"cn-hangzhou", //The ID of the region.'."\n" + .' "ReservedInstanceId":["ecsri-bp1hd03e9uv19e75****"], //The ID of the reserved instance that you want to split.'."\n" + .' "Configuration":['."\n" + .' {'."\n" + .' "ReservedInstanceName":"testReservedInstanceName1", //The name of the new reserved instance.'."\n" + .' "InstanceType":"ecs.g5.large", //The instance type that the new reserved instance can match.'."\n" + .' "Scope":"Region", //The scope level of the new reserved instance, which must be the same as the scope level of the original reserved instance.'."\n" + .' "InstanceAmount":1 //The number of pay-as-you-go instances of the specified instance type that each new reserved instance can match.'."\n" + .' },'."\n" + .' {'."\n" + .' "ReservedInstanceName":"testReservedInstanceName2",'."\n" + .' "InstanceType":"ecs.g5.large",'."\n" + .' "Scope":"Region",'."\n" + .' "InstanceAmount":1'."\n" + .' }'."\n" + .' ]'."\n" + ."\n" + .'* **Sample request to merge reserved instance:**: Merge two zonal reserved instances that are scoped to Hangzhou Zone H and can match four pay-as-you-go instances of the ecs.g5.xlarge instance type into one zonal reserved instance that is scoped to Hangzhou Zone H and can match two pay-as-you-go instances of the ecs.g5.4xlarge instance type:'."\n" + ."\n" + .''."\n" + ."\n" + .' "RegionId":"cn-hangzhou", //The ID of the region.'."\n" + .' "ReservedInstanceId":["ecsri-bp1hd03e9uv16b75****",""ecsri-bp1hd03e9uv16b76****""], //The IDs of the reserved instances that you want to merge.'."\n" + .' "Configuration":['."\n" + .' {'."\n" + .' "ReservedInstanceName":"testReservedInstanceName", //The name of the new reserved instance.'."\n" + .' "InstanceType":"ecs.g5.4xlarge", //The instance type that the new reserved instance can match.'."\n" + .' "Scope":"Zone", //The scope level of the new reserved instance, which must be the same as the scope level of the original reserved instances.'."\n" + .' "ZoneId":"cn-hangzhou-h", //'."\n" + .' "InstanceAmount":2 //The number of pay-as-you-go instances of the specified instance type that the new reserved instance can match.'."\n" + .' }'."\n" + .' ]'."\n" + ."\n" + .'* **Sample request to change the scope of a reserved instance**: Change a regional reserved instance that is scoped to Hangzhou Zone H and can match six pay-as-you-go instances of the ecs.g5.xlarge instance type to a regional reserved instance that is scoped to the China (Hangzhou) region and can match three pay-as-you-go instances of the ecs.g5.2xlarge instance type.'."\n" + ."\n" + .''."\n" + ."\n" + .' "RegionId":"cn-hangzhou", //The ID of the region.'."\n" + .' "ReservedInstanceId":["ecsri-bp1hd03e9uv16b77****"], //The ID of the reserved instance whose scope you want to change.'."\n" + .' "Configuration":['."\n" + .' {'."\n" + .' "ReservedInstanceName":"testReservedInstanceName", //The name of the new reserved instance.'."\n" + .' "InstanceType":"ecs.g5.2xlarge", //The instance type that the new reserved instance can match.'."\n" + .' "Scope":"Region", //The scope level of the new reserved instance.'."\n" + .' "InstanceAmount":3 //The number of pay-as-you-go instances of the specified instance type that the new reserved instance can match.'."\n" + .' }'."\n" + .' ]'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyReservedInstanceAttribute' => [ + 'summary' => 'Modifies the attributes of a reserved instance, such as the name and description of the instance.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29089', + 'abilityTreeNodes' => [ + 'FEATUREecsG3KXW4', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the reserved instance.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ReservedInstanceId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the reserved instance. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with `http://` or `https://`. It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ecsri-uf61hdhue4kcorqsk****', + ], + ], + [ + 'name' => 'ReservedInstanceName', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the reserved instance. The description must be 2 to 256 characters in length. It cannot start with `http://` or `https://`.'."\n" + ."\n" + .'This parameter is empty by default.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testReservedInstanceName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The error code.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ri-example', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'HttpStatusCode' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '200', + ], + 'Code' => [ + 'description' => 'Modifies the attributes of a reserved instance, such as its name and description.'."\n", + 'type' => 'string', + 'example' => '200', + ], + 'Message' => [ + 'description' => 'The error message for this instance operation. The return value Success indicates that this operation is successful. For more information, see the "Error codes" section in this topic.', + 'type' => 'string', + 'example' => 'Success', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.', + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'InvalidParameter.ReservedInstanceName', + 'errorMessage' => 'The reservedInstanceName is invalid.', + ], + ], + [ + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The ZoneId provided does not exist in our records.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceId.NotFound', + 'errorMessage' => 'The specified ReservedInstanceId does not exist.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"HttpStatusCode\\": 200,\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"Success\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 200\\n 200\\n Success\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****\\n","errorExample":""}]', + 'title' => 'ModifyReservedInstanceAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RenewReservedInstances' => [ + 'summary' => 'Renews one or more reserved instances. When you renew reserved instances, you can specify a validity period (renewal period) and whether to enable auto-renewal for the reserved instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'create', + 'abilityTreeCode' => '149202', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'ReservedInstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the reserved instances.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the reserved instance. You can call the [DescribeReservedInstances](~~100065~~) operation to query the IDs of reserved instances that you purchased.'."\n" + ."\n" + .'You can specify up to 10 IDs of reserved instances in a single request.', + 'type' => 'string', + 'required' => false, + 'example' => 'ecsri-2ze53qonjqxg7r****', + ], + 'required' => false, + 'maxItems' => 100, + 'minItems' => 1, + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the reserved instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The validity period of the reserved instance.'."\n" + ."\n" + .'Valid values: 1 and 3.'."\n" + ."\n" + .'Default value: 1.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the validity period of the reserved instance.'."\n" + ."\n" + .'Set the value to Year.', + 'type' => 'string', + 'required' => false, + 'example' => 'Year', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).', + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'AutoRenew', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to enable auto-renewal for the reserved instance. Valid values:'."\n" + ."\n" + .'* true'."\n" + .'* false'."\n" + ."\n" + .'Default value: false.', + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'AutoRenewPeriod', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal duration. Unit: months. This parameter takes effect only when AutoRenew is set to true.'."\n" + ."\n" + .'Valid values: 12 and 36. Default value: 12.', + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.', + 'type' => 'string', + 'example' => '8C314443-AF0D-4766-9562-C83B7F1****', + ], + 'ReservedInstanceIdSets' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ReservedInstanceId' => [ + 'description' => 'The IDs of the reserved instances.', + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the reserved instance.', + 'type' => 'string', + 'example' => 'ecsri-2ze53qonjqxg7r****', + ], + ], + ], + ], + 'OrderId' => [ + 'description' => 'The order ID.', + 'type' => 'string', + 'example' => '2023912123****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidInstanceType.ValueUnauthorized', + 'errorMessage' => 'The specified InstanceType is not authorized.', + ], + [ + 'errorCode' => 'InvalidParameter.Conflict', + 'errorMessage' => 'The specified region and cluster do not match.', + ], + [ + 'errorCode' => 'InvalidTagKey.Malformed', + 'errorMessage' => 'The specified Tag.n.Key is not valid.', + ], + [ + 'errorCode' => 'InvalidPeriodUnit.ValueNotSupported', + 'errorMessage' => 'The specified parameter PeriodUnit is not valid.', + ], + [ + 'errorCode' => 'InvalidTagValue.Malformed', + 'errorMessage' => 'The specified Tag.n.Value is not valid.', + ], + [ + 'errorCode' => 'InvalidChargeType.ValueNotSupported', + 'errorMessage' => 'ChargeType is not valid.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'The specified InstanceType or Zone is not authorized for current user.', + ], + [ + 'errorCode' => 'InvalidPeriod', + 'errorMessage' => 'The specified Period or PeriodUnit is not correct.', + ], + [ + 'errorCode' => 'MissingParameter.ReservedInstanceIds', + 'errorMessage' => 'The specified ReservedInstanceIds does not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.PeriodUnit', + 'errorMessage' => 'The specified PeriodUnit is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Period', + 'errorMessage' => 'The specified Period is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.ReservedInstanceIds', + 'errorMessage' => 'The specified ReservedInstanceIds is invalid.', + ], + [ + 'errorCode' => 'InvalidPeriod.ExceededMaximumExpiration', + 'errorMessage' => 'The specified renewal period cannot exceed the maximum expiration date. We recommend you try shortening the renewal period at next attempt.', + ], + ], + 403 => [ + [ + 'errorCode' => 'OperationDenied.NoStock', + 'errorMessage' => 'The requested resource is sold out in the specified zone; try other types of resources or other regions and zones.', + ], + [ + 'errorCode' => 'OperationDenied', + 'errorMessage' => 'Sales of this resource are temporarily suspended in the specified region; please try again later.', + ], + [ + 'errorCode' => 'NodeControllerUnavailable', + 'errorMessage' => 'The Node Controller is temporarily unavailable.', + ], + [ + 'errorCode' => 'InvalidParameter.ResourceOwnerAccount', + 'errorMessage' => 'ResourceOwnerAccount is Invalid.', + ], + [ + 'errorCode' => 'Zone.NotOpen', + 'errorMessage' => 'The specified zone is not granted to you to buy resources yet.', + ], + [ + 'errorCode' => 'Zone.NotOnSale', + 'errorMessage' => 'The specified zone is not available for purchase.', + ], + [ + 'errorCode' => 'Account.Arrearage', + 'errorMessage' => 'Your account has been in arrears.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceName.Malformed', + 'errorMessage' => 'The specified parameter ReservedInstanceName is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Scope', + 'errorMessage' => 'The specified parameter \'Scope\' is invalid.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceStatus.ValueNotSupported', + 'errorMessage' => 'ReservedInstance status is not supported.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceOfferingType.ValueNotSupported', + 'errorMessage' => 'The OfferingType is not supported.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceOfferingClass.ValueNotSupported', + 'errorMessage' => 'The OfferingClass is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.ZoneId', + 'errorMessage' => 'The specified zoneId should be not empty.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceType', + 'errorMessage' => 'The instanceType should be not empty.', + ], + [ + 'errorCode' => 'MissingParameter.ReservedInstanceId', + 'errorMessage' => 'The ids of reservedInstance can not be empty.', + ], + [ + 'errorCode' => 'MissingParameter.ReservedInstanceConfiguration', + 'errorMessage' => 'The configurations of reservedInstance can not be empty.', + ], + [ + 'errorCode' => 'InvalidParameter.SplitOrMerge', + 'errorMessage' => 'The Many-to-many of modification is not supported.', + ], + [ + 'errorCode' => 'MissingParameter.InstanceTypeAndAmountBothEmpty', + 'errorMessage' => 'The instanceType and amount can not be both empty.', + ], + [ + 'errorCode' => 'InvalidReservedInstancePlatform.ValueNotSupported', + 'errorMessage' => 'The Platform is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.ReservedInstanceName', + 'errorMessage' => 'The reservedInstanceName is invalid.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceZone.ValueNotSupported', + 'errorMessage' => 'The zoneId is not exist.', + ], + [ + 'errorCode' => 'InvalidParameter.ValueNotSupported', + 'errorMessage' => 'The instanceTypeFamily of the instance to be changed must be consistent.', + ], + [ + 'errorCode' => 'IncorrectInstanceStatus', + 'errorMessage' => 'The status of specified reservedInstance must be active.', + ], + [ + 'errorCode' => 'InvalidPlatform.ValueNotSupported', + 'errorMessage' => 'The platform of reservedInstance is invalid.', + ], + [ + 'errorCode' => 'InvalidScope.ValueNotSupported', + 'errorMessage' => 'The scope of reservedInstance is invalid, The valid value is Zone or Region.', + ], + [ + 'errorCode' => 'InvalidConfiguration.ValueNotSupported', + 'errorMessage' => 'The modification Configuration should not be empty.', + ], + [ + 'errorCode' => 'InvalidZoneId.ValueNotSupported', + 'errorMessage' => 'The specified zoneId should be same.', + ], + [ + 'errorCode' => 'InvalidParameter', + 'errorMessage' => 'The parameter is invalid.Please check it.', + ], + [ + 'errorCode' => 'InvalidInstanceAmount.ValueNotSupported', + 'errorMessage' => 'The instanceAmount is invalid.', + ], + [ + 'errorCode' => 'OperationDenied.OnlyModifyName', + 'errorMessage' => 'It is not allowed to modify the ReservedInstanceName only.', + ], + [ + 'errorCode' => 'InvalidReservedInstanceId.NotFound', + 'errorMessage' => 'The specified parameter ReservedInstanceId is invalid.', + ], + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'The operation is not permitted due to charge type of the instance.', + ], + ], + [ + [ + 'errorCode' => 'InvalidZoneId.NotFound', + 'errorMessage' => 'The ZoneId provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"8C314443-AF0D-4766-9562-C83B7F1****\\",\\n \\"ReservedInstanceIdSets\\": {\\n \\"ReservedInstanceId\\": [\\n \\"ecsri-2ze53qonjqxg7r****\\"\\n ]\\n },\\n \\"OrderId\\": \\"2023912123****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n \\n ecsri-2ze53qonjqxg7r****\\n ecsri-2ze53qonjqxg7s****\\n \\n 2023912123****\\n 8C314443-AF0D-4766-9562-C83B7F1****\\n","errorExample":""}]', + 'title' => 'RenewReservedInstances', + 'description' => '**Before you call this operation, make sure that you are familiar with the billing and [pricing](https://www.alibabacloud.com/zh/pricing-calculator#/commodity/vm_intl) of reserved instances.**'."\n" + ."\n" + .'* You can manually renew reserved instances or enable auto-renewal for reserved instances. For more information, see the [Renewal](~~100371#53bfc50b78sta~~) section of the "Reserved instances" topic.'."\n" + .'* You can call the [DescribeReservedInstances](~~100065~~) operation to query the reserved instances that you purchased.'."\n" + .'* You can call this operation to enable auto-renewal for reserved instances but cannot call this operation to disable auto-renewal for reserved instances. To disable auto-renewal for a reserved instance, call the [ModifyReservedInstanceAutoRenewAttribute](~~2679786~~) operation.'."\n", + ], + 'DescribeReservedInstanceAutoRenewAttribute' => [ + 'summary' => 'Queries the auto-renewal attributes of one or more reserved instances, including the auto-renewal duration and auto-renewal status.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'get', + 'abilityTreeCode' => '156251', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the reserved instance.'."\n" + ."\n" + .'You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ReservedInstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the reserved instance. You can call the [DescribeReservedInstances](~~100065~~) operation to query the IDs of reserved instances that you purchased.'."\n" + ."\n" + .'You can specify the IDs of up to 100 reserved instances in a single request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecsri-ajdfaj****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '04F0F334-1335-436C-A1D7-6C044FE7****', + ], + 'ReservedInstanceRenewAttributes' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'ReservedInstanceRenewAttribute' => [ + 'description' => 'Details about the auto-renewal settings of the reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'PeriodUnit' => [ + 'description' => 'The unit of the auto-renewal duration.'."\n" + ."\n" + .'Valid values: Year and Month.'."\n", + 'type' => 'string', + 'example' => 'Month', + ], + 'Duration' => [ + 'description' => 'The auto-renewal duration.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'ReservedInstanceId' => [ + 'description' => 'The ID of the reserved instance.'."\n", + 'type' => 'string', + 'example' => 'ecsri-ajdfaj****', + ], + 'RenewalStatus' => [ + 'description' => 'The auto-renewal status of the reserved instance. Valid values:'."\n" + ."\n" + .'* AutoRenewal: automatically renews the reserved instance.'."\n" + .'* Normal: manually renews the reserved instances.'."\n", + 'type' => 'string', + 'example' => 'AutoRenewal', + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 403 => [ + [ + 'errorCode' => 'ChargeTypeViolation', + 'errorMessage' => 'Pay-As-You-Go dedicated host do not support this operation.', + ], + [ + 'errorCode' => 'MissingParamter.InstanceId', + 'errorMessage' => 'ReservedInstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.ToManyInstanceIds', + 'errorMessage' => 'ReservedInstanceId should be less than 100.', + ], + [ + 'errorCode' => 'InValidParameter', + 'errorMessage' => 'Parameter invalid.%s', + ], + [ + 'errorCode' => 'ResourceStatusViolation', + 'errorMessage' => 'The operation is not permitted due to resource status of the instance.', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"04F0F334-1335-436C-A1D7-6C044FE7****\\",\\n \\"ReservedInstanceRenewAttributes\\": {\\n \\"ReservedInstanceRenewAttribute\\": [\\n {\\n \\"PeriodUnit\\": \\"Month\\",\\n \\"Duration\\": 1,\\n \\"ReservedInstanceId\\": \\"ecsri-ajdfaj****\\",\\n \\"RenewalStatus\\": \\"AutoRenewal\\"\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 04F0F334-1335-436C-A1D7-6C044FE7****\\n \\n \\n Month\\n 1\\n ecsri-ajdfaj****\\n AutoRenewal\\n \\n \\n Month\\n 1\\n ecsri-abjkql****\\n AutoRenewal\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeReservedInstanceAutoRenewAttribute', + ], + 'ModifyReservedInstanceAutoRenewAttribute' => [ + 'summary' => 'Modifies the auto-renewal attributes of reserved instances. You can cancel or disable the auto-renewal feature for reserved instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'systemTags' => [ + 'operationType' => 'update', + 'abilityTreeCode' => '156241', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the reserved instances. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The auto-renewal cycle.'."\n" + ."\n" + .'Valid values: 1 and 3.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the auto-renewal duration.'."\n" + ."\n" + .'Valid values: Year and Month.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'RenewalStatus', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to automatically renew the reserved instances. Valid values:'."\n" + ."\n" + .'* AutoRenewal: automatically renews the reserved instances.'."\n" + .'* Normal: manually renews the reserved instances.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'AutoRenewal', + ], + ], + [ + 'name' => 'ReservedInstanceId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the reserved instances.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of reserved instance N. You can call the [DescribeReservedInstances](~~100065~~) operation to query the IDs of reserved instances that you purchased. You can modify the auto-renewal attributes only for reserved instances that are **within the validity period**.'."\n" + ."\n" + .'You can specify the IDs of up to 100 reserved instances in a single request.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ecsri-ajdfaj****', + ], + 'required' => false, + 'maxItems' => 100, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '2A4EA075-CB5B-41B7-B0EB-70D339F6****', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Duration', + 'errorMessage' => 'The specified parameter Duration is invalid.', + ], + ], + 403 => [ + [ + 'errorCode' => 'Abs.MissingParamter.InstanceId', + 'errorMessage' => 'ReservedInstanceId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.ToManyInstanceIds', + 'errorMessage' => 'ReservedInstanceId should be less than 100.', + ], + [ + 'errorCode' => 'InvalidParameter.PeriodUnit', + 'errorMessage' => 'The specified parameter PeriodUnit is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.Period', + 'errorMessage' => 'The specified parameter Period is not valid.', + ], + [ + 'errorCode' => 'InvalidParameter.RenewalStatus', + 'errorMessage' => 'The specified parameter RenewalStatus is not valid.', + ], + [ + 'errorCode' => 'InValidParameter', + 'errorMessage' => 'Parameter invalid.%s', + ], + ], + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"2A4EA075-CB5B-41B7-B0EB-70D339F6****\\"\\n}","errorExample":""},{"type":"xml","example":"\\n 2A4EA075-CB5B-41B7-B0EB-70D339F6****\\n","errorExample":""}]', + 'title' => 'ModifyReservedInstanceAutoRenewAttribute', + ], + 'PurchaseStorageCapacityUnit' => [ + 'summary' => 'Purchases one or more storage capacity units (SCUs).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'readAndWrite', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'create', + 'riskType' => 'none', + 'chargeType' => 'paid', + 'abilityTreeCode' => '29129', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the region in which to purchase the SCU. The purchased SCU can offset the bills of pay-as-you-go disks that reside in the specified region. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SCU. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with `http://` or `https://`. The name can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ScuPurchaseDemo', + ], + ], + [ + 'name' => 'Capacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The capacity of the SCU. Unit: GiB. Valid values: 20, 40, 100, 200, 500, 1024, 2048, 5210, 10240, 20480, and 52100.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => true, + 'example' => '20', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the SCU. The description must be 2 to 256 characters in length and cannot start with `http://` or `https://`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'ScuPurchaseDemo', + ], + ], + [ + 'name' => 'StartTime', + 'in' => 'query', + 'schema' => [ + 'description' => 'The time at which the SCU takes effect. The time can be up to 180 days from the creation time of the SCU. Specify the time in the [ISO 8601](~~25696~~) standard in the yyyy-MM-ddTHHZ format. The time must be in UTC.'."\n" + ."\n" + .'This parameter is left empty by default, which indicates that the SCU takes effect immediately after it is created.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '2020-09-09T02:00:00Z', + ], + ], + [ + 'name' => 'Period', + 'in' => 'query', + 'schema' => [ + 'description' => 'The validity period of the SCU. Valid values:'."\n" + ."\n" + .'* Valid values when PeriodUnit is set to Month: 1, 2, 3, and 6.'."\n" + .'* Valid values when PeriodUnit is set to Year: 1, 3, and 5.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '1', + ], + ], + [ + 'name' => 'PeriodUnit', + 'in' => 'query', + 'schema' => [ + 'description' => 'The unit of the validity period of the SCU. Valid values:'."\n" + ."\n" + .'* Month'."\n" + .'* Year'."\n" + ."\n" + .'Default value: Month.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Month', + ], + ], + [ + 'name' => 'FromApp', + 'in' => 'query', + 'schema' => [ + 'description' => 'The source of the request. The value is automatically set to OpenAPI and does not need to be changed. Default value: OpenAPI.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'OpenAPI', + ], + ], + [ + 'name' => 'ClientToken', + 'in' => 'query', + '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 make sure that the token is unique across requests. The `token` can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see [How to ensure idempotence](~~25693~~).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '123e4567-e89b-12d3-a456-426655440000', + ], + ], + [ + 'name' => 'Amount', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of SCUs that you want to purchase. Valid values: 1 to 20.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '20', + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the SCU. You can specify up to 20 tags.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'Tag N to add to the SCU.'."\n", + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to add to the SCU. The tag key cannot be an empty string. The tag key can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag key cannot start with `acs:` or `aliyun`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to add to the SCU. The tag value can be an empty string. The tag value can be up to 128 characters in length and cannot contain `http://` or `https://`. The tag value cannot start with `acs:`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to add the SCU. You can specify only the IDs of the resource groups that you have permissions to access.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'OrderId' => [ + 'description' => 'The order ID.'."\n", + 'type' => 'string', + 'example' => '204135153880****', + ], + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'StorageCapacityUnitIds' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StorageCapacityUnitId' => [ + 'description' => 'The IDs of the SCUs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of the SCU.'."\n", + 'type' => 'string', + 'example' => 'scu-bp67acfmxazb4p****', + ], + ], + ], + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'InvalidParameter.Period', + 'errorMessage' => 'The specified Period is not valid.', + ], + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.Name', + 'errorMessage' => 'The specified Name is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.Capacity', + 'errorMessage' => 'The specified Capacity is invalid.', + ], + [ + 'errorCode' => 'MissingParameter.Capacity', + 'errorMessage' => 'The specified Capacity should be not null.', + ], + [ + 'errorCode' => 'InvalidParameter.PeriodUnit', + 'errorMessage' => 'The specified PeriodUnit is not supported.', + ], + [ + 'errorCode' => 'InvalidParameter.CapacityExceed', + 'errorMessage' => 'The specified Capacity exceeds the limitation of quota.', + ], + [ + 'errorCode' => 'InvalidStartTime.NotSupported', + 'errorMessage' => 'The specified StartTime should be within 180 calendar days from the current date, and you must specify a precision to hour.', + ], + [ + 'errorCode' => 'InvalidStartTime.MalFormed', + 'errorMessage' => 'The specified StartTime is out of the permitted range.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidResourceGroup.NotFound', + 'errorMessage' => 'The ResourceGroup provided does not exist in our records.', + ], + ], + 500 => [ + [ + 'errorCode' => 'InternalError', + 'errorMessage' => 'The request processing has failed due to some unknown error.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"OrderId\\": \\"204135153880****\\",\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"StorageCapacityUnitIds\\": {\\n \\"StorageCapacityUnitId\\": [\\n \\"scu-bp67acfmxazb4p****\\"\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 204135153880***\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n \\n scu-bp67acfmxazb4p****\\n \\n","errorExample":""}]', + 'title' => 'PurchaseStorageCapacityUnit', + 'description' => '**Before you call this operation, make sure that you understand the [billing methods](~~137897~~) and [pricing](https://www.alibabacloud.com/zh/pricing-calculator#/commodity/vm_intl) of SCUs.'."\n", + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'DescribeStorageCapacityUnits' => [ + 'summary' => 'Queries the details of storage capacity units (SCUs). In the request, you can specify the name, status, or capacity of each SCU.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'read', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'get', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29003', + 'abilityTreeNodes' => [ + 'FEATUREecsTKAXF8', + 'FEATUREecs70JNQP', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the SCU. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'PageNumber', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of the page to return.'."\n" + ."\n" + .'Pages start from page 1.'."\n" + ."\n" + .'Default value: 1.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'minimum' => '1', + 'example' => '1', + ], + ], + [ + 'name' => 'PageSize', + 'in' => 'query', + 'schema' => [ + 'description' => 'The number of entries per page.'."\n" + ."\n" + .'Valid values: 1 to 100.'."\n" + ."\n" + .'Default value: 10.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'maximum' => '100', + 'minimum' => '1', + 'example' => '1', + 'default' => '10', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the SCU. The name must be 2 to 128 characters in length. It must start with a letter but cannot start with `http://` or `https://`. It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testScuName', + ], + ], + [ + 'name' => 'Capacity', + 'in' => 'query', + 'schema' => [ + 'description' => 'The capacity of the SCU. Unit: GiB. Valid values: 20, 40, 100, 200, 500, 1024, 2048, 5120, 10240, 20480, and 51200.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'required' => false, + 'example' => '20', + ], + ], + [ + 'name' => 'AllocationType', + 'in' => 'query', + 'schema' => [ + 'description' => 'The allocation type. Valid values:'."\n" + ."\n" + .'* Normal: queries SCUs that belong to the current Alibaba Cloud account.'."\n" + .'* Shared: queries SCUs shared between the Alibaba Cloud account and RAM users.'."\n" + ."\n" + .'Default value: Normal.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Normal', + ], + ], + [ + 'name' => 'StorageCapacityUnitId', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The IDs of the SCUs. You can specify 1 to 100 SCU IDs.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The ID of SCU N.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'scu-bp67acfmxazb4p****', + ], + 'required' => false, + 'example' => 'scu-bp67acfmxazb4p****', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Status', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The states of SCUs. The array is 1 to 4 in length.'."\n", + 'type' => 'array', + 'items' => [ + 'description' => 'The status of the SCU. Valid values:'."\n" + ."\n" + .'* Creating: The SCUs are being created.'."\n" + .'* Active: The SCUs are enabled.'."\n" + .'* Expired: The SCUs expired.'."\n" + .'* Pending: The SCUs have not taken effect.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Active', + ], + 'required' => false, + 'example' => 'Active', + 'maxItems' => 100, + ], + ], + [ + 'name' => 'Tag', + 'in' => 'query', + 'style' => 'repeatList', + 'schema' => [ + 'description' => 'The tags to add to the SCU. You can add up to 20 tags.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'Key' => [ + 'description' => 'The key of tag N to be added to the SCU.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestKey', + ], + 'Value' => [ + 'description' => 'The value of tag N to be added to the SCU.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'TestValue', + ], + ], + 'required' => false, + 'description' => '', + ], + 'required' => false, + 'maxItems' => 20, + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'PageSize' => [ + 'description' => 'The number of entries returned per page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '10', + ], + 'RequestId' => [ + 'description' => 'The ID of the request.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + 'PageNumber' => [ + 'description' => 'The page number of the returned page.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'TotalCount' => [ + 'description' => 'The total number of SCUs.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '1', + ], + 'StorageCapacityUnits' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'StorageCapacityUnit' => [ + 'description' => 'Details about the SCUs.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'CreationTime' => [ + 'description' => 'The time when the SCU was created.'."\n", + 'type' => 'string', + 'example' => '2021-08-17T02:55Z', + ], + 'Status' => [ + 'description' => 'The status of the SCU. Valid values:'."\n" + ."\n" + .'* Creating: The SCUs are being created.'."\n" + .'* Active: The SCUs are in effect.'."\n" + .'* Expired: The SCUs have expired.'."\n" + .'* Pending: The SCUs have not taken effect.'."\n", + 'type' => 'string', + 'example' => 'Active', + ], + 'StartTime' => [ + 'description' => 'The time when the SCU took effect.'."\n", + 'type' => 'string', + 'example' => '2021-08-17T02:55Z', + ], + 'Capacity' => [ + 'description' => 'The capacity of the SCU.'."\n", + 'type' => 'integer', + 'format' => 'int32', + 'example' => '20', + ], + 'Description' => [ + 'description' => 'The description of the SCU.'."\n", + 'type' => 'string', + 'example' => 'testScuDescription', + ], + 'AllocationStatus' => [ + 'description' => 'Indicates the allocation state of the SCU when the AllocationType parameter is set to Shared. Valid values:'."\n" + ."\n" + .'* allocated: The SCU is allocated to other accounts.'."\n" + .'* BeAllocated: The SCU is allocated from another account.'."\n", + 'type' => 'string', + 'example' => 'allocated', + ], + 'ExpiredTime' => [ + 'description' => 'The time when the SCU expires.'."\n", + 'type' => 'string', + 'example' => '2021-09-17T16:00Z', + ], + 'StorageCapacityUnitId' => [ + 'description' => 'The ID of the SCU.'."\n", + 'type' => 'string', + 'example' => 'scu-bp67acfmxazb4p****', + ], + 'Name' => [ + 'description' => 'The name of the SCU.'."\n", + 'type' => 'string', + 'example' => 'testScuName', + ], + 'RegionId' => [ + 'description' => 'The region ID of the SCU.'."\n", + 'type' => 'string', + 'example' => 'cn-hangzhou', + ], + 'Tags' => [ + 'type' => 'object', + 'itemNode' => true, + 'properties' => [ + 'Tag' => [ + 'description' => 'The tag key-value pairs of the SCU.'."\n", + 'type' => 'array', + 'items' => [ + 'type' => 'object', + 'properties' => [ + 'TagValue' => [ + 'description' => 'The value of tag N.'."\n", + 'type' => 'string', + 'example' => 'TestKey', + ], + 'TagKey' => [ + 'description' => 'The key of tag N.'."\n", + 'type' => 'string', + 'example' => 'TestValue', + ], + ], + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + ], + ], + 'description' => '', + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.Name', + 'errorMessage' => 'The specified Name is invalid.', + ], + [ + 'errorCode' => 'InvalidParameter.CapacityExceed', + 'errorMessage' => 'The specified Capacity exceeds the limitation of quota.', + ], + [ + 'errorCode' => 'InvalidAllocationType.ValueNotSupported', + 'errorMessage' => 'The specified AllocationType is not supported.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"PageSize\\": 10,\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\",\\n \\"PageNumber\\": 1,\\n \\"TotalCount\\": 1,\\n \\"StorageCapacityUnits\\": {\\n \\"StorageCapacityUnit\\": [\\n {\\n \\"CreationTime\\": \\"2021-08-17T02:55Z\\",\\n \\"Status\\": \\"Active\\",\\n \\"StartTime\\": \\"2021-08-17T02:55Z\\",\\n \\"Capacity\\": 20,\\n \\"Description\\": \\"testScuDescription\\",\\n \\"AllocationStatus\\": \\"allocated\\",\\n \\"ExpiredTime\\": \\"2021-09-17T16:00Z\\",\\n \\"StorageCapacityUnitId\\": \\"scu-bp67acfmxazb4p****\\",\\n \\"Name\\": \\"testScuName\\",\\n \\"RegionId\\": \\"cn-hangzhou\\",\\n \\"Tags\\": {\\n \\"Tag\\": [\\n {\\n \\"TagValue\\": \\"TestKey\\",\\n \\"TagKey\\": \\"TestValue\\"\\n }\\n ]\\n }\\n }\\n ]\\n }\\n}","errorExample":""},{"type":"xml","example":"\\n 1\\n 10\\n 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\n 1\\n \\n \\n Active\\n testScuDescription\\n \\n 20\\n scu-bp67acfmxazb4p****\\n 2021-09-17T16:00Z\\n 2021-08-17T02:55Z\\n 2021-08-17T02:00Z\\n cn-hangzhou\\n \\n \\n TestKey\\n TestValue\\n \\n \\n testScuName\\n \\n \\n","errorExample":""}]', + 'title' => 'DescribeStorageCapacityUnits', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'ModifyStorageCapacityUnitAttribute' => [ + 'summary' => 'Modifies the name or description of a storage capacity unit (SCU).', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'deprecated' => false, + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29107', + 'abilityTreeNodes' => [ + 'FEATUREecsDXRH67', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the SCU. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'StorageCapacityUnitId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the SCU.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'scu-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new name of the SCU. The name must be 2 to 128 characters in length. It must start with a letter and cannot start with [http:// or https://. It can contain letters, digits, colons (:), underscores (\\_), and hyphens (-).](http://https://。、(:)、(\\_)(-)。)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testNewScuName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The new description of the SCU. The description must be 2 to 256 characters in length and cannot start with [http:// or https://.](http://https://。)'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testNewScuDescription', + ], + ], + ], + 'responses' => [ + 200 => [ + 'schema' => [ + 'type' => 'object', + 'properties' => [ + 'RequestId' => [ + 'description' => 'The request ID.'."\n", + 'type' => 'string', + 'example' => '473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E', + ], + ], + ], + ], + ], + 'errorCodes' => [ + 400 => [ + [ + 'errorCode' => 'MissingParameter.RegionId', + 'errorMessage' => 'The specified RegionId should not be null.', + ], + [ + 'errorCode' => 'InvalidParameter.Name', + 'errorMessage' => 'The specified Name is invalid.', + ], + [ + 'errorCode' => 'InvalidDescription.Malformed', + 'errorMessage' => 'The specified Description is wrongly formed.', + ], + [ + 'errorCode' => 'MissingParameter.StorageCapacityUnitId', + 'errorMessage' => 'The specified StorageCapacityUnitId is not supported.', + ], + ], + 404 => [ + [ + 'errorCode' => 'InvalidStorageCapacityUnitId.NotFound', + 'errorMessage' => 'The specified StorageCapacityUnitId does not exist.', + ], + ], + ], + 'staticInfo' => [ + 'returnType' => 'synchronous', + ], + 'responseDemo' => '[{"type":"json","example":"{\\n \\"RequestId\\": \\"473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E\\"\\n}","errorExample":""},{"type":"xml","example":"\\r\\n 04F0F334-1335-436C-A1D7-6C044FE73368\\r\\n","errorExample":""}]', + 'title' => 'ModifyStorageCapacityUnitAttribute', + 'requestParamsDescription' => ' ', + 'responseParamsDescription' => ' ', + 'extraInfo' => ' ', + ], + 'RunCommand' => [ + 'summary' => 'Creates and runs a Cloud Assistant command on one or more Elastic Compute Service (ECS) instances. Shell, PowerShell, and batch commands are supported. You can run the command based on a schedule, include custom parameters in the command, or run the command in containers on instances.', + 'methods' => [ + 'post', + 'get', + ], + 'schemes' => [ + 'http', + 'https', + ], + 'security' => [ + [ + 'AK' => [], + ], + ], + 'operationType' => 'write', + 'systemTags' => [ + 'operationType' => 'update', + 'riskType' => 'none', + 'chargeType' => 'free', + 'abilityTreeCode' => '29314', + 'abilityTreeNodes' => [ + 'FEATUREecsXZ3H4M', + ], + ], + 'parameters' => [ + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the command. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'ResourceGroupId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The ID of the resource group to which to assign the command executions. When you set this parameter, take note of the following items:'."\n" + ."\n" + .'* The instances specified by InstanceId.N must belong to the specified resource group.'."\n" + .'* After the command is run, you can set this parameter to call the [DescribeInvocations](~~64840~~) or [DescribeInvocationResults](~~64845~~) operation to query the execution results in the specified resource group.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'rg-bp67acfmxazb4p****', + ], + ], + [ + 'name' => 'RegionId', + 'in' => 'query', + 'schema' => [ + 'description' => 'The region ID of the command. You can call the [DescribeRegions](~~25609~~) operation to query the most recent region list.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'cn-hangzhou', + ], + ], + [ + 'name' => 'Name', + 'in' => 'query', + 'schema' => [ + 'description' => 'The name of the command. The name supports all character sets and can be up to 128 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testName', + ], + ], + [ + 'name' => 'Description', + 'in' => 'query', + 'schema' => [ + 'description' => 'The description of the command. The description supports all character sets and can be up to 512 characters in length.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'testDescription', + ], + ], + [ + 'name' => 'Type', + 'in' => 'query', + 'schema' => [ + 'description' => 'The type of the command. Valid values:'."\n" + ."\n" + .'* RunBatScript: batch command, applicable to Windows instances.'."\n" + .'* RunPowerShellScript: PowerShell command, applicable to Windows instances.'."\n" + .'* RunShellScript: shell command, applicable to Linux instances.'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'RunShellScript', + ], + ], + [ + 'name' => 'CommandContent', + 'in' => 'query', + 'schema' => [ + 'description' => 'The content of the command. The command content can be plaintext or Base64-encoded. Take note of the following items:'."\n" + ."\n" + .'* If you want to retain the command, make sure that the size of the Base64-encoded command content does not exceed 18 KB. If you do not want to retain the command, make sure that the size of the Base64-encoded command content does not exceed 24 KB. You can set `KeepCommand` to specify whether to retain the command.'."\n" + ."\n" + .'* If the command content is Base64-encoded, set `ContentEncoding` to Base64.'."\n" + ."\n" + .'* If you specify `EnableParameter` to true, the custom parameter feature is enable. You can configure custom parameters based on the following rules:'."\n" + ."\n" + .' * Specify custom parameters in the `{{}}` format. The spaces and line feeds before and after the parameter names within `{{}}` are ignored.'."\n" + .' * You can specify up to 20 custom parameters.'."\n" + .' * A custom parameter name can contain letters, digits, underscores (\\_), and hyphens (-). The name is case-insensitive. The ACS:: prefix cannot be used to specify non-built-in environment parameters.'."\n" + .' * Each custom parameter name cannot exceed 64 bytes in length.'."\n" + ."\n" + .'* You can specify built-in environment parameters as custom parameters. When you run a command, the parameters are automatically specified by Cloud Assistant. You can specify the following built-in environment parameters:'."\n" + ."\n" + .' * `{{ACS::RegionId}}`: the region ID.'."\n" + ."\n" + .' * `{{ACS::AccountId}}`: the UID of the Alibaba Cloud account.'."\n" + ."\n" + .' * `{{ACS::InstanceId}}`: the instance ID. If you want to run the command on multiple instances and specify `{{ACS::InstanceId}}` as a built-in environment parameter, make sure that the Cloud Assistant Agent version is not earlier than the following versions:'."\n" + ."\n" + .' * Linux: 2.2.3.309'."\n" + .' * Windows: 2.1.3.309'."\n" + ."\n" + .' * `{{ACS::InstanceName}}`: the instance name. If you want to run the command on multiple instances and specify `{{ACS::InstanceName}}` as a built-in environment parameter, make sure that the Cloud Assistant Agent version is not earlier than the following versions:'."\n" + ."\n" + .' * Linux: 2.2.3.344'."\n" + .' * Windows: 2.1.3.344'."\n" + ."\n" + .' * `{{ACS::InvokeId}}`: the task ID. If you want to specify `{{ACS::InvokeId}}` as a built-in environment parameter, make sure that the Cloud Assistant Agent version is not earlier than the following versions:'."\n" + ."\n" + .' * Linux: 2.2.3.309'."\n" + .' * Windows: 2.1.3.309'."\n" + ."\n" + .' * `{{ACS::CommandId}}`: the command ID. If you want to specify `{{ACS::CommandId}}` as a built-in environment parameter, make sure that the Cloud Assistant Agent version is not earlier than the following versions:'."\n" + ."\n" + .' * Linux: 2.2.3.309'."\n" + .' * Windows: 2.1.3.309'."\n", + 'type' => 'string', + 'required' => true, + 'example' => 'ZWNobyAxMjM=', + ], + ], + [ + 'name' => 'WorkingDir', + 'in' => 'query', + 'schema' => [ + 'description' => 'The working directory of the command on the instance. The value can be up to 200 characters in length.'."\n" + ."\n" + .'Default values:'."\n" + ."\n" + .'* For Linux instances, the default value is `/root`, which is the home directory of the administrator (the root user).'."\n" + .'* For Windows instances, the default value is the directory where the Cloud Assistant Agent process resides, such as `C:\\Windows\\System32`.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => '/home/user', + ], + ], + [ + 'name' => 'Timeout', + 'in' => 'query', + 'schema' => [ + 'description' => 'The timeout period for the command execution. Unit: seconds.'."\n" + ."\n" + .'A timeout error occurs if the command cannot be run because the process slows down or because a specific module or Cloud Assistant Agent does not exist. When an execution times out, the command process is forcefully terminated.'."\n" + ."\n" + .'Default value: 60.'."\n", + 'type' => 'integer', + 'format' => 'int64', + 'required' => false, + 'example' => '3600', + ], + ], + [ + 'name' => 'EnableParameter', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies whether to include custom parameters in the command.'."\n" + ."\n" + .'Default value: false.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'false', + 'default' => 'false', + ], + ], + [ + 'name' => 'RepeatMode', + 'in' => 'query', + 'schema' => [ + 'description' => 'Specifies how to run the command. Valid values:'."\n" + ."\n" + .'* Once: immediately runs the command.'."\n" + .'* Period: runs the command based on a schedule. If you set this parameter to `Period`, you must specify `Frequency`.'."\n" + .'* NextRebootOnly: runs the command the next time the instances start.'."\n" + .'* EveryReboot: runs the command every time the instances start.'."\n" + .'* DryRun: performs only a dry run, without running the actual command. The system checks the request parameters, the execution environments on the instances, and the status of Cloud Assistant Agent.'."\n" + ."\n" + .'Default value:'."\n" + ."\n" + .'* If you do not specify `Frequency`, the default value is `Once`.'."\n" + .'* If you specify `Frequency`, RepeatMode is set to `Period` regardless of whether a value is already specified for RepeatMode.'."\n" + ."\n" + .'Take note of the following items:'."\n" + ."\n" + .'* You can call the [StopInvocation](~~64838~~) operation to stop the pending or scheduled executions of the command.'."\n" + .'* If you set this parameter to `Period` or `EveryReboot`, you can call the [DescribeInvocationResults](~~64845~~) operation with `IncludeHistory` set to true to query the historical scheduled executions.'."\n", + 'type' => 'string', + 'required' => false, + 'example' => 'Once', + ], + ], + [ + 'name' => 'Timed', + 'in' => 'query', + 'schema' => [ + 'description' => '> This parameter is no longer used and does not take effect.'."\n", + 'type' => 'boolean', + 'required' => false, + 'example' => 'true', + ], + ], + [ + 'name' => 'Frequency', + 'in' => 'query', + 'schema' => [ + 'description' => 'The schedule on which to run the command. You can configure a command to run at a fixed interval based on a rate expression, run only once at a specified time, or run at designated times based on a cron expression.'."\n" + ."\n" + .'* To run a command at a fixed interval, use a rate expression to specify the interval. You can specify the interval in seconds, minutes, hours, or days. This option is suitable for scenarios in which tasks need to be executed at a fixed interval. Specify the interval in the following format: `rate( )`. For example, specify `rate(5m)` to run the command every 5 minutes. When you specify an interval, take note of the following limits:'."\n" + ."\n" + .' * The interval can be anywhere from 60 seconds to 7 days, but must be longer than the timeout period of the scheduled task.'."\n" + .' * The interval is the amount of time that elapses between two consecutive executions. The interval is irrelevant to the amount of time that is required to run the command once. For example, assume that you set the interval to 5 minutes and that it takes 2 minutes to run the command each time. Each time the command is run, the system waits 3 minutes before the system runs the command again.'."\n" + .' * A task is not immediately executed after the task is created. For example, assume that you set the interval to 5 minutes for a task. The task begins to be executed 5 minutes after it is created.'."\n" + ."\n" + .'* To run a command only once at a specific time, specify a point in time and a time zone. Specify the point in time in the `at(yyyy-MM-dd HH:mm:ss