'1.0', 'info' => ['style' => 'RPC', 'product' => 'safconsole', 'version' => '2021-01-12'], 'directories' => ['RevokeFeedback', 'SendFeedback', 'UploadSampleApi'], 'components' => [ 'schemas' => [], ], 'apis' => [ 'RevokeFeedback' => [ 'summary' => 'Deletes an external community sample from the China risk identification service.', 'methods' => ['post', 'get'], 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'delete', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '79133', 'abilityTreeNodes' => ['FEATUREsafT73ZWM'], ], 'parameters' => [ [ 'name' => 'SampleType', 'in' => 'formData', 'schema' => ['description' => 'The sample type. Set this parameter to PHONE for phone number samples, EMAIL for email samples, or ACCOUNT for account samples.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'PHONE'."\n", 'title' => ''], ], [ 'name' => 'Value', 'in' => 'formData', 'schema' => ['description' => 'The sample value.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => '10000000000', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'Code' => ['description' => 'The API status or POP error code. Valid values:'."\n" .'- 2xx: succeeded.'."\n" .'- 3xx: redirected.'."\n" .'- 4xx: request error.'."\n" .'- 5xx: server error.', 'type' => 'string', 'example' => '200', 'title' => ''], 'Message' => ['description' => 'The response message.', 'type' => 'string', 'example' => 'success', 'title' => ''], 'RequestId' => ['description' => 'A common parameter. Each request has a unique ID, which is active for troubleshooting and locating issues.', 'type' => 'string', 'example' => '4A91D2D1-AEC9-1658-ABCE-5A39DE66A5C2', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'errorCodes' => [ 200 => [ ['errorCode' => 'NotAuthorized', 'errorMessage' => 'You are not authorized to call the service. The service has expired, the quota for the subscription is reached, or you have not purchased the service.', 'description' => ''], ], ], 'title' => 'Delete external sample', 'changeSet' => [], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RevokeFeedback'], ], ], 'ramActions' => [ [ 'operationType' => 'delete', 'ramAction' => [ 'action' => 'yundun-saf:RevokeFeedback', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": \\"200\\",\\n \\"Message\\": \\"success\\",\\n \\"RequestId\\": \\"4A91D2D1-AEC9-1658-ABCE-5A39DE66A5C2\\"\\n}","type":"json"}]', ], 'SendFeedback' => [ 'summary' => 'Creates an external community sample for the risk identification service.', 'methods' => ['post', 'get'], 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'deprecated' => false, 'systemTags' => [ 'operationType' => 'create', 'riskType' => 'none', 'chargeType' => 'free', 'abilityTreeCode' => '79134', 'abilityTreeNodes' => ['FEATUREsafT73ZWM'], ], 'parameters' => [ [ 'name' => 'SampleType', 'in' => 'query', 'schema' => ['description' => 'The sample type. Set this parameter to PHONE for phone number samples, EMAIL for email samples, or ACCOUNT for account samples.', 'type' => 'string', 'required' => true, 'docRequired' => true, 'example' => 'PHONE', 'title' => ''], ], [ 'name' => 'RiskLabel', 'in' => 'query', 'schema' => ['description' => 'The sample labels. User-defined, separated by commas.', 'type' => 'string', 'required' => false, 'docRequired' => true, 'example' => 'OTHERS', 'title' => ''], ], [ 'name' => 'Value', 'in' => 'query', 'schema' => ['description' => 'The sample value.', 'type' => 'string', 'required' => true, 'docRequired' => false, 'example' => '10000000000', 'title' => ''], ], [ 'name' => 'Reason', 'in' => 'query', 'schema' => ['description' => 'The risk reason.', 'type' => 'string', 'docRequired' => false, 'required' => false, 'example' => 'Abnormal transaction behavior.', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'type' => 'object', 'properties' => [ 'Code' => ['description' => 'The API status or POP error code. Valid values: 2xx: success. 3xx: redirection. 4xx: request error. 5xx: server error.', 'type' => 'integer', 'format' => 'int32', 'example' => '200', 'title' => ''], 'Message' => ['description' => 'The response message.', 'type' => 'string', 'example' => 'success', 'title' => ''], 'RequestId' => ['description' => 'A common parameter. Each request has a unique ID, which is active for troubleshooting and locating issues.', 'type' => 'string', 'example' => '4A91D2D1-AEC9-1658-ABCE-5A39DE66A5C2', 'title' => ''], ], 'description' => '', 'title' => '', 'example' => '', ], ], ], 'errorCodes' => [ 200 => [ ['errorCode' => 'NotAuthorized', 'errorMessage' => 'You are not authorized to call the service. The service has expired, the quota for the subscription is reached, or you have not purchased the service.', 'description' => ''], ], ], 'title' => 'Create an external sample', 'changeSet' => [ ['createdAt' => '2025-09-23T04:52:17.000Z', 'description' => 'Request parameters changed'], ], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendFeedback'], ], ], 'ramActions' => [ [ 'operationType' => 'create', 'ramAction' => [ 'action' => 'yundun-saf:SendFeedback', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"Code\\": 200,\\n \\"Message\\": \\"success\\",\\n \\"RequestId\\": \\"4A91D2D1-AEC9-1658-ABCE-5A39DE66A5C2\\"\\n}","type":"json"}]', ], 'UploadSampleApi' => [ 'summary' => 'Uploads samples for the risk identification service.', 'methods' => ['post', 'get'], 'schemes' => ['http', 'https'], 'security' => [ [ 'AK' => [], ], ], 'operationType' => 'readAndWrite', 'systemTags' => [ 'operationType' => 'create', 'abilityTreeCode' => '207197', 'abilityTreeNodes' => ['FEATUREsafT73ZWM'], 'tenantRelevance' => 'publicInformation', ], 'parameters' => [ [ 'name' => 'SampleType', 'in' => 'query', 'schema' => ['description' => 'The type of the sample. Valid values:'."\n" ."\n" .'- block: blacklist'."\n" .'- pass: whitelist.', 'type' => 'string', 'required' => true, 'example' => 'block', 'title' => ''], ], [ 'name' => 'DataType', 'in' => 'query', 'schema' => ['description' => 'The data type of the sample. Valid values:'."\n" ."\n" .'- mobile: phone number'."\n" .'- mobileMd5: MD5 hash of a phone number'."\n" .'- IP: IP address'."\n" .'- umid: unique device ID'."\n" .'- accountId: account ID'."\n" .'- imei: IMEI'."\n" .'- imeiMd5: MD5 hash of an IMEI'."\n" .'- oaid: OAID'."\n" .'- oaidMd5: MD5 hash of an OAID'."\n" .'- androidId: Android ID'."\n" .'- androidIdMd5: MD5 hash of an Android ID.', 'type' => 'string', 'required' => true, 'example' => 'ip', 'title' => ''], ], [ 'name' => 'Service', 'in' => 'query', 'schema' => ['description' => 'The list of services for which the samples take effect. Separate multiple services with commas. Valid values:'."\n" ."\n" .'- account_abuse: Registration Risk Identification Basic Edition or Enhanced Edition'."\n" .'- coupon_abuse: Marketing Risk Identification Basic Edition or Enhanced Edition'."\n" .'- account_takeover: Logon Risk Identification Basic Edition or Enhanced Edition.', 'type' => 'string', 'required' => true, 'example' => 'account_abuse,coupon_abuse,account_takeover', 'title' => ''], ], [ 'name' => 'DataValue', 'in' => 'query', 'schema' => ['description' => 'The specific values of the samples, passed in JSON format. Do not exceed 1000 entries at a time.', 'type' => 'string', 'required' => true, 'example' => '["123.124.125.126","123.124.125.127"]', 'title' => ''], ], ], 'responses' => [ 200 => [ 'schema' => [ 'title' => '', 'description' => 'Schema of Response', 'type' => 'object', 'properties' => [ 'RequestId' => ['title' => '', 'description' => 'Id of the request', 'type' => 'string', 'example' => '4A91D2D1-AEC9-1658-ABCE-5A39DE66A5C2'], 'Message' => ['description' => 'The error message returned.', 'type' => 'string', 'example' => 'null', 'title' => ''], 'Code' => ['description' => 'The request code returned.', 'type' => 'string', 'example' => '200', 'title' => ''], 'Success' => ['description' => 'Indicates whether the access was successful.', 'type' => 'string', 'example' => 'true', 'title' => ''], ], 'example' => '', ], ], ], 'responseDemo' => '[{"errorExample":"","example":"{\\n \\"RequestId\\": \\"4A91D2D1-AEC9-1658-ABCE-5A39DE66A5C2\\",\\n \\"Message\\": \\"null\\",\\n \\"Code\\": \\"200\\",\\n \\"Success\\": \\"true\\"\\n}","type":"json"}]', 'title' => 'Upload samples', 'changeSet' => [ ['createdAt' => '2023-12-28T09:21:12.000Z', 'description' => 'Response parameters changed'], ], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UploadSampleApi'], ], ], 'ramActions' => [ [ 'operationType' => 'create', 'ramAction' => [ 'action' => 'yundun-saf:UploadSampleApi', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], ], ], 'endpoints' => [ ['regionId' => 'cn-hangzhou', 'regionName' => 'China (Hangzhou)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'safconsole.cn-hangzhou.aliyuncs.com', 'endpoint' => 'safconsole.cn-hangzhou.aliyuncs.com', 'vpc' => 'safconsole-vpc.cn-hangzhou.aliyuncs.com'], ['regionId' => 'cn-shanghai', 'regionName' => 'China (Shanghai)', 'areaId' => 'asiaPacific', 'areaName' => 'Asia Pacific', 'public' => 'safconsole.cn-shanghai.aliyuncs.com', 'endpoint' => 'safconsole.cn-shanghai.aliyuncs.com', 'vpc' => 'safconsole-vpc.cn-shanghai.aliyuncs.com'], ], 'errorCodes' => [ ['code' => 'NotAuthorized', 'message' => 'You do not have permission to access this resource.', 'http_code' => 400, 'description' => 'You do not have permission to access this resource.'], ], 'changeSet' => [ [ 'apis' => [ ['description' => 'Response parameters changed', 'api' => 'UploadSampleApi'], ], 'createdAt' => '2023-12-28T09:21:18.000Z', 'description' => '', ], ], 'flowControl' => [ 'flowControlList' => [ ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'SendFeedback'], ['threshold' => '500', 'countWindow' => 1, 'regionId' => '*', 'api' => 'RevokeFeedback'], ['threshold' => '50', 'countWindow' => 1, 'regionId' => '*', 'api' => 'UploadSampleApi'], ], ], 'ram' => [ 'productCode' => 'SAF', 'productName' => 'Fraud Detection', 'ramCodes' => ['yundun-saf'], 'ramLevel' => 'OPERATION', 'ramConditions' => [], 'ramActions' => [ [ 'apiName' => 'RevokeFeedback', 'description' => '', 'operationType' => 'delete', 'ramAction' => [ 'action' => 'yundun-saf:RevokeFeedback', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'SendFeedback', 'description' => '', 'operationType' => 'create', 'ramAction' => [ 'action' => 'yundun-saf:SendFeedback', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], [ 'apiName' => 'UploadSampleApi', 'description' => '', 'operationType' => 'create', 'ramAction' => [ 'action' => 'yundun-saf:UploadSampleApi', 'authLevel' => 'operate', 'actionConditions' => [], 'resources' => [ ['validationType' => 'always', 'product' => 'SAF', 'resourceType' => 'All Resource', 'arn' => '*'], ], ], ], ], 'resourceTypes' => [ ['validationType' => 'always', 'resourceType' => 'Samplebatch', 'arn' => 'acs:yundun-saf::{#accountId}:samplebatch/*'], ], ], ];