summaryrefslogtreecommitdiff
path: root/data/en_us/ecd/2023-06-27/api-docs.php
blob: e189e781fedefd11e991769301cfe7b4862fa859 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
<?php return [
    'version' => '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' => [],
    ],
];