{"openapi":"3.0.0","info":{"title":"DRN API","description":"Device Reputation Network (DRN) [API](https://dev.fingerprint.com/reference/drn-api)","version":"2024-09-01"},"servers":[{"url":"https://drn-api.fpjs.io","description":"Global region"}],"security":[{"SecretAPIKey":[]}],"paths":{"/drn/{visitorId}":{"get":{"summary":"Returns device reputation information of a visitor.","description":"Returns device reputation information of a visitor.","parameters":[{"name":"X-API-Version","in":"header","description":"The API version to use.","required":true,"example":"2024-09-01","schema":{"type":"string","default":"2024-09-01"}},{"name":"visitorId","in":"path","required":true,"description":"The visitor id to get information on.","schema":{"type":"string","pattern":"^[a-zA-Z0-9]{20}$"}},{"name":"signals","in":"query","required":true,"description":"The information signals to retrieve.","schema":{"type":"array","items":{"type":"string","$ref":"#/components/schemas/Signals"}},"example":"regional_activity,suspect_score,timestamps","style":"form","explode":false}],"responses":{"200":{"description":"A JSON object representing reputation information related to requested signals.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DRN"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Visitor not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"DRN":{"type":"object","properties":{"data":{"description":"Object containing properties of the signals requested","type":"object","properties":{"regionalActivity":{"allOf":[{"$ref":"#/components/schemas/RegionalActivity"},{"nullable":true}]},"suspectScore":{"allOf":[{"$ref":"#/components/schemas/SuspectScore"},{"nullable":true}]},"timestamps":{"allOf":[{"$ref":"#/components/schemas/Timestamps"},{"nullable":true}]}}}}},"Signals":{"type":"string","enum":["regional_activity","suspect_score","timestamps"]},"RegionalActivity":{"type":"object","properties":{"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"countries":{"type":"array","items":{"$ref":"#/components/schemas/RegionalActivityCountry"}}}},"RegionalActivityCountry":{"type":"object","properties":{"code":{"type":"string"},"detectors":{"type":"array","items":{"$ref":"#/components/schemas/RegionalActivityCountryDetector"}}}},"RegionalActivityCountryDetector":{"type":"object","properties":{"type":{"type":"string","enum":["ip","origin"]},"activityPercentage":{"type":"number","format":"float","description":"Percentage is represented as a float (e.g. 1=100%, 0.50=50%, 0.01=1%). Note the sum of the percentages for a type across regions may not always sum up to 1 because of rounding."}}},"SuspectScore":{"type":"object","properties":{"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"},"minimum":{"properties":{"value":{"type":"number"},"signals":{"$ref":"#/components/schemas/SuspectScoreSignals"}}},"maximum":{"properties":{"value":{"type":"number"},"percentile":{"type":"number","format":"float"},"signals":{"$ref":"#/components/schemas/SuspectScoreSignals"}}}}},"SuspectScoreSignals":{"type":"object","properties":{"vpn":{"allOf":[{"$ref":"#/components/schemas/SuspectScoreSignalsAndroidVPN"},{"nullable":true}]},"ipBLocklist":{"allOf":[{"$ref":"#/components/schemas/SuspectScoreSignalsAndroidIPBlocklist"},{"nullable":true}]},"tor":{"type":"number","nullable":true},"proxy":{"type":"number","nullable":true},"emulator":{"type":"number","nullable":true},"tampering":{"type":"number","nullable":true},"clonedApp":{"type":"number","nullable":true},"frida":{"type":"number","nullable":true},"highActivity":{"type":"number","nullable":true}}},"SuspectScoreSignalsAndroidVPN":{"type":"object","properties":{"timezoneMismatch":{"type":"number","nullable":true},"publicVPN":{"type":"number","nullable":true},"auxiliaryMobile":{"type":"number","nullable":true}}},"SuspectScoreSignalsAndroidIPBlocklist":{"type":"object","properties":{"emailSpam":{"type":"number","nullable":true},"attackSource":{"type":"number","nullable":true}}},"Timestamps":{"type":"object","properties":{"firstSeentAt":{"type":"string","format":"date","nullable":true},"lastSeenAt":{"type":"string","format":"date","nullable":true}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"}}}}}},"securitySchemes":{"SecretAPIKey":{"type":"http","scheme":"bearer"}}},"x-readme":{"explorer-enabled":true,"proxy-enabled":true}}