'1.0', 'info' => ['style' => 'RPC', 'product' => 'ecd', 'version' => '2021-06-02'], 'directories' => [ [ 'children' => ['GetOssStsToken', 'ParseSkillPackage', 'GetParseProgress', 'CreateTenantSkill', 'SetTenantSkillEnabled', 'DeleteTenantSkills'], 'type' => 'directory', 'title' => 'Skill management', ], [ 'children' => ['SetIdentitySkillAuth', 'ListSkillAuthedIdentities'], 'type' => 'directory', 'title' => 'Skill authorization management', ], [ 'children' => ['SetIdentitySkillSecurity', 'ListSecureSkillIdentities'], 'type' => 'directory', 'title' => 'Skill security management', ], [ 'children' => ['ListSkills'], 'title' => 'Others', 'type' => 'directory', ], ], 'components' => [ 'schemas' => [], ], 'apis' => [ 'CreateTenantSkill' => [ 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', 'systemTags' => ['operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'Slug', 'in' => 'query', 'schema' => ['description' => 'The slug identifier of the skill. This parameter is user-defined and must be unique within the tenant.', 'type' => 'string', 'docRequired' => true, 'required' => true, 'example' => 'find-skills****'."\n", 'title' => ''], ], [ 'name' => 'DisplayName', 'in' => 'query', 'schema' => ['description' => 'The display name.', 'type' => 'string', 'docRequired' => true, 'required' => true, 'example' => 'name****'."\n", 'title' => ''], ], [ 'name' => 'Description', 'in' => 'query', 'schema' => ['description' => 'The description of the skill. Maximum length: 500 characters.', 'type' => 'string', 'docRequired' => true, 'required' => true, 'example' => 'This skill is used for****'."\n", 'title' => ''], ], [ 'name' => 'SkillIcon', 'in' => 'query', 'schema' => ['description' => 'The skill icon.', 'type' => 'string', 'required' => false, 'example' => 'icon/****/****/****.png'."\n", 'title' => ''], ], [ 'name' => 'IconETag', 'in' => 'query', 'schema' => ['description' => 'The icon parsing tag. This parameter is required when SkillIcon is specified.', 'type' => 'string', 'required' => false, 'example' => '21E9A5B273CB8EC0675*********', 'title' => ''], ], [ 'name' => 'SkillVersion', 'in' => 'query', 'schema' => ['description' => 'The skill version.', 'type' => 'string', 'docRequired' => true, 'required' => true, 'example' => '0.0.1', 'title' => ''], ], [ 'name' => 'SkillChannel', 'in' => 'query', 'schema' => [ 'description' => 'The skill channel. Valid values:'."\n" .'- ENTERPRISE: Enterprise Edition.'."\n" .'- BUSINESS: Business Edition.', 'enumValueTitles' => ['ENTERPRISE' => 'Enterprise Edition.', 'BUSINESS' => 'Business Edition.'], 'type' => 'string', 'docRequired' => true, 'required' => true, 'example' => 'BUSINESS', 'title' => '', ], ], [ 'name' => 'TaskKey', 'in' => 'query', 'schema' => ['description' => 'The file parsing task key.', 'type' => 'string', 'docRequired' => true, 'required' => true, 'example' => 'E1CF3D69-529D-****', 'title' => ''], ], [ 'name' => 'ApiKey', 'in' => 'query', 'schema' => ['description' => 'The API key of the skill.', 'type' => 'string', 'required' => false, 'example' => 'akm-98f66829***'."\n", 'title' => ''], ], [ 'name' => 'EnvVars', 'in' => 'query', 'style' => 'json', 'schema' => [ 'description' => 'The environment variables.', 'type' => 'object', 'required' => false, 'additionalProperties' => ['description' => 'The environment variables.', 'type' => 'string', 'example' => '{\\"key\\":\\"value\\",\\"key\\":\\"value\\"}', 'title' => ''], 'title' => '', 'example' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1CBAFFAB-B697-4049-A9B1-67E1FC5F****', 'title' => ''], 'SkillId' => ['description' => 'The unique ID of the skill.', 'type' => 'string', 'example' => 's-04rj8mzqj1fu****', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Create tenant skill', 'summary' => 'Creates a tenant skill.', 'requestParamsDescription' => 'TaskKey parameter: Call the ParseSkillPackage operation to obtain the response, and then extract the value of TaskKey from the data field of the response object.'."\n" ."\n" .'Slug parameter: Call the GetParseProgress operation to obtain the response, and then extract the value of Slug from the Data object within the data field of the response object.', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'create', 'ramAction' => [ 'action' => 'ecd:CreateTenantSkill', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1CBAFFAB-B697-4049-A9B1-67E1FC5F****\\",\\n \\"SkillId\\": \\"s-04rj8mzqj1fu****\\"\\n}","type":"json"}]', ], 'DeleteTenantSkills' => [ 'summary' => 'Deletes skills in batches.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', 'systemTags' => ['operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'SkillIds', 'in' => 'query', 'style' => 'flat', 'schema' => [ 'description' => 'The list of skill IDs.', 'type' => 'array', 'items' => ['description' => 'The skill ID.', 'type' => 'string', 'required' => false, 'example' => 's-04rj8mzqj1fu****', 'title' => ''], 'required' => true, 'docRequired' => true, 'title' => '', 'example' => '', ], ], [ 'name' => 'SkillChannel', 'in' => 'query', 'schema' => [ 'description' => 'The skill channel. Valid values:'."\n" .'- ENTERPRISE: Enterprise edition.'."\n" .'- BUSINESS: Business edition.', 'enumValueTitles' => ['ENTERPRISE' => 'Enterprise edition.', 'BUSINESS' => 'Business edition.'], 'type' => 'string', 'docRequired' => true, 'required' => true, 'example' => 'ENTERPRISE', 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1CBAFFAB-B697-4049-A9B1-67E1FC5F****', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Delete skills in batches', 'requestParamsDescription' => 'SkillIds parameter: Call the ListSkills operation to obtain the response, and then extract the SkillId values from the Skills list in the data field of the response object.', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'delete', 'ramAction' => [ 'action' => 'ecd:DeleteTenantSkills', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1CBAFFAB-B697-4049-A9B1-67E1FC5F****\\"\\n}","type":"json"}]', ], 'GetOssStsToken' => [ 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'systemTags' => ['operationType' => 'get', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'FileType', 'in' => 'query', 'schema' => [ 'type' => 'string', 'required' => false, 'docRequired' => true, 'description' => '', 'enumValueTitles' => ['SKILL' => '技能包', 'ICON' => '图标'], 'example' => 'SKILL', 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['type' => 'string', 'description' => '', 'example' => '1CBAFFAB-B697-4049-A9B1-67E1FC5F****', 'title' => ''], 'AccessKeyId' => ['type' => 'string', 'description' => '', 'example' => 'STS.NZeNA1kdCm4QPuAJ9kN******', 'title' => ''], 'AccessKeySecret' => ['type' => 'string', 'description' => '', 'example' => '9EStV7fgkSQsPuBi576EmNQXLxJGddL2EGyX********', 'title' => ''], 'SecurityToken' => ['type' => 'string', 'description' => '', 'example' => 'CAISvAN1q6Ft5B2yfSjIr5n2Bez81ZRTgqOGZn6FkHBnXf9qgI6apjz2IH*******', 'title' => ''], 'Bucket' => ['type' => 'string', 'description' => '', 'example' => 'prod-wy-*****', 'title' => ''], 'OssRegion' => ['type' => 'string', 'description' => '', 'example' => 'oss-cn-hangzhou', 'title' => ''], 'ObjectKeyPrefix' => ['type' => 'string', 'description' => '', 'example' => 'tmp/skill/tenant/1483****/', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => '', 'summary' => '', 'description' => '获取到的SecurityToken有效期为15分钟。', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'get', 'ramAction' => [ 'action' => 'ecd:GetOssStsToken', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1CBAFFAB-B697-4049-A9B1-67E1FC5F****\\",\\n \\"AccessKeyId\\": \\"STS.NZeNA1kdCm4QPuAJ9kN******\\",\\n \\"AccessKeySecret\\": \\"9EStV7fgkSQsPuBi576EmNQXLxJGddL2EGyX********\\",\\n \\"SecurityToken\\": \\"CAISvAN1q6Ft5B2yfSjIr5n2Bez81ZRTgqOGZn6FkHBnXf9qgI6apjz2IH*******\\",\\n \\"Bucket\\": \\"prod-wy-*****\\",\\n \\"OssRegion\\": \\"oss-cn-hangzhou\\",\\n \\"ObjectKeyPrefix\\": \\"tmp/skill/tenant/1483****/\\"\\n}","type":"json"}]', ], 'GetParseProgress' => [ 'summary' => 'Retrieves the parsed content of a skill package.', 'methods' => ['get', 'post'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'TaskKey', 'in' => 'query', 'schema' => ['description' => 'The task key for parsing the skill package.', 'type' => 'string', 'required' => true, 'example' => '2E7D8B71-2677-1B4C-9E25-A88B9C5******', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1CBAFFAB-B697-4049-A9B1-67E1FC5F****', 'title' => ''], 'Data' => [ 'description' => 'The response data object for parsing the skill package.', 'type' => 'object', 'properties' => [ 'TaskKey' => ['description' => 'The task key for parsing the skill package.', 'type' => 'string', 'example' => '2E7D8B71-2677-1B4C-9E25-A88B9C5******', 'title' => ''], 'Status' => [ 'description' => 'The task status. Valid values:'."\n" .'- PARSING_METADATA: parsing in progress.'."\n" .'- COMPLETED: completed.'."\n" .'- FAILED: failed.', 'enumValueTitles' => ['PARSING_METADATA' => 'Parsing in progress.', 'COMPLETED' => 'Completed.', 'FAILED' => 'Failed.'], 'type' => 'string', 'example' => 'COMPLETED', 'title' => '', ], 'SkillName' => ['description' => 'The name in the SKILL.md file.', 'type' => 'string', 'example' => 'name****', 'title' => ''], 'Slug' => ['description' => 'The skill slug identifier. This is user-defined and unique within the tenant dimension.', 'type' => 'string', 'example' => 'admapix******', 'title' => ''], 'Version' => ['description' => 'The version number.', 'type' => 'string', 'example' => '1.0.0', 'title' => ''], 'RequiredEnvVars' => [ 'type' => 'array', 'items' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], 'description' => '', 'title' => '', 'example' => '', ], 'RequiresApiKey' => ['type' => 'boolean', 'description' => '', 'title' => '', 'example' => ''], 'Description' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], 'ErrorCode' => ['description' => 'The error code returned when an execution exception occurs.', 'type' => 'string', 'example' => 'Package.ReadFailed', 'title' => ''], 'ErrorMessage' => ['description' => 'The error message returned when an execution exception occurs.', 'type' => 'string', 'example' => 'Failed to read skill package', 'title' => ''], ], 'title' => '', 'example' => '', ], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Query parsing progress', 'description' => 'Call the ParseSkillPackage operation first. Poll this operation every 3 seconds.', 'requestParamsDescription' => 'TaskKey parameter: After calling the ParseSkillPackage operation and obtaining the response, extract the value of the TaskKey field from the data object in the response.', 'responseParamsDescription' => 'Slug parameter: After calling the GetParseProgress operation and obtaining the response, extract the value of the Slug field from the Data object within the data field of the response.', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:GetParseProgress', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1CBAFFAB-B697-4049-A9B1-67E1FC5F****\\",\\n \\"Data\\": {\\n \\"TaskKey\\": \\"2E7D8B71-2677-1B4C-9E25-A88B9C5******\\",\\n \\"Status\\": \\"COMPLETED\\",\\n \\"SkillName\\": \\"name****\\",\\n \\"Slug\\": \\"admapix******\\",\\n \\"Version\\": \\"1.0.0\\",\\n \\"RequiredEnvVars\\": [\\n \\"\\"\\n ],\\n \\"RequiresApiKey\\": false,\\n \\"Description\\": \\"\\",\\n \\"ErrorCode\\": \\"Package.ReadFailed\\",\\n \\"ErrorMessage\\": \\"Failed to read skill package\\"\\n }\\n}","type":"json"}]', ], 'ListSecureSkillIdentities' => [ 'summary' => 'Queries the list of identities for which security policies are enabled.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'PageSize', 'in' => 'query', 'schema' => ['description' => 'The number of entries per page. Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '10', 'title' => ''], ], [ 'name' => 'PageNumber', 'in' => 'query', 'schema' => ['description' => 'The current page number.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ 'name' => 'SkillChannel', 'in' => 'query', 'schema' => [ 'description' => 'The skill channel. Valid values:'."\n" ."\n" .'- ENTERPRISE: Enterprise edition.'."\n" .'- BUSINESS: Business edition.', 'enumValueTitles' => ['ENTERPRISE' => 'Enterprise edition.', 'BUSINESS' => 'Business edition.'], 'type' => 'string', 'required' => true, 'example' => 'ENTERPRISE', 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '51592A88-0F2C-55E6-AD2C-2AD9C10D****', 'title' => ''], 'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], 'Identities' => [ 'description' => 'The list of resource information.', 'type' => 'array', 'items' => ['description' => 'The resource ID.', 'type' => 'string', 'example' => 'ecd-6af3rdkv9ttqqb***', 'title' => ''], 'title' => '', 'example' => '', ], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Query resources with custom installation skill permissions', 'description' => 'The resource type supports only cloud computers.', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:ListSecureSkillIdentities', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"51592A88-0F2C-55E6-AD2C-2AD9C10D****\\",\\n \\"TotalCount\\": 20,\\n \\"Identities\\": [\\n \\"ecd-6af3rdkv9ttqqb***\\"\\n ]\\n}","type":"json"}]', ], 'ListSkillAuthedIdentities' => [ 'summary' => 'Queries the list of identities authorized for a skill.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'SkillId', 'in' => 'query', 'schema' => ['description' => 'The unique identifier of the skill.', 'type' => 'string', 'required' => true, 'example' => 's-04rj8mzqj1fu****', 'title' => ''], ], [ 'name' => 'PageSize', 'in' => 'query', 'schema' => ['description' => 'The number of entries per page. Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], ], [ 'name' => 'PageNumber', 'in' => 'query', 'schema' => ['description' => 'The current page number.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], [ 'name' => 'SkillChannel', 'in' => 'query', 'schema' => [ 'description' => 'The skill channel. Valid values:'."\n" ."\n" .'- ENTERPRISE: enterprise edition'."\n" .'- BUSINESS: business edition', 'enumValueTitles' => ['ENTERPRISE' => 'Enterprise edition.', 'BUSINESS' => 'Business edition.'], 'type' => 'string', 'required' => true, 'example' => 'ENTERPRISE', 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '5CC5E450-FC43-4F5B-B540-9964BD*****', 'title' => ''], 'TotalCount' => ['description' => 'The total number of entries returned.', 'type' => 'integer', 'format' => 'int64', 'example' => '20', 'title' => ''], 'Identities' => [ 'description' => 'The list of authorized objects.', 'type' => 'array', 'items' => [ 'description' => 'The authorized object.', 'type' => 'object', 'properties' => [ 'IdentityId' => ['description' => 'The ID of the authorized object.', 'type' => 'string', 'example' => 'ecd-b9ej3xiok4tjbgf9x****', 'title' => ''], 'AutoInstall' => [ 'description' => 'Indicates whether automatic installation is enabled. Valid values:'."\n" ."\n" .'- true: Automatic installation is enabled.'."\n" .'- false: Automatic installation is disabled.', 'enumValueTitles' => ['true' => 'Yes.', 'false' => 'No.'], 'type' => 'boolean', 'example' => 'true', 'title' => '', ], ], 'title' => '', 'example' => '', ], 'title' => '', 'example' => '', ], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Query authorized objects by skill', 'description' => 'Authorized objects support only cloud computers.', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:ListSkillAuthedIdentities', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"5CC5E450-FC43-4F5B-B540-9964BD*****\\",\\n \\"TotalCount\\": 20,\\n \\"Identities\\": [\\n {\\n \\"IdentityId\\": \\"ecd-b9ej3xiok4tjbgf9x****\\",\\n \\"AutoInstall\\": true\\n }\\n ]\\n}","type":"json"}]', ], 'ListSkills' => [ 'summary' => 'Queries the list of skills.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'systemTags' => ['operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'SupplierType', 'in' => 'query', 'schema' => [ 'description' => 'The supply type.', 'enumValueTitles' => ['WUYING' => 'Wuying upload.', 'TENANT' => 'tenant upload.'], 'type' => 'string', 'docRequired' => true, 'required' => true, 'example' => 'WUYING', 'title' => '', ], ], [ 'name' => 'SkillChannel', 'in' => 'query', 'schema' => [ 'description' => 'The skill channel.', 'enumValueTitles' => ['ENTERPRISE' => 'Enterprise Edition.', 'BUSINESS' => 'Business Edition.'], 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'BUSINESS', 'title' => '', ], ], [ 'name' => 'SkillIds', 'in' => 'query', 'style' => 'flat', 'schema' => [ 'description' => 'The list of skill IDs.', 'type' => 'array', 'items' => ['description' => 'The skill ID.', 'type' => 'string', 'required' => false, 'example' => 's-04rj8mzqj1fu****', 'title' => ''], 'required' => false, 'title' => '', 'example' => '', ], ], [ 'name' => 'PageSize', 'in' => 'query', 'schema' => ['description' => 'The maximum number of rows per page in a paged query. Default value: 20.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '20', 'title' => ''], ], [ 'name' => 'PageNumber', 'in' => 'query', 'schema' => ['description' => 'The page number of the current page in a paged query.', 'type' => 'integer', 'format' => 'int32', 'required' => false, 'example' => '1', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1CBAFFAB-B697-4049-A9B1-67E1FC5F****', 'title' => ''], 'TotalCount' => ['description' => 'The total number of query results.', 'type' => 'integer', 'format' => 'int64', 'example' => '15', 'title' => ''], 'Skills' => [ 'description' => 'The list of skill details.', 'type' => 'array', 'items' => [ 'description' => 'The skill details object.', 'type' => 'object', 'properties' => [ 'SkillId' => ['description' => 'The unique identifier of the skill.', 'type' => 'string', 'example' => 's-04rj8mzqj1fu****'."\n", 'title' => ''], 'SkillName' => ['description' => 'The name in the SKILL.md file.', 'type' => 'string', 'example' => 'name****', 'title' => ''], 'SkillIconUrl' => ['description' => 'The URL of the skill icon.', 'type' => 'string', 'example' => 'https://***-***-****', 'title' => ''], 'DisplayName' => ['description' => 'The display name.', 'type' => 'string', 'example' => 'name****', 'title' => ''], 'SupplierType' => [ 'description' => 'The supply type.', 'enumValueTitles' => ['WUYING' => 'Wuying upload.', 'TENANT' => 'tenant upload.'], 'type' => 'string', 'example' => 'TENANT', 'title' => '', ], 'Author' => ['description' => 'The author.', 'type' => 'string', 'example' => 'Li***', 'title' => ''], 'SourceMarket' => [ 'description' => 'The source marketplace code.', 'enumValueTitles' => ['CLAWHUB' => 'ClawHub', 'ALIYUN' => 'Alibaba Cloud.', 'DINGTALK_AI' => 'DingTalk AI Capability Center.', 'MODELSCOPE' => 'ModelScope'], 'type' => 'string', 'example' => 'CLAWHUB', 'title' => '', ], 'SourceMarketName' => ['description' => 'The source marketplace name.', 'type' => 'string', 'example' => 'ClawHub', 'title' => ''], 'Description' => ['description' => 'The description of the skill.', 'type' => 'string', 'example' => 'This skill is used for****', 'title' => ''], 'GmtCreated' => ['description' => 'The creation time.', 'type' => 'string', 'example' => '2026-04-28T10:32:53Z', 'title' => ''], 'Slug' => ['description' => 'The slug identifier of the skill. This value is user-defined and unique within the tenant.', 'type' => 'string', 'example' => 'find-skills****', 'title' => ''], 'DefaultVersion' => ['description' => 'The currently effective version number. If no version is effective, an empty value is returned.', 'type' => 'string', 'example' => '1.0.0', 'title' => ''], 'Enable' => [ 'description' => 'Indicates whether the skill is enabled.', 'enumValueTitles' => ['true' => 'Enabled.', 'false' => 'Not enabled.'], 'type' => 'boolean', 'example' => 'true', 'title' => '', ], 'ApiKey' => ['description' => 'The API key of the skill.', 'type' => 'string', 'example' => 'akm-98f66829***', 'title' => ''], 'EnvVars' => [ 'description' => 'The environment variables.', 'type' => 'object', 'additionalProperties' => ['description' => 'The environment variables.', 'type' => 'string', 'example' => '{\\"key\\":\\"value\\",\\"key\\":\\"value\\"}'."\n", 'title' => ''], 'title' => '', 'example' => '', ], 'SkillVersions' => [ 'type' => 'array', 'items' => [ 'type' => 'object', 'properties' => [ 'Version' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], 'PublishStatus' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], 'SecurityScanStatus' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], 'SecurityScanFailReason' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], 'SecurityScanScore' => ['type' => 'integer', 'format' => 'int32', 'description' => '', 'title' => '', 'example' => ''], 'ChangeLog' => ['type' => 'string', 'description' => '', 'title' => '', 'example' => ''], 'CreatedAt' => ['type' => 'integer', 'format' => 'int64', 'description' => '', 'title' => '', 'example' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], 'description' => '', 'title' => '', 'example' => '', ], ], 'title' => '', 'example' => '', ], 'title' => '', 'example' => '', ], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'List skills', 'responseParamsDescription' => 'Slug parameter: Call the GetParseProgress operation to obtain the response. Then, extract the value of Slug from the Data object in the data field of the response.', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:ListSkills', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1CBAFFAB-B697-4049-A9B1-67E1FC5F****\\",\\n \\"TotalCount\\": 15,\\n \\"Skills\\": [\\n {\\n \\"SkillId\\": \\"s-04rj8mzqj1fu****\\\\n\\",\\n \\"SkillName\\": \\"name****\\",\\n \\"SkillIconUrl\\": \\"https://***-***-****\\",\\n \\"DisplayName\\": \\"name****\\",\\n \\"SupplierType\\": \\"TENANT\\",\\n \\"Author\\": \\"Li***\\",\\n \\"SourceMarket\\": \\"CLAWHUB\\",\\n \\"SourceMarketName\\": \\"ClawHub\\",\\n \\"Description\\": \\"This skill is used for****\\",\\n \\"GmtCreated\\": \\"2026-04-28T10:32:53Z\\",\\n \\"Slug\\": \\"find-skills****\\",\\n \\"DefaultVersion\\": \\"1.0.0\\",\\n \\"Enable\\": true,\\n \\"ApiKey\\": \\"akm-98f66829***\\",\\n \\"EnvVars\\": {\\n \\"key\\": \\"{\\\\\\\\\\\\\\"key\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\",\\\\\\\\\\\\\\"key\\\\\\\\\\\\\\":\\\\\\\\\\\\\\"value\\\\\\\\\\\\\\"}\\\\n\\"\\n },\\n \\"SkillVersions\\": [\\n {\\n \\"Version\\": \\"\\",\\n \\"PublishStatus\\": \\"\\",\\n \\"SecurityScanStatus\\": \\"\\",\\n \\"SecurityScanFailReason\\": \\"\\",\\n \\"SecurityScanScore\\": 0,\\n \\"ChangeLog\\": \\"\\",\\n \\"CreatedAt\\": 0\\n }\\n ]\\n }\\n ]\\n}","type":"json"}]', ], 'ParseSkillPackage' => [ 'summary' => 'Parses a skill package.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', 'systemTags' => ['operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'OssObjectKey', 'in' => 'query', 'schema' => ['description' => 'The OSS path of the skill package.', 'type' => 'string', 'required' => true, 'example' => 'tmp/skill/wu***/17***.zip', 'title' => ''], ], [ 'name' => 'OssObjectETag', 'in' => 'query', 'schema' => ['description' => 'The OSS ETag returned after the file is uploaded to OSS.', 'type' => 'string', 'required' => true, 'example' => '1D9920C4858A60B70705A8765A******', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '05C2791F-41A7-5E7C-B5E4-1401FD0E****', 'title' => ''], 'TaskKey' => ['description' => 'The key of the skill package parsing task.', 'type' => 'string', 'example' => '2E7D8B71-2677-1B4C-9E25-A88B9******', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Parse a skill package', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'create', 'ramAction' => [ 'action' => 'ecd:ParseSkillPackage', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"05C2791F-41A7-5E7C-B5E4-1401FD0E****\\",\\n \\"TaskKey\\": \\"2E7D8B71-2677-1B4C-9E25-A88B9******\\"\\n}","type":"json"}]', ], 'SetIdentitySkillAuth' => [ 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'Identities', 'in' => 'query', 'style' => 'flat', 'schema' => [ 'description' => 'The list of authorized objects.', 'type' => 'array', 'items' => [ 'description' => 'The authorized object information.', 'type' => 'object', 'properties' => [ 'IdentityId' => ['description' => 'The ID of the authorized object.', 'type' => 'string', 'required' => true, 'example' => 'ecd-av4u9m5ghko26****', 'title' => ''], 'RegionId' => ['description' => 'The region ID.', 'type' => 'string', 'required' => true, 'example' => 'cn-hangzhou', 'title' => ''], ], 'required' => true, 'title' => '', 'example' => '', ], 'required' => true, 'maxItems' => 100, 'title' => '', 'example' => '', ], ], [ 'name' => 'OperationType', 'in' => 'query', 'schema' => [ 'description' => 'The operation type.', 'enumValueTitles' => ['SET_AUTH' => 'SET_AUTH', 'CANCEL_AUTH' => 'CANCEL_AUTH'], 'type' => 'string', 'required' => true, 'example' => 'SET_AUTH', 'title' => '', ], ], [ 'name' => 'SkillIds', 'in' => 'query', 'style' => 'flat', 'schema' => [ 'description' => 'The list of skill IDs.', 'type' => 'array', 'items' => ['description' => 'The skill ID.', 'type' => 'string', 'required' => true, 'example' => 's-04zzrfqdku5jb****', 'title' => ''], 'required' => true, 'maxItems' => 100, 'title' => '', 'example' => '', ], ], [ 'name' => 'SkillChannel', 'in' => 'query', 'schema' => [ 'description' => 'The skill channel. Valid values:'."\n" ."\n" .'- ENTERPRISE: enterprise edition'."\n" .'- BUSINESS: business edition', 'enumValueTitles' => ['ENTERPRISE' => 'Enterprise edition.', 'BUSINESS' => 'Business edition.'], 'type' => 'string', 'required' => true, 'example' => 'ENTERPRISE', 'title' => '', ], ], [ 'name' => 'AutoInstall', 'in' => 'query', 'schema' => [ 'description' => 'Specifies whether to automatically install. Valid values:'."\n" ."\n" .'- true: yes'."\n" .'- false: no', 'enumValueTitles' => ['true' => 'Yes.', 'false' => 'No.'], 'type' => 'boolean', 'required' => true, 'example' => 'true', 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A87DBB05-653A-5E4B-B72B-5F4A1E07****', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Set skill permissions for an authorized object', 'description' => 'The authorized object supports only cloud computers.', 'summary' => 'Sets skill permissions for an identity.', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'update', 'ramAction' => [ 'action' => 'ecd:SetIdentitySkillAuth', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A87DBB05-653A-5E4B-B72B-5F4A1E07****\\"\\n}","type":"json"}]', ], 'SetIdentitySkillSecurity' => [ 'summary' => 'Sets the security policy for identity skills.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'IdentityIds', 'in' => 'query', 'style' => 'flat', 'schema' => [ 'description' => 'The list of resource information.', 'type' => 'array', 'items' => [ 'description' => 'The resource information object.', 'type' => 'object', 'properties' => [ 'IdentityId' => ['description' => 'The resource information ID.', 'type' => 'string', 'required' => true, 'example' => 'ecd-b9ej3xiok4tjbgf9x', 'title' => ''], 'RegionId' => ['description' => 'The region ID.', 'type' => 'string', 'required' => true, 'example' => 'cn-shanghai', 'title' => ''], ], 'required' => true, 'title' => '', 'example' => '', ], 'required' => true, 'title' => '', 'example' => '', ], ], [ 'name' => 'Enabled', 'in' => 'query', 'schema' => [ 'description' => 'Specifies whether to enable the skill installation permission. Valid values:'."\n" ."\n" .'- true: enabled.'."\n" .'- false: disabled.', 'enumValueTitles' => ['true' => 'Enabled.', 'false' => 'Disabled.'], 'type' => 'boolean', 'required' => true, 'example' => 'true', 'title' => '', ], ], [ 'name' => 'SkillChannel', 'in' => 'query', 'schema' => [ 'description' => 'The skill channel. Valid values:'."\n" ."\n" .'- ENTERPRISE: enterprise edition.'."\n" .'- BUSINESS: business edition.', 'enumValueTitles' => ['ENTERPRISE' => 'Enterprise edition.', 'BUSINESS' => 'Business edition.'], 'type' => 'string', 'required' => true, 'example' => 'ENTERPRISE', 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => '1CBAFFAB-B697-4049-A9B1-67E1FC5F****', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Set the security policy for resources', 'description' => 'The resource type supports only cloud computers.', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'update', 'ramAction' => [ 'action' => 'ecd:SetIdentitySkillSecurity', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1CBAFFAB-B697-4049-A9B1-67E1FC5F****\\"\\n}","type":"json"}]', ], 'SetTenantSkillEnabled' => [ 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'write', 'systemTags' => ['operationType' => 'update', 'riskType' => 'none', 'chargeType' => 'free'], 'parameters' => [ [ 'name' => 'SkillIds', 'in' => 'query', 'style' => 'flat', 'schema' => [ 'type' => 'array', 'items' => ['type' => 'string', 'description' => '', 'required' => false, 'example' => 's-051j4osziq4c*****', 'title' => ''], 'docRequired' => true, 'description' => '', 'required' => true, 'title' => '', 'example' => '', ], ], [ 'name' => 'Enabled', 'in' => 'query', 'schema' => [ 'type' => 'boolean', 'docRequired' => true, 'description' => '', 'required' => true, 'enumValueTitles' => ['true' => '启用', 'false' => '禁用'], 'example' => 'true', 'title' => '', ], ], [ 'name' => 'SkillChannel', 'in' => 'query', 'schema' => [ 'type' => 'string', 'docRequired' => true, 'description' => '', 'required' => true, 'enumValueTitles' => ['ENTERPRISE' => '商业版', 'BUSINESS' => '企业版'], 'example' => 'BUSINESS', 'title' => '', ], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'RequestId' => ['type' => 'string', 'description' => '', 'example' => '1CBAFFAB-B697-4049-A9B1-67E1FC5F****', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => '', 'requestParamsDescription' => 'SkillIds 参数:通过调用 ListSkills 接口获取返回结果后,从响应对象的 data 字段层级中提取出 Skills 列表里的 SkillId 的值。', 'summary' => '', 'changeSet' => [], 'ramActions' => [ [ 'operationType' => 'update', 'ramAction' => [ 'action' => 'ecd:SetTenantSkillEnabled', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"1CBAFFAB-B697-4049-A9B1-67E1FC5F****\\"\\n}","type":"json"}]', ], ], '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' => [], 'ram' => [ 'productCode' => 'ECD', 'productName' => 'Elastic Desktop Service', 'ramCodes' => ['ecd', 'eds-user', 'gws', 'wss'], 'ramLevel' => 'OPERATION', 'ramConditions' => [], 'ramActions' => [ [ 'apiName' => 'ParseSkillPackage', 'description' => '', 'operationType' => 'create', 'ramAction' => [ 'action' => 'ecd:ParseSkillPackage', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'ListSkills', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:ListSkills', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'ListSecureSkillIdentities', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:ListSecureSkillIdentities', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'GetParseProgress', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:GetParseProgress', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'SetTenantSkillEnabled', 'description' => '', 'operationType' => 'update', 'ramAction' => [ 'action' => 'ecd:SetTenantSkillEnabled', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'ListSkillAuthedIdentities', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'ecd:ListSkillAuthedIdentities', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'SetIdentitySkillAuth', 'description' => '', 'operationType' => 'update', 'ramAction' => [ 'action' => 'ecd:SetIdentitySkillAuth', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'SetIdentitySkillSecurity', 'description' => '', 'operationType' => 'update', 'ramAction' => [ 'action' => 'ecd:SetIdentitySkillSecurity', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'CreateTenantSkill', 'description' => '', 'operationType' => 'create', 'ramAction' => [ 'action' => 'ecd:CreateTenantSkill', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'GetOssStsToken', 'description' => '', 'operationType' => 'get', 'ramAction' => [ 'action' => 'ecd:GetOssStsToken', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'DeleteTenantSkills', 'description' => '', 'operationType' => 'delete', 'ramAction' => [ 'action' => 'ecd:DeleteTenantSkills', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'ECD', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'resourceTypes' => [], ], ];