'1.0', 'info' => ['style' => 'RPC', 'product' => 'saf', 'version' => '2019-05-21'], 'directories' => [ [ 'children' => ['ExecuteRequest'], 'type' => 'directory', 'title' => 'Public service invocation in China', ], [ 'children' => ['ExecuteRequestML', 'ExecuteRequestSG'], 'type' => 'directory', 'title' => 'Public service invocation outside China', ], [ 'children' => ['RequestDecision'], 'type' => 'directory', 'title' => 'Custom Event service invocation', ], ], 'components' => [ 'schemas' => [], ], 'apis' => [ 'ExecuteRequest' => [ 'summary' => 'Detects risks. This operation supports both public service invocations and custom event invocations.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid', 'abilityTreeCode' => '48720', 'abilityTreeNodes' => ['FEATUREsaf7L0MVB'], ], 'parameters' => [ [ 'name' => 'ServiceParameters', 'in' => 'query', 'schema' => ['description' => 'The service input parameters. The value is a JSON string. If you use a custom event, add the eventCode property.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '{"accountId": "1233***"}', 'title' => ''], ], [ 'name' => 'Service', 'in' => 'query', 'schema' => ['description' => 'The service product code. If you use a custom event, set this parameter to saf_de.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'account_abuse_pro', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'Code' => ['description' => 'The status code.', 'type' => 'integer', 'format' => 'int32', 'example' => '200', 'title' => ''], 'Message' => ['description' => 'The result message.', 'type' => 'string', 'example' => 'OK', 'title' => ''], 'Data' => ['description' => 'The data information, which contains fields such as tags, score, and extend.', 'type' => 'object', 'example' => '{"score": 80.4, "tags": "ra0601,rnk0002,rn0312"}', 'title' => ''], 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A5F41DC6-2070-5CE7-8B2D-7A23D882932D', 'title' => ''], 'AccessDeniedDetail' => [ 'description' => 'The details of the access denial.', 'type' => 'object', 'properties' => [ 'AuthAction' => ['description' => 'The specific operation that the requester attempted to perform, such as s3:PutObject or ec2:DescribeInstances.', 'type' => 'string', 'example' => 'yundun-saf:Execute', 'title' => ''], 'AuthPrincipalType' => ['description' => 'The identity type of the request principal. Valid values:'."\n" .'- SubUser: a RAM user created by the Alibaba Cloud account.'."\n" .'- AssumedRoleUser: a role-based temporary identity obtained through the AssumeRole operation.', 'type' => 'string', 'example' => 'SubUser', 'title' => ''], 'AuthPrincipalOwnerId' => ['description' => 'The UID of the Alibaba Cloud account to which the request principal belongs.', 'type' => 'string', 'example' => '178059440630****', 'title' => ''], 'AuthPrincipalDisplayName' => ['description' => 'The human-readable display name of the request principal, such as a username or role name.', 'type' => 'string', 'example' => '29918048924096****', 'title' => ''], 'PolicyType' => ['description' => 'The scope and type of the policy that caused the access denial. Valid values:'."\n" .'- AccountLevelIdentityBasedPolicy: an account-level identity-based policy that applies to the entire Alibaba Cloud account.'."\n" .'- ResourceGroupLevelIdentityBasedPolicy: a resource group-level identity-based policy that applies to a specified resource group.'."\n" .'- SessionPolicy: a session policy that takes effect as an additional policy during a temporary session.'."\n" .'- ControlPolicy: a control policy for core permission control.'."\n" .'- AssumeRolePolicy: a role trust policy that defines which entities are trusted by the role.', 'type' => 'string', 'example' => 'AccountLevelIdentityBasedPolicy', 'title' => ''], 'NoPermissionType' => ['description' => 'The specific type of the access denial. Valid values:'."\n" .'- ImplicitDeny: implicit deny. No explicit authorization is granted.'."\n" .'- ExplicitDeny: explicit deny. The policy explicitly denies the operation.', 'type' => 'string', 'example' => 'ImplicitDeny', 'title' => ''], 'EncodedDiagnosticMessage' => ['description' => 'The Base64-encoded diagnostic log for permission issues. This log is used for troubleshooting and automated analysis.', 'type' => 'string', 'example' => 'AQIBIAAAA...r+ow==', 'title' => ''], ], 'title' => '', 'example' => '', ], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Detect risks for multiple scenarios', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '15000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ExecuteRequest'], ], ], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'yundun-saf:Execute', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": 200,\\n \\"Message\\": \\"OK\\",\\n \\"Data\\": {\\n \\"score\\": 80.4,\\n \\"tags\\": \\"ra0601,rnk0002,rn0312\\"\\n },\\n \\"RequestId\\": \\"A5F41DC6-2070-5CE7-8B2D-7A23D882932D\\",\\n \\"AccessDeniedDetail\\": {\\n \\"AuthAction\\": \\"yundun-saf:Execute\\",\\n \\"AuthPrincipalType\\": \\"SubUser\\",\\n \\"AuthPrincipalOwnerId\\": \\"178059440630****\\",\\n \\"AuthPrincipalDisplayName\\": \\"29918048924096****\\",\\n \\"PolicyType\\": \\"AccountLevelIdentityBasedPolicy\\",\\n \\"NoPermissionType\\": \\"ImplicitDeny\\",\\n \\"EncodedDiagnosticMessage\\": \\"AQIBIAAAA...r+ow==\\"\\n }\\n}","type":"json"}]', ], 'ExecuteRequestML' => [ 'summary' => 'Calls the risk detection API. This API supports only custom event calls and is applicable only to the Malaysia region.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid', 'abilityTreeCode' => '48721', 'abilityTreeNodes' => ['FEATUREsaf6MRPQF'], ], 'parameters' => [ [ 'name' => 'ServiceParameters', 'in' => 'query', 'schema' => ['description' => 'The service input parameters. The value is a JSON-formatted string that contains the complete JSON information. You must add the eventCode property of the custom event.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '{"accountId": "1233***"}', 'title' => ''], ], [ 'name' => 'Service', 'in' => 'query', 'schema' => ['description' => 'The service product code. Because this API supports only custom events, set this parameter to saf_de.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'saf_de', 'title' => ''], ], [ 'name' => 'Lang', 'in' => 'query', 'schema' => ['description' => 'The language.', 'type' => 'string', 'required' => false, 'default' => 'en-us', 'example' => 'en', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'Code' => ['description' => 'The status code.', 'type' => 'integer', 'format' => 'int32', 'example' => '200', 'title' => ''], 'Message' => ['description' => 'The result message.', 'type' => 'string', 'example' => 'OK', 'title' => ''], 'Data' => ['description' => 'The data information, which contains fields such as tags, score, and extend.', 'type' => 'object', 'example' => '{"score": 80.4, "tags": "ra0601,rnk0002,rn0312"}', 'title' => ''], 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A5F41DC6-2070-5CE7-8B2D-7A23D882932D', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Call the decision engine in the malaysia cluster', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '2000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ExecuteRequestML'], ], ], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'yundun-saf:Execute', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": 200,\\n \\"Message\\": \\"OK\\",\\n \\"Data\\": {\\n \\"score\\": 80.4,\\n \\"tags\\": \\"ra0601,rnk0002,rn0312\\"\\n },\\n \\"RequestId\\": \\"A5F41DC6-2070-5CE7-8B2D-7A23D882932D\\"\\n}","type":"json"}]', ], 'ExecuteRequestSG' => [ 'summary' => 'Detects risks. This operation supports both public service invocations and custom event invocations.', 'methods' => ['post', 'get'], 'schemes' => ['https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid', 'abilityTreeCode' => '48722', 'abilityTreeNodes' => ['FEATUREsaf6MRPQF'], ], 'parameters' => [ [ 'name' => 'ServiceParameters', 'in' => 'query', 'schema' => ['description' => 'The service input parameters. The value is a JSON-formatted string that contains the complete JSON information. If you use a custom event, add the eventCode property.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '{"accountId": "1233***"}', 'title' => ''], ], [ 'name' => 'Service', 'in' => 'query', 'schema' => ['description' => 'The service product code. If you use a custom event, set this parameter to saf_de.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'account_abuse_intl_pro', 'title' => ''], ], [ 'name' => 'Lang', 'in' => 'query', 'schema' => ['description' => 'The language.', 'type' => 'string', 'required' => false, 'default' => 'en-us', 'example' => 'en', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'Code' => ['description' => 'The status code.', 'type' => 'integer', 'format' => 'int32', 'example' => '200', 'title' => ''], 'Message' => ['description' => 'The result message.', 'type' => 'string', 'example' => 'OK', 'title' => ''], 'Data' => ['description' => 'The data information, which contains fields such as tags, score, and extend.', 'type' => 'object', 'example' => '{"score": 80.4, "tags": "ra0601,rnk0002,rn0312"}', 'title' => ''], 'RequestId' => ['description' => 'The request ID.', 'type' => 'string', 'example' => 'A5F41DC6-2070-5CE7-8B2D-7A23D882932D', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'title' => 'Call the decision engine singapore cluster', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '2000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ExecuteRequestSG'], ], ], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'yundun-saf:Execute', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": 200,\\n \\"Message\\": \\"OK\\",\\n \\"Data\\": {\\n \\"score\\": 80.4,\\n \\"tags\\": \\"ra0601,rnk0002,rn0312\\"\\n },\\n \\"RequestId\\": \\"A5F41DC6-2070-5CE7-8B2D-7A23D882932D\\"\\n}","type":"json"}]', ], 'RequestDecision' => [ 'summary' => 'Detects risks. This operation supports only custom event calls.', 'methods' => ['post'], 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'read', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'none', 'riskType' => 'none', 'chargeType' => 'paid', 'abilityTreeCode' => '114081', 'abilityTreeNodes' => ['FEATUREsaf6MRPQF'], ], 'parameters' => [ [ 'name' => 'ServiceParameters', 'in' => 'query', 'schema' => ['description' => 'The service input parameters. The value is a JSON string that contains the complete JSON information.', 'type' => 'string', 'required' => false, 'example' => '{"accountId": "1233***"}', 'title' => ''], ], [ 'name' => 'EventCode', 'in' => 'query', 'schema' => ['description' => 'The event code.', 'type' => 'string', 'required' => false, 'example' => 'de_*', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ 'RequestId' => ['title' => '', 'description' => 'The request ID.', 'type' => 'string', 'example' => 'A5F41DC6-2070-5CE7-8B2D-7A23D882932D'], 'Code' => ['description' => 'The status code.', 'type' => 'integer', 'format' => 'int64', 'example' => '200', 'title' => ''], 'Message' => ['description' => 'The result message.', 'type' => 'string', 'example' => 'OK', 'title' => ''], 'Data' => ['description' => 'The data information, which includes fields such as tags, score, and extend.', 'type' => 'object', 'example' => '{"score": 80.4, "tags": "ra0601,rnk0002,rn0312"}', 'title' => ''], ], 'example' => '', ], ], ], 'title' => 'Call a decision engine custom event', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '2000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RequestDecision'], ], ], 'ramActions' => [ [ 'operationType' => 'none', 'ramAction' => [ 'action' => 'yundun-saf:Execute', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"A5F41DC6-2070-5CE7-8B2D-7A23D882932D\\",\\n \\"Code\\": 200,\\n \\"Message\\": \\"OK\\",\\n \\"Data\\": {\\n \\"score\\": 80.4,\\n \\"tags\\": \\"ra0601,rnk0002,rn0312\\"\\n }\\n}","type":"json"}]', ], ], 'endpoints' => [ ['regionId' => 'ap-southeast-1', 'regionName' => 'Singapore', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'saf.ap-southeast-1.aliyuncs.com', 'endpoint' => 'saf.ap-southeast-1.aliyuncs.com', 'vpc' => 'saf-vpc.ap-southeast-1.aliyuncs.com'], ['regionId' => 'ap-southeast-3', 'regionName' => 'Malaysia (Kuala Lumpur)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'saf.ap-southeast-3.aliyuncs.com', 'endpoint' => 'saf.ap-southeast-3.aliyuncs.com', 'vpc' => 'saf-vpc.ap-southeast-3.aliyuncs.com'], ['regionId' => 'cn-beijing', 'regionName' => 'China (Beijing)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'saf.cn-beijing.aliyuncs.com', 'endpoint' => 'saf.cn-beijing.aliyuncs.com', 'vpc' => 'saf-vpc.cn-beijing.aliyuncs.com'], ['regionId' => 'cn-hangzhou', 'regionName' => 'China (Hangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'saf.cn-hangzhou.aliyuncs.com', 'endpoint' => 'saf.cn-hangzhou.aliyuncs.com', 'vpc' => 'saf-vpc.cn-hangzhou.aliyuncs.com'], ['regionId' => 'cn-hongkong', 'regionName' => 'China (Hong Kong)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'saf.cn-hongkong.aliyuncs.com', 'endpoint' => 'saf.cn-hongkong.aliyuncs.com', 'vpc' => 'saf-vpc.cn-hongkong.aliyuncs.com'], ['regionId' => 'cn-shanghai', 'regionName' => 'China (Shanghai)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'saf.cn-shanghai.aliyuncs.com', 'endpoint' => 'saf.cn-shanghai.aliyuncs.com', 'vpc' => 'saf-vpc.cn-shanghai.aliyuncs.com'], ['regionId' => 'cn-shenzhen', 'regionName' => 'China (Shenzhen)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'saf.cn-shenzhen.aliyuncs.com', 'endpoint' => 'saf.cn-shenzhen.aliyuncs.com', 'vpc' => 'saf-vpc.cn-shenzhen.aliyuncs.com'], ['regionId' => 'cn-zhangjiakou', 'regionName' => 'China (Zhangjiakou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'saf.cn-zhangjiakou.aliyuncs.com', 'endpoint' => 'saf.cn-zhangjiakou.aliyuncs.com', 'vpc' => 'saf-vpc.cn-zhangjiakou.aliyuncs.com'], ['regionId' => 'us-west-1', 'regionName' => 'US (Silicon Valley)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'saf.us-west-1.aliyuncs.com', 'endpoint' => 'saf.us-west-1.aliyuncs.com', 'vpc' => 'saf-vpc.us-west-1.aliyuncs.com'], ['regionId' => 'us-east-1', 'regionName' => 'US (Virginia)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'saf.us-east-1.aliyuncs.com', 'endpoint' => 'saf.us-east-1.aliyuncs.com', 'vpc' => 'saf-vpc.us-east-1.aliyuncs.com'], ['regionId' => 'eu-central-1', 'regionName' => 'Germany (Frankfurt)', 'areaId' => 'europeAmerica', 'areaName' => 'Europe & Americas', 'public' => 'saf.eu-central-1.aliyuncs.com', 'endpoint' => 'saf.eu-central-1.aliyuncs.com', 'vpc' => 'saf-vpc.eu-central-1.aliyuncs.com'], ['regionId' => 'ap-south-1', 'regionName' => 'India (Mumbai) Closed', 'areaId' => 'middleEast', 'areaName' => 'Middle East', 'public' => 'saf.ap-south-1.aliyuncs.com', 'endpoint' => 'saf.ap-south-1.aliyuncs.com', 'vpc' => 'saf-vpc.ap-south-1.aliyuncs.com'], ], 'errorCodes' => [ ['code' => '10001', 'message' => 'The current operation is not authorized. Please authorize it on RAM console using primary account.', 'http_code' => 200, 'description' => 'The RAM user has no permissions to perform the operation. Grant permissions to the RAM user in the RAM console by using an Alibaba Cloud account.'], ['code' => '1004', 'message' => 'The format of default value is wrong. The default value of boolean type only allows true / false, case-insensitive. The default value of type double / int / long allows all numeric formats.', 'http_code' => 200, 'description' => 'The format of the default value is invalid. The default value of a Boolean parameter must be true or false. The value is case-insensitive. The default value of a Double, Integer, or Long parameter can be a digit in all formats.'], ['code' => '1101', 'message' => 'The network or system is abnormal. Please try again later. Error code: 1101', 'http_code' => 200, 'description' => 'A network or system error occurred. Try again later. Error code: 1101.'], ['code' => '1216', 'message' => 'The policy is being approved or the current policy state does not support the operation. Error code: 1216', 'http_code' => 200, 'description' => 'The policy is being reviewed or you cannot perform this operation on the policy in the current state. Error code: 1216.'], ['code' => '1302', 'message' => 'An error occurred in your request. Please try again later.', 'http_code' => 200, 'description' => 'Failed to process your request. Try again later.'], ['code' => '1401', 'message' => 'The decision engine has not been purchased yet. Please buy it and try again. Error code: 1401', 'http_code' => 200, 'description' => 'You have not bought a decision engine. Buy a decision engine and try again. Error code: 1401.'], ['code' => 'ConsoleSystemError_1009', 'message' => 'CSRF token has expired, please login again.', 'http_code' => 200, 'description' => 'The CSRF token has expired. Refresh the page and try again.'], ], 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '15000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ExecuteRequest'], ['threshold' => '2000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RequestDecision'], ['threshold' => '2000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ExecuteRequestML'], ['threshold' => '2000', 'countWindow' => 1, 'regionId' => '*', 'api' => 'ExecuteRequestSG'], ], ], 'ram' => [ 'productCode' => 'SAF', 'productName' => 'Fraud Detection', 'ramCodes' => ['yundun-saf'], 'ramLevel' => 'OPERATION', 'ramConditions' => [], 'ramActions' => [ [ 'apiName' => 'ExecuteRequestSG', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'yundun-saf:Execute', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'ExecuteRequestML', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'yundun-saf:Execute', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'GetToken', 'description' => '', 'operationType' => '', 'ramAction' => [ 'action' => 'yundun-saf:GetToken', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'RequestDecision', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'yundun-saf:Execute', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'ExecuteRequest', 'description' => '', 'operationType' => 'none', 'ramAction' => [ 'action' => 'yundun-saf:Execute', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'resourceTypes' => [], ], ];