'1.0', 'info' => ['style' => 'RPC', 'product' => 'ecd', 'version' => '2023-06-27'], 'directories' => ['DescribeBenefits', 'GetRedeemCodes', 'GetRequestToken'], 'components' => [ 'schemas' => [], ], 'apis' => [ 'DescribeBenefits' => [ 'summary' => 'Queries the specifications, quantity, and other details of benefits associated with a channel to support benefit distribution.', 'methods' => ['get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'deprecated' => false, 'systemTags' => ['operationType' => 'none'], 'parameters' => [ [ 'name' => 'ChannelId', 'in' => 'query', 'schema' => ['description' => 'The ID of the channel for the benefit query.', 'type' => 'string', 'required' => true, 'example' => 'wuying****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', 'description' => 'The response object.', 'type' => 'object', 'properties' => [ 'RequestId' => ['title' => 'Id of the request', 'description' => 'The request ID.', 'type' => 'string', 'example' => '25BB1CE-6B47-12DC-9FE6-03726****'], 'Benefits' => [ 'description' => 'The list of benefits.', 'type' => 'array', 'items' => [ 'description' => 'The list of benefit objects.', 'type' => 'object', 'properties' => [ 'BenefitId' => ['description' => 'The benefit ID. Each benefit specification has a unique benefit ID.', 'type' => 'string', 'example' => '6a79****', 'title' => ''], 'BenefitType' => [ 'description' => 'The type of the benefit.', 'enumValueTitles' => ['Desktop.TimePack' => 'Cloud computer time pack'], 'type' => 'string', 'example' => 'Desktop.TimePack', 'title' => '', ], 'TotalAmount' => ['description' => 'The total quantity of the benefit.', 'type' => 'integer', 'format' => 'int32', 'example' => '100', 'title' => ''], 'AvailableAmount' => ['description' => 'The available quantity of the benefit. This number decreases as benefits are distributed.', 'type' => 'integer', 'format' => 'int32', 'example' => '80', 'title' => ''], 'SpecInfo' => [ 'description' => 'The details of the benefit specification.', 'type' => 'object', 'properties' => [ 'CpuCore' => ['description' => 'The number of vCPU cores.', 'type' => 'integer', 'format' => 'int32', 'example' => '4', 'title' => ''], 'AvailableHours' => ['description' => 'The available duration, in hours.', 'type' => 'integer', 'format' => 'int32', 'example' => '800', 'title' => ''], 'MemorySize' => ['description' => 'The memory size, in MB.', 'type' => 'integer', 'format' => 'int32', 'example' => '8192', 'title' => ''], ], 'title' => '', 'example' => '', ], ], 'title' => '', 'example' => '', ], 'title' => '', 'example' => '', ], ], 'example' => '', ], ], ], 'staticInfo' => ['returnType' => 'synchronous'], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"25BB1CE-6B47-12DC-9FE6-03726****\\",\\n \\"Benefits\\": [\\n {\\n \\"BenefitId\\": \\"6a79****\\",\\n \\"BenefitType\\": \\"Desktop.TimePack\\",\\n \\"TotalAmount\\": 100,\\n \\"AvailableAmount\\": 80,\\n \\"SpecInfo\\": {\\n \\"CpuCore\\": 4,\\n \\"AvailableHours\\": 800,\\n \\"MemorySize\\": 8192\\n }\\n }\\n ]\\n}","type":"json"}]', 'title' => 'Query Channel Benefits', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [], ], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:DescribeBenefits', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], ], 'GetRedeemCodes' => [ 'summary' => 'Channel benefits are issued as redemption codes. When you generate redemption codes, the quantity of the corresponding benefit is reduced.', 'methods' => ['get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'deprecated' => false, 'systemTags' => ['operationType' => 'none'], 'parameters' => [ [ 'name' => 'CodeQuantity', 'in' => 'query', 'schema' => ['description' => 'Number of redemption codes to generate. Valid values: 1 to 100.', 'type' => 'integer', 'format' => 'int32', 'required' => true, 'example' => '1', 'title' => ''], ], [ 'name' => 'BenefitId', 'in' => 'query', 'schema' => ['description' => 'ID of the benefit included in the redemption code. Get this ID by calling [DescribeBenefits](~~2500858~~).', 'type' => 'string', 'required' => true, 'example' => '6a79****'."\n", 'title' => ''], ], [ 'name' => 'RequestToken', 'in' => 'query', 'schema' => ['description' => 'Request token for the channel service. Get this token by calling [GetRequestToken](~~2500860~~). Each request token can be used only once.', 'type' => 'string', 'required' => true, 'example' => '8789d7271c36979****'."\n", 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', 'description' => 'Response object.', 'type' => 'object', 'properties' => [ 'RequestId' => ['title' => 'Id of the request', 'description' => 'ID of the request.', 'type' => 'string', 'example' => '25BB1CE-6B47-12DC-9FE6-03726****'], 'RedeemCodes' => [ 'description' => 'List of redemption codes.', 'type' => 'array', 'items' => ['description' => 'Redemption code.', 'type' => 'string', 'example' => '068c8-55a1a-*****', 'title' => ''], 'title' => '', 'example' => '', ], ], 'example' => '', ], ], ], 'staticInfo' => ['returnType' => 'synchronous'], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"25BB1CE-6B47-12DC-9FE6-03726****\\",\\n \\"RedeemCodes\\": [\\n \\"068c8-55a1a-*****\\"\\n ]\\n}","type":"json"}]', 'title' => 'Obtain Redemption Codes ', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [], ], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:GetRedeemCodes', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], ], 'GetRequestToken' => [ 'summary' => 'Obtains a one-time token for a channel service request. The token is used to authenticate channel-related API operations and is invalidated after use.', 'methods' => ['get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'deprecated' => false, 'systemTags' => ['operationType' => 'none'], 'parameters' => [ [ 'name' => 'ChannelId', 'in' => 'query', 'schema' => ['description' => 'The ID of the channel. The request token is valid only for this channel.', 'type' => 'string', 'required' => true, 'example' => 'wuying****', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => 'Schema of Response', 'description' => 'The response object.', 'type' => 'object', 'properties' => [ 'RequestId' => ['title' => 'Id of the request', 'description' => 'The ID of the request.', 'type' => 'string', 'example' => '25BB1CE-6B47-12DC-9FE6-03726****'], 'RequestToken' => ['description' => 'The generated request token for the channel service. The token is valid for a single use.', 'type' => 'string', 'example' => '8789d7271c36979****', 'title' => ''], ], 'example' => '', ], ], ], 'staticInfo' => ['returnType' => 'synchronous'], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"25BB1CE-6B47-12DC-9FE6-03726****\\",\\n \\"RequestToken\\": \\"8789d7271c36979****\\"\\n}","type":"json"}]', 'title' => 'Obtain Request Credential', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [], ], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:GetRequestToken', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], ], ], 'endpoints' => [ ['regionId' => 'cn-beijing', 'regionName' => 'China (Beijing)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-beijing.aliyuncs.com', 'endpoint' => 'ecd.cn-beijing.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-wulanchabu', 'regionName' => 'China (Ulanqab)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-wulanchabu.aliyuncs.com', 'endpoint' => 'ecd.cn-wulanchabu.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-qingdao', 'regionName' => 'China (Qingdao)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-qingdao.aliyuncs.com', 'endpoint' => 'ecd.cn-qingdao.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-shanghai', 'regionName' => 'China (Shanghai)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-shanghai.aliyuncs.com', 'endpoint' => 'ecd.cn-shanghai.aliyuncs.com', 'vpc' => 'ecd-shenzhen-center.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-hongkong', 'regionName' => 'China (Hong Kong)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-hongkong.aliyuncs.com', 'endpoint' => 'ecd.cn-hongkong.aliyuncs.com', 'vpc' => 'ecd.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-zhangjiakou', 'regionName' => 'China (Zhangjiakou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-zhangjiakou.aliyuncs.com', 'endpoint' => 'ecd.cn-zhangjiakou.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-shenzhen', 'regionName' => 'China (Shenzhen)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-shenzhen.aliyuncs.com', 'endpoint' => 'ecd.cn-shenzhen.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-nanjing', 'regionName' => 'China (Nanjing - Local Region)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-nanjing.aliyuncs.com', 'endpoint' => 'ecd.cn-nanjing.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'ap-northeast-1', 'regionName' => 'Japan (Tokyo)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.ap-northeast-1.aliyuncs.com', 'endpoint' => 'ecd.ap-northeast-1.aliyuncs.com', 'vpc' => 'ecd.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-chengdu', 'regionName' => 'China (Chengdu)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-chengdu.aliyuncs.com', 'endpoint' => 'ecd.cn-chengdu.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-guangzhou', 'regionName' => 'China (Guangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-guangzhou.aliyuncs.com', 'endpoint' => 'ecd.cn-guangzhou.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'ap-southeast-1', 'regionName' => 'Singapore', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.ap-southeast-1.aliyuncs.com', 'endpoint' => 'ecd.ap-southeast-1.aliyuncs.com', 'vpc' => 'ecd-shenzhen-center.vpc-proxy.aliyuncs.com'], ['regionId' => 'ap-southeast-5', 'regionName' => 'Indonesia (Jakarta)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.ap-southeast-5.aliyuncs.com', 'endpoint' => 'ecd.ap-southeast-5.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'ap-southeast-6', 'regionName' => 'Philippines (Manila)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.ap-southeast-6.aliyuncs.com', 'endpoint' => 'ecd.ap-southeast-6.aliyuncs.com', 'vpc' => 'ecd-shenzhen-center.vpc-proxy.aliyuncs.com'], ['regionId' => 'ap-southeast-7', 'regionName' => 'Thailand (Bangkok)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.ap-southeast-7.aliyuncs.com', 'endpoint' => 'ecd.ap-southeast-7.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-hangzhou', 'regionName' => 'China (Hangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'ecd.cn-hangzhou.aliyuncs.com', 'endpoint' => 'ecd.cn-hangzhou.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ['regionId' => 'eu-west-1', 'regionName' => 'UK (London)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'ecd.eu-west-1.aliyuncs.com', 'endpoint' => 'ecd.eu-west-1.aliyuncs.com', 'vpc' => 'ecd.vpc-proxy.aliyuncs.com'], ['regionId' => 'us-west-1', 'regionName' => 'US (Silicon Valley)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'ecd.us-west-1.aliyuncs.com', 'endpoint' => 'ecd.us-west-1.aliyuncs.com', 'vpc' => 'ecd.vpc-proxy.aliyuncs.com'], ['regionId' => 'eu-central-1', 'regionName' => 'Germany (Frankfurt)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'ecd.eu-central-1.aliyuncs.com', 'endpoint' => 'ecd.eu-central-1.aliyuncs.com', 'vpc' => 'ecd.vpc-proxy.aliyuncs.com'], ['regionId' => 'me-east-1', 'regionName' => 'UAE (Dubai)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'ecd.me-east-1.aliyuncs.com', 'endpoint' => 'ecd.me-east-1.aliyuncs.com', 'vpc' => 'ecd-vpc.me-east-1.aliyuncs.com'], ['regionId' => 'me-central-1', 'regionName' => 'Saudi Arabia (Riyadh)', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'ecd.me-central-1.aliyuncs.com', 'endpoint' => 'ecd.me-central-1.aliyuncs.com', 'vpc' => 'ecd.vpc-proxy.aliyuncs.com'], ['regionId' => 'cn-hangzhou-finance', 'regionName' => 'China East 1 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'ecd.cn-hangzhou-finance.aliyuncs.com', 'endpoint' => 'ecd.cn-hangzhou-finance.aliyuncs.com', 'vpc' => 'ecd-vpc.cn-hangzhou-finance.aliyuncs.com'], ['regionId' => 'cn-shanghai-finance-1', 'regionName' => 'China East 2 Finance', 'areaId' => 'industryCloud', 'areaName' => 'Industry Cloud', 'public' => 'ecd.cn-shanghai-finance-1.aliyuncs.com', 'endpoint' => 'ecd.cn-shanghai-finance-1.aliyuncs.com', 'vpc' => 'ecd-intl.vpc-proxy.aliyuncs.com'], ], 'errorCodes' => [ ['code' => 'App.Authing', 'message' => 'App is authing.', 'http_code' => 400, 'description' => 'The app is being set to be visible, please try again later.'], ['code' => 'AuthorizeFailed', 'message' => 'Authorize failed, please check your EndUserId and Password.', 'http_code' => 400, 'description' => 'Invalid username or password.'], ['code' => 'Benefit.NotExist', 'message' => 'The specified benefit is not found.', 'http_code' => 400, 'description' => ''], ['code' => 'Benefit.StockInsufficient', 'message' => 'The specified benefit is out of stock.', 'http_code' => 400, 'description' => ''], ['code' => 'Channel.NotExist', 'message' => 'The specified channel is not found.', 'http_code' => 400, 'description' => ''], ['code' => 'Channel.TokenInvalid', 'message' => 'The channel service request token is invalid.', 'http_code' => 400, 'description' => ''], ['code' => 'ChooseClusterError.ZoneId', 'message' => 'Cannot choose zone, please try other zone.', 'http_code' => 400, 'description' => 'The property of the resource zone does not match. Check whether the target office network supports the zone to which the resource belongs.'], ['code' => 'DeletedBundleStatus', 'message' => 'The specified bundle status is deleted.', 'http_code' => 400, 'description' => 'The specified template has been deleted'], ['code' => 'DesktopCpuHighLoad%s', 'message' => 'The specified desktop cpu high load.', 'http_code' => 400, 'description' => 'The CPU usage of this cloud computer is too high, causing the connection to time out. The application with the highest CPU usage is% s. Please reconnect or restart the cloud computer. If the connection failure still occurs, contact your IT administrator.'], ['code' => 'DesktopMemoryHighLoad%s', 'message' => 'The specified desktop memory high load.', 'http_code' => 400, 'description' => 'A time out error occurred when connecting to this cloud computer because the memory usage of it is too high. The app consuming the most memory is %s. Please reconnect or restart the cloud computer. If the issue persists, please contact your IT administrator.'], ['code' => 'ExistedFingerPrintTemplate', 'message' => 'The fingerprint is already registered as %s.', 'http_code' => 400, 'description' => ''], ['code' => 'ExistedHostname', 'message' => 'The specified hostname is existed on the domain.', 'http_code' => 400, 'description' => 'The specified hostname already exists in the current workspace'], ['code' => 'ExportDesktop.UnknowError', 'message' => 'Failed to export desktop list. Please try again. If the problem still exists, submit a ticket.', 'http_code' => 400, 'description' => ''], ['code' => 'ExportDesktopGroup.UnknowError', 'message' => 'Failed to export desktop group list. Please try again. If the problem still exists, submit a ticket.', 'http_code' => 400, 'description' => ''], ['code' => 'FengyuTestCode1.%s', 'message' => 'FengyuTestMsg1.%s.', 'http_code' => 400, 'description' => 'Feng Yu Test Dynamic Error Description 1, Dynamic Error Message (%s)'], ['code' => 'FengyuTestCode2', 'message' => 'FengyuTestMsg2.', 'http_code' => 400, 'description' => 'Feng Yu tests Chinese'], ['code' => 'Forbidden', 'message' => 'User not authorized to operate on the specified resource.', 'http_code' => 403, 'description' => 'User does not have permission to operate on the specified resource'], ['code' => 'FOTAVersion.NotSupported', 'message' => 'Desktop version does not support this function, please upgrade.', 'http_code' => 400, 'description' => 'The current desktop version does not support this feature. Update the version.'], ['code' => 'HostnameCannotCustomizeForLinux', 'message' => 'Customizing hostname is not supported for Linux desktop.', 'http_code' => 400, 'description' => 'The custom hostname feature does not support Linux desktops'], ['code' => 'IncorrectDirectoryStatus', 'message' => 'Only registered directory can create desktop.', 'http_code' => 400, 'description' => 'Workspace status error, only desktop creation with registered workspace is supported'], ['code' => 'IncorrectDirectoryType', 'message' => 'The protocol type of directory and desktop do not match.', 'http_code' => 400, 'description' => 'The protocol types of the specified workspace and the target desktop do not match, please check'], ['code' => 'InternalError', 'message' => 'The request processing has failed due to some unknown error, exception or failure.', 'http_code' => 500, 'description' => ''], ['code' => 'InvalidAmount', 'message' => 'The specified Amount is not a valid value.', 'http_code' => 400, 'description' => 'The specified quantity is illegal'], ['code' => 'InvalidAmount.NotTimesOfUsers', 'message' => 'The specified Amount is notmatch EndUserId size.', 'http_code' => 400, 'description' => 'The number of desktops specified is not equal to the number of users to be assigned, please re-specify'], ['code' => 'InvalidClientIp.Policy', 'message' => 'Client ip %s is not in white list.', 'http_code' => 400, 'description' => 'The IT administrator has set an IP whitelist policy that prevents you from connecting to this cloud computer under your current IP environment (%s). Please contact the IT administrator.'], ['code' => 'InvalidDesktopBundle.NotFound', 'message' => 'The specified param BundleId is not found.', 'http_code' => 400, 'description' => 'Specified BundleId not found'], ['code' => 'InvalidDirectoryId.NotFound', 'message' => 'The specified param DirectoryId is not found.', 'http_code' => 400, 'description' => 'Unable to find workspace ID, please check workspace'], ['code' => 'InvalidDirectoryType.NotSupported', 'message' => 'The specified DirectoryType is not supported.', 'http_code' => 400, 'description' => 'Specified'], ['code' => 'InvalidEncryptionEnabled.Invalid', 'message' => 'The parameter VolumeEncryptionEnabled is invalid.', 'http_code' => 400, 'description' => 'When specifying the encryption key, you need to turn on the disk encryption function.'], ['code' => 'InvalidEncryptionKey.Missing', 'message' => 'Parameter VolumeEncryptionKey is missing.', 'http_code' => 400, 'description' => 'When the disk encryption function is enabled, the encryption key cannot be empty.'], ['code' => 'InvalidEncryptionKey.NotAuthorized', 'message' => 'Eds service cannot access the given VolumeEncryptionKey.', 'http_code' => 400, 'description' => 'Unable to access unauthorized encryption keys'], ['code' => 'InvalidEncryptionKey.NotFound', 'message' => 'The specified VolumeEncryptionKey is not found.', 'http_code' => 400, 'description' => 'The specified encryption key could not be found'], ['code' => 'InvalidFingerPrintTemplate', 'message' => 'The fingerprint template is invalid.', 'http_code' => 400, 'description' => ''], ['code' => 'InvalidFingerPrintTemplateIndex', 'message' => 'The index of the fingerprint template is invalid.', 'http_code' => 400, 'description' => ''], ['code' => 'InvalidImageStatus.NotValid', 'message' => 'The specified image status is not valid.', 'http_code' => 400, 'description' => 'The status of the specified image is unavailable and cannot be created.'], ['code' => 'InvalidImageVersion.NotSupported', 'message' => 'The specified image version is no longer supported.', 'http_code' => 400, 'description' => 'The specified image version is no longer supported. Please select another image.'], ['code' => 'InvalidMemberIp.DesktopAmount', 'message' => 'The desktop amount need to be 1.', 'http_code' => 400, 'description' => 'When you specify an IP to create a desktop, the number of desktops can only be 1'], ['code' => 'InvalidOssObjectPath.NotFound', 'message' => 'Cannot parse input oss object path. eg: http://bucket/object.vhd.', 'http_code' => 400, 'description' => 'It is detected that the uploaded image file is not available, please ensure that the correct custom image is uploaded to the specified OSS bucket address.'], ['code' => 'InvalidParameter.ResourceId', 'message' => 'The specified parameter ResourceId is invalid.', 'http_code' => 400, 'description' => 'The specified parameter ResourceId is invalid.'], ['code' => 'InvalidParameterError', 'message' => 'Cannot query with end user id and include assigned user.', 'http_code' => 400, 'description' => 'Querying unassigned user and end user ID at the same time is not supported.'], ['code' => 'InvalidPolicyGroup.Status', 'message' => 'The target policy group is being created. Please try again later.', 'http_code' => 400, 'description' => ''], ['code' => 'LockedUser', 'message' => 'User is locked.', 'http_code' => 400, 'description' => ''], ['code' => 'NetworkSpace.DependencyViolation', 'message' => 'networkSpace dependency violation.', 'http_code' => 400, 'description' => 'Resources exist in the current office network and cannot be deleted directly.'], ['code' => 'NetworkSpace.VpcInfoExist', 'message' => 'vpc info already exist.', 'http_code' => 400, 'description' => 'Office network already exists for the corresponding VPC'], ['code' => 'NoStock.ZoneInvalid', 'message' => 'The requested resource is sold out in the specified zone.', 'http_code' => 400, 'description' => 'The specified resource is out of stock in the selected Availability Zone.'], ['code' => 'OperationTooFrequent', 'message' => 'The operation is too frequent, please try again later.', 'http_code' => 400, 'description' => 'Operation is too frequent, please try again later'], ['code' => 'Order.Unpaid', 'message' => 'You have unpaid orders, please pay such orders before placing a new order.', 'http_code' => 403, 'description' => ''], ['code' => 'ParamError.NoDesktopGroupId', 'message' => 'You must specify desktopGroupId.', 'http_code' => 400, 'description' => ''], ['code' => 'Protocol.NotAllowed', 'message' => 'Procotol of the image is not allowed.', 'http_code' => 400, 'description' => 'The protocol type of the image is not supported. Check the image ID.'], ['code' => 'RedeemCode.QuantityExceeded', 'message' => 'The number of redeem codes obtained at a time is out of the valid range.', 'http_code' => 400, 'description' => ''], ['code' => 'RESOURCE_GROUP_ALREADY_BOUND_APP_RULE', 'message' => 'Resource group already bound app rule.', 'http_code' => 400, 'description' => 'The resource group to which the cloud computer belongs is binding/unbinding application control rules.'], ['code' => 'RISK.RISK_CONTROL_REJECTION', 'message' => 'In order to protect the security of your account, the order was suspended, please contact customer service for details.', 'http_code' => 400, 'description' => 'In order to protect the security of your account, the order was suspended, please contact customer service for details.'], ['code' => 'SALES_SERVICE_ERROR_INFORMATION', 'message' => 'Your information is incomplete. Complete your information before the operation.', 'http_code' => 400, 'description' => 'Your information is incomplete. Please complete all required fields here(超链接:https://myaccount.alibabacloud.com/user_info.htm?callback=#/userinfo ) before proceeding.'], ['code' => 'StartApplicationFail', 'message' => 'The application start fail.', 'http_code' => 400, 'description' => 'Failed to start, please go to the "start" menu of win system to open shadowless housekeeper'], ['code' => 'StartApplicationGuestNoApp', 'message' => 'The application no start app.', 'http_code' => 400, 'description' => 'Please go to shadowless application center to download shadowless butler'], ['code' => 'StartApplicationGuestOffline', 'message' => 'The application guest offline.', 'http_code' => 400, 'description' => 'Desktop exception, please go to the "start" menu of win system to open shadowless housekeeper'], ['code' => 'StartApplicationGuestTimeout', 'message' => 'The application guest timeout.', 'http_code' => 400, 'description' => 'The call timed out, please go to the "start" menu of win system to open shadowless housekeeper.'], ['code' => 'Throttling.FingerPrintTemplateSet', 'message' => 'The previous fingerprint template setting is not completed yet.', 'http_code' => 400, 'description' => ''], ['code' => 'TooManyFingerPrintTemplateForDevice', 'message' => 'The maximum number of fingerprint templates that any user can save on the current device is exceeded.', 'http_code' => 400, 'description' => ''], ['code' => 'TooManyFingerPrintTemplateForUser', 'message' => 'The maximum number of fingerprint templates that you can save in the current environment is exceeded.', 'http_code' => 400, 'description' => ''], ['code' => 'TransitRouterService.TrNotExistInRegion', 'message' => 'The transit router need create in current region.', 'http_code' => 400, 'description' => 'There is no transit router in the current region in the cloud enterprise network, please go to the cloud enterprise network console to create a new router.'], ['code' => 'UnavailableDesktop', 'message' => 'Authentication failure.', 'http_code' => 400, 'description' => 'Authentication failed, unable to connect.'], ['code' => 'DesktopCanOnlyAssignedToOneUser', 'message' => 'The desktop can only assigned to one user.', 'http_code' => 400, 'description' => 'Forced connection is not allowed when multiple users are assigned to the cloud computer'], ['code' => 'GET_APP_RULE_LOCK_FAILED', 'message' => 'Get app rule lock failed.', 'http_code' => 400, 'description' => 'The operation is too frequent, please try again later.'], ['code' => 'INSUFFICIENT_QUOTA', 'message' => 'Insufficient quota.', 'http_code' => 400, 'description' => 'Insufficient user quota'], ], 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '-1', 'countWindow' => 1, 'regionId' => '*'], ], ], 'ram' => [ 'productCode' => 'ECD', 'productName' => 'Elastic Desktop Service', 'ramCodes' => ['ecd', 'eds-user', 'gws', 'wss'], 'ramLevel' => 'OPERATION', 'ramConditions' => [], 'ramActions' => [ [ 'apiName' => 'GetRedeemCodes', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:GetRedeemCodes', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'GetRequestToken', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:GetRequestToken', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'DescribeBenefits', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:DescribeBenefits', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'resourceTypes' => [], ], ];