From a94fd56417f5de340215f15eb0806006e157e4e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Mon, 26 Feb 2024 18:13:42 +0800 Subject: [PATCH 01/11] fix: make fields required according to real API response --- docs/BotdResult.md | 5 ++-- docs/EventResponse.md | 3 ++- docs/HighActivityResult.md | 2 +- docs/IpBlockListResult.md | 4 ++-- docs/IpBlockListResultDetails.md | 4 ++-- docs/IpInfoResultV4.md | 4 ++-- docs/IpInfoResultV6.md | 4 ++-- docs/LocationSpoofingResult.md | 2 +- docs/TamperingResult.md | 4 ++-- docs/Visit.md | 4 ++-- docs/VpnResult.md | 7 +++--- docs/VpnResultMethods.md | 6 ++--- .../com/fingerprint/model/BotdResult.java | 12 +++++----- .../com/fingerprint/model/EventResponse.java | 9 +++---- .../fingerprint/model/HighActivityResult.java | 8 +++---- .../fingerprint/model/IpBlockListResult.java | 16 ++++++------- .../model/IpBlockListResultDetails.java | 16 ++++++------- .../com/fingerprint/model/IpInfoResultV4.java | 17 +++++++------ .../com/fingerprint/model/IpInfoResultV6.java | 17 +++++++------ .../model/LocationSpoofingResult.java | 10 ++++---- .../fingerprint/model/TamperingResult.java | 16 ++++++------- .../java/com/fingerprint/model/Visit.java | 6 ++--- .../java/com/fingerprint/model/VpnResult.java | 24 +++++++++---------- .../fingerprint/model/VpnResultMethods.java | 24 +++++++++---------- 24 files changed, 113 insertions(+), 111 deletions(-) diff --git a/docs/BotdResult.md b/docs/BotdResult.md index 82018e4..fae7c66 100644 --- a/docs/BotdResult.md +++ b/docs/BotdResult.md @@ -11,8 +11,9 @@ Contains all the information from Bot Detection product |**ip** | **String** | IP address of the requesting browser or bot. | | |**time** | **OffsetDateTime** | Time in UTC when the request from the JS agent was made. We recommend to treat requests that are older than 2 minutes as malicious. Otherwise, request replay attacks are possible | | |**url** | **String** | Page URL from which identification request was sent. | | -|**userAgent** | **String** | | [optional] | -|**requestId** | **String** | | [optional] | +|**userAgent** | **String** | | | +|**requestId** | **String** | | | +|**linkedId** | **String** | | [optional] | |**bot** | [**BotdDetectionResult**](BotdDetectionResult.md) | | | diff --git a/docs/EventResponse.md b/docs/EventResponse.md index 3d94381..3530979 100644 --- a/docs/EventResponse.md +++ b/docs/EventResponse.md @@ -8,7 +8,8 @@ Contains results from all activated products - Fingerprint Pro, Bot Detection, a | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**products** | [**ProductsResponse**](ProductsResponse.md) | | [optional] | +|**products** | [**ProductsResponse**](ProductsResponse.md) | | | +|**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/HighActivityResult.md b/docs/HighActivityResult.md index aa72da2..bdbb3d2 100644 --- a/docs/HighActivityResult.md +++ b/docs/HighActivityResult.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Flag indicating whether the request came from a high activity visitor. | [optional] | +|**result** | **Boolean** | Flag indicating whether the request came from a high activity visitor. | | |**dailyRequests** | [**BigDecimal**](BigDecimal.md) | Number of requests from the same visitor in the previous day. | [optional] | diff --git a/docs/IpBlockListResult.md b/docs/IpBlockListResult.md index c2552bc..5d98451 100644 --- a/docs/IpBlockListResult.md +++ b/docs/IpBlockListResult.md @@ -7,8 +7,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if request IP address is part of any database that we use to search for known malicious actors, `false` otherwise. | [optional] | -|**details** | [**IpBlockListResultDetails**](IpBlockListResultDetails.md) | | [optional] | +|**result** | **Boolean** | `true` if request IP address is part of any database that we use to search for known malicious actors, `false` otherwise. | | +|**details** | [**IpBlockListResultDetails**](IpBlockListResultDetails.md) | | | diff --git a/docs/IpBlockListResultDetails.md b/docs/IpBlockListResultDetails.md index dda74d8..f46f12c 100644 --- a/docs/IpBlockListResultDetails.md +++ b/docs/IpBlockListResultDetails.md @@ -7,8 +7,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**emailSpam** | **Boolean** | IP address was part of a known email spam attack (SMTP). | [optional] | -|**attackSource** | **Boolean** | IP address was part of a known network attack (SSH/HTTPS). | [optional] | +|**emailSpam** | **Boolean** | IP address was part of a known email spam attack (SMTP). | | +|**attackSource** | **Boolean** | IP address was part of a known network attack (SSH/HTTPS). | | diff --git a/docs/IpInfoResultV4.md b/docs/IpInfoResultV4.md index cc609eb..74e749a 100644 --- a/docs/IpInfoResultV4.md +++ b/docs/IpInfoResultV4.md @@ -7,8 +7,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**address** | **String** | | [optional] | -|**geolocation** | [**IPLocation**](IPLocation.md) | | [optional] | +|**address** | **String** | | | +|**geolocation** | [**IPLocation**](IPLocation.md) | | | |**asn** | [**ASN**](ASN.md) | | [optional] | |**datacenter** | [**DataCenter**](DataCenter.md) | | [optional] | diff --git a/docs/IpInfoResultV6.md b/docs/IpInfoResultV6.md index 2749745..c1317dc 100644 --- a/docs/IpInfoResultV6.md +++ b/docs/IpInfoResultV6.md @@ -7,8 +7,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**address** | **String** | | [optional] | -|**geolocation** | [**IPLocation**](IPLocation.md) | | [optional] | +|**address** | **String** | | | +|**geolocation** | [**IPLocation**](IPLocation.md) | | | |**asn** | [**ASN**](ASN.md) | | [optional] | |**datacenter** | [**DataCenter**](DataCenter.md) | | [optional] | diff --git a/docs/LocationSpoofingResult.md b/docs/LocationSpoofingResult.md index 2d5a25b..a94ef7d 100644 --- a/docs/LocationSpoofingResult.md +++ b/docs/LocationSpoofingResult.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Flag indicating whether the request came from a device with location spoofing enabled. | [optional] | +|**result** | **Boolean** | Flag indicating whether the request came from a mobile device with location spoofing enabled. | | diff --git a/docs/TamperingResult.md b/docs/TamperingResult.md index 5e3807a..facff01 100644 --- a/docs/TamperingResult.md +++ b/docs/TamperingResult.md @@ -7,8 +7,8 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Flag indicating whether browser tampering was detected according to our internal thresholds. | [optional] | -|**anomalyScore** | [**BigDecimal**](BigDecimal.md) | Confidence score (`0.0 - 1.0`) for the tampering detection. Values above `0.5` suggest that we're reasonably sure there was a tampering attempt. Values below `0.5` are genuine browsers. | [optional] | +|**result** | **Boolean** | Flag indicating whether browser tampering was detected according to our internal thresholds. | | +|**anomalyScore** | [**BigDecimal**](BigDecimal.md) | Confidence score (`0.0 - 1.0`) for the tampering detection. Values above `0.5` suggest that we're reasonably sure there was a tampering attempt. Values below `0.5` are genuine browsers. | | diff --git a/docs/Visit.md b/docs/Visit.md index 25e117d..55a354d 100644 --- a/docs/Visit.md +++ b/docs/Visit.md @@ -14,8 +14,8 @@ |**ipLocation** | [**IPLocation**](IPLocation.md) | | [optional] | |**timestamp** | **Long** | Timestamp of the event with millisecond precision in Unix time. | | |**time** | **OffsetDateTime** | Time expressed according to ISO 8601 in UTC format. | | -|**url** | **URI** | Page URL from which identification request was sent. | | -|**tag** | **Map<String, Object>** | A customer-provided value or an object that was sent with identification request. | [optional] | +|**url** | **URI** | Page URL from which the identification request was sent. | | +|**tag** | **Map<String, Object>** | A customer-provided value or an object that was sent with identification request. | | |**linkedId** | **String** | A customer-provided id that was sent with identification request. | [optional] | |**confidence** | [**Confidence**](Confidence.md) | | | |**visitorFound** | **Boolean** | Attribute represents if a visitor had been identified before. | | diff --git a/docs/VpnResult.md b/docs/VpnResult.md index da756a1..05c0951 100644 --- a/docs/VpnResult.md +++ b/docs/VpnResult.md @@ -7,9 +7,10 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | VPN or other anonymizing service has been used when sending the request. | [optional] | -|**originTimezone** | **String** | Local timezone which is used in timezoneMismatch method. | [optional] | -|**methods** | [**VpnResultMethods**](VpnResultMethods.md) | | [optional] | +|**result** | **Boolean** | VPN or other anonymizing service has been used when sending the request. | | +|**originTimezone** | **String** | Local timezone which is used in timezoneMismatch method. | | +|**originCountry** | **String** | Country of the request (only for Android SDK version >= 2.4.0, ISO 3166 format or unknown). | [optional] | +|**methods** | [**VpnResultMethods**](VpnResultMethods.md) | | | diff --git a/docs/VpnResultMethods.md b/docs/VpnResultMethods.md index 91864a0..e1bf3e8 100644 --- a/docs/VpnResultMethods.md +++ b/docs/VpnResultMethods.md @@ -7,9 +7,9 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**timezoneMismatch** | **Boolean** | User's browser timezone doesn't match the timezone from which the request was originally made. | [optional] | -|**publicVPN** | **Boolean** | Request IP address is owned and used by a public VPN service provider. | [optional] | -|**auxiliaryMobile** | **Boolean** | This method applies to mobile devices only. Indicates the result of additional methods used to detect a VPN in mobile devices. | [optional] | +|**timezoneMismatch** | **Boolean** | User's browser timezone doesn't match the timezone from which the request was originally made. | | +|**publicVPN** | **Boolean** | Request IP address is owned and used by a public VPN service provider. | | +|**auxiliaryMobile** | **Boolean** | This method applies to mobile devices only. Indicates the result of additional methods used to detect a VPN in mobile devices. | | diff --git a/src/main/java/com/fingerprint/model/BotdResult.java b/src/main/java/com/fingerprint/model/BotdResult.java index f9f7876..53a5a5d 100644 --- a/src/main/java/com/fingerprint/model/BotdResult.java +++ b/src/main/java/com/fingerprint/model/BotdResult.java @@ -152,10 +152,10 @@ public BotdResult userAgent(String userAgent) { * Get userAgent * @return userAgent **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36", value = "") + @javax.annotation.Nonnull + @ApiModelProperty(example = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36", required = true, value = "") @JsonProperty(JSON_PROPERTY_USER_AGENT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public String getUserAgent() { return userAgent; @@ -178,10 +178,10 @@ public BotdResult requestId(String requestId) { * Get requestId * @return requestId **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "1681392853693.lRiBBD", value = "") + @javax.annotation.Nonnull + @ApiModelProperty(example = "1681392853693.lRiBBD", required = true, value = "") @JsonProperty(JSON_PROPERTY_REQUEST_ID) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public String getRequestId() { return requestId; diff --git a/src/main/java/com/fingerprint/model/EventResponse.java b/src/main/java/com/fingerprint/model/EventResponse.java index 3328614..d609971 100644 --- a/src/main/java/com/fingerprint/model/EventResponse.java +++ b/src/main/java/com/fingerprint/model/EventResponse.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.ProductError; import com.fingerprint.model.ProductsResponse; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -53,10 +54,10 @@ public EventResponse products(ProductsResponse products) { * Get products * @return products **/ - @javax.annotation.Nullable - @ApiModelProperty(value = "") + @javax.annotation.Nonnull + @ApiModelProperty(required = true, value = "") @JsonProperty(JSON_PROPERTY_PRODUCTS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public ProductsResponse getProducts() { return products; @@ -64,7 +65,7 @@ public ProductsResponse getProducts() { @JsonProperty(JSON_PROPERTY_PRODUCTS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setProducts(ProductsResponse products) { this.products = products; } diff --git a/src/main/java/com/fingerprint/model/HighActivityResult.java b/src/main/java/com/fingerprint/model/HighActivityResult.java index 8035f9f..90c2714 100644 --- a/src/main/java/com/fingerprint/model/HighActivityResult.java +++ b/src/main/java/com/fingerprint/model/HighActivityResult.java @@ -56,10 +56,10 @@ public HighActivityResult result(Boolean result) { * Flag indicating whether the request came from a high activity visitor. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Flag indicating whether the request came from a high activity visitor.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "Flag indicating whether the request came from a high activity visitor.") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -67,7 +67,7 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } diff --git a/src/main/java/com/fingerprint/model/IpBlockListResult.java b/src/main/java/com/fingerprint/model/IpBlockListResult.java index 00eff6b..aae5658 100644 --- a/src/main/java/com/fingerprint/model/IpBlockListResult.java +++ b/src/main/java/com/fingerprint/model/IpBlockListResult.java @@ -56,10 +56,10 @@ public IpBlockListResult result(Boolean result) { * `true` if request IP address is part of any database that we use to search for known malicious actors, `false` otherwise. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if request IP address is part of any database that we use to search for known malicious actors, `false` otherwise. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "`true` if request IP address is part of any database that we use to search for known malicious actors, `false` otherwise. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -67,7 +67,7 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } @@ -82,10 +82,10 @@ public IpBlockListResult details(IpBlockListResultDetails details) { * Get details * @return details **/ - @javax.annotation.Nullable - @ApiModelProperty(value = "") + @javax.annotation.Nonnull + @ApiModelProperty(required = true, value = "") @JsonProperty(JSON_PROPERTY_DETAILS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public IpBlockListResultDetails getDetails() { return details; @@ -93,7 +93,7 @@ public IpBlockListResultDetails getDetails() { @JsonProperty(JSON_PROPERTY_DETAILS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setDetails(IpBlockListResultDetails details) { this.details = details; } diff --git a/src/main/java/com/fingerprint/model/IpBlockListResultDetails.java b/src/main/java/com/fingerprint/model/IpBlockListResultDetails.java index 4535323..ba550f3 100644 --- a/src/main/java/com/fingerprint/model/IpBlockListResultDetails.java +++ b/src/main/java/com/fingerprint/model/IpBlockListResultDetails.java @@ -56,10 +56,10 @@ public IpBlockListResultDetails emailSpam(Boolean emailSpam) { * IP address was part of a known email spam attack (SMTP). * @return emailSpam **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "IP address was part of a known email spam attack (SMTP).") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "IP address was part of a known email spam attack (SMTP).") @JsonProperty(JSON_PROPERTY_EMAIL_SPAM) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getEmailSpam() { return emailSpam; @@ -67,7 +67,7 @@ public Boolean getEmailSpam() { @JsonProperty(JSON_PROPERTY_EMAIL_SPAM) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setEmailSpam(Boolean emailSpam) { this.emailSpam = emailSpam; } @@ -82,10 +82,10 @@ public IpBlockListResultDetails attackSource(Boolean attackSource) { * IP address was part of a known network attack (SSH/HTTPS). * @return attackSource **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "IP address was part of a known network attack (SSH/HTTPS).") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "IP address was part of a known network attack (SSH/HTTPS).") @JsonProperty(JSON_PROPERTY_ATTACK_SOURCE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getAttackSource() { return attackSource; @@ -93,7 +93,7 @@ public Boolean getAttackSource() { @JsonProperty(JSON_PROPERTY_ATTACK_SOURCE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setAttackSource(Boolean attackSource) { this.attackSource = attackSource; } diff --git a/src/main/java/com/fingerprint/model/IpInfoResultV4.java b/src/main/java/com/fingerprint/model/IpInfoResultV4.java index eee8694..23161e0 100644 --- a/src/main/java/com/fingerprint/model/IpInfoResultV4.java +++ b/src/main/java/com/fingerprint/model/IpInfoResultV4.java @@ -67,10 +67,10 @@ public IpInfoResultV4 address(String address) { * Get address * @return address **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "94.142.239.124", value = "") + @javax.annotation.Nonnull + @ApiModelProperty(example = "94.142.239.124", required = true, value = "") @JsonProperty(JSON_PROPERTY_ADDRESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public String getAddress() { return address; @@ -78,7 +78,7 @@ public String getAddress() { @JsonProperty(JSON_PROPERTY_ADDRESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setAddress(String address) { this.address = address; } @@ -94,11 +94,10 @@ public IpInfoResultV4 geolocation(IPLocation geolocation) { * @return geolocation * @deprecated **/ - @Deprecated - @javax.annotation.Nullable - @ApiModelProperty(value = "") + @javax.annotation.Nonnull + @ApiModelProperty(required = true, value = "") @JsonProperty(JSON_PROPERTY_GEOLOCATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public IPLocation getGeolocation() { return geolocation; @@ -106,7 +105,7 @@ public IPLocation getGeolocation() { @JsonProperty(JSON_PROPERTY_GEOLOCATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setGeolocation(IPLocation geolocation) { this.geolocation = geolocation; } diff --git a/src/main/java/com/fingerprint/model/IpInfoResultV6.java b/src/main/java/com/fingerprint/model/IpInfoResultV6.java index cf979f9..2020a38 100644 --- a/src/main/java/com/fingerprint/model/IpInfoResultV6.java +++ b/src/main/java/com/fingerprint/model/IpInfoResultV6.java @@ -67,10 +67,10 @@ public IpInfoResultV6 address(String address) { * Get address * @return address **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "2001:0db8:85a3:0000:0000:8a2e:0370:7334", value = "") + @javax.annotation.Nonnull + @ApiModelProperty(example = "2001:0db8:85a3:0000:0000:8a2e:0370:7334", required = true, value = "") @JsonProperty(JSON_PROPERTY_ADDRESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public String getAddress() { return address; @@ -78,7 +78,7 @@ public String getAddress() { @JsonProperty(JSON_PROPERTY_ADDRESS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setAddress(String address) { this.address = address; } @@ -94,11 +94,10 @@ public IpInfoResultV6 geolocation(IPLocation geolocation) { * @return geolocation * @deprecated **/ - @Deprecated - @javax.annotation.Nullable - @ApiModelProperty(value = "") + @javax.annotation.Nonnull + @ApiModelProperty(required = true, value = "") @JsonProperty(JSON_PROPERTY_GEOLOCATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public IPLocation getGeolocation() { return geolocation; @@ -106,7 +105,7 @@ public IPLocation getGeolocation() { @JsonProperty(JSON_PROPERTY_GEOLOCATION) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setGeolocation(IPLocation geolocation) { this.geolocation = geolocation; } diff --git a/src/main/java/com/fingerprint/model/LocationSpoofingResult.java b/src/main/java/com/fingerprint/model/LocationSpoofingResult.java index bcc7cce..d7c7d24 100644 --- a/src/main/java/com/fingerprint/model/LocationSpoofingResult.java +++ b/src/main/java/com/fingerprint/model/LocationSpoofingResult.java @@ -48,13 +48,13 @@ public LocationSpoofingResult result(Boolean result) { } /** - * Flag indicating whether the request came from a device with location spoofing enabled. + * Flag indicating whether the request came from a mobile device with location spoofing enabled. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Flag indicating whether the request came from a device with location spoofing enabled.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "Flag indicating whether the request came from a mobile device with location spoofing enabled.") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -62,7 +62,7 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } diff --git a/src/main/java/com/fingerprint/model/TamperingResult.java b/src/main/java/com/fingerprint/model/TamperingResult.java index e03975e..3f56fb9 100644 --- a/src/main/java/com/fingerprint/model/TamperingResult.java +++ b/src/main/java/com/fingerprint/model/TamperingResult.java @@ -56,10 +56,10 @@ public TamperingResult result(Boolean result) { * Flag indicating whether browser tampering was detected according to our internal thresholds. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Flag indicating whether browser tampering was detected according to our internal thresholds.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "Flag indicating whether browser tampering was detected according to our internal thresholds.") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -67,7 +67,7 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } @@ -84,10 +84,10 @@ public TamperingResult anomalyScore(BigDecimal anomalyScore) { * maximum: 1 * @return anomalyScore **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "0", value = "Confidence score (`0.0 - 1.0`) for the tampering detection. Values above `0.5` suggest that we're reasonably sure there was a tampering attempt. Values below `0.5` are genuine browsers.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "0", required = true, value = "Confidence score (`0.0 - 1.0`) for the tampering detection. Values above `0.5` suggest that we're reasonably sure there was a tampering attempt. Values below `0.5` are genuine browsers.") @JsonProperty(JSON_PROPERTY_ANOMALY_SCORE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public BigDecimal getAnomalyScore() { return anomalyScore; @@ -95,7 +95,7 @@ public BigDecimal getAnomalyScore() { @JsonProperty(JSON_PROPERTY_ANOMALY_SCORE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setAnomalyScore(BigDecimal anomalyScore) { this.anomalyScore = anomalyScore; } diff --git a/src/main/java/com/fingerprint/model/Visit.java b/src/main/java/com/fingerprint/model/Visit.java index ae8fbc8..bdcc970 100644 --- a/src/main/java/com/fingerprint/model/Visit.java +++ b/src/main/java/com/fingerprint/model/Visit.java @@ -329,10 +329,10 @@ public Visit putTagItem(String key, Object tagItem) { * A customer-provided value or an object that was sent with identification request. * @return tag **/ - @javax.annotation.Nullable - @ApiModelProperty(value = "A customer-provided value or an object that was sent with identification request.") + @javax.annotation.Nonnull + @ApiModelProperty(required = true, value = "A customer-provided value or an object that was sent with identification request.") @JsonProperty(JSON_PROPERTY_TAG) - @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.ALWAYS) public Map getTag() { return tag; diff --git a/src/main/java/com/fingerprint/model/VpnResult.java b/src/main/java/com/fingerprint/model/VpnResult.java index 9928f9b..8f78bae 100644 --- a/src/main/java/com/fingerprint/model/VpnResult.java +++ b/src/main/java/com/fingerprint/model/VpnResult.java @@ -60,10 +60,10 @@ public VpnResult result(Boolean result) { * VPN or other anonymizing service has been used when sending the request. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "VPN or other anonymizing service has been used when sending the request.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "VPN or other anonymizing service has been used when sending the request.") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -71,7 +71,7 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } @@ -86,10 +86,10 @@ public VpnResult originTimezone(String originTimezone) { * Local timezone which is used in timezoneMismatch method. * @return originTimezone **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "Europe/Berlin", value = "Local timezone which is used in timezoneMismatch method.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "Europe/Berlin", required = true, value = "Local timezone which is used in timezoneMismatch method.") @JsonProperty(JSON_PROPERTY_ORIGIN_TIMEZONE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public String getOriginTimezone() { return originTimezone; @@ -97,7 +97,7 @@ public String getOriginTimezone() { @JsonProperty(JSON_PROPERTY_ORIGIN_TIMEZONE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setOriginTimezone(String originTimezone) { this.originTimezone = originTimezone; } @@ -112,10 +112,10 @@ public VpnResult methods(VpnResultMethods methods) { * Get methods * @return methods **/ - @javax.annotation.Nullable - @ApiModelProperty(value = "") + @javax.annotation.Nonnull + @ApiModelProperty(required = true, value = "") @JsonProperty(JSON_PROPERTY_METHODS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public VpnResultMethods getMethods() { return methods; @@ -123,7 +123,7 @@ public VpnResultMethods getMethods() { @JsonProperty(JSON_PROPERTY_METHODS) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setMethods(VpnResultMethods methods) { this.methods = methods; } diff --git a/src/main/java/com/fingerprint/model/VpnResultMethods.java b/src/main/java/com/fingerprint/model/VpnResultMethods.java index 77135d8..bea1f06 100644 --- a/src/main/java/com/fingerprint/model/VpnResultMethods.java +++ b/src/main/java/com/fingerprint/model/VpnResultMethods.java @@ -60,10 +60,10 @@ public VpnResultMethods timezoneMismatch(Boolean timezoneMismatch) { * User's browser timezone doesn't match the timezone from which the request was originally made. * @return timezoneMismatch **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "User's browser timezone doesn't match the timezone from which the request was originally made.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "User's browser timezone doesn't match the timezone from which the request was originally made.") @JsonProperty(JSON_PROPERTY_TIMEZONE_MISMATCH) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getTimezoneMismatch() { return timezoneMismatch; @@ -71,7 +71,7 @@ public Boolean getTimezoneMismatch() { @JsonProperty(JSON_PROPERTY_TIMEZONE_MISMATCH) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setTimezoneMismatch(Boolean timezoneMismatch) { this.timezoneMismatch = timezoneMismatch; } @@ -86,10 +86,10 @@ public VpnResultMethods publicVPN(Boolean publicVPN) { * Request IP address is owned and used by a public VPN service provider. * @return publicVPN **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Request IP address is owned and used by a public VPN service provider.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "Request IP address is owned and used by a public VPN service provider.") @JsonProperty(JSON_PROPERTY_PUBLIC_V_P_N) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getPublicVPN() { return publicVPN; @@ -97,7 +97,7 @@ public Boolean getPublicVPN() { @JsonProperty(JSON_PROPERTY_PUBLIC_V_P_N) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setPublicVPN(Boolean publicVPN) { this.publicVPN = publicVPN; } @@ -112,10 +112,10 @@ public VpnResultMethods auxiliaryMobile(Boolean auxiliaryMobile) { * This method applies to mobile devices only. Indicates the result of additional methods used to detect a VPN in mobile devices. * @return auxiliaryMobile **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "This method applies to mobile devices only. Indicates the result of additional methods used to detect a VPN in mobile devices.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "This method applies to mobile devices only. Indicates the result of additional methods used to detect a VPN in mobile devices.") @JsonProperty(JSON_PROPERTY_AUXILIARY_MOBILE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getAuxiliaryMobile() { return auxiliaryMobile; @@ -123,7 +123,7 @@ public Boolean getAuxiliaryMobile() { @JsonProperty(JSON_PROPERTY_AUXILIARY_MOBILE) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setAuxiliaryMobile(Boolean auxiliaryMobile) { this.auxiliaryMobile = auxiliaryMobile; } From f61a78d61e69b8abaf3f92f0c8174bc857ec1c81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Mon, 26 Feb 2024 18:33:24 +0800 Subject: [PATCH 02/11] feat: fix `ipLocation` deprecation BREAKING CHANGE: deprecated `ipLocation` field uses `DeprecatedIpLocation` model --- README.md | 3 + docs/DeprecatedIPLocation.md | 22 + docs/DeprecatedIPLocationCity.md | 13 + docs/IPLocation.md | 1 - docs/ProductsResponseIdentificationData.md | 2 +- docs/ResponseVisits.md | 2 +- docs/Visit.md | 2 +- docs/WebhookVisit.md | 2 +- res/fingerprint-server-api.yaml | 198 ++++++++- .../model/DeprecatedIPLocation.java | 389 ++++++++++++++++++ .../model/DeprecatedIPLocationCity.java | 112 +++++ .../com/fingerprint/model/IPLocation.java | 5 +- .../com/fingerprint/model/IpInfoResultV4.java | 1 - .../com/fingerprint/model/IpInfoResultV6.java | 1 - .../ProductsResponseIdentificationData.java | 10 +- .../com/fingerprint/model/ResponseVisits.java | 10 +- .../java/com/fingerprint/model/Visit.java | 10 +- .../com/fingerprint/model/WebhookVisit.java | 12 +- 18 files changed, 755 insertions(+), 40 deletions(-) create mode 100644 docs/DeprecatedIPLocation.md create mode 100644 docs/DeprecatedIPLocationCity.md create mode 100644 src/main/java/com/fingerprint/model/DeprecatedIPLocation.java create mode 100644 src/main/java/com/fingerprint/model/DeprecatedIPLocationCity.java diff --git a/README.md b/README.md index 336b968..71584ca 100644 --- a/README.md +++ b/README.md @@ -257,6 +257,9 @@ Class | Method | HTTP request | Description - [BrowserDetails](docs/BrowserDetails.md) - [Confidence](docs/Confidence.md) - [DataCenter](docs/DataCenter.md) + - [DeprecatedIPLocation](docs/DeprecatedIPLocation.md) + - [DeprecatedIPLocationCity](docs/DeprecatedIPLocationCity.md) + - [EmulatorResult](docs/EmulatorResult.md) - [Error](docs/Error.md) - [ErrorEvent403Response](docs/ErrorEvent403Response.md) - [ErrorEvent403ResponseError](docs/ErrorEvent403ResponseError.md) diff --git a/docs/DeprecatedIPLocation.md b/docs/DeprecatedIPLocation.md new file mode 100644 index 0000000..c559c1e --- /dev/null +++ b/docs/DeprecatedIPLocation.md @@ -0,0 +1,22 @@ + + +# DeprecatedIPLocation + +This field is **deprecated** and will not return a result for **applications created after January 23rd, 2024**. Please use the [IP Geolocation Smart signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) for geolocation information. + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**accuracyRadius** | **Integer** | The IP address is likely to be within this radius (in km) of the specified location. | [optional] | +|**latitude** | **Double** | | [optional] | +|**longitude** | **Double** | | [optional] | +|**postalCode** | **String** | | [optional] | +|**timezone** | **String** | | [optional] | +|**city** | [**DeprecatedIPLocationCity**](DeprecatedIPLocationCity.md) | | [optional] | +|**country** | [**Location**](Location.md) | | [optional] | +|**continent** | [**Location**](Location.md) | | [optional] | +|**subdivisions** | [**List<Subdivision>**](Subdivision.md) | | [optional] | + + + diff --git a/docs/DeprecatedIPLocationCity.md b/docs/DeprecatedIPLocationCity.md new file mode 100644 index 0000000..187e102 --- /dev/null +++ b/docs/DeprecatedIPLocationCity.md @@ -0,0 +1,13 @@ + + +# DeprecatedIPLocationCity + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**name** | **String** | | [optional] | + + + diff --git a/docs/IPLocation.md b/docs/IPLocation.md index 6c290d5..e1186a7 100644 --- a/docs/IPLocation.md +++ b/docs/IPLocation.md @@ -2,7 +2,6 @@ # IPLocation -This field is **deprecated** and will not return a result for **accounts created after December 18th, 2023**. Please use the [`ipInfo` Smart signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) for geolocation information. ## Properties diff --git a/docs/ProductsResponseIdentificationData.md b/docs/ProductsResponseIdentificationData.md index efaa0c9..68753d5 100644 --- a/docs/ProductsResponseIdentificationData.md +++ b/docs/ProductsResponseIdentificationData.md @@ -11,7 +11,7 @@ |**browserDetails** | [**BrowserDetails**](BrowserDetails.md) | | | |**incognito** | **Boolean** | Flag if user used incognito session. | | |**ip** | **String** | | | -|**ipLocation** | [**IPLocation**](IPLocation.md) | | [optional] | +|**ipLocation** | [**DeprecatedIPLocation**](DeprecatedIPLocation.md) | | [optional] | |**timestamp** | **Long** | Timestamp of the event with millisecond precision in Unix time. | | |**time** | **OffsetDateTime** | Time expressed according to ISO 8601 in UTC format. | | |**url** | **URI** | Page URL from which identification request was sent. | | diff --git a/docs/ResponseVisits.md b/docs/ResponseVisits.md index 0758b9a..fddaba0 100644 --- a/docs/ResponseVisits.md +++ b/docs/ResponseVisits.md @@ -11,7 +11,7 @@ |**browserDetails** | [**BrowserDetails**](BrowserDetails.md) | | | |**incognito** | **Boolean** | Flag if user used incognito session. | | |**ip** | **String** | | | -|**ipLocation** | [**IPLocation**](IPLocation.md) | | [optional] | +|**ipLocation** | [**DeprecatedIPLocation**](DeprecatedIPLocation.md) | | [optional] | |**timestamp** | **Long** | Timestamp of the event with millisecond precision in Unix time. | | |**time** | **OffsetDateTime** | Time expressed according to ISO 8601 in UTC format. | | |**url** | **URI** | Page URL from which identification request was sent. | | diff --git a/docs/Visit.md b/docs/Visit.md index 55a354d..0f2378c 100644 --- a/docs/Visit.md +++ b/docs/Visit.md @@ -11,7 +11,7 @@ |**browserDetails** | [**BrowserDetails**](BrowserDetails.md) | | | |**incognito** | **Boolean** | Flag if user used incognito session. | | |**ip** | **String** | | | -|**ipLocation** | [**IPLocation**](IPLocation.md) | | [optional] | +|**ipLocation** | [**DeprecatedIPLocation**](DeprecatedIPLocation.md) | | [optional] | |**timestamp** | **Long** | Timestamp of the event with millisecond precision in Unix time. | | |**time** | **OffsetDateTime** | Time expressed according to ISO 8601 in UTC format. | | |**url** | **URI** | Page URL from which the identification request was sent. | | diff --git a/docs/WebhookVisit.md b/docs/WebhookVisit.md index 71e4560..382d3a0 100644 --- a/docs/WebhookVisit.md +++ b/docs/WebhookVisit.md @@ -32,7 +32,7 @@ |**requestId** | **String** | Unique identifier of the user's identification request. | | |**browserDetails** | [**BrowserDetails**](BrowserDetails.md) | | | |**ip** | **String** | | | -|**ipLocation** | [**IPLocation**](IPLocation.md) | | [optional] | +|**ipLocation** | [**DeprecatedIPLocation**](DeprecatedIPLocation.md) | | [optional] | |**timestamp** | **Long** | Timestamp of the event with millisecond precision in Unix time. | | |**time** | **OffsetDateTime** | Time expressed according to ISO 8601 in UTC format. | | |**url** | **URI** | Page URL from which identification request was sent. | | diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index da9215c..a7fdbb4 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -3802,7 +3802,53 @@ components: format: ipv4 example: 8.8.8.8 ipLocation: - $ref: '#/components/schemas/IPLocation' + type: object + additionalProperties: false + deprecated: true + description: >- + This field is **deprecated** and will not return a result for + **applications created after January 23rd, 2024**. Please use + the [IP Geolocation Smart + signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) + for geolocation information. + properties: + accuracyRadius: + description: >- + The IP address is likely to be within this radius (in km) + of the specified location. + type: integer + minimum: 0 + latitude: + type: number + format: double + minimum: -90 + maximum: 90 + longitude: + type: number + format: double + minimum: -180 + maximum: 180 + postalCode: + type: string + timezone: + type: string + format: timezone + city: + type: object + additionalProperties: false + title: DeprecatedIPLocationCity + properties: + name: + type: string + country: + $ref: '#/components/schemas/Location' + continent: + $ref: '#/components/schemas/Location' + subdivisions: + type: array + items: + $ref: '#/components/schemas/Subdivision' + title: DeprecatedIPLocation timestamp: description: >- Timestamp of the event with millisecond precision in Unix @@ -4113,7 +4159,53 @@ components: format: ipv4 example: 8.8.8.8 ipLocation: - $ref: '#/components/schemas/IPLocation' + type: object + additionalProperties: false + deprecated: true + description: >- + This field is **deprecated** and will not return a result for + **applications created after January 23rd, 2024**. Please use the + [IP Geolocation Smart + signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) + for geolocation information. + properties: + accuracyRadius: + description: >- + The IP address is likely to be within this radius (in km) of the + specified location. + type: integer + minimum: 0 + latitude: + type: number + format: double + minimum: -90 + maximum: 90 + longitude: + type: number + format: double + minimum: -180 + maximum: 180 + postalCode: + type: string + timezone: + type: string + format: timezone + city: + type: object + additionalProperties: false + title: DeprecatedIPLocationCity + properties: + name: + type: string + country: + $ref: '#/components/schemas/Location' + continent: + $ref: '#/components/schemas/Location' + subdivisions: + type: array + items: + $ref: '#/components/schemas/Subdivision' + title: DeprecatedIPLocation timestamp: description: Timestamp of the event with millisecond precision in Unix time. type: integer @@ -4180,7 +4272,53 @@ components: format: ipv4 example: 8.8.8.8 ipLocation: - $ref: '#/components/schemas/IPLocation' + type: object + additionalProperties: false + deprecated: true + description: >- + This field is **deprecated** and will not return a result for + **applications created after January 23rd, 2024**. Please use the + [IP Geolocation Smart + signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) + for geolocation information. + properties: + accuracyRadius: + description: >- + The IP address is likely to be within this radius (in km) of the + specified location. + type: integer + minimum: 0 + latitude: + type: number + format: double + minimum: -90 + maximum: 90 + longitude: + type: number + format: double + minimum: -180 + maximum: 180 + postalCode: + type: string + timezone: + type: string + format: timezone + city: + type: object + additionalProperties: false + title: DeprecatedIPLocationCity + properties: + name: + type: string + country: + $ref: '#/components/schemas/Location' + continent: + $ref: '#/components/schemas/Location' + subdivisions: + type: array + items: + $ref: '#/components/schemas/Subdivision' + title: DeprecatedIPLocation timestamp: description: Timestamp of the event with millisecond precision in Unix time. type: integer @@ -4335,12 +4473,6 @@ components: IPLocation: type: object additionalProperties: false - deprecated: true - description: >- - This field is **deprecated** and will not return a result for **accounts - created after December 18th, 2023**. Please use the [`ipInfo` Smart - signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) - for geolocation information. properties: accuracyRadius: description: >- @@ -4441,7 +4573,53 @@ components: format: ipv4 example: 8.8.8.8 ipLocation: - $ref: '#/components/schemas/IPLocation' + type: object + additionalProperties: false + deprecated: true + description: >- + This field is **deprecated** and will not return a result + for **applications created after January 23rd, 2024**. + Please use the [IP Geolocation Smart + signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) + for geolocation information. + properties: + accuracyRadius: + description: >- + The IP address is likely to be within this radius (in + km) of the specified location. + type: integer + minimum: 0 + latitude: + type: number + format: double + minimum: -90 + maximum: 90 + longitude: + type: number + format: double + minimum: -180 + maximum: 180 + postalCode: + type: string + timezone: + type: string + format: timezone + city: + type: object + additionalProperties: false + title: DeprecatedIPLocationCity + properties: + name: + type: string + country: + $ref: '#/components/schemas/Location' + continent: + $ref: '#/components/schemas/Location' + subdivisions: + type: array + items: + $ref: '#/components/schemas/Subdivision' + title: DeprecatedIPLocation timestamp: description: >- Timestamp of the event with millisecond precision in Unix diff --git a/src/main/java/com/fingerprint/model/DeprecatedIPLocation.java b/src/main/java/com/fingerprint/model/DeprecatedIPLocation.java new file mode 100644 index 0000000..a72014c --- /dev/null +++ b/src/main/java/com/fingerprint/model/DeprecatedIPLocation.java @@ -0,0 +1,389 @@ +/* + * Fingerprint Pro Server API + * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. + * + * The version of the OpenAPI document: 3 + * Contact: support@fingerprint.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.fingerprint.model; + +import java.util.Objects; +import java.util.Arrays; +import java.util.Map; +import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.DeprecatedIPLocationCity; +import com.fingerprint.model.Location; +import com.fingerprint.model.Subdivision; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.ArrayList; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fingerprint.sdk.JSON; + + +/** + * This field is **deprecated** and will not return a result for **applications created after January 23rd, 2024**. Please use the [IP Geolocation Smart signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) for geolocation information. + * @deprecated + */ +@Deprecated +@ApiModel(description = "This field is **deprecated** and will not return a result for **applications created after January 23rd, 2024**. Please use the [IP Geolocation Smart signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) for geolocation information.") +@JsonPropertyOrder({ + DeprecatedIPLocation.JSON_PROPERTY_ACCURACY_RADIUS, + DeprecatedIPLocation.JSON_PROPERTY_LATITUDE, + DeprecatedIPLocation.JSON_PROPERTY_LONGITUDE, + DeprecatedIPLocation.JSON_PROPERTY_POSTAL_CODE, + DeprecatedIPLocation.JSON_PROPERTY_TIMEZONE, + DeprecatedIPLocation.JSON_PROPERTY_CITY, + DeprecatedIPLocation.JSON_PROPERTY_COUNTRY, + DeprecatedIPLocation.JSON_PROPERTY_CONTINENT, + DeprecatedIPLocation.JSON_PROPERTY_SUBDIVISIONS +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class DeprecatedIPLocation { + public static final String JSON_PROPERTY_ACCURACY_RADIUS = "accuracyRadius"; + private Integer accuracyRadius; + + public static final String JSON_PROPERTY_LATITUDE = "latitude"; + private Double latitude; + + public static final String JSON_PROPERTY_LONGITUDE = "longitude"; + private Double longitude; + + public static final String JSON_PROPERTY_POSTAL_CODE = "postalCode"; + private String postalCode; + + public static final String JSON_PROPERTY_TIMEZONE = "timezone"; + private String timezone; + + public static final String JSON_PROPERTY_CITY = "city"; + private DeprecatedIPLocationCity city; + + public static final String JSON_PROPERTY_COUNTRY = "country"; + private Location country; + + public static final String JSON_PROPERTY_CONTINENT = "continent"; + private Location continent; + + public static final String JSON_PROPERTY_SUBDIVISIONS = "subdivisions"; + private List subdivisions = null; + + public DeprecatedIPLocation() { + } + + public DeprecatedIPLocation accuracyRadius(Integer accuracyRadius) { + this.accuracyRadius = accuracyRadius; + return this; + } + + /** + * The IP address is likely to be within this radius (in km) of the specified location. + * minimum: 0 + * @return accuracyRadius + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "The IP address is likely to be within this radius (in km) of the specified location.") + @JsonProperty(JSON_PROPERTY_ACCURACY_RADIUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Integer getAccuracyRadius() { + return accuracyRadius; + } + + + @JsonProperty(JSON_PROPERTY_ACCURACY_RADIUS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setAccuracyRadius(Integer accuracyRadius) { + this.accuracyRadius = accuracyRadius; + } + + + public DeprecatedIPLocation latitude(Double latitude) { + this.latitude = latitude; + return this; + } + + /** + * Get latitude + * minimum: -90 + * maximum: 90 + * @return latitude + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_LATITUDE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Double getLatitude() { + return latitude; + } + + + @JsonProperty(JSON_PROPERTY_LATITUDE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setLatitude(Double latitude) { + this.latitude = latitude; + } + + + public DeprecatedIPLocation longitude(Double longitude) { + this.longitude = longitude; + return this; + } + + /** + * Get longitude + * minimum: -180 + * maximum: 180 + * @return longitude + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_LONGITUDE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Double getLongitude() { + return longitude; + } + + + @JsonProperty(JSON_PROPERTY_LONGITUDE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setLongitude(Double longitude) { + this.longitude = longitude; + } + + + public DeprecatedIPLocation postalCode(String postalCode) { + this.postalCode = postalCode; + return this; + } + + /** + * Get postalCode + * @return postalCode + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_POSTAL_CODE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getPostalCode() { + return postalCode; + } + + + @JsonProperty(JSON_PROPERTY_POSTAL_CODE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + + public DeprecatedIPLocation timezone(String timezone) { + this.timezone = timezone; + return this; + } + + /** + * Get timezone + * @return timezone + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_TIMEZONE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getTimezone() { + return timezone; + } + + + @JsonProperty(JSON_PROPERTY_TIMEZONE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setTimezone(String timezone) { + this.timezone = timezone; + } + + + public DeprecatedIPLocation city(DeprecatedIPLocationCity city) { + this.city = city; + return this; + } + + /** + * Get city + * @return city + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_CITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public DeprecatedIPLocationCity getCity() { + return city; + } + + + @JsonProperty(JSON_PROPERTY_CITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCity(DeprecatedIPLocationCity city) { + this.city = city; + } + + + public DeprecatedIPLocation country(Location country) { + this.country = country; + return this; + } + + /** + * Get country + * @return country + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_COUNTRY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Location getCountry() { + return country; + } + + + @JsonProperty(JSON_PROPERTY_COUNTRY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCountry(Location country) { + this.country = country; + } + + + public DeprecatedIPLocation continent(Location continent) { + this.continent = continent; + return this; + } + + /** + * Get continent + * @return continent + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_CONTINENT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public Location getContinent() { + return continent; + } + + + @JsonProperty(JSON_PROPERTY_CONTINENT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setContinent(Location continent) { + this.continent = continent; + } + + + public DeprecatedIPLocation subdivisions(List subdivisions) { + this.subdivisions = subdivisions; + return this; + } + + public DeprecatedIPLocation addSubdivisionsItem(Subdivision subdivisionsItem) { + if (this.subdivisions == null) { + this.subdivisions = new ArrayList<>(); + } + this.subdivisions.add(subdivisionsItem); + return this; + } + + /** + * Get subdivisions + * @return subdivisions + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_SUBDIVISIONS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public List getSubdivisions() { + return subdivisions; + } + + + @JsonProperty(JSON_PROPERTY_SUBDIVISIONS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSubdivisions(List subdivisions) { + this.subdivisions = subdivisions; + } + + + /** + * Return true if this DeprecatedIPLocation object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DeprecatedIPLocation deprecatedIPLocation = (DeprecatedIPLocation) o; + return Objects.equals(this.accuracyRadius, deprecatedIPLocation.accuracyRadius) && + Objects.equals(this.latitude, deprecatedIPLocation.latitude) && + Objects.equals(this.longitude, deprecatedIPLocation.longitude) && + Objects.equals(this.postalCode, deprecatedIPLocation.postalCode) && + Objects.equals(this.timezone, deprecatedIPLocation.timezone) && + Objects.equals(this.city, deprecatedIPLocation.city) && + Objects.equals(this.country, deprecatedIPLocation.country) && + Objects.equals(this.continent, deprecatedIPLocation.continent) && + Objects.equals(this.subdivisions, deprecatedIPLocation.subdivisions); + } + + @Override + public int hashCode() { + return Objects.hash(accuracyRadius, latitude, longitude, postalCode, timezone, city, country, continent, subdivisions); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DeprecatedIPLocation {\n"); + sb.append(" accuracyRadius: ").append(toIndentedString(accuracyRadius)).append("\n"); + sb.append(" latitude: ").append(toIndentedString(latitude)).append("\n"); + sb.append(" longitude: ").append(toIndentedString(longitude)).append("\n"); + sb.append(" postalCode: ").append(toIndentedString(postalCode)).append("\n"); + sb.append(" timezone: ").append(toIndentedString(timezone)).append("\n"); + sb.append(" city: ").append(toIndentedString(city)).append("\n"); + sb.append(" country: ").append(toIndentedString(country)).append("\n"); + sb.append(" continent: ").append(toIndentedString(continent)).append("\n"); + sb.append(" subdivisions: ").append(toIndentedString(subdivisions)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/fingerprint/model/DeprecatedIPLocationCity.java b/src/main/java/com/fingerprint/model/DeprecatedIPLocationCity.java new file mode 100644 index 0000000..5516751 --- /dev/null +++ b/src/main/java/com/fingerprint/model/DeprecatedIPLocationCity.java @@ -0,0 +1,112 @@ +/* + * Fingerprint Pro Server API + * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. + * + * The version of the OpenAPI document: 3 + * Contact: support@fingerprint.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.fingerprint.model; + +import java.util.Objects; +import java.util.Arrays; +import java.util.Map; +import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fingerprint.sdk.JSON; + + +/** + * DeprecatedIPLocationCity + */ +@JsonPropertyOrder({ + DeprecatedIPLocationCity.JSON_PROPERTY_NAME +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class DeprecatedIPLocationCity { + public static final String JSON_PROPERTY_NAME = "name"; + private String name; + + public DeprecatedIPLocationCity() { + } + + public DeprecatedIPLocationCity name(String name) { + this.name = name; + return this; + } + + /** + * Get name + * @return name + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getName() { + return name; + } + + + @JsonProperty(JSON_PROPERTY_NAME) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setName(String name) { + this.name = name; + } + + + /** + * Return true if this DeprecatedIPLocationCity object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DeprecatedIPLocationCity deprecatedIPLocationCity = (DeprecatedIPLocationCity) o; + return Objects.equals(this.name, deprecatedIPLocationCity.name); + } + + @Override + public int hashCode() { + return Objects.hash(name); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DeprecatedIPLocationCity {\n"); + sb.append(" name: ").append(toIndentedString(name)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/fingerprint/model/IPLocation.java b/src/main/java/com/fingerprint/model/IPLocation.java index 5524c64..aafa21a 100644 --- a/src/main/java/com/fingerprint/model/IPLocation.java +++ b/src/main/java/com/fingerprint/model/IPLocation.java @@ -34,11 +34,8 @@ /** - * This field is **deprecated** and will not return a result for **accounts created after December 18th, 2023**. Please use the [`ipInfo` Smart signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) for geolocation information. - * @deprecated + * IPLocation */ -@Deprecated -@ApiModel(description = "This field is **deprecated** and will not return a result for **accounts created after December 18th, 2023**. Please use the [`ipInfo` Smart signal](https://dev.fingerprint.com/docs/smart-signals-overview#ip-geolocation) for geolocation information.") @JsonPropertyOrder({ IPLocation.JSON_PROPERTY_ACCURACY_RADIUS, IPLocation.JSON_PROPERTY_LATITUDE, diff --git a/src/main/java/com/fingerprint/model/IpInfoResultV4.java b/src/main/java/com/fingerprint/model/IpInfoResultV4.java index 23161e0..56f455c 100644 --- a/src/main/java/com/fingerprint/model/IpInfoResultV4.java +++ b/src/main/java/com/fingerprint/model/IpInfoResultV4.java @@ -92,7 +92,6 @@ public IpInfoResultV4 geolocation(IPLocation geolocation) { /** * Get geolocation * @return geolocation - * @deprecated **/ @javax.annotation.Nonnull @ApiModelProperty(required = true, value = "") diff --git a/src/main/java/com/fingerprint/model/IpInfoResultV6.java b/src/main/java/com/fingerprint/model/IpInfoResultV6.java index 2020a38..1521547 100644 --- a/src/main/java/com/fingerprint/model/IpInfoResultV6.java +++ b/src/main/java/com/fingerprint/model/IpInfoResultV6.java @@ -92,7 +92,6 @@ public IpInfoResultV6 geolocation(IPLocation geolocation) { /** * Get geolocation * @return geolocation - * @deprecated **/ @javax.annotation.Nonnull @ApiModelProperty(required = true, value = "") diff --git a/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java b/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java index 958dca4..69a46aa 100644 --- a/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java +++ b/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java @@ -24,7 +24,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import com.fingerprint.model.BrowserDetails; import com.fingerprint.model.Confidence; -import com.fingerprint.model.IPLocation; +import com.fingerprint.model.DeprecatedIPLocation; import com.fingerprint.model.SeenAt; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -71,7 +71,7 @@ public class ProductsResponseIdentificationData { private String ip; public static final String JSON_PROPERTY_IP_LOCATION = "ipLocation"; - private IPLocation ipLocation; + private DeprecatedIPLocation ipLocation; public static final String JSON_PROPERTY_TIMESTAMP = "timestamp"; private Long timestamp; @@ -210,7 +210,7 @@ public void setIp(String ip) { } - public ProductsResponseIdentificationData ipLocation(IPLocation ipLocation) { + public ProductsResponseIdentificationData ipLocation(DeprecatedIPLocation ipLocation) { this.ipLocation = ipLocation; return this; } @@ -226,14 +226,14 @@ public ProductsResponseIdentificationData ipLocation(IPLocation ipLocation) { @JsonProperty(JSON_PROPERTY_IP_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public IPLocation getIpLocation() { + public DeprecatedIPLocation getIpLocation() { return ipLocation; } @JsonProperty(JSON_PROPERTY_IP_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setIpLocation(IPLocation ipLocation) { + public void setIpLocation(DeprecatedIPLocation ipLocation) { this.ipLocation = ipLocation; } diff --git a/src/main/java/com/fingerprint/model/ResponseVisits.java b/src/main/java/com/fingerprint/model/ResponseVisits.java index e258e77..4608064 100644 --- a/src/main/java/com/fingerprint/model/ResponseVisits.java +++ b/src/main/java/com/fingerprint/model/ResponseVisits.java @@ -24,7 +24,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import com.fingerprint.model.BrowserDetails; import com.fingerprint.model.Confidence; -import com.fingerprint.model.IPLocation; +import com.fingerprint.model.DeprecatedIPLocation; import com.fingerprint.model.SeenAt; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -70,7 +70,7 @@ public class ResponseVisits { private String ip; public static final String JSON_PROPERTY_IP_LOCATION = "ipLocation"; - private IPLocation ipLocation; + private DeprecatedIPLocation ipLocation; public static final String JSON_PROPERTY_TIMESTAMP = "timestamp"; private Long timestamp; @@ -206,7 +206,7 @@ public void setIp(String ip) { } - public ResponseVisits ipLocation(IPLocation ipLocation) { + public ResponseVisits ipLocation(DeprecatedIPLocation ipLocation) { this.ipLocation = ipLocation; return this; } @@ -222,14 +222,14 @@ public ResponseVisits ipLocation(IPLocation ipLocation) { @JsonProperty(JSON_PROPERTY_IP_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public IPLocation getIpLocation() { + public DeprecatedIPLocation getIpLocation() { return ipLocation; } @JsonProperty(JSON_PROPERTY_IP_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setIpLocation(IPLocation ipLocation) { + public void setIpLocation(DeprecatedIPLocation ipLocation) { this.ipLocation = ipLocation; } diff --git a/src/main/java/com/fingerprint/model/Visit.java b/src/main/java/com/fingerprint/model/Visit.java index bdcc970..da9ef4f 100644 --- a/src/main/java/com/fingerprint/model/Visit.java +++ b/src/main/java/com/fingerprint/model/Visit.java @@ -24,7 +24,7 @@ import com.fasterxml.jackson.annotation.JsonValue; import com.fingerprint.model.BrowserDetails; import com.fingerprint.model.Confidence; -import com.fingerprint.model.IPLocation; +import com.fingerprint.model.DeprecatedIPLocation; import com.fingerprint.model.SeenAt; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -70,7 +70,7 @@ public class Visit { private String ip; public static final String JSON_PROPERTY_IP_LOCATION = "ipLocation"; - private IPLocation ipLocation; + private DeprecatedIPLocation ipLocation; public static final String JSON_PROPERTY_TIMESTAMP = "timestamp"; private Long timestamp; @@ -206,7 +206,7 @@ public void setIp(String ip) { } - public Visit ipLocation(IPLocation ipLocation) { + public Visit ipLocation(DeprecatedIPLocation ipLocation) { this.ipLocation = ipLocation; return this; } @@ -222,14 +222,14 @@ public Visit ipLocation(IPLocation ipLocation) { @JsonProperty(JSON_PROPERTY_IP_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public IPLocation getIpLocation() { + public DeprecatedIPLocation getIpLocation() { return ipLocation; } @JsonProperty(JSON_PROPERTY_IP_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setIpLocation(IPLocation ipLocation) { + public void setIpLocation(DeprecatedIPLocation ipLocation) { this.ipLocation = ipLocation; } diff --git a/src/main/java/com/fingerprint/model/WebhookVisit.java b/src/main/java/com/fingerprint/model/WebhookVisit.java index ac6488f..e9d96c0 100644 --- a/src/main/java/com/fingerprint/model/WebhookVisit.java +++ b/src/main/java/com/fingerprint/model/WebhookVisit.java @@ -25,6 +25,10 @@ import com.fingerprint.model.BotdDetectionResult; import com.fingerprint.model.BrowserDetails; import com.fingerprint.model.Confidence; +import com.fingerprint.model.DeprecatedIPLocation; +import com.fingerprint.model.EmulatorResult; +import com.fingerprint.model.FactoryResetResult; +import com.fingerprint.model.FridaResult; import com.fingerprint.model.HighActivityResult; import com.fingerprint.model.IPLocation; import com.fingerprint.model.IpBlockListResult; @@ -172,7 +176,7 @@ public class WebhookVisit { private String ip; public static final String JSON_PROPERTY_IP_LOCATION = "ipLocation"; - private IPLocation ipLocation; + private DeprecatedIPLocation ipLocation; public static final String JSON_PROPERTY_TIMESTAMP = "timestamp"; private Long timestamp; @@ -862,7 +866,7 @@ public void setIp(String ip) { } - public WebhookVisit ipLocation(IPLocation ipLocation) { + public WebhookVisit ipLocation(DeprecatedIPLocation ipLocation) { this.ipLocation = ipLocation; return this; } @@ -878,14 +882,14 @@ public WebhookVisit ipLocation(IPLocation ipLocation) { @JsonProperty(JSON_PROPERTY_IP_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public IPLocation getIpLocation() { + public DeprecatedIPLocation getIpLocation() { return ipLocation; } @JsonProperty(JSON_PROPERTY_IP_LOCATION) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setIpLocation(IPLocation ipLocation) { + public void setIpLocation(DeprecatedIPLocation ipLocation) { this.ipLocation = ipLocation; } From 044109e37b77b37c9be489e457af874f79bd8a31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 27 Feb 2024 14:35:05 +0800 Subject: [PATCH 03/11] feat: add `linkedId` field to the `BotdResult` type --- res/fingerprint-server-api.yaml | 3 ++ .../com/fingerprint/model/BotdResult.java | 38 +++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index a7fdbb4..650e6a1 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -4993,6 +4993,9 @@ components: requestId: type: string example: 1681392853693.lRiBBD + linkedId: + type: string + example: Automatic tests bot bot: $ref: '#/components/schemas/BotdDetectionResult' required: diff --git a/src/main/java/com/fingerprint/model/BotdResult.java b/src/main/java/com/fingerprint/model/BotdResult.java index 53a5a5d..1bcd26b 100644 --- a/src/main/java/com/fingerprint/model/BotdResult.java +++ b/src/main/java/com/fingerprint/model/BotdResult.java @@ -40,6 +40,7 @@ BotdResult.JSON_PROPERTY_URL, BotdResult.JSON_PROPERTY_USER_AGENT, BotdResult.JSON_PROPERTY_REQUEST_ID, + BotdResult.JSON_PROPERTY_LINKED_ID, BotdResult.JSON_PROPERTY_BOT }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") @@ -59,6 +60,9 @@ public class BotdResult { public static final String JSON_PROPERTY_REQUEST_ID = "requestId"; private String requestId; + public static final String JSON_PROPERTY_LINKED_ID = "linkedId"; + private String linkedId; + public static final String JSON_PROPERTY_BOT = "bot"; private BotdDetectionResult bot; @@ -163,7 +167,7 @@ public String getUserAgent() { @JsonProperty(JSON_PROPERTY_USER_AGENT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setUserAgent(String userAgent) { this.userAgent = userAgent; } @@ -189,12 +193,38 @@ public String getRequestId() { @JsonProperty(JSON_PROPERTY_REQUEST_ID) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setRequestId(String requestId) { this.requestId = requestId; } + public BotdResult linkedId(String linkedId) { + this.linkedId = linkedId; + return this; + } + + /** + * Get linkedId + * @return linkedId + **/ + @javax.annotation.Nullable + @ApiModelProperty(example = "Automatic tests bot", value = "") + @JsonProperty(JSON_PROPERTY_LINKED_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getLinkedId() { + return linkedId; + } + + + @JsonProperty(JSON_PROPERTY_LINKED_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setLinkedId(String linkedId) { + this.linkedId = linkedId; + } + + public BotdResult bot(BotdDetectionResult bot) { this.bot = bot; return this; @@ -238,12 +268,13 @@ public boolean equals(Object o) { Objects.equals(this.url, botdResult.url) && Objects.equals(this.userAgent, botdResult.userAgent) && Objects.equals(this.requestId, botdResult.requestId) && + Objects.equals(this.linkedId, botdResult.linkedId) && Objects.equals(this.bot, botdResult.bot); } @Override public int hashCode() { - return Objects.hash(ip, time, url, userAgent, requestId, bot); + return Objects.hash(ip, time, url, userAgent, requestId, linkedId, bot); } @Override @@ -255,6 +286,7 @@ public String toString() { sb.append(" url: ").append(toIndentedString(url)).append("\n"); sb.append(" userAgent: ").append(toIndentedString(userAgent)).append("\n"); sb.append(" requestId: ").append(toIndentedString(requestId)).append("\n"); + sb.append(" linkedId: ").append(toIndentedString(linkedId)).append("\n"); sb.append(" bot: ").append(toIndentedString(bot)).append("\n"); sb.append("}"); return sb.toString(); From c66373e5ff3ee194d1fea05329ab10f1c21544cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 27 Feb 2024 14:37:18 +0800 Subject: [PATCH 04/11] feat: add `SuspectScore` smart signal support --- docs/ProductsResponse.md | 1 + docs/SignalResponseSuspectScore.md | 14 ++ docs/SuspectScoreResult.md | 13 ++ docs/WebhookVisit.md | 1 + res/fingerprint-server-api.yaml | 31 ++++ .../fingerprint/model/ProductsResponse.java | 35 ++++- .../model/SignalResponseSuspectScore.java | 146 ++++++++++++++++++ .../fingerprint/model/SuspectScoreResult.java | 112 ++++++++++++++ .../com/fingerprint/model/WebhookVisit.java | 35 ++++- 9 files changed, 386 insertions(+), 2 deletions(-) create mode 100644 docs/SignalResponseSuspectScore.md create mode 100644 docs/SuspectScoreResult.md create mode 100644 src/main/java/com/fingerprint/model/SignalResponseSuspectScore.java create mode 100644 src/main/java/com/fingerprint/model/SuspectScoreResult.java diff --git a/docs/ProductsResponse.md b/docs/ProductsResponse.md index 263367d..1f2e1ee 100644 --- a/docs/ProductsResponse.md +++ b/docs/ProductsResponse.md @@ -27,6 +27,7 @@ Contains all information about the request identified by `requestId`, depending |**tampering** | [**SignalResponseTampering**](SignalResponseTampering.md) | | [optional] | |**highActivity** | [**SignalResponseHighActivity**](SignalResponseHighActivity.md) | | [optional] | |**locationSpoofing** | [**SignalResponseLocationSpoofing**](SignalResponseLocationSpoofing.md) | | [optional] | +|**suspectScore** | [**SignalResponseSuspectScore**](SignalResponseSuspectScore.md) | | [optional] | |**rawDeviceAttributes** | [**SignalResponseRawDeviceAttributes**](SignalResponseRawDeviceAttributes.md) | | [optional] | diff --git a/docs/SignalResponseSuspectScore.md b/docs/SignalResponseSuspectScore.md new file mode 100644 index 0000000..9536e1c --- /dev/null +++ b/docs/SignalResponseSuspectScore.md @@ -0,0 +1,14 @@ + + +# SignalResponseSuspectScore + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**SuspectScoreResult**](SuspectScoreResult.md) | | [optional] | +|**error** | [**ProductError**](ProductError.md) | | [optional] | + + + diff --git a/docs/SuspectScoreResult.md b/docs/SuspectScoreResult.md new file mode 100644 index 0000000..e828bae --- /dev/null +++ b/docs/SuspectScoreResult.md @@ -0,0 +1,13 @@ + + +# SuspectScoreResult + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**result** | **Integer** | Suspect Score is an easy way to integrate Smart Signals into your fraud protection work flow. It is a weighted representation of all Smart Signals present in the payload that helps identify suspicious activity. The value range is [0; S] where S is sum of all Smart Signals weights. See more details here: https://dev.fingerprint.com/docs/suspect-score | | + + + diff --git a/docs/WebhookVisit.md b/docs/WebhookVisit.md index 382d3a0..26553f8 100644 --- a/docs/WebhookVisit.md +++ b/docs/WebhookVisit.md @@ -29,6 +29,7 @@ |**rawDeviceAttributes** | [**Map<String, RawDeviceAttributesResultValue>**](RawDeviceAttributesResultValue.md) | It includes 35+ raw browser identification attributes to provide Fingerprint users with even more information than our standard visitor ID provides. This enables Fingerprint users to not have to run our open-source product in conjunction with Fingerprint Pro Plus and Enterprise to get those additional attributes. Warning: The raw signals data can change at any moment as we improve the product. We cannot guarantee the internal shape of raw device attributes to be stable, so typical semantic versioning rules do not apply here. Use this data with caution without assuming a specific structure beyond the generic type provided here. | [optional] | |**highActivity** | [**HighActivityResult**](HighActivityResult.md) | | [optional] | |**locationSpoofing** | [**LocationSpoofingResult**](LocationSpoofingResult.md) | | [optional] | +|**suspectScore** | [**SuspectScoreResult**](SuspectScoreResult.md) | | [optional] | |**requestId** | **String** | Unique identifier of the user's identification request. | | |**browserDetails** | [**BrowserDetails**](BrowserDetails.md) | | | |**ip** | **String** | | | diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index 650e6a1..17aa225 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -3762,6 +3762,8 @@ paths: result: false locationSpoofing: result: true + suspectScore: + result: 0 responses: default: description: The server doesn't validate the answer. @@ -4148,6 +4150,8 @@ components: $ref: '#/components/schemas/HighActivityResult' locationSpoofing: $ref: '#/components/schemas/LocationSpoofingResult' + suspectScore: + $ref: '#/components/schemas/SuspectScoreResult' requestId: description: Unique identifier of the user's identification request. type: string @@ -4927,6 +4931,15 @@ components: $ref: '#/components/schemas/LocationSpoofingResult' error: $ref: '#/components/schemas/ProductError' + suspectScore: + title: SignalResponseSuspectScore + type: object + additionalProperties: false + properties: + data: + $ref: '#/components/schemas/SuspectScoreResult' + error: + $ref: '#/components/schemas/ProductError' rawDeviceAttributes: title: SignalResponseRawDeviceAttributes type: object @@ -5155,6 +5168,24 @@ components: Flag indicating whether the request came from a device with location spoofing enabled. example: false + required: + - result + SuspectScoreResult: + type: object + additionalProperties: false + properties: + result: + type: integer + description: > + Suspect Score is an easy way to integrate Smart Signals into your + fraud protection work flow. It is a weighted representation of all + Smart Signals present in the payload that helps identify suspicious + activity. The value range is [0; S] where S is sum of all Smart + Signals weights. See more details here: + https://dev.fingerprint.com/docs/suspect-score + example: 0 + required: + - result RawDeviceAttributesResult: type: object description: > diff --git a/src/main/java/com/fingerprint/model/ProductsResponse.java b/src/main/java/com/fingerprint/model/ProductsResponse.java index 85148d4..81d16b0 100644 --- a/src/main/java/com/fingerprint/model/ProductsResponse.java +++ b/src/main/java/com/fingerprint/model/ProductsResponse.java @@ -38,6 +38,7 @@ import com.fingerprint.model.SignalResponseProxy; import com.fingerprint.model.SignalResponseRawDeviceAttributes; import com.fingerprint.model.SignalResponseRootApps; +import com.fingerprint.model.SignalResponseSuspectScore; import com.fingerprint.model.SignalResponseTampering; import com.fingerprint.model.SignalResponseTor; import com.fingerprint.model.SignalResponseVirtualMachine; @@ -72,6 +73,7 @@ ProductsResponse.JSON_PROPERTY_TAMPERING, ProductsResponse.JSON_PROPERTY_HIGH_ACTIVITY, ProductsResponse.JSON_PROPERTY_LOCATION_SPOOFING, + ProductsResponse.JSON_PROPERTY_SUSPECT_SCORE, ProductsResponse.JSON_PROPERTY_RAW_DEVICE_ATTRIBUTES }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") @@ -133,6 +135,9 @@ public class ProductsResponse { public static final String JSON_PROPERTY_LOCATION_SPOOFING = "locationSpoofing"; private SignalResponseLocationSpoofing locationSpoofing; + public static final String JSON_PROPERTY_SUSPECT_SCORE = "suspectScore"; + private SignalResponseSuspectScore suspectScore; + public static final String JSON_PROPERTY_RAW_DEVICE_ATTRIBUTES = "rawDeviceAttributes"; private SignalResponseRawDeviceAttributes rawDeviceAttributes; @@ -633,6 +638,32 @@ public void setLocationSpoofing(SignalResponseLocationSpoofing locationSpoofing) } + public ProductsResponse suspectScore(SignalResponseSuspectScore suspectScore) { + this.suspectScore = suspectScore; + return this; + } + + /** + * Get suspectScore + * @return suspectScore + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_SUSPECT_SCORE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public SignalResponseSuspectScore getSuspectScore() { + return suspectScore; + } + + + @JsonProperty(JSON_PROPERTY_SUSPECT_SCORE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSuspectScore(SignalResponseSuspectScore suspectScore) { + this.suspectScore = suspectScore; + } + + public ProductsResponse rawDeviceAttributes(SignalResponseRawDeviceAttributes rawDeviceAttributes) { this.rawDeviceAttributes = rawDeviceAttributes; return this; @@ -690,12 +721,13 @@ public boolean equals(Object o) { Objects.equals(this.tampering, productsResponse.tampering) && Objects.equals(this.highActivity, productsResponse.highActivity) && Objects.equals(this.locationSpoofing, productsResponse.locationSpoofing) && + Objects.equals(this.suspectScore, productsResponse.suspectScore) && Objects.equals(this.rawDeviceAttributes, productsResponse.rawDeviceAttributes); } @Override public int hashCode() { - return Objects.hash(identification, botd, ipInfo, incognito, rootApps, emulator, clonedApp, factoryReset, jailbroken, frida, ipBlocklist, tor, privacySettings, virtualMachine, vpn, proxy, tampering, highActivity, locationSpoofing, rawDeviceAttributes); + return Objects.hash(identification, botd, ipInfo, incognito, rootApps, emulator, clonedApp, factoryReset, jailbroken, frida, ipBlocklist, tor, privacySettings, virtualMachine, vpn, proxy, tampering, highActivity, locationSpoofing, suspectScore, rawDeviceAttributes); } @Override @@ -721,6 +753,7 @@ public String toString() { sb.append(" tampering: ").append(toIndentedString(tampering)).append("\n"); sb.append(" highActivity: ").append(toIndentedString(highActivity)).append("\n"); sb.append(" locationSpoofing: ").append(toIndentedString(locationSpoofing)).append("\n"); + sb.append(" suspectScore: ").append(toIndentedString(suspectScore)).append("\n"); sb.append(" rawDeviceAttributes: ").append(toIndentedString(rawDeviceAttributes)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/SignalResponseSuspectScore.java b/src/main/java/com/fingerprint/model/SignalResponseSuspectScore.java new file mode 100644 index 0000000..bb7682d --- /dev/null +++ b/src/main/java/com/fingerprint/model/SignalResponseSuspectScore.java @@ -0,0 +1,146 @@ +/* + * Fingerprint Pro Server API + * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. + * + * The version of the OpenAPI document: 3 + * Contact: support@fingerprint.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.fingerprint.model; + +import java.util.Objects; +import java.util.Arrays; +import java.util.Map; +import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.ProductError; +import com.fingerprint.model.SuspectScoreResult; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fingerprint.sdk.JSON; + + +/** + * SignalResponseSuspectScore + */ +@JsonPropertyOrder({ + SignalResponseSuspectScore.JSON_PROPERTY_DATA, + SignalResponseSuspectScore.JSON_PROPERTY_ERROR +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class SignalResponseSuspectScore { + public static final String JSON_PROPERTY_DATA = "data"; + private SuspectScoreResult data; + + public static final String JSON_PROPERTY_ERROR = "error"; + private ProductError error; + + public SignalResponseSuspectScore() { + } + + public SignalResponseSuspectScore data(SuspectScoreResult data) { + this.data = data; + return this; + } + + /** + * Get data + * @return data + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public SuspectScoreResult getData() { + return data; + } + + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setData(SuspectScoreResult data) { + this.data = data; + } + + + public SignalResponseSuspectScore error(ProductError error) { + this.error = error; + return this; + } + + /** + * Get error + * @return error + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_ERROR) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public ProductError getError() { + return error; + } + + + @JsonProperty(JSON_PROPERTY_ERROR) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setError(ProductError error) { + this.error = error; + } + + + /** + * Return true if this SignalResponseSuspectScore object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SignalResponseSuspectScore signalResponseSuspectScore = (SignalResponseSuspectScore) o; + return Objects.equals(this.data, signalResponseSuspectScore.data) && + Objects.equals(this.error, signalResponseSuspectScore.error); + } + + @Override + public int hashCode() { + return Objects.hash(data, error); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SignalResponseSuspectScore {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" error: ").append(toIndentedString(error)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/fingerprint/model/SuspectScoreResult.java b/src/main/java/com/fingerprint/model/SuspectScoreResult.java new file mode 100644 index 0000000..7324255 --- /dev/null +++ b/src/main/java/com/fingerprint/model/SuspectScoreResult.java @@ -0,0 +1,112 @@ +/* + * Fingerprint Pro Server API + * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. + * + * The version of the OpenAPI document: 3 + * Contact: support@fingerprint.com + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +package com.fingerprint.model; + +import java.util.Objects; +import java.util.Arrays; +import java.util.Map; +import java.util.HashMap; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonTypeName; +import com.fasterxml.jackson.annotation.JsonValue; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fingerprint.sdk.JSON; + + +/** + * SuspectScoreResult + */ +@JsonPropertyOrder({ + SuspectScoreResult.JSON_PROPERTY_RESULT +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class SuspectScoreResult { + public static final String JSON_PROPERTY_RESULT = "result"; + private Integer result; + + public SuspectScoreResult() { + } + + public SuspectScoreResult result(Integer result) { + this.result = result; + return this; + } + + /** + * Suspect Score is an easy way to integrate Smart Signals into your fraud protection work flow. It is a weighted representation of all Smart Signals present in the payload that helps identify suspicious activity. The value range is [0; S] where S is sum of all Smart Signals weights. See more details here: https://dev.fingerprint.com/docs/suspect-score + * @return result + **/ + @javax.annotation.Nonnull + @ApiModelProperty(example = "0", required = true, value = "Suspect Score is an easy way to integrate Smart Signals into your fraud protection work flow. It is a weighted representation of all Smart Signals present in the payload that helps identify suspicious activity. The value range is [0; S] where S is sum of all Smart Signals weights. See more details here: https://dev.fingerprint.com/docs/suspect-score ") + @JsonProperty(JSON_PROPERTY_RESULT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + + public Integer getResult() { + return result; + } + + + @JsonProperty(JSON_PROPERTY_RESULT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setResult(Integer result) { + this.result = result; + } + + + /** + * Return true if this SuspectScoreResult object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SuspectScoreResult suspectScoreResult = (SuspectScoreResult) o; + return Objects.equals(this.result, suspectScoreResult.result); + } + + @Override + public int hashCode() { + return Objects.hash(result); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SuspectScoreResult {\n"); + sb.append(" result: ").append(toIndentedString(result)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } + +} + diff --git a/src/main/java/com/fingerprint/model/WebhookVisit.java b/src/main/java/com/fingerprint/model/WebhookVisit.java index e9d96c0..24f8cfc 100644 --- a/src/main/java/com/fingerprint/model/WebhookVisit.java +++ b/src/main/java/com/fingerprint/model/WebhookVisit.java @@ -36,6 +36,7 @@ import com.fingerprint.model.LocationSpoofingResult; import com.fingerprint.model.RawDeviceAttributesResultValue; import com.fingerprint.model.SeenAt; +import com.fingerprint.model.SuspectScoreResult; import com.fingerprint.model.TamperingResult; import com.fingerprint.model.VpnResult; import com.fingerprint.model.WebhookSignalResponseClonedApp; @@ -84,6 +85,7 @@ WebhookVisit.JSON_PROPERTY_RAW_DEVICE_ATTRIBUTES, WebhookVisit.JSON_PROPERTY_HIGH_ACTIVITY, WebhookVisit.JSON_PROPERTY_LOCATION_SPOOFING, + WebhookVisit.JSON_PROPERTY_SUSPECT_SCORE, WebhookVisit.JSON_PROPERTY_REQUEST_ID, WebhookVisit.JSON_PROPERTY_BROWSER_DETAILS, WebhookVisit.JSON_PROPERTY_IP, @@ -166,6 +168,9 @@ public class WebhookVisit { public static final String JSON_PROPERTY_LOCATION_SPOOFING = "locationSpoofing"; private LocationSpoofingResult locationSpoofing; + public static final String JSON_PROPERTY_SUSPECT_SCORE = "suspectScore"; + private SuspectScoreResult suspectScore; + public static final String JSON_PROPERTY_REQUEST_ID = "requestId"; private String requestId; @@ -788,6 +793,32 @@ public void setLocationSpoofing(LocationSpoofingResult locationSpoofing) { } + public WebhookVisit suspectScore(SuspectScoreResult suspectScore) { + this.suspectScore = suspectScore; + return this; + } + + /** + * Get suspectScore + * @return suspectScore + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_SUSPECT_SCORE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public SuspectScoreResult getSuspectScore() { + return suspectScore; + } + + + @JsonProperty(JSON_PROPERTY_SUSPECT_SCORE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setSuspectScore(SuspectScoreResult suspectScore) { + this.suspectScore = suspectScore; + } + + public WebhookVisit requestId(String requestId) { this.requestId = requestId; return this; @@ -1170,6 +1201,7 @@ public boolean equals(Object o) { Objects.equals(this.rawDeviceAttributes, webhookVisit.rawDeviceAttributes) && Objects.equals(this.highActivity, webhookVisit.highActivity) && Objects.equals(this.locationSpoofing, webhookVisit.locationSpoofing) && + Objects.equals(this.suspectScore, webhookVisit.suspectScore) && Objects.equals(this.requestId, webhookVisit.requestId) && Objects.equals(this.browserDetails, webhookVisit.browserDetails) && Objects.equals(this.ip, webhookVisit.ip) && @@ -1187,7 +1219,7 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(visitorId, clientReferrer, userAgent, bot, ipInfo, incognito, rootApps, emulator, clonedApp, factoryReset, jailbroken, frida, ipBlocklist, tor, privacySettings, virtualMachine, vpn, proxy, tampering, rawDeviceAttributes, highActivity, locationSpoofing, requestId, browserDetails, ip, ipLocation, timestamp, time, url, tag, linkedId, confidence, visitorFound, firstSeenAt, lastSeenAt); + return Objects.hash(visitorId, clientReferrer, userAgent, bot, ipInfo, incognito, rootApps, emulator, clonedApp, factoryReset, jailbroken, frida, ipBlocklist, tor, privacySettings, virtualMachine, vpn, proxy, tampering, rawDeviceAttributes, highActivity, locationSpoofing, suspectScore, requestId, browserDetails, ip, ipLocation, timestamp, time, url, tag, linkedId, confidence, visitorFound, firstSeenAt, lastSeenAt); } @Override @@ -1216,6 +1248,7 @@ public String toString() { sb.append(" rawDeviceAttributes: ").append(toIndentedString(rawDeviceAttributes)).append("\n"); sb.append(" highActivity: ").append(toIndentedString(highActivity)).append("\n"); sb.append(" locationSpoofing: ").append(toIndentedString(locationSpoofing)).append("\n"); + sb.append(" suspectScore: ").append(toIndentedString(suspectScore)).append("\n"); sb.append(" requestId: ").append(toIndentedString(requestId)).append("\n"); sb.append(" browserDetails: ").append(toIndentedString(browserDetails)).append("\n"); sb.append(" ip: ").append(toIndentedString(ip)).append("\n"); From efb8fd65ceb210b0b9113f38ef99e20e731078c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 27 Feb 2024 14:38:43 +0800 Subject: [PATCH 05/11] feat: add missed errors structures --- docs/SignalResponseRawDeviceAttributes.md | 1 + .../com/fingerprint/model/EventResponse.java | 38 ++++++++++++++++-- .../SignalResponseRawDeviceAttributes.java | 39 +++++++++++++++++-- 3 files changed, 72 insertions(+), 6 deletions(-) diff --git a/docs/SignalResponseRawDeviceAttributes.md b/docs/SignalResponseRawDeviceAttributes.md index d6f211e..246cd9f 100644 --- a/docs/SignalResponseRawDeviceAttributes.md +++ b/docs/SignalResponseRawDeviceAttributes.md @@ -8,6 +8,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| |**data** | [**Map<String, RawDeviceAttributesResultValue>**](RawDeviceAttributesResultValue.md) | It includes 35+ raw browser identification attributes to provide Fingerprint users with even more information than our standard visitor ID provides. This enables Fingerprint users to not have to run our open-source product in conjunction with Fingerprint Pro Plus and Enterprise to get those additional attributes. Warning: The raw signals data can change at any moment as we improve the product. We cannot guarantee the internal shape of raw device attributes to be stable, so typical semantic versioning rules do not apply here. Use this data with caution without assuming a specific structure beyond the generic type provided here. | [optional] | +|**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/src/main/java/com/fingerprint/model/EventResponse.java b/src/main/java/com/fingerprint/model/EventResponse.java index d609971..22732c8 100644 --- a/src/main/java/com/fingerprint/model/EventResponse.java +++ b/src/main/java/com/fingerprint/model/EventResponse.java @@ -35,13 +35,17 @@ */ @ApiModel(description = "Contains results from all activated products - Fingerprint Pro, Bot Detection, and others.") @JsonPropertyOrder({ - EventResponse.JSON_PROPERTY_PRODUCTS + EventResponse.JSON_PROPERTY_PRODUCTS, + EventResponse.JSON_PROPERTY_ERROR }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class EventResponse { public static final String JSON_PROPERTY_PRODUCTS = "products"; private ProductsResponse products; + public static final String JSON_PROPERTY_ERROR = "error"; + private ProductError error; + public EventResponse() { } @@ -71,6 +75,32 @@ public void setProducts(ProductsResponse products) { } + public EventResponse error(ProductError error) { + this.error = error; + return this; + } + + /** + * Get error + * @return error + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_ERROR) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public ProductError getError() { + return error; + } + + + @JsonProperty(JSON_PROPERTY_ERROR) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setError(ProductError error) { + this.error = error; + } + + /** * Return true if this EventResponse object is equal to o. */ @@ -83,12 +113,13 @@ public boolean equals(Object o) { return false; } EventResponse eventResponse = (EventResponse) o; - return Objects.equals(this.products, eventResponse.products); + return Objects.equals(this.products, eventResponse.products) && + Objects.equals(this.error, eventResponse.error); } @Override public int hashCode() { - return Objects.hash(products); + return Objects.hash(products, error); } @Override @@ -96,6 +127,7 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class EventResponse {\n"); sb.append(" products: ").append(toIndentedString(products)).append("\n"); + sb.append(" error: ").append(toIndentedString(error)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/src/main/java/com/fingerprint/model/SignalResponseRawDeviceAttributes.java b/src/main/java/com/fingerprint/model/SignalResponseRawDeviceAttributes.java index 8657486..c076414 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseRawDeviceAttributes.java +++ b/src/main/java/com/fingerprint/model/SignalResponseRawDeviceAttributes.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.ProductError; import com.fingerprint.model.RawDeviceAttributesResultValue; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -35,13 +36,17 @@ * SignalResponseRawDeviceAttributes */ @JsonPropertyOrder({ - SignalResponseRawDeviceAttributes.JSON_PROPERTY_DATA + SignalResponseRawDeviceAttributes.JSON_PROPERTY_DATA, + SignalResponseRawDeviceAttributes.JSON_PROPERTY_ERROR }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseRawDeviceAttributes { public static final String JSON_PROPERTY_DATA = "data"; private Map data = null; + public static final String JSON_PROPERTY_ERROR = "error"; + private ProductError error; + public SignalResponseRawDeviceAttributes() { } @@ -79,6 +84,32 @@ public void setData(Map data) { } + public SignalResponseRawDeviceAttributes error(ProductError error) { + this.error = error; + return this; + } + + /** + * Get error + * @return error + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_ERROR) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public ProductError getError() { + return error; + } + + + @JsonProperty(JSON_PROPERTY_ERROR) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setError(ProductError error) { + this.error = error; + } + + /** * Return true if this SignalResponseRawDeviceAttributes object is equal to o. */ @@ -91,12 +122,13 @@ public boolean equals(Object o) { return false; } SignalResponseRawDeviceAttributes signalResponseRawDeviceAttributes = (SignalResponseRawDeviceAttributes) o; - return Objects.equals(this.data, signalResponseRawDeviceAttributes.data); + return Objects.equals(this.data, signalResponseRawDeviceAttributes.data) && + Objects.equals(this.error, signalResponseRawDeviceAttributes.error); } @Override public int hashCode() { - return Objects.hash(data); + return Objects.hash(data, error); } @Override @@ -104,6 +136,7 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class SignalResponseRawDeviceAttributes {\n"); sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" error: ").append(toIndentedString(error)).append("\n"); sb.append("}"); return sb.toString(); } From 069d9c506311e1bd0bd835ba46a4809658b107ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 27 Feb 2024 14:46:08 +0800 Subject: [PATCH 06/11] feat: make identification field `tag` required BREAKING CHANGE: make identification field `confidence` optional --- docs/ProductsResponseIdentificationData.md | 6 ++--- docs/ResponseVisits.md | 4 +-- docs/Visit.md | 2 +- docs/WebhookVisit.md | 6 ++--- .../ProductsResponseIdentificationData.java | 25 ++++++++----------- .../com/fingerprint/model/ResponseVisits.java | 12 ++++----- .../java/com/fingerprint/model/Visit.java | 19 ++++++-------- .../com/fingerprint/model/WebhookVisit.java | 25 ++++++++----------- 8 files changed, 45 insertions(+), 54 deletions(-) diff --git a/docs/ProductsResponseIdentificationData.md b/docs/ProductsResponseIdentificationData.md index 68753d5..a96a811 100644 --- a/docs/ProductsResponseIdentificationData.md +++ b/docs/ProductsResponseIdentificationData.md @@ -14,10 +14,10 @@ |**ipLocation** | [**DeprecatedIPLocation**](DeprecatedIPLocation.md) | | [optional] | |**timestamp** | **Long** | Timestamp of the event with millisecond precision in Unix time. | | |**time** | **OffsetDateTime** | Time expressed according to ISO 8601 in UTC format. | | -|**url** | **URI** | Page URL from which identification request was sent. | | -|**tag** | **Map<String, Object>** | A customer-provided value or an object that was sent with identification request. | [optional] | +|**url** | **URI** | Page URL from which the identification request was sent. | | +|**tag** | **Map<String, Object>** | A customer-provided value or an object that was sent with identification request. | | |**linkedId** | **String** | A customer-provided id that was sent with identification request. | [optional] | -|**confidence** | [**Confidence**](Confidence.md) | | | +|**confidence** | [**Confidence**](Confidence.md) | | [optional] | |**visitorFound** | **Boolean** | Attribute represents if a visitor had been identified before. | | |**firstSeenAt** | [**SeenAt**](SeenAt.md) | | | |**lastSeenAt** | [**SeenAt**](SeenAt.md) | | | diff --git a/docs/ResponseVisits.md b/docs/ResponseVisits.md index fddaba0..0465daa 100644 --- a/docs/ResponseVisits.md +++ b/docs/ResponseVisits.md @@ -14,10 +14,10 @@ |**ipLocation** | [**DeprecatedIPLocation**](DeprecatedIPLocation.md) | | [optional] | |**timestamp** | **Long** | Timestamp of the event with millisecond precision in Unix time. | | |**time** | **OffsetDateTime** | Time expressed according to ISO 8601 in UTC format. | | -|**url** | **URI** | Page URL from which identification request was sent. | | +|**url** | **URI** | Page URL from which the identification request was sent. | | |**tag** | **Map<String, Object>** | A customer-provided value or an object that was sent with identification request. | | |**linkedId** | **String** | A customer-provided id that was sent with identification request. | [optional] | -|**confidence** | [**Confidence**](Confidence.md) | | | +|**confidence** | [**Confidence**](Confidence.md) | | [optional] | |**visitorFound** | **Boolean** | Attribute represents if a visitor had been identified before. | | |**firstSeenAt** | [**SeenAt**](SeenAt.md) | | | |**lastSeenAt** | [**SeenAt**](SeenAt.md) | | | diff --git a/docs/Visit.md b/docs/Visit.md index 0f2378c..09fa664 100644 --- a/docs/Visit.md +++ b/docs/Visit.md @@ -17,7 +17,7 @@ |**url** | **URI** | Page URL from which the identification request was sent. | | |**tag** | **Map<String, Object>** | A customer-provided value or an object that was sent with identification request. | | |**linkedId** | **String** | A customer-provided id that was sent with identification request. | [optional] | -|**confidence** | [**Confidence**](Confidence.md) | | | +|**confidence** | [**Confidence**](Confidence.md) | | [optional] | |**visitorFound** | **Boolean** | Attribute represents if a visitor had been identified before. | | |**firstSeenAt** | [**SeenAt**](SeenAt.md) | | | |**lastSeenAt** | [**SeenAt**](SeenAt.md) | | | diff --git a/docs/WebhookVisit.md b/docs/WebhookVisit.md index 26553f8..40e8099 100644 --- a/docs/WebhookVisit.md +++ b/docs/WebhookVisit.md @@ -36,10 +36,10 @@ |**ipLocation** | [**DeprecatedIPLocation**](DeprecatedIPLocation.md) | | [optional] | |**timestamp** | **Long** | Timestamp of the event with millisecond precision in Unix time. | | |**time** | **OffsetDateTime** | Time expressed according to ISO 8601 in UTC format. | | -|**url** | **URI** | Page URL from which identification request was sent. | | -|**tag** | **Map<String, Object>** | A customer-provided value or an object that was sent with identification request. | [optional] | +|**url** | **URI** | Page URL from which the identification request was sent. | | +|**tag** | **Map<String, Object>** | A customer-provided value or an object that was sent with identification request. | | |**linkedId** | **String** | A customer-provided id that was sent with identification request. | [optional] | -|**confidence** | [**Confidence**](Confidence.md) | | | +|**confidence** | [**Confidence**](Confidence.md) | | [optional] | |**visitorFound** | **Boolean** | Attribute represents if a visitor had been identified before. | | |**firstSeenAt** | [**SeenAt**](SeenAt.md) | | | |**lastSeenAt** | [**SeenAt**](SeenAt.md) | | | diff --git a/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java b/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java index 69a46aa..1b683c4 100644 --- a/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java +++ b/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java @@ -83,7 +83,7 @@ public class ProductsResponseIdentificationData { private URI url; public static final String JSON_PROPERTY_TAG = "tag"; - private Map tag = null; + private Map tag = new HashMap<>(); public static final String JSON_PROPERTY_LINKED_ID = "linkedId"; private String linkedId; @@ -296,11 +296,11 @@ public ProductsResponseIdentificationData url(URI url) { } /** - * Page URL from which identification request was sent. + * Page URL from which the identification request was sent. * @return url **/ @javax.annotation.Nonnull - @ApiModelProperty(example = "https://some.website/path?query=params", required = true, value = "Page URL from which identification request was sent.") + @ApiModelProperty(example = "https://some.website/path?query=params", required = true, value = "Page URL from which the identification request was sent.") @JsonProperty(JSON_PROPERTY_URL) @JsonInclude(value = JsonInclude.Include.ALWAYS) @@ -322,9 +322,6 @@ public ProductsResponseIdentificationData tag(Map tag) { } public ProductsResponseIdentificationData putTagItem(String key, Object tagItem) { - if (this.tag == null) { - this.tag = new HashMap<>(); - } this.tag.put(key, tagItem); return this; } @@ -333,10 +330,10 @@ public ProductsResponseIdentificationData putTagItem(String key, Object tagItem) * A customer-provided value or an object that was sent with identification request. * @return tag **/ - @javax.annotation.Nullable - @ApiModelProperty(value = "A customer-provided value or an object that was sent with identification request.") + @javax.annotation.Nonnull + @ApiModelProperty(required = true, value = "A customer-provided value or an object that was sent with identification request.") @JsonProperty(JSON_PROPERTY_TAG) - @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.ALWAYS) public Map getTag() { return tag; @@ -344,7 +341,7 @@ public Map getTag() { @JsonProperty(JSON_PROPERTY_TAG) - @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.ALWAYS) public void setTag(Map tag) { this.tag = tag; } @@ -385,10 +382,10 @@ public ProductsResponseIdentificationData confidence(Confidence confidence) { * Get confidence * @return confidence **/ - @javax.annotation.Nonnull - @ApiModelProperty(required = true, value = "") + @javax.annotation.Nullable + @ApiModelProperty(value = "") @JsonProperty(JSON_PROPERTY_CONFIDENCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public Confidence getConfidence() { return confidence; @@ -396,7 +393,7 @@ public Confidence getConfidence() { @JsonProperty(JSON_PROPERTY_CONFIDENCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public void setConfidence(Confidence confidence) { this.confidence = confidence; } diff --git a/src/main/java/com/fingerprint/model/ResponseVisits.java b/src/main/java/com/fingerprint/model/ResponseVisits.java index 4608064..8070602 100644 --- a/src/main/java/com/fingerprint/model/ResponseVisits.java +++ b/src/main/java/com/fingerprint/model/ResponseVisits.java @@ -292,11 +292,11 @@ public ResponseVisits url(URI url) { } /** - * Page URL from which identification request was sent. + * Page URL from which the identification request was sent. * @return url **/ @javax.annotation.Nonnull - @ApiModelProperty(example = "https://some.website/path?query=params", required = true, value = "Page URL from which identification request was sent.") + @ApiModelProperty(example = "https://some.website/path?query=params", required = true, value = "Page URL from which the identification request was sent.") @JsonProperty(JSON_PROPERTY_URL) @JsonInclude(value = JsonInclude.Include.ALWAYS) @@ -378,10 +378,10 @@ public ResponseVisits confidence(Confidence confidence) { * Get confidence * @return confidence **/ - @javax.annotation.Nonnull - @ApiModelProperty(required = true, value = "") + @javax.annotation.Nullable + @ApiModelProperty(value = "") @JsonProperty(JSON_PROPERTY_CONFIDENCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public Confidence getConfidence() { return confidence; @@ -389,7 +389,7 @@ public Confidence getConfidence() { @JsonProperty(JSON_PROPERTY_CONFIDENCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public void setConfidence(Confidence confidence) { this.confidence = confidence; } diff --git a/src/main/java/com/fingerprint/model/Visit.java b/src/main/java/com/fingerprint/model/Visit.java index da9ef4f..32bd23d 100644 --- a/src/main/java/com/fingerprint/model/Visit.java +++ b/src/main/java/com/fingerprint/model/Visit.java @@ -82,7 +82,7 @@ public class Visit { private URI url; public static final String JSON_PROPERTY_TAG = "tag"; - private Map tag = null; + private Map tag = new HashMap<>(); public static final String JSON_PROPERTY_LINKED_ID = "linkedId"; private String linkedId; @@ -292,11 +292,11 @@ public Visit url(URI url) { } /** - * Page URL from which identification request was sent. + * Page URL from which the identification request was sent. * @return url **/ @javax.annotation.Nonnull - @ApiModelProperty(example = "https://some.website/path?query=params", required = true, value = "Page URL from which identification request was sent.") + @ApiModelProperty(example = "https://some.website/path?query=params", required = true, value = "Page URL from which the identification request was sent.") @JsonProperty(JSON_PROPERTY_URL) @JsonInclude(value = JsonInclude.Include.ALWAYS) @@ -318,9 +318,6 @@ public Visit tag(Map tag) { } public Visit putTagItem(String key, Object tagItem) { - if (this.tag == null) { - this.tag = new HashMap<>(); - } this.tag.put(key, tagItem); return this; } @@ -340,7 +337,7 @@ public Map getTag() { @JsonProperty(JSON_PROPERTY_TAG) - @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.ALWAYS) public void setTag(Map tag) { this.tag = tag; } @@ -381,10 +378,10 @@ public Visit confidence(Confidence confidence) { * Get confidence * @return confidence **/ - @javax.annotation.Nonnull - @ApiModelProperty(required = true, value = "") + @javax.annotation.Nullable + @ApiModelProperty(value = "") @JsonProperty(JSON_PROPERTY_CONFIDENCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public Confidence getConfidence() { return confidence; @@ -392,7 +389,7 @@ public Confidence getConfidence() { @JsonProperty(JSON_PROPERTY_CONFIDENCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public void setConfidence(Confidence confidence) { this.confidence = confidence; } diff --git a/src/main/java/com/fingerprint/model/WebhookVisit.java b/src/main/java/com/fingerprint/model/WebhookVisit.java index 24f8cfc..36964fb 100644 --- a/src/main/java/com/fingerprint/model/WebhookVisit.java +++ b/src/main/java/com/fingerprint/model/WebhookVisit.java @@ -193,7 +193,7 @@ public class WebhookVisit { private URI url; public static final String JSON_PROPERTY_TAG = "tag"; - private Map tag = null; + private Map tag = new HashMap<>(); public static final String JSON_PROPERTY_LINKED_ID = "linkedId"; private String linkedId; @@ -983,11 +983,11 @@ public WebhookVisit url(URI url) { } /** - * Page URL from which identification request was sent. + * Page URL from which the identification request was sent. * @return url **/ @javax.annotation.Nonnull - @ApiModelProperty(example = "https://some.website/path?query=params", required = true, value = "Page URL from which identification request was sent.") + @ApiModelProperty(example = "https://some.website/path?query=params", required = true, value = "Page URL from which the identification request was sent.") @JsonProperty(JSON_PROPERTY_URL) @JsonInclude(value = JsonInclude.Include.ALWAYS) @@ -1009,9 +1009,6 @@ public WebhookVisit tag(Map tag) { } public WebhookVisit putTagItem(String key, Object tagItem) { - if (this.tag == null) { - this.tag = new HashMap<>(); - } this.tag.put(key, tagItem); return this; } @@ -1020,10 +1017,10 @@ public WebhookVisit putTagItem(String key, Object tagItem) { * A customer-provided value or an object that was sent with identification request. * @return tag **/ - @javax.annotation.Nullable - @ApiModelProperty(value = "A customer-provided value or an object that was sent with identification request.") + @javax.annotation.Nonnull + @ApiModelProperty(required = true, value = "A customer-provided value or an object that was sent with identification request.") @JsonProperty(JSON_PROPERTY_TAG) - @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.ALWAYS) public Map getTag() { return tag; @@ -1031,7 +1028,7 @@ public Map getTag() { @JsonProperty(JSON_PROPERTY_TAG) - @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(content = JsonInclude.Include.ALWAYS, value = JsonInclude.Include.ALWAYS) public void setTag(Map tag) { this.tag = tag; } @@ -1072,10 +1069,10 @@ public WebhookVisit confidence(Confidence confidence) { * Get confidence * @return confidence **/ - @javax.annotation.Nonnull - @ApiModelProperty(required = true, value = "") + @javax.annotation.Nullable + @ApiModelProperty(value = "") @JsonProperty(JSON_PROPERTY_CONFIDENCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public Confidence getConfidence() { return confidence; @@ -1083,7 +1080,7 @@ public Confidence getConfidence() { @JsonProperty(JSON_PROPERTY_CONFIDENCE) - @JsonInclude(value = JsonInclude.Include.ALWAYS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) public void setConfidence(Confidence confidence) { this.confidence = confidence; } From 1a7451b872d2725b0fe16a788f3f665e70c2c10b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 27 Feb 2024 14:57:35 +0800 Subject: [PATCH 07/11] feat: update `originCountry` field to the `vpn` signal --- .../java/com/fingerprint/model/VpnResult.java | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/fingerprint/model/VpnResult.java b/src/main/java/com/fingerprint/model/VpnResult.java index 8f78bae..fcba0f1 100644 --- a/src/main/java/com/fingerprint/model/VpnResult.java +++ b/src/main/java/com/fingerprint/model/VpnResult.java @@ -35,6 +35,7 @@ @JsonPropertyOrder({ VpnResult.JSON_PROPERTY_RESULT, VpnResult.JSON_PROPERTY_ORIGIN_TIMEZONE, + VpnResult.JSON_PROPERTY_ORIGIN_COUNTRY, VpnResult.JSON_PROPERTY_METHODS }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") @@ -45,6 +46,9 @@ public class VpnResult { public static final String JSON_PROPERTY_ORIGIN_TIMEZONE = "originTimezone"; private String originTimezone; + public static final String JSON_PROPERTY_ORIGIN_COUNTRY = "originCountry"; + private String originCountry; + public static final String JSON_PROPERTY_METHODS = "methods"; private VpnResultMethods methods; @@ -103,6 +107,32 @@ public void setOriginTimezone(String originTimezone) { } + public VpnResult originCountry(String originCountry) { + this.originCountry = originCountry; + return this; + } + + /** + * Country of the request (only for Android SDK version >= 2.4.0, ISO 3166 format or unknown). + * @return originCountry + **/ + @javax.annotation.Nullable + @ApiModelProperty(example = "unknown", value = "Country of the request (only for Android SDK version >= 2.4.0, ISO 3166 format or unknown).") + @JsonProperty(JSON_PROPERTY_ORIGIN_COUNTRY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getOriginCountry() { + return originCountry; + } + + + @JsonProperty(JSON_PROPERTY_ORIGIN_COUNTRY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOriginCountry(String originCountry) { + this.originCountry = originCountry; + } + + public VpnResult methods(VpnResultMethods methods) { this.methods = methods; return this; @@ -143,12 +173,13 @@ public boolean equals(Object o) { VpnResult vpnResult = (VpnResult) o; return Objects.equals(this.result, vpnResult.result) && Objects.equals(this.originTimezone, vpnResult.originTimezone) && + Objects.equals(this.originCountry, vpnResult.originCountry) && Objects.equals(this.methods, vpnResult.methods); } @Override public int hashCode() { - return Objects.hash(result, originTimezone, methods); + return Objects.hash(result, originTimezone, originCountry, methods); } @Override @@ -157,6 +188,7 @@ public String toString() { sb.append("class VpnResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append(" originTimezone: ").append(toIndentedString(originTimezone)).append("\n"); + sb.append(" originCountry: ").append(toIndentedString(originCountry)).append("\n"); sb.append(" methods: ").append(toIndentedString(methods)).append("\n"); sb.append("}"); return sb.toString(); From 69bfd84b6d834c9957a584d7e6b1151172fa1930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 27 Feb 2024 15:00:50 +0800 Subject: [PATCH 08/11] feat: use shared structures for webhooks and event BREAKING CHANGE: change models for the most smart signals --- README.md | 33 +- ...nseClonedAppData.md => ClonedAppResult.md} | 4 +- ...ponseEmulatorData.md => EmulatorResult.md} | 4 +- docs/FactoryResetResult.md | 14 + docs/FingerprintApi.md | 2 +- docs/FridaResult.md | 13 + ...nseIncognitoData.md => IncognitoResult.md} | 4 +- ...eJailbrokenData.md => JailbrokenResult.md} | 4 +- ...ttingsData.md => PrivacySettingsResult.md} | 4 +- ...ignalResponseTorData.md => ProxyResult.md} | 4 +- ...ponseRootAppsData.md => RootAppsResult.md} | 4 +- docs/SignalResponseClonedApp.md | 2 +- docs/SignalResponseEmulator.md | 2 +- docs/SignalResponseFactoryReset.md | 2 +- docs/SignalResponseFactoryResetData.md | 14 - docs/SignalResponseFrida.md | 2 +- docs/SignalResponseFridaData.md | 13 - docs/SignalResponseIncognito.md | 2 +- docs/SignalResponseJailbroken.md | 2 +- docs/SignalResponsePrivacySettings.md | 2 +- docs/SignalResponseProxy.md | 2 +- docs/SignalResponseProxyData.md | 13 - docs/SignalResponseRootApps.md | 2 +- docs/SignalResponseTor.md | 2 +- docs/SignalResponseVirtualMachine.md | 2 +- ...bhookSignalResponseTor.md => TorResult.md} | 4 +- ...MachineData.md => VirtualMachineResult.md} | 4 +- docs/WebhookSignalResponseClonedApp.md | 13 - docs/WebhookSignalResponseEmulator.md | 13 - docs/WebhookSignalResponseFactoryReset.md | 14 - docs/WebhookSignalResponseFrida.md | 13 - docs/WebhookSignalResponseJailbroken.md | 13 - docs/WebhookSignalResponsePrivacySettings.md | 13 - docs/WebhookSignalResponseProxy.md | 13 - docs/WebhookSignalResponseRootApps.md | 13 - docs/WebhookSignalResponseVirtualMachine.md | 13 - docs/WebhookVisit.md | 20 +- res/fingerprint-server-api.yaml | 3869 ++--------------- scripts/sync.sh | 2 +- .../com/fingerprint/api/FingerprintApi.java | 4 +- ...nseClonedApp.java => ClonedAppResult.java} | 26 +- ...eEmulatorData.java => EmulatorResult.java} | 27 +- ...toryReset.java => FactoryResetResult.java} | 42 +- ...lResponseTorData.java => FridaResult.java} | 29 +- ...ncognitoData.java => IncognitoResult.java} | 27 +- ...eJailbroken.java => JailbrokenResult.java} | 26 +- ...ttings.java => PrivacySettingsResult.java} | 26 +- ...nalResponseProxy.java => ProxyResult.java} | 26 +- ...ponseRootApps.java => RootAppsResult.java} | 26 +- .../model/SignalResponseClonedApp.java | 10 +- .../model/SignalResponseClonedAppData.java | 113 - .../model/SignalResponseEmulator.java | 10 +- .../model/SignalResponseFactoryReset.java | 10 +- .../model/SignalResponseFactoryResetData.java | 146 - .../model/SignalResponseFrida.java | 10 +- .../model/SignalResponseFridaData.java | 113 - .../model/SignalResponseIncognito.java | 10 +- .../model/SignalResponseJailbroken.java | 10 +- .../model/SignalResponseJailbrokenData.java | 113 - .../model/SignalResponsePrivacySettings.java | 10 +- .../SignalResponsePrivacySettingsData.java | 113 - .../model/SignalResponseProxy.java | 10 +- .../model/SignalResponseProxyData.java | 113 - .../model/SignalResponseRootApps.java | 10 +- .../model/SignalResponseRootAppsData.java | 113 - .../fingerprint/model/SignalResponseTor.java | 10 +- .../model/SignalResponseVirtualMachine.java | 10 +- .../SignalResponseVirtualMachineData.java | 113 - ...kSignalResponseTor.java => TorResult.java} | 26 +- ...Machine.java => VirtualMachineResult.java} | 26 +- .../model/WebhookSignalResponseEmulator.java | 112 - .../model/WebhookSignalResponseFrida.java | 112 - .../com/fingerprint/model/WebhookVisit.java | 98 +- src/test/resources/mocks/get_event.json | 321 +- .../resources/mocks/get_event_all_errors.json | 211 +- .../mocks/get_event_botd_failed_error.json | 152 +- ...et_event_botd_too_many_requests_error.json | 152 +- .../mocks/get_event_extra_fields.json | 167 +- ...get_event_identification_failed_error.json | 105 +- ...dentification_too_many_requests_error.json | 105 +- .../resources/mocks/visits_403_error.json | 92 +- .../resources/mocks/visits_limit_500.json | 3181 +------------- .../mocks/visits_too_many_requests_error.json | 92 +- 83 files changed, 1471 insertions(+), 8956 deletions(-) rename docs/{SignalResponseClonedAppData.md => ClonedAppResult.md} (88%) rename docs/{SignalResponseEmulatorData.md => EmulatorResult.md} (76%) create mode 100644 docs/FactoryResetResult.md create mode 100644 docs/FridaResult.md rename docs/{SignalResponseIncognitoData.md => IncognitoResult.md} (68%) rename docs/{SignalResponseJailbrokenData.md => JailbrokenResult.md} (72%) rename docs/{SignalResponsePrivacySettingsData.md => PrivacySettingsResult.md} (73%) rename docs/{SignalResponseTorData.md => ProxyResult.md} (69%) rename docs/{SignalResponseRootAppsData.md => RootAppsResult.md} (78%) delete mode 100644 docs/SignalResponseFactoryResetData.md delete mode 100644 docs/SignalResponseFridaData.md delete mode 100644 docs/SignalResponseProxyData.md rename docs/{WebhookSignalResponseTor.md => TorResult.md} (68%) rename docs/{SignalResponseVirtualMachineData.md => VirtualMachineResult.md} (80%) delete mode 100644 docs/WebhookSignalResponseClonedApp.md delete mode 100644 docs/WebhookSignalResponseEmulator.md delete mode 100644 docs/WebhookSignalResponseFactoryReset.md delete mode 100644 docs/WebhookSignalResponseFrida.md delete mode 100644 docs/WebhookSignalResponseJailbroken.md delete mode 100644 docs/WebhookSignalResponsePrivacySettings.md delete mode 100644 docs/WebhookSignalResponseProxy.md delete mode 100644 docs/WebhookSignalResponseRootApps.md delete mode 100644 docs/WebhookSignalResponseVirtualMachine.md rename src/main/java/com/fingerprint/model/{WebhookSignalResponseClonedApp.java => ClonedAppResult.java} (72%) rename src/main/java/com/fingerprint/model/{SignalResponseEmulatorData.java => EmulatorResult.java} (73%) rename src/main/java/com/fingerprint/model/{WebhookSignalResponseFactoryReset.java => FactoryResetResult.java} (65%) rename src/main/java/com/fingerprint/model/{SignalResponseTorData.java => FridaResult.java} (72%) rename src/main/java/com/fingerprint/model/{SignalResponseIncognitoData.java => IncognitoResult.java} (75%) rename src/main/java/com/fingerprint/model/{WebhookSignalResponseJailbroken.java => JailbrokenResult.java} (74%) rename src/main/java/com/fingerprint/model/{WebhookSignalResponsePrivacySettings.java => PrivacySettingsResult.java} (73%) rename src/main/java/com/fingerprint/model/{WebhookSignalResponseProxy.java => ProxyResult.java} (76%) rename src/main/java/com/fingerprint/model/{WebhookSignalResponseRootApps.java => RootAppsResult.java} (73%) delete mode 100644 src/main/java/com/fingerprint/model/SignalResponseClonedAppData.java delete mode 100644 src/main/java/com/fingerprint/model/SignalResponseFactoryResetData.java delete mode 100644 src/main/java/com/fingerprint/model/SignalResponseFridaData.java delete mode 100644 src/main/java/com/fingerprint/model/SignalResponseJailbrokenData.java delete mode 100644 src/main/java/com/fingerprint/model/SignalResponsePrivacySettingsData.java delete mode 100644 src/main/java/com/fingerprint/model/SignalResponseProxyData.java delete mode 100644 src/main/java/com/fingerprint/model/SignalResponseRootAppsData.java delete mode 100644 src/main/java/com/fingerprint/model/SignalResponseVirtualMachineData.java rename src/main/java/com/fingerprint/model/{WebhookSignalResponseTor.java => TorResult.java} (76%) rename src/main/java/com/fingerprint/model/{WebhookSignalResponseVirtualMachine.java => VirtualMachineResult.java} (73%) delete mode 100644 src/main/java/com/fingerprint/model/WebhookSignalResponseEmulator.java delete mode 100644 src/main/java/com/fingerprint/model/WebhookSignalResponseFrida.java diff --git a/README.md b/README.md index 71584ca..798504c 100644 --- a/README.md +++ b/README.md @@ -255,6 +255,7 @@ Class | Method | HTTP request | Description - [BotdDetectionResult](docs/BotdDetectionResult.md) - [BotdResult](docs/BotdResult.md) - [BrowserDetails](docs/BrowserDetails.md) + - [ClonedAppResult](docs/ClonedAppResult.md) - [Confidence](docs/Confidence.md) - [DataCenter](docs/DataCenter.md) - [DeprecatedIPLocation](docs/DeprecatedIPLocation.md) @@ -267,71 +268,61 @@ Class | Method | HTTP request | Description - [ErrorEvent404ResponseError](docs/ErrorEvent404ResponseError.md) - [ErrorVisits403](docs/ErrorVisits403.md) - [EventResponse](docs/EventResponse.md) + - [FactoryResetResult](docs/FactoryResetResult.md) + - [FridaResult](docs/FridaResult.md) - [HighActivityResult](docs/HighActivityResult.md) - [IPLocation](docs/IPLocation.md) - [IPLocationCity](docs/IPLocationCity.md) - [IdentificationError](docs/IdentificationError.md) + - [IncognitoResult](docs/IncognitoResult.md) - [IpBlockListResult](docs/IpBlockListResult.md) - [IpBlockListResultDetails](docs/IpBlockListResultDetails.md) - [IpInfoResult](docs/IpInfoResult.md) - [IpInfoResultV4](docs/IpInfoResultV4.md) - [IpInfoResultV6](docs/IpInfoResultV6.md) + - [JailbrokenResult](docs/JailbrokenResult.md) - [Location](docs/Location.md) - [LocationSpoofingResult](docs/LocationSpoofingResult.md) - [ManyRequestsResponse](docs/ManyRequestsResponse.md) + - [PrivacySettingsResult](docs/PrivacySettingsResult.md) - [ProductError](docs/ProductError.md) - [ProductsResponse](docs/ProductsResponse.md) - [ProductsResponseBotd](docs/ProductsResponseBotd.md) - [ProductsResponseIdentification](docs/ProductsResponseIdentification.md) - [ProductsResponseIdentificationData](docs/ProductsResponseIdentificationData.md) + - [ProxyResult](docs/ProxyResult.md) - [RawDeviceAttributesResultValue](docs/RawDeviceAttributesResultValue.md) - [Response](docs/Response.md) - [ResponseVisits](docs/ResponseVisits.md) + - [RootAppsResult](docs/RootAppsResult.md) - [SeenAt](docs/SeenAt.md) - [SignalResponseClonedApp](docs/SignalResponseClonedApp.md) - - [SignalResponseClonedAppData](docs/SignalResponseClonedAppData.md) - [SignalResponseEmulator](docs/SignalResponseEmulator.md) - - [SignalResponseEmulatorData](docs/SignalResponseEmulatorData.md) - [SignalResponseFactoryReset](docs/SignalResponseFactoryReset.md) - - [SignalResponseFactoryResetData](docs/SignalResponseFactoryResetData.md) - [SignalResponseFrida](docs/SignalResponseFrida.md) - - [SignalResponseFridaData](docs/SignalResponseFridaData.md) - [SignalResponseHighActivity](docs/SignalResponseHighActivity.md) - [SignalResponseIncognito](docs/SignalResponseIncognito.md) - - [SignalResponseIncognitoData](docs/SignalResponseIncognitoData.md) - [SignalResponseIpBlocklist](docs/SignalResponseIpBlocklist.md) - [SignalResponseIpInfo](docs/SignalResponseIpInfo.md) - [SignalResponseJailbroken](docs/SignalResponseJailbroken.md) - - [SignalResponseJailbrokenData](docs/SignalResponseJailbrokenData.md) - [SignalResponseLocationSpoofing](docs/SignalResponseLocationSpoofing.md) - [SignalResponsePrivacySettings](docs/SignalResponsePrivacySettings.md) - - [SignalResponsePrivacySettingsData](docs/SignalResponsePrivacySettingsData.md) - [SignalResponseProxy](docs/SignalResponseProxy.md) - - [SignalResponseProxyData](docs/SignalResponseProxyData.md) - [SignalResponseRawDeviceAttributes](docs/SignalResponseRawDeviceAttributes.md) - [SignalResponseRootApps](docs/SignalResponseRootApps.md) - - [SignalResponseRootAppsData](docs/SignalResponseRootAppsData.md) + - [SignalResponseSuspectScore](docs/SignalResponseSuspectScore.md) - [SignalResponseTampering](docs/SignalResponseTampering.md) - [SignalResponseTor](docs/SignalResponseTor.md) - - [SignalResponseTorData](docs/SignalResponseTorData.md) - [SignalResponseVirtualMachine](docs/SignalResponseVirtualMachine.md) - - [SignalResponseVirtualMachineData](docs/SignalResponseVirtualMachineData.md) - [SignalResponseVpn](docs/SignalResponseVpn.md) - [Subdivision](docs/Subdivision.md) + - [SuspectScoreResult](docs/SuspectScoreResult.md) - [TamperingResult](docs/TamperingResult.md) + - [TorResult](docs/TorResult.md) + - [VirtualMachineResult](docs/VirtualMachineResult.md) - [Visit](docs/Visit.md) - [VpnResult](docs/VpnResult.md) - [VpnResultMethods](docs/VpnResultMethods.md) - - [WebhookSignalResponseClonedApp](docs/WebhookSignalResponseClonedApp.md) - - [WebhookSignalResponseEmulator](docs/WebhookSignalResponseEmulator.md) - - [WebhookSignalResponseFactoryReset](docs/WebhookSignalResponseFactoryReset.md) - - [WebhookSignalResponseFrida](docs/WebhookSignalResponseFrida.md) - - [WebhookSignalResponseJailbroken](docs/WebhookSignalResponseJailbroken.md) - - [WebhookSignalResponsePrivacySettings](docs/WebhookSignalResponsePrivacySettings.md) - - [WebhookSignalResponseProxy](docs/WebhookSignalResponseProxy.md) - - [WebhookSignalResponseRootApps](docs/WebhookSignalResponseRootApps.md) - - [WebhookSignalResponseTor](docs/WebhookSignalResponseTor.md) - - [WebhookSignalResponseVirtualMachine](docs/WebhookSignalResponseVirtualMachine.md) - [WebhookVisit](docs/WebhookVisit.md) diff --git a/docs/SignalResponseClonedAppData.md b/docs/ClonedAppResult.md similarity index 88% rename from docs/SignalResponseClonedAppData.md rename to docs/ClonedAppResult.md index b528fe5..26bf5e8 100644 --- a/docs/SignalResponseClonedAppData.md +++ b/docs/ClonedAppResult.md @@ -1,13 +1,13 @@ -# SignalResponseClonedAppData +# ClonedAppResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Android specific cloned application detection. There are 2 values: • `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). • `false` - No signs of cloned application detected or the client is not Android. | [optional] | +|**result** | **Boolean** | Android specific cloned application detection. There are 2 values: • `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). • `false` - No signs of cloned application detected or the client is not Android. | | diff --git a/docs/SignalResponseEmulatorData.md b/docs/EmulatorResult.md similarity index 76% rename from docs/SignalResponseEmulatorData.md rename to docs/EmulatorResult.md index 2446bd3..559aa52 100644 --- a/docs/SignalResponseEmulatorData.md +++ b/docs/EmulatorResult.md @@ -1,13 +1,13 @@ -# SignalResponseEmulatorData +# EmulatorResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected or the client is not Android. | [optional] | +|**result** | **Boolean** | Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected or the client is not Android. | | diff --git a/docs/FactoryResetResult.md b/docs/FactoryResetResult.md new file mode 100644 index 0000000..766035f --- /dev/null +++ b/docs/FactoryResetResult.md @@ -0,0 +1,14 @@ + + +# FactoryResetResult + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**time** | **OffsetDateTime** | Time in UTC when the most recent factory reset of the Android or iOS device was done. If there is no sign of factory reset or the client is not a mobile device, the field will contain the epoch time (1 January 1970) in UTC. | | +|**timestamp** | **Long** | Same value as it's in the `time` field but represented in timestamp format. | | + + + diff --git a/docs/FingerprintApi.md b/docs/FingerprintApi.md index 0de06f9..4c1daf5 100644 --- a/docs/FingerprintApi.md +++ b/docs/FingerprintApi.md @@ -17,7 +17,7 @@ All URIs are relative to *https://api.fpjs.io* Get event by requestId This endpoint allows you to get a detailed analysis of an individual request. -**Only for Enterprise customers:** Please note that the response includes mobile signals (e.g. `rootApps`) even if the request orignated from a non-mobile platform. +**Only for Enterprise customers:** Please note that the response includes mobile signals (e.g. `rootApps`) even if the request originated from a non-mobile platform. It is highly recommended that you **ignore** the mobile signals for such requests. Use `requestId` as the URL path parameter. This API method is scoped to a request, i.e. all returned information is by `requestId`. diff --git a/docs/FridaResult.md b/docs/FridaResult.md new file mode 100644 index 0000000..4460907 --- /dev/null +++ b/docs/FridaResult.md @@ -0,0 +1,13 @@ + + +# FridaResult + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**result** | **Boolean** | [Frida](https://frida.re/docs/) detection for Android and iOS devices. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not a mobile device. | | + + + diff --git a/docs/SignalResponseIncognitoData.md b/docs/IncognitoResult.md similarity index 68% rename from docs/SignalResponseIncognitoData.md rename to docs/IncognitoResult.md index d8b09c9..f0f5227 100644 --- a/docs/SignalResponseIncognitoData.md +++ b/docs/IncognitoResult.md @@ -1,13 +1,13 @@ -# SignalResponseIncognitoData +# IncognitoResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if we detected incognito mode used in the browser, `false` otherwise. | [optional] | +|**result** | **Boolean** | `true` if we detected incognito mode used in the browser, `false` otherwise. | | diff --git a/docs/SignalResponseJailbrokenData.md b/docs/JailbrokenResult.md similarity index 72% rename from docs/SignalResponseJailbrokenData.md rename to docs/JailbrokenResult.md index b8beda9..dbf2d60 100644 --- a/docs/SignalResponseJailbrokenData.md +++ b/docs/JailbrokenResult.md @@ -1,13 +1,13 @@ -# SignalResponseJailbrokenData +# JailbrokenResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | iOS specific jailbreak detection. There are 2 values: • `true` - Jailbreak detected • `false` - No signs of jailbreak or the client is not iOS. | [optional] | +|**result** | **Boolean** | iOS specific jailbreak detection. There are 2 values: • `true` - Jailbreak detected • `false` - No signs of jailbreak or the client is not iOS. | | diff --git a/docs/SignalResponsePrivacySettingsData.md b/docs/PrivacySettingsResult.md similarity index 73% rename from docs/SignalResponsePrivacySettingsData.md rename to docs/PrivacySettingsResult.md index 327b5ef..a72f7da 100644 --- a/docs/SignalResponsePrivacySettingsData.md +++ b/docs/PrivacySettingsResult.md @@ -1,13 +1,13 @@ -# SignalResponsePrivacySettingsData +# PrivacySettingsResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`. | [optional] | +|**result** | **Boolean** | `true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`. | | diff --git a/docs/SignalResponseTorData.md b/docs/ProxyResult.md similarity index 69% rename from docs/SignalResponseTorData.md rename to docs/ProxyResult.md index 95462b6..6acf556 100644 --- a/docs/SignalResponseTorData.md +++ b/docs/ProxyResult.md @@ -1,13 +1,13 @@ -# SignalResponseTorData +# ProxyResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if the request IP address is a known tor exit node, `false` otherwise. | [optional] | +|**result** | **Boolean** | `true` if the request IP address is used by a public proxy provider, `false` otherwise. | | diff --git a/docs/SignalResponseRootAppsData.md b/docs/RootAppsResult.md similarity index 78% rename from docs/SignalResponseRootAppsData.md rename to docs/RootAppsResult.md index ee23b16..f75b762 100644 --- a/docs/SignalResponseRootAppsData.md +++ b/docs/RootAppsResult.md @@ -1,13 +1,13 @@ -# SignalResponseRootAppsData +# RootAppsResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected or the client is not Android. | [optional] | +|**result** | **Boolean** | Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected or the client isn't Android. | | diff --git a/docs/SignalResponseClonedApp.md b/docs/SignalResponseClonedApp.md index a96e3ff..a3bce6f 100644 --- a/docs/SignalResponseClonedApp.md +++ b/docs/SignalResponseClonedApp.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseClonedAppData**](SignalResponseClonedAppData.md) | | [optional] | +|**data** | [**ClonedAppResult**](ClonedAppResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseEmulator.md b/docs/SignalResponseEmulator.md index 4abf39e..fec2dd4 100644 --- a/docs/SignalResponseEmulator.md +++ b/docs/SignalResponseEmulator.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseEmulatorData**](SignalResponseEmulatorData.md) | | [optional] | +|**data** | [**EmulatorResult**](EmulatorResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseFactoryReset.md b/docs/SignalResponseFactoryReset.md index bf3e6c5..a79865b 100644 --- a/docs/SignalResponseFactoryReset.md +++ b/docs/SignalResponseFactoryReset.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseFactoryResetData**](SignalResponseFactoryResetData.md) | | [optional] | +|**data** | [**FactoryResetResult**](FactoryResetResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseFactoryResetData.md b/docs/SignalResponseFactoryResetData.md deleted file mode 100644 index fa02d8b..0000000 --- a/docs/SignalResponseFactoryResetData.md +++ /dev/null @@ -1,14 +0,0 @@ - - -# SignalResponseFactoryResetData - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**time** | **OffsetDateTime** | Time in UTC for the Android client when recent factory reset was done. If there is no sign of factory reset or the client isn't Android, the field will be epoch time. | [optional] | -|**timestamp** | **Long** | Same value as it's in the `time` field but represented in timestamp format. | [optional] | - - - diff --git a/docs/SignalResponseFrida.md b/docs/SignalResponseFrida.md index 52f8633..c16885a 100644 --- a/docs/SignalResponseFrida.md +++ b/docs/SignalResponseFrida.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseFridaData**](SignalResponseFridaData.md) | | [optional] | +|**data** | [**FridaResult**](FridaResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseFridaData.md b/docs/SignalResponseFridaData.md deleted file mode 100644 index 6b54a7f..0000000 --- a/docs/SignalResponseFridaData.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# SignalResponseFridaData - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | iOS specific [Frida](https://frida.re/docs/ios/) detection. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not iOS. | [optional] | - - - diff --git a/docs/SignalResponseIncognito.md b/docs/SignalResponseIncognito.md index eccded2..6e9e891 100644 --- a/docs/SignalResponseIncognito.md +++ b/docs/SignalResponseIncognito.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseIncognitoData**](SignalResponseIncognitoData.md) | | [optional] | +|**data** | [**IncognitoResult**](IncognitoResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseJailbroken.md b/docs/SignalResponseJailbroken.md index 538be88..14524f1 100644 --- a/docs/SignalResponseJailbroken.md +++ b/docs/SignalResponseJailbroken.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseJailbrokenData**](SignalResponseJailbrokenData.md) | | [optional] | +|**data** | [**JailbrokenResult**](JailbrokenResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponsePrivacySettings.md b/docs/SignalResponsePrivacySettings.md index 5d33b9d..c71f48a 100644 --- a/docs/SignalResponsePrivacySettings.md +++ b/docs/SignalResponsePrivacySettings.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponsePrivacySettingsData**](SignalResponsePrivacySettingsData.md) | | [optional] | +|**data** | [**PrivacySettingsResult**](PrivacySettingsResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseProxy.md b/docs/SignalResponseProxy.md index 65d90b9..5366bc4 100644 --- a/docs/SignalResponseProxy.md +++ b/docs/SignalResponseProxy.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseProxyData**](SignalResponseProxyData.md) | | [optional] | +|**data** | [**ProxyResult**](ProxyResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseProxyData.md b/docs/SignalResponseProxyData.md deleted file mode 100644 index 7236c12..0000000 --- a/docs/SignalResponseProxyData.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# SignalResponseProxyData - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if the request IP address is used by a public proxy provider, `false` otherwise. | [optional] | - - - diff --git a/docs/SignalResponseRootApps.md b/docs/SignalResponseRootApps.md index 15ccedf..1d4ebea 100644 --- a/docs/SignalResponseRootApps.md +++ b/docs/SignalResponseRootApps.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseRootAppsData**](SignalResponseRootAppsData.md) | | [optional] | +|**data** | [**RootAppsResult**](RootAppsResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseTor.md b/docs/SignalResponseTor.md index f8af3dc..5806593 100644 --- a/docs/SignalResponseTor.md +++ b/docs/SignalResponseTor.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseTorData**](SignalResponseTorData.md) | | [optional] | +|**data** | [**TorResult**](TorResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/SignalResponseVirtualMachine.md b/docs/SignalResponseVirtualMachine.md index fa90111..8f9b4da 100644 --- a/docs/SignalResponseVirtualMachine.md +++ b/docs/SignalResponseVirtualMachine.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**data** | [**SignalResponseVirtualMachineData**](SignalResponseVirtualMachineData.md) | | [optional] | +|**data** | [**VirtualMachineResult**](VirtualMachineResult.md) | | [optional] | |**error** | [**ProductError**](ProductError.md) | | [optional] | diff --git a/docs/WebhookSignalResponseTor.md b/docs/TorResult.md similarity index 68% rename from docs/WebhookSignalResponseTor.md rename to docs/TorResult.md index 8247275..592cd8c 100644 --- a/docs/WebhookSignalResponseTor.md +++ b/docs/TorResult.md @@ -1,13 +1,13 @@ -# WebhookSignalResponseTor +# TorResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if the request IP address is a known tor exit node, `false` otherwise. | [optional] | +|**result** | **Boolean** | `true` if the request IP address is a known tor exit node, `false` otherwise. | | diff --git a/docs/SignalResponseVirtualMachineData.md b/docs/VirtualMachineResult.md similarity index 80% rename from docs/SignalResponseVirtualMachineData.md rename to docs/VirtualMachineResult.md index 114686f..672fc22 100644 --- a/docs/SignalResponseVirtualMachineData.md +++ b/docs/VirtualMachineResult.md @@ -1,13 +1,13 @@ -# SignalResponseVirtualMachineData +# VirtualMachineResult ## Properties | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. | [optional] | +|**result** | **Boolean** | `true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. | | diff --git a/docs/WebhookSignalResponseClonedApp.md b/docs/WebhookSignalResponseClonedApp.md deleted file mode 100644 index 8fc3eca..0000000 --- a/docs/WebhookSignalResponseClonedApp.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# WebhookSignalResponseClonedApp - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Android specific cloned application detection. There are 2 values: • `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). • `false` - No signs of cloned application detected or the client is not Android. | [optional] | - - - diff --git a/docs/WebhookSignalResponseEmulator.md b/docs/WebhookSignalResponseEmulator.md deleted file mode 100644 index 6dde9c2..0000000 --- a/docs/WebhookSignalResponseEmulator.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# WebhookSignalResponseEmulator - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected or the client isn't Android. | [optional] | - - - diff --git a/docs/WebhookSignalResponseFactoryReset.md b/docs/WebhookSignalResponseFactoryReset.md deleted file mode 100644 index 61ee3c1..0000000 --- a/docs/WebhookSignalResponseFactoryReset.md +++ /dev/null @@ -1,14 +0,0 @@ - - -# WebhookSignalResponseFactoryReset - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**time** | **OffsetDateTime** | Time in UTC for the Android client when recent factory reset was done. If there is no sign of factory reset or the client isn't Android, the field will be epoch time. | [optional] | -|**timestamp** | **Long** | Same value as it's in the `time` field but represented in timestamp format. | [optional] | - - - diff --git a/docs/WebhookSignalResponseFrida.md b/docs/WebhookSignalResponseFrida.md deleted file mode 100644 index d3e29c7..0000000 --- a/docs/WebhookSignalResponseFrida.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# WebhookSignalResponseFrida - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | iOS specific [Frida](https://frida.re/docs/ios/) detection. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not iOS. | [optional] | - - - diff --git a/docs/WebhookSignalResponseJailbroken.md b/docs/WebhookSignalResponseJailbroken.md deleted file mode 100644 index 0ef1aa3..0000000 --- a/docs/WebhookSignalResponseJailbroken.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# WebhookSignalResponseJailbroken - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | iOS specific jailbreak detection. There are 2 values: • `true` - Jailbreak detected • `false` - No signs of jailbreak or the client is not iOS. | [optional] | - - - diff --git a/docs/WebhookSignalResponsePrivacySettings.md b/docs/WebhookSignalResponsePrivacySettings.md deleted file mode 100644 index c0290e2..0000000 --- a/docs/WebhookSignalResponsePrivacySettings.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# WebhookSignalResponsePrivacySettings - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`. | [optional] | - - - diff --git a/docs/WebhookSignalResponseProxy.md b/docs/WebhookSignalResponseProxy.md deleted file mode 100644 index f0c72c9..0000000 --- a/docs/WebhookSignalResponseProxy.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# WebhookSignalResponseProxy - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if the request IP address is used by a public proxy provider, `false` otherwise. | [optional] | - - - diff --git a/docs/WebhookSignalResponseRootApps.md b/docs/WebhookSignalResponseRootApps.md deleted file mode 100644 index d6d0bb1..0000000 --- a/docs/WebhookSignalResponseRootApps.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# WebhookSignalResponseRootApps - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected or the client isn't Android. | [optional] | - - - diff --git a/docs/WebhookSignalResponseVirtualMachine.md b/docs/WebhookSignalResponseVirtualMachine.md deleted file mode 100644 index 957e527..0000000 --- a/docs/WebhookSignalResponseVirtualMachine.md +++ /dev/null @@ -1,13 +0,0 @@ - - -# WebhookSignalResponseVirtualMachine - - -## Properties - -| Name | Type | Description | Notes | -|------------ | ------------- | ------------- | -------------| -|**result** | **Boolean** | `true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. | [optional] | - - - diff --git a/docs/WebhookVisit.md b/docs/WebhookVisit.md index 40e8099..4965069 100644 --- a/docs/WebhookVisit.md +++ b/docs/WebhookVisit.md @@ -13,18 +13,18 @@ |**bot** | [**BotdDetectionResult**](BotdDetectionResult.md) | | [optional] | |**ipInfo** | [**IpInfoResult**](IpInfoResult.md) | | [optional] | |**incognito** | **Boolean** | Flag if user used incognito session. | | -|**rootApps** | [**WebhookSignalResponseRootApps**](WebhookSignalResponseRootApps.md) | | [optional] | -|**emulator** | [**WebhookSignalResponseEmulator**](WebhookSignalResponseEmulator.md) | | [optional] | -|**clonedApp** | [**WebhookSignalResponseClonedApp**](WebhookSignalResponseClonedApp.md) | | [optional] | -|**factoryReset** | [**WebhookSignalResponseFactoryReset**](WebhookSignalResponseFactoryReset.md) | | [optional] | -|**jailbroken** | [**WebhookSignalResponseJailbroken**](WebhookSignalResponseJailbroken.md) | | [optional] | -|**frida** | [**WebhookSignalResponseFrida**](WebhookSignalResponseFrida.md) | | [optional] | +|**rootApps** | [**RootAppsResult**](RootAppsResult.md) | | [optional] | +|**emulator** | [**EmulatorResult**](EmulatorResult.md) | | [optional] | +|**clonedApp** | [**ClonedAppResult**](ClonedAppResult.md) | | [optional] | +|**factoryReset** | [**FactoryResetResult**](FactoryResetResult.md) | | [optional] | +|**jailbroken** | [**JailbrokenResult**](JailbrokenResult.md) | | [optional] | +|**frida** | [**FridaResult**](FridaResult.md) | | [optional] | |**ipBlocklist** | [**IpBlockListResult**](IpBlockListResult.md) | | [optional] | -|**tor** | [**WebhookSignalResponseTor**](WebhookSignalResponseTor.md) | | [optional] | -|**privacySettings** | [**WebhookSignalResponsePrivacySettings**](WebhookSignalResponsePrivacySettings.md) | | [optional] | -|**virtualMachine** | [**WebhookSignalResponseVirtualMachine**](WebhookSignalResponseVirtualMachine.md) | | [optional] | +|**tor** | [**TorResult**](TorResult.md) | | [optional] | +|**privacySettings** | [**PrivacySettingsResult**](PrivacySettingsResult.md) | | [optional] | +|**virtualMachine** | [**VirtualMachineResult**](VirtualMachineResult.md) | | [optional] | |**vpn** | [**VpnResult**](VpnResult.md) | | [optional] | -|**proxy** | [**WebhookSignalResponseProxy**](WebhookSignalResponseProxy.md) | | [optional] | +|**proxy** | [**ProxyResult**](ProxyResult.md) | | [optional] | |**tampering** | [**TamperingResult**](TamperingResult.md) | | [optional] | |**rawDeviceAttributes** | [**Map<String, RawDeviceAttributesResultValue>**](RawDeviceAttributesResultValue.md) | It includes 35+ raw browser identification attributes to provide Fingerprint users with even more information than our standard visitor ID provides. This enables Fingerprint users to not have to run our open-source product in conjunction with Fingerprint Pro Plus and Enterprise to get those additional attributes. Warning: The raw signals data can change at any moment as we improve the product. We cannot guarantee the internal shape of raw device attributes to be stable, so typical semantic versioning rules do not apply here. Use this data with caution without assuming a specific structure beyond the generic type provided here. | [optional] | |**highActivity** | [**HighActivityResult**](HighActivityResult.md) | | [optional] | diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index 17aa225..e2843c4 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -30,15 +30,6 @@ servers: security: - ApiKeyHeader: [] - ApiKeyQuery: [] -x-readme: - samples-languages: - - curl - - node - - php - - python - - csharp - - java - - go paths: /events/{request_id}: get: @@ -51,7 +42,7 @@ paths: request. **Only for Enterprise customers:** Please note that the response - includes mobile signals (e.g. `rootApps`) even if the request orignated + includes mobile signals (e.g. `rootApps`) even if the request originated from a non-mobile platform. It is highly recommended that you **ignore** the mobile signals for such @@ -77,571 +68,18 @@ paths: application/json: schema: $ref: '#/components/schemas/EventResponse' - examples: - fullResponse: - summary: Example response - value: - products: - identification: - data: - visitorId: Ibk1527CUFmcnjLwIs4A9 - requestId: 0KSh65EnVoB85JBmloQK - incognito: true - linkedId: somelinkedId - time: '2019-05-21T16:40:13Z' - timestamp: 1582299576512 - url: https://www.example.com/login - ip: 61.127.217.15 - ipLocation: - accuracyRadius: 10 - latitude: 49.982 - longitude: 36.2566 - postalCode: '61202' - timezone: Europe/Dusseldorf - city: - name: Dusseldorf - continent: - code: EU - name: Europe - country: - code: DE - name: Germany - subdivisions: - - isoCode: '63' - name: North Rhine-Westphalia - browserDetails: - browserName: Chrome - browserMajorVersion: '74' - browserFullVersion: 74.0.3729 - os: Windows - osVersion: '7' - device: Other - userAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) .... - confidence: - score: 0.97 - visitorFound: true - firstSeenAt: - global: '2022-03-16T11:26:45.362Z' - subscription: '2022-03-16T11:31:01.101Z' - lastSeenAt: - global: '2022-03-16T11:28:34.023Z' - subscription: null - botd: - data: - bot: - result: notDetected - url: https://www.example.com/login - ip: 61.127.217.15 - time: '2019-05-21T16:40:13Z' - ipInfo: - data: - v4: - address: 94.142.239.124 - geolocation: - accuracyRadius: 20 - latitude: 50.05 - longitude: 14.4 - postalCode: 150 00 - timezone: Europe/Prague - city: - name: Prague - country: - code: CZ - name: Czechia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '10' - name: Hlavni mesto Praha - asn: - asn: '7922' - name: COMCAST-7922 - network: 73.136.0.0/13 - datacenter: - result: true - name: DediPath - incognito: - data: - result: false - rootApps: - data: - result: false - emulator: - data: - result: false - ipBlocklist: - data: - result: false - details: - emailSpam: false - attackSource: false - tor: - data: - result: false - vpn: - data: - result: false - originTimezone: Europe/Berlin - methods: - timezoneMismatch: false - publicVPN: false - auxiliaryMobile: false - proxy: - data: - result: false - tampering: - data: - result: false - anomalyScore: 0 - clonedApp: - data: - result: false - factoryReset: - data: - time: '1970-01-01T00:00:00Z' - timestamp: 0 - jailbroken: - data: - result: false - frida: - data: - result: false - privacySettings: - data: - result: false - virtualMachine: - data: - result: false - rawDeviceAttributes: - data: - architecture: - value: 127 - audio: - value: 35.73832903057337 - canvas: - value: - Winding: true - Geometry: 4dce9d6017c3e0c052a77252f29f2b1c - Text: dd2474a56ff78c1de3e7a07070ba3b7d - colorDepth: - value: 30 - colorGamut: - value: srgb - contrast: - value: 0 - cookiesEnabled: - value: true - highActivity: - data: - result: false - locationSpoofing: - data: - result: false - allErrorsResponse: - summary: All failed signals - value: - products: - identification: - error: - code: Failed - message: failed - botd: - error: - code: Failed - message: internal server error - ipInfo: - error: - code: Failed - message: internal server error - incognito: - error: - code: Failed - message: internal server error - rootApps: - error: - code: Failed - message: internal server error - clonedApp: - error: - code: Failed - message: internal server error - factoryReset: - error: - code: Failed - message: internal server error - jailbroken: - error: - code: Failed - message: internal server error - frida: - error: - code: Failed - message: internal server error - emulator: - error: - code: Failed - message: internal server error - ipBlocklist: - error: - code: Failed - message: internal server error - tor: - error: - code: Failed - message: internal server error - vpn: - error: - code: Failed - message: internal server error - proxy: - error: - code: Failed - message: internal server error - privacySettings: - error: - code: Failed - message: internal server error - virtualMachine: - error: - code: Failed - message: internal server error - tampering: - error: - code: Failed - message: internal server error - rawDeviceAttributes: - data: - audio: - error: - name: Error - message: internal server error - canvas: - error: - name: Error - message: internal server error - withBotdError: - summary: BotD error - value: - products: - identification: - data: - visitorId: Ibk1527CUFmcnjLwIs4A9 - requestId: 0KSh65EnVoB85JBmloQK - incognito: true - linkedId: somelinkedId - time: '2019-05-21T16:40:13Z' - timestamp: 1582299576512 - url: https://www.example.com/login - ip: 61.127.217.15 - ipLocation: - accuracyRadius: 10 - latitude: 49.982 - longitude: 36.2566 - postalCode: '61202' - timezone: Europe/Dusseldorf - city: - name: Dusseldorf - continent: - code: EU - name: Europe - country: - code: DE - name: Germany - subdivisions: - - isoCode: '63' - name: North Rhine-Westphalia - browserDetails: - browserName: Chrome - browserMajorVersion: '74' - browserFullVersion: 74.0.3729 - os: Windows - osVersion: '7' - device: Other - userAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) .... - confidence: - score: 0.97 - visitorFound: true - firstSeenAt: - global: '2022-03-16T11:26:45.362Z' - subscription: '2022-03-16T11:31:01.101Z' - lastSeenAt: - global: '2022-03-16T11:28:34.023Z' - subscription: null - botd: - error: - code: Failed - message: internal server error - withBotdTooManyRequestsError: - summary: BotD too many requests error - value: - products: - identification: - data: - visitorId: Ibk1527CUFmcnjLwIs4A9 - requestId: 0KSh65EnVoB85JBmloQK - incognito: true - linkedId: somelinkedId - time: '2019-05-21T16:40:13Z' - timestamp: 1582299576512 - url: https://www.example.com/login - ip: 61.127.217.15 - ipLocation: - accuracyRadius: 10 - latitude: 49.982 - longitude: 36.2566 - postalCode: '61202' - timezone: Europe/Dusseldorf - city: - name: Dusseldorf - continent: - code: EU - name: Europe - country: - code: DE - name: Germany - subdivisions: - - isoCode: '63' - name: North Rhine-Westphalia - browserDetails: - browserName: Chrome - browserMajorVersion: '74' - browserFullVersion: 74.0.3729 - os: Windows - osVersion: '7' - device: Other - userAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) .... - confidence: - score: 0.97 - visitorFound: true - firstSeenAt: - global: '2022-03-16T11:26:45.362Z' - subscription: '2022-03-16T11:31:01.101Z' - lastSeenAt: - global: '2022-03-16T11:28:34.023Z' - subscription: null - botd: - error: - code: TooManyRequests - message: too many requests - withIdentificationError: - summary: Identification error - value: - products: - identification: - error: - code: Failed - message: failed - botd: - data: - url: https://example.com/login - bot: - result: notDetected - ip: 61.127.217.15 - time: '2019-05-21T16:40:13Z' - withIdentificationTooManyRequestsError: - summary: Identification too many requests error - value: - products: - identification: - error: - code: 429 Too Many Requests - message: too many requests - botd: - data: - url: https://example.com/login - bot: - result: notDetected - ip: 61.127.217.15 - time: '2019-05-21T16:40:13Z' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ErrorEvent403Response' - examples: - example: - summary: Example response - value: - error: - code: TokenRequired - message: secret key is required '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ErrorEvent404Response' - examples: - example: - summary: Example response - value: - error: - code: RequestNotFound - message: request id is not found - x-readme: - code-samples: - - language: node - name: Node SDK - install: npm install @fingerprintjs/fingerprintjs-pro-server-api - code: | - import { - FingerprintJsServerApiClient, - Region, - } from '@fingerprintjs/fingerprintjs-pro-server-api' - - const client = new FingerprintJsServerApiClient({ - apiKey: 'SERVER_API_KEY', // Replace with your key - region: Region.Global, // Replace with your region - }) - - // Get a specific fingerprinting event - client.getEvent('REQUEST_ID').then((event) => { - console.log(event) - }) - - language: php - name: PHP SDK - install: composer require fingerprint/fingerprint-pro-server-api-sdk - code: | - getEvent("REQUEST_ID"); - echo "
" . $response->__toString() . "
"; - } catch (Exception $e) { - echo $e->getMessage(), PHP_EOL; - } - - language: python - name: Python SDK - install: pip install fingerprint_pro_server_api_sdk - code: > - import fingerprint_pro_server_api_sdk - - from fingerprint_pro_server_api_sdk import EventResponse - - from fingerprint_pro_server_api_sdk import Response - - from fingerprint_pro_server_api_sdk.rest import ApiException - - - configuration = fingerprint_pro_server_api_sdk.Configuration( - api_key="SERVER_API_KEY", // Replace with your key - region="us" // Replace with your region - ) - - api_instance = - fingerprint_pro_server_api_sdk.FingerprintApi(configuration) - - - # Get a specific fingerprinting event - - try: - event: EventResponse = api_instance.get_event("REQUEST_ID") - print(event) - except ApiException as e: - print("Exception when getting an event: %s\n" % e) - - language: golang - name: Go SDK - install: go get github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk - code: | - package main - - import ( - "context" - "fmt" - "github.com/antihax/optional" - "github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v3/sdk" - "log" - ) - - func main() { - cfg := sdk.NewConfiguration() - client := sdk.NewAPIClient(cfg) - - auth := context.WithValue( - context.Background(), - sdk.ContextAPIKey, - sdk.APIKey{Key: "SERVER_API_KEY"}, // Replace with your key - ) - cfg.ChangeRegion(sdk.RegionUS) // Replace with your region - - // Get a specific fingerprinting event - event, eventHttpRes, eventErr := - client.FingerprintApi.GetEvent(auth, "REQUEST_ID") - if eventErr != nil { - log.Fatal(eventErr) - } - fmt.Printf("Event: %s", event) - } - - language: java - name: Java SDK - code: | - import com.fingerprint.api.FingerprintApi; - import com.fingerprint.models.EventResponse; - import com.fingerprint.models.Response; - import com.fingerprint.sdk.ApiClient; - import com.fingerprint.sdk.ApiException; - import com.fingerprint.sdk.Configuration; - import com.fingerprint.sdk.Region; - - public class FingerprintApiExample { - public static void main(String... args) { - ApiClient client = Configuration.getDefaultApiClient( - "SERVER_API_KEY", // Replace with your key - Region.GLOBAL // Replace with your region - ); - FingerprintApi api = new FingerprintApi(client); - - // Get a specific fingerprinting event - try { - EventResponse response = api.getEvent("REQUEST_ID"); - System.out.println(response.getProducts().toString()); - } catch (ApiException e) { - System.err.println(e.getMessage()); - } - } - } - - language: csharp - name: C# SDK - install: dotnet add package FingerprintPro.ServerSdk - code: > - using FingerprintPro.ServerSdk.Api; - - using FingerprintPro.ServerSdk.Client; - - - var configuration = new Configuration("SERVER_API_KEY"); // - Replace with your key - - configuration.Region = Region.Us; // Replace with your region - - - var api = new FingerprintApi( - configuration - ); - - - // Get a specific fingerprinting event - - var events = api.GetEvent("REQUEST_ID"); - - Console.WriteLine(events); /visitors/{visitor_id}: get: tags: @@ -761,2657 +199,12 @@ paths: application/json: schema: $ref: '#/components/schemas/Response' - examples: - limit1: - summary: Request with limit=1 - value: - visitorId: AcxioeQKffpXF8iGQK3P - visits: - - requestId: 1655373953086.DDlfmP - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 82.118.30.68 - ipLocation: - accuracyRadius: 1000 - latitude: 50.0805 - longitude: 14.467 - postalCode: 130 00 - timezone: Europe/Prague - city: - name: Prague - country: - code: CZ - name: Czechia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '10' - name: Hlavni mesto Praha - timestamp: 1655373953094 - time: '2022-06-16T10:05:53Z' - url: https://dashboard.fingerprint.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-16T10:03:00.912Z' - subscription: '2022-06-16T10:03:00.912Z' - lastTimestamp: 1655373953086 - paginationKey: 1655373953086.DDlfmP - limit500: - summary: Request with limit=500 - value: - visitorId: AcxioeQKffpXF8iGQK3P - visits: - - requestId: 1655373780901.HhjRFX - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 188.242.36.107 - ipLocation: - accuracyRadius: 5 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1655373780912 - time: '2022-06-16T10:03:00Z' - url: https://fingerprint.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-16T05:27:30.578Z' - subscription: '2022-06-16T05:27:30.578Z' - - requestId: 1655357250568.vqejDF - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 82.118.30.62 - ipLocation: - accuracyRadius: 1000 - latitude: 50.0805 - longitude: 14.467 - postalCode: 130 00 - timezone: Europe/Prague - city: - name: Prague - country: - code: CZ - name: Czechia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '10' - name: Hlavni mesto Praha - timestamp: 1655357250578 - time: '2022-06-16T05:27:30Z' - url: https://fingerprint.com/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-15T15:28:33.479Z' - subscription: '2022-06-15T15:28:33.479Z' - - requestId: 1655306913474.kFQsQx - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 82.118.30.68 - ipLocation: - accuracyRadius: 1000 - latitude: 50.0805 - longitude: 14.467 - postalCode: 130 00 - timezone: Europe/Prague - city: - name: Prague - country: - code: CZ - name: Czechia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '10' - name: Hlavni mesto Praha - timestamp: 1655306913479 - time: '2022-06-15T15:28:33Z' - url: https://fingerprint.com/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-15T08:47:34.677Z' - subscription: '2022-06-15T08:47:34.677Z' - - requestId: 1655282854672.vz4ZlN - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 82.118.30.91 - ipLocation: - accuracyRadius: 1000 - latitude: 50.0805 - longitude: 14.467 - postalCode: 130 00 - timezone: Europe/Prague - city: - name: Prague - country: - code: CZ - name: Czechia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '10' - name: Hlavni mesto Praha - timestamp: 1655282854677 - time: '2022-06-15T08:47:34Z' - url: https://fingerprint.com/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-14T14:19:42.753Z' - subscription: '2022-06-14T14:19:42.753Z' - - requestId: 1655216382743.RDRa4h - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 188.242.36.107 - ipLocation: - accuracyRadius: 5 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1655216382753 - time: '2022-06-14T14:19:42Z' - url: https://fingerprint.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-13T07:53:19.878Z' - subscription: '2022-06-13T07:53:19.878Z' - - requestId: 1655106799870.C8m8hR - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.137 - timestamp: 1655106799878 - time: '2022-06-13T07:53:19Z' - url: https://fingerprint.com/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-07T12:54:35.413Z' - subscription: '2022-06-07T12:54:35.413Z' - - requestId: 1654606475406.2uXCJx - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.157 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timestamp: 1654606475413 - time: '2022-06-07T12:54:35Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-07T09:37:57.43Z' - subscription: '2022-06-07T09:37:57.43Z' - - requestId: 1654594677423.pCHmKJ - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 188.242.36.107 - ipLocation: - timezone: Europe/Moscow - timestamp: 1654594677430 - time: '2022-06-07T09:37:57Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-07T09:37:50.109Z' - subscription: '2022-06-07T09:37:50.109Z' - - requestId: 1654594670097.Lmodmj - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 188.242.36.107 - ipLocation: - accuracyRadius: 5 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1654594670109 - time: '2022-06-07T09:37:50Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-07T08:31:31.9Z' - subscription: '2022-06-07T08:31:31.9Z' - - requestId: 1654590691894.aCYqYE - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 188.242.36.107 - ipLocation: - accuracyRadius: 5 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1654590691900 - time: '2022-06-07T08:31:31Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-06T09:05:25.954Z' - subscription: '2022-06-06T09:05:25.954Z' - - requestId: 1654506325946.ijIwzu - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1654506325954 - time: '2022-06-06T09:05:25Z' - url: https://fingerprintcom.netlify.app/blog/name-change/ - tag: {} - confidence: - score: 0.99 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-02T16:58:53.635Z' - subscription: '2022-06-02T16:58:53.635Z' - - requestId: 1654189133629.0V1gtF - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1654189133635 - time: '2022-06-02T16:58:53Z' - url: https://fingerprintcom.netlify.app/blog/name-change/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-06-02T16:58:51.483Z' - subscription: '2022-06-02T16:58:51.483Z' - - requestId: 1654189131472.r49Bbh - browserDetails: - browserName: Chrome - browserMajorVersion: '102' - browserFullVersion: 102.0.5005 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/102.0.5005.61 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1654189131483 - time: '2022-06-02T16:58:51Z' - url: https://fingerprintcom.netlify.app/ - tag: {} - confidence: - score: 0.95 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-27T14:52:26.624Z' - subscription: '2022-05-27T14:52:26.624Z' - - requestId: 1653663146617.o8KpJO - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.64 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1653663146624 - time: '2022-05-27T14:52:26Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-20T09:50:06.7Z' - subscription: '2022-05-20T09:50:06.7Z' - - requestId: 1653040206694.Q5Csig - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.54 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1653040206700 - time: '2022-05-20T09:50:06Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-19T16:27:38.029Z' - subscription: '2022-05-19T16:27:38.029Z' - - requestId: 1652977658020.xbfYhA - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.54 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1652977658029 - time: '2022-05-19T16:27:38Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-17T15:09:32.666Z' - subscription: '2022-05-17T15:09:32.666Z' - - requestId: 1652800172657.xA22Pd - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.54 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1652800172666 - time: '2022-05-17T15:09:32Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-17T14:18:17.631Z' - subscription: '2022-05-17T14:18:17.631Z' - - requestId: 1652797097626.faAMJO - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.54 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1652797097631 - time: '2022-05-17T14:18:17Z' - url: https://fingerprintjs.com/careers/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-17T10:16:04.809Z' - subscription: '2022-05-17T10:16:04.809Z' - - requestId: 1652782564800.MWH0GO - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.54 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1652782564809 - time: '2022-05-17T10:16:04Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-16T06:47:01.511Z' - subscription: '2022-05-16T06:47:01.511Z' - - requestId: 1652683621505.1tOjuc - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.54 Safari/537.36 - botProbability: 0 - incognito: false - ip: 217.150.54.233 - ipLocation: - accuracyRadius: 1000 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1652683621511 - time: '2022-05-16T06:47:01Z' - url: https://fingerprintjs.com/products/bot-detection/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-16T06:45:49.586Z' - subscription: '2022-05-16T06:45:49.586Z' - - requestId: 1652683586557.67Faeg - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.54 Safari/537.36 - botProbability: 0 - incognito: true - ip: 217.150.54.233 - ipLocation: - accuracyRadius: 1000 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1652683586562 - time: '2022-05-16T06:46:26Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 0.94 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-16T06:45:49.586Z' - subscription: '2022-05-16T06:45:49.586Z' - - requestId: 1652683549513.aVRqEP - browserDetails: - browserName: Chrome - browserMajorVersion: '101' - browserFullVersion: 101.0.4951 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/101.0.4951.54 Safari/537.36 - botProbability: 0 - incognito: false - ip: 217.150.54.233 - ipLocation: - accuracyRadius: 1000 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1652683549586 - time: '2022-05-16T06:45:49Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-05T10:11:25.96Z' - subscription: '2022-05-05T10:11:25.96Z' - - requestId: 1651745485951.Oj68me - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1651745485960 - time: '2022-05-05T10:11:25Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-05T09:33:40.155Z' - subscription: '2022-05-05T09:33:40.155Z' - - requestId: 1651743220004.W02rhx - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1651743220155 - time: '2022-05-05T09:33:40Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-05-03T15:26:32.826Z' - subscription: '2022-05-03T15:26:32.826Z' - - requestId: 1651591592822.Is9u93 - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.157 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1651591592826 - time: '2022-05-03T15:26:32Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-29T13:23:37.049Z' - subscription: '2022-04-29T13:23:37.049Z' - - requestId: 1651238617044.rMVPGS - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 89.38.224.165 - ipLocation: - accuracyRadius: 20 - latitude: 44.804 - longitude: 20.4651 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1651238617049 - time: '2022-04-29T13:23:37Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-29T10:37:53.333Z' - subscription: '2022-04-29T10:37:53.333Z' - - requestId: 1651228673329.QZI2Cu - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 188.242.36.107 - ipLocation: - accuracyRadius: 5 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1651228673333 - time: '2022-04-29T10:37:53Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-28T13:58:06.323Z' - subscription: '2022-04-28T13:58:06.323Z' - - requestId: 1651154286221.YvuOCP - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 84.247.59.113 - ipLocation: - accuracyRadius: 20 - latitude: 50.0971 - longitude: 8.5952 - postalCode: '65933' - timezone: Europe/Berlin - city: - name: Frankfurt am Main - country: - code: DE - name: Germany - continent: - code: EU - name: Europe - subdivisions: - - isoCode: HE - name: Hesse - timestamp: 1651154286323 - time: '2022-04-28T13:58:06Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-28T12:16:02.564Z' - subscription: '2022-04-28T12:16:02.564Z' - - requestId: 1651148162556.dySgif - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 84.247.59.113 - ipLocation: - accuracyRadius: 20 - latitude: 50.0971 - longitude: 8.5952 - postalCode: '65933' - timezone: Europe/Berlin - city: - name: Frankfurt am Main - country: - code: DE - name: Germany - continent: - code: EU - name: Europe - subdivisions: - - isoCode: HE - name: Hesse - timestamp: 1651148162564 - time: '2022-04-28T12:16:02Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-28T11:57:13.267Z' - subscription: '2022-04-28T11:57:13.267Z' - - requestId: 1651147033260.SxmFvL - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 84.247.59.146 - ipLocation: - accuracyRadius: 20 - latitude: 50.0971 - longitude: 8.5952 - postalCode: '65933' - timezone: Europe/Berlin - city: - name: Frankfurt am Main - country: - code: DE - name: Germany - continent: - code: EU - name: Europe - subdivisions: - - isoCode: HE - name: Hesse - timestamp: 1651147033267 - time: '2022-04-28T11:57:13Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-28T11:57:06.24Z' - subscription: '2022-04-28T11:57:06.24Z' - - requestId: 1651147026139.aAZ8TO - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 84.247.59.146 - ipLocation: - accuracyRadius: 20 - latitude: 50.0971 - longitude: 8.5952 - postalCode: '65933' - timezone: Europe/Berlin - city: - name: Frankfurt am Main - country: - code: DE - name: Germany - continent: - code: EU - name: Europe - subdivisions: - - isoCode: HE - name: Hesse - timestamp: 1651147026240 - time: '2022-04-28T11:57:06Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-26T14:10:31.908Z' - subscription: '2022-04-26T14:10:31.908Z' - - requestId: 1650982231903.eG0b6v - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.105 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650982231908 - time: '2022-04-26T14:10:31Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-26T11:43:37.373Z' - subscription: '2022-04-26T11:43:37.373Z' - - requestId: 1650973417360.xupFFD - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.99 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650973417373 - time: '2022-04-26T11:43:37Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-26T11:43:30.111Z' - subscription: '2022-04-26T11:43:30.111Z' - - requestId: 1650973410104.AQD4qu - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.99 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650973410111 - time: '2022-04-26T11:43:30Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-26T11:22:34.148Z' - subscription: '2022-04-26T11:22:34.148Z' - - requestId: 1650972154133.lSWE8a - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.96 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650972154148 - time: '2022-04-26T11:22:34Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-26T11:22:03.83Z' - subscription: '2022-04-26T11:22:03.83Z' - - requestId: 1650972123824.xk8MUR - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.96 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650972123830 - time: '2022-04-26T11:22:03Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-25T09:46:15.458Z' - subscription: '2022-04-25T09:46:15.458Z' - - requestId: 1650879975452.kfuowM - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 188.242.36.107 - ipLocation: - accuracyRadius: 5 - latitude: 59.8983 - longitude: 30.2618 - postalCode: '190924' - timezone: Europe/Moscow - city: - name: St Petersburg - country: - code: RU - name: Russia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: SPE - name: St.-Petersburg - timestamp: 1650879975458 - time: '2022-04-25T09:46:15Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-22T16:51:44.816Z' - subscription: '2022-04-22T16:51:44.816Z' - - requestId: 1650646304808.xQbAju - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.227 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650646304816 - time: '2022-04-22T16:51:44Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-21T11:43:33.116Z' - subscription: '2022-04-21T11:43:33.116Z' - - requestId: 1650541413105.leAPLz - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.89 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650541413116 - time: '2022-04-21T11:43:33Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-20T17:11:54.717Z' - subscription: '2022-04-20T17:11:54.717Z' - - requestId: 1650474714710.M1IGsl - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.111 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650474714717 - time: '2022-04-20T17:11:54Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-20T17:11:47.217Z' - subscription: '2022-04-20T17:11:47.217Z' - - requestId: 1650474707211.CEUuZk - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.111 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650474707217 - time: '2022-04-20T17:11:47Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-20T17:11:12.076Z' - subscription: '2022-04-20T17:11:12.076Z' - - requestId: 1650474672071.Pz4WsK - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.111 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650474672076 - time: '2022-04-20T17:11:12Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T12:29:06.692Z' - subscription: '2022-04-19T12:29:06.692Z' - - requestId: 1650371346684.1d7sgv - browserDetails: - browserName: Chrome Mobile - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Android - osVersion: '6.0' - device: Nexus 5 - userAgent: >- - Mozilla/5.0 (Linux; Android 6.0; Nexus 5 - Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Mobile Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.198 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650371346692 - time: '2022-04-19T12:29:06Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T12:29:02.15Z' - subscription: '2022-04-19T12:29:02.15Z' - - requestId: 1650371342145.oWyfRx - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.198 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650371342150 - time: '2022-04-19T12:29:02Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T11:35:14.729Z' - subscription: '2022-04-19T11:35:14.729Z' - - requestId: 1650368114723.YEXcHI - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.206 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650368114729 - time: '2022-04-19T11:35:14Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T11:13:33.107Z' - subscription: '2022-04-19T11:13:33.107Z' - - requestId: 1650366813101.SvUZC1 - browserDetails: - browserName: Chrome Mobile - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Android - osVersion: '6.0' - device: Nexus 5 - userAgent: >- - Mozilla/5.0 (Linux; Android 6.0; Nexus 5 - Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Mobile Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.204 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650366813107 - time: '2022-04-19T11:13:33Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T11:13:28.453Z' - subscription: '2022-04-19T11:13:28.453Z' - - requestId: 1650366808426.Hy6j7v - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.204 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650366808453 - time: '2022-04-19T11:13:28Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T11:07:05.19Z' - subscription: '2022-04-19T11:07:05.19Z' - - requestId: 1650366425184.xvYkdr - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.204 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650366425190 - time: '2022-04-19T11:07:05Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T11:07:00.483Z' - subscription: '2022-04-19T11:07:00.483Z' - - requestId: 1650366420377.VR5pDX - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.204 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650366420483 - time: '2022-04-19T11:07:00Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T10:37:45.279Z' - subscription: '2022-04-19T10:37:45.279Z' - - requestId: 1650364665274.qq31O4 - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.172 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650364665279 - time: '2022-04-19T10:37:45Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T10:22:58.87Z' - subscription: '2022-04-19T10:22:58.87Z' - - requestId: 1650363778864.tsVBjO - browserDetails: - browserName: Chrome Mobile - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Android - osVersion: '6.0' - device: Nexus 5 - userAgent: >- - Mozilla/5.0 (Linux; Android 6.0; Nexus 5 - Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Mobile Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.210 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650363778870 - time: '2022-04-19T10:22:58Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T10:22:46.894Z' - subscription: '2022-04-19T10:22:46.894Z' - - requestId: 1650363766889.KuVDpm - browserDetails: - browserName: Chrome Mobile - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Android - osVersion: '6.0' - device: Nexus 5 - userAgent: >- - Mozilla/5.0 (Linux; Android 6.0; Nexus 5 - Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Mobile Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.210 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650363766894 - time: '2022-04-19T10:22:46Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T10:07:01.528Z' - subscription: '2022-04-19T10:07:01.528Z' - - requestId: 1650362821521.dXH2Ce - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.180 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650362821528 - time: '2022-04-19T10:07:01Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-19T10:02:42.46Z' - subscription: '2022-04-19T10:02:42.46Z' - - requestId: 1650362562448.a5cPLU - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.127 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.180 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650362562460 - time: '2022-04-19T10:02:42Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-18T17:06:30.834Z' - subscription: '2022-04-18T17:06:30.834Z' - - requestId: 1650301590829.YXGX7h - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.75 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.195 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650301590834 - time: '2022-04-18T17:06:30Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-18T12:23:30.446Z' - subscription: '2022-04-18T12:23:30.446Z' - - requestId: 1650284610441.lJrX4M - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.75 Safari/537.36 - botProbability: 0 - incognito: false - ip: 45.86.200.179 - ipLocation: - accuracyRadius: 1000 - latitude: 52.3824 - longitude: 4.8995 - timezone: Europe/Amsterdam - country: - code: NL - name: Netherlands - continent: - code: EU - name: Europe - timestamp: 1650284610446 - time: '2022-04-18T12:23:30Z' - url: https://fingerprintjs.com/blog/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-04-06T14:53:00.526Z' - subscription: '2022-04-06T14:53:00.526Z' - - requestId: 1649256780522.WAXWf2 - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.60 Safari/537.36 - botProbability: 0 - incognito: false - ip: 109.245.35.200 - ipLocation: - accuracyRadius: 50 - latitude: 44.8166 - longitude: 20.4721 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1649256780526 - time: '2022-04-06T14:53:00Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-03-18T11:08:35.698Z' - subscription: '2022-03-18T11:08:35.698Z' - - requestId: 1649256780520.RRC4PR - browserDetails: - browserName: Chrome - browserMajorVersion: '100' - browserFullVersion: 100.0.4896 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/100.0.4896.60 Safari/537.36 - botProbability: 0 - incognito: false - ip: 109.245.35.200 - ipLocation: - accuracyRadius: 50 - latitude: 44.8166 - longitude: 20.4721 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1649256780525 - time: '2022-04-06T14:53:00Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-03-18T11:08:35.698Z' - subscription: '2022-03-18T11:08:35.698Z' - - requestId: 1647601715689.iocXfW - browserDetails: - browserName: Chrome - browserMajorVersion: '98' - browserFullVersion: 98.0.4758 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/98.0.4758.109 Safari/537.36 - botProbability: 0 - incognito: false - ip: 178.223.21.183 - ipLocation: - accuracyRadius: 50 - latitude: 44.8166 - longitude: 20.4721 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1647601715698 - time: '2022-03-18T11:08:35Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-03-16T08:21:23.62Z' - subscription: '2022-03-16T08:21:23.62Z' - - requestId: 1647418883615.Vck2NA - browserDetails: - browserName: Chrome - browserMajorVersion: '98' - browserFullVersion: 98.0.4758 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/98.0.4758.109 Safari/537.36 - botProbability: 0 - incognito: false - ip: 87.116.165.97 - ipLocation: - accuracyRadius: 50 - latitude: 44.8166 - longitude: 20.4721 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1647418883620 - time: '2022-03-16T08:21:23Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-03-16T08:21:18.398Z' - subscription: '2022-03-16T08:21:18.398Z' - - requestId: 1647418878391.NZDmht - browserDetails: - browserName: Chrome - browserMajorVersion: '98' - browserFullVersion: 98.0.4758 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/98.0.4758.109 Safari/537.36 - botProbability: 0 - incognito: false - ip: 87.116.165.97 - ipLocation: - accuracyRadius: 50 - latitude: 44.8166 - longitude: 20.4721 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1647418878398 - time: '2022-03-16T08:21:18Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-03-15T11:46:51.858Z' - subscription: '2022-03-15T11:46:51.858Z' - - requestId: 1647344811836.RvNkL5 - browserDetails: - browserName: Chrome - browserMajorVersion: '98' - browserFullVersion: 98.0.4758 - os: Mac OS X - osVersion: 10.15.7 - device: Other - userAgent: >- - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) - AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/98.0.4758.109 Safari/537.36 - botProbability: 0 - incognito: false - ip: 87.116.165.97 - ipLocation: - accuracyRadius: 50 - latitude: 44.8166 - longitude: 20.4721 - timezone: Europe/Belgrade - city: - name: Belgrade - country: - code: RS - name: Serbia - continent: - code: EU - name: Europe - subdivisions: - - isoCode: '00' - name: Belgrade - timestamp: 1647344811858 - time: '2022-03-15T11:46:51Z' - url: https://fingerprintjs.com/ - tag: {} - confidence: - score: 1 - visitorFound: true - firstSeenAt: - global: '2022-02-04T11:31:20Z' - subscription: '2022-02-04T11:31:20Z' - lastSeenAt: - global: '2022-03-08T12:33:05.677Z' - subscription: '2022-03-08T12:33:05.677Z' '403': description: Forbidden. The API Key is probably missing or incorrect. content: application/json: schema: $ref: '#/components/schemas/ErrorVisits403' - examples: - example: - summary: Forbidden - value: - error: Forbidden (HTTP 403) '429': description: Too Many Requests headers: @@ -3423,180 +216,10 @@ paths: type: integer format: int32 minimum: 0 - content: - application/json: - schema: - $ref: '#/components/schemas/ManyRequestsResponse' - examples: - example: - summary: Example too many requests error response - value: - error: too many requests - x-readme: - code-samples: - - language: node - name: Node SDK - install: npm install @fingerprintjs/fingerprintjs-pro-server-api - code: | - import { - FingerprintJsServerApiClient, - Region, - } from '@fingerprintjs/fingerprintjs-pro-server-api' - - const client = new FingerprintJsServerApiClient({ - apiKey: 'SERVER_API_KEY', // Replace with your key - region: Region.Global, // Replace with your region - }) - - // Get visit history of a specific visitor - client.getVisitorHistory('VISITOR_ID').then((visitorHistory) => { - console.log(visitorHistory) - }) - - language: php - name: PHP SDK - install: composer require fingerprint/fingerprint-pro-server-api-sdk - code: | - getVisits("VISITOR_ID"); - echo "
" . $response->__toString() . "
"; - } catch (Exception $e) { - echo $e->getMessage(), PHP_EOL; - } - - language: python - name: Python SDK - install: pip install fingerprint_pro_server_api_sdk - code: > - import fingerprint_pro_server_api_sdk - - from fingerprint_pro_server_api_sdk import EventResponse - - from fingerprint_pro_server_api_sdk import Response - - from fingerprint_pro_server_api_sdk.rest import ApiException - - - configuration = fingerprint_pro_server_api_sdk.Configuration( - api_key="SERVER_API_KEY", // Replace with your key - region="us" // Replace with your region - ) - - api_instance = - fingerprint_pro_server_api_sdk.FingerprintApi(configuration) - - - # Get visit history of a specific visitor - - try: - visits: Response = api_instance.get_visits("VISITOR_ID", limit=10) - print(visits) - except ApiException as e: - print("Exception when getting visits: %s\n" % e) - - language: golang - name: Go SDK - install: go get github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk - code: | - package main - - import ( - "context" - "fmt" - "github.com/antihax/optional" - "github.com/fingerprintjs/fingerprint-pro-server-api-go-sdk/v3/sdk" - "log" - ) - - func main() { - cfg := sdk.NewConfiguration() - client := sdk.NewAPIClient(cfg) - - auth := context.WithValue( - context.Background(), - sdk.ContextAPIKey, - sdk.APIKey{Key: "SERVER_API_KEY"}, // Replace with your key - ) - cfg.ChangeRegion(sdk.RegionUS) // Replace with your region - - // Get visit history of a specific visitor - getVisitsOpts := sdk.FingerprintApiGetVisitsOpts{ - Limit: optional.NewInt32(10), - } - history, historyHttpRes, historyErr := - client.FingerprintApi.GetVisits(auth, "VISITOR_ID", &getVisitsOpts) - if err != nil { - log.Fatal(err) - } - fmt.Printf("Visitor history: %s", history) - } - - language: java - name: Java SDK - code: | - import com.fingerprint.api.FingerprintApi; - import com.fingerprint.models.EventResponse; - import com.fingerprint.models.Response; - import com.fingerprint.sdk.ApiClient; - import com.fingerprint.sdk.ApiException; - import com.fingerprint.sdk.Configuration; - import com.fingerprint.sdk.Region; - - public class FingerprintApiExample { - public static void main(String... args) { - ApiClient client = Configuration.getDefaultApiClient( - "SERVER_API_KEY", // Replace with your key - Region.GLOBAL // Replace with your region - ); - FingerprintApi api = new FingerprintApi(client); - - // Get visit history of a specific visitor - try { - Response response = api.getVisits("VISITOR_ID"); - System.out.println(response.getVisits().toString()); - } catch (ApiException e) { - System.err.println(e.getMessage()); - } - } - } - - language: csharp - name: C# SDK - install: dotnet add package FingerprintPro.ServerSdk - code: > - using FingerprintPro.ServerSdk.Api; - - using FingerprintPro.ServerSdk.Client; - - - var configuration = new Configuration("SERVER_API_KEY"); // - Replace with your key - - configuration.Region = Region.Us; // Replace with your region - - - var api = new FingerprintApi( - configuration - ); - - - // Get visit history of a specific visitor - - var visits = api.GetVisits("VISITOR_ID"); - - Console.WriteLine(visits); + content: + application/json: + schema: + $ref: '#/components/schemas/ManyRequestsResponse' /webhook: trace: tags: @@ -3718,6 +341,7 @@ paths: vpn: result: false originTimezone: Europe/Berlin + originCountry: unknown methods: timezoneMismatch: false publicVPN: false @@ -3865,7 +489,7 @@ components: format: date-time example: '2022-06-09T22:58:36Z' url: - description: Page URL from which identification request was sent. + description: Page URL from which the identification request was sent. type: string format: uri example: https://some.website/path?query=params @@ -3893,7 +517,6 @@ components: additionalProperties: false required: - browserDetails - - confidence - firstSeenAt - incognito - ip @@ -3902,8 +525,8 @@ components: - time - timestamp - url - - visitorFound - tag + - visitorFound lastTimestamp: description: > ⚠️ Deprecated paging attribute, please use `paginationKey` instead. @@ -4019,129 +642,29 @@ components: description: Flag if user used incognito session. type: boolean rootApps: - title: WebhookSignalResponseRootApps - type: object - properties: - result: - type: boolean - description: > - Android specific root management apps detection. There are 2 - values: • `true` - Root Management Apps detected (e.g. Magisk) • - `false` - No Root Management Apps detected or the client isn't - Android. - example: false + $ref: '#/components/schemas/RootAppsResult' emulator: - title: WebhookSignalResponseEmulator - type: object - properties: - result: - type: boolean - description: > - Android specific emulator detection. There are 2 values: • - `true` - Emulated environment detected (e.g. launch inside of - AVD) • `false` - No signs of emulated environment detected or - the client isn't Android. - example: false + $ref: '#/components/schemas/EmulatorResult' clonedApp: - title: WebhookSignalResponseClonedApp - type: object - properties: - result: - type: boolean - description: > - Android specific cloned application detection. There are 2 - values: • `true` - Presence of app cloners work detected (e.g. - fully cloned application found or launch of it inside of a not - main working profile detected). • `false` - No signs of cloned - application detected or the client is not Android. - example: false + $ref: '#/components/schemas/ClonedAppResult' factoryReset: - title: WebhookSignalResponseFactoryReset - type: object - properties: - time: - title: Time - description: > - Time in UTC for the Android client when recent factory reset was - done. If there is no sign of factory reset or the client isn't - Android, the field will be epoch time. - type: string - format: date-time - example: '2022-06-09T22:58:36Z' - timestamp: - description: >- - Same value as it's in the `time` field but represented in - timestamp format. - type: integer - format: int64 - example: 1654815517198 + $ref: '#/components/schemas/FactoryResetResult' jailbroken: - title: WebhookSignalResponseJailbroken - type: object - properties: - result: - type: boolean - description: > - iOS specific jailbreak detection. There are 2 values: • `true` - - Jailbreak detected • `false` - No signs of jailbreak or the - client is not iOS. - example: false + $ref: '#/components/schemas/JailbrokenResult' frida: - title: WebhookSignalResponseFrida - type: object - properties: - result: - type: boolean - description: > - iOS specific [Frida](https://frida.re/docs/ios/) detection. - There are 2 values: • `true` - Frida detected • `false` - No - signs of Frida or the client is not iOS. - example: false + $ref: '#/components/schemas/FridaResult' ipBlocklist: $ref: '#/components/schemas/IpBlockListResult' tor: - title: WebhookSignalResponseTor - type: object - properties: - result: - type: boolean - description: > - `true` if the request IP address is a known tor exit node, - `false` otherwise. - example: false + $ref: '#/components/schemas/TorResult' privacySettings: - title: WebhookSignalResponsePrivacySettings - type: object - properties: - result: - type: boolean - description: > - `true` if the request is from a privacy aware browser (e.g. Tor) - or from a browser in which fingerprinting is blocked. Otherwise - `false`. - example: false + $ref: '#/components/schemas/PrivacySettingsResult' virtualMachine: - title: WebhookSignalResponseVirtualMachine - type: object - properties: - result: - type: boolean - description: > - `true` if the request came from a browser running inside a - virtual machine (e.g. VMWare), `false` otherwise. - example: false + $ref: '#/components/schemas/VirtualMachineResult' vpn: $ref: '#/components/schemas/VpnResult' proxy: - title: WebhookSignalResponseProxy - type: object - properties: - result: - type: boolean - description: > - `true` if the request IP address is used by a public proxy - provider, `false` otherwise. - example: false + $ref: '#/components/schemas/ProxyResult' tampering: $ref: '#/components/schemas/TamperingResult' rawDeviceAttributes: @@ -4222,7 +745,7 @@ components: format: date-time example: '2022-06-09T22:58:36Z' url: - description: Page URL from which identification request was sent. + description: Page URL from which the identification request was sent. type: string format: uri example: https://some.website/path?query=params @@ -4249,7 +772,6 @@ components: required: - visitorId - browserDetails - - confidence - firstSeenAt - incognito - ip @@ -4258,9 +780,11 @@ components: - time - timestamp - url + - tag - visitorFound Visit: type: object + additionalProperties: false properties: requestId: description: Unique identifier of the user's identification request. @@ -4335,7 +859,7 @@ components: format: date-time example: '2022-06-09T22:58:36Z' url: - description: Page URL from which identification request was sent. + description: Page URL from which the identification request was sent. type: string format: uri example: https://some.website/path?query=params @@ -4360,7 +884,6 @@ components: $ref: '#/components/schemas/SeenAt' required: - browserDetails - - confidence - firstSeenAt - incognito - ip @@ -4369,6 +892,7 @@ components: - time - timestamp - url + - tag - visitorFound title: Visit BrowserDetails: @@ -4638,7 +1162,7 @@ components: format: date-time example: '2022-06-09T22:58:36Z' url: - description: Page URL from which identification request was sent. + description: Page URL from which the identification request was sent. type: string format: uri example: https://some.website/path?query=params @@ -4675,7 +1199,6 @@ components: additionalProperties: false required: - browserDetails - - confidence - firstSeenAt - incognito - ip @@ -4684,6 +1207,7 @@ components: - time - timestamp - url + - tag - visitorFound - visitorId error: @@ -4700,6 +1224,7 @@ components: ipInfo: title: SignalResponseIpInfo type: object + additionalProperties: false properties: data: $ref: '#/components/schemas/IpInfoResult' @@ -4708,131 +1233,70 @@ components: incognito: title: SignalResponseIncognito type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - `true` if we detected incognito mode used in the browser, - `false` otherwise. - example: false + $ref: '#/components/schemas/IncognitoResult' error: $ref: '#/components/schemas/ProductError' rootApps: title: SignalResponseRootApps type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - Android specific root management apps detection. There are 2 - values: • `true` - Root Management Apps detected (e.g. - Magisk) • `false` - No Root Management Apps detected or the - client is not Android. - example: false + $ref: '#/components/schemas/RootAppsResult' error: $ref: '#/components/schemas/ProductError' emulator: title: SignalResponseEmulator type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - Android specific emulator detection. There are 2 values: • - `true` - Emulated environment detected (e.g. launch inside - of AVD) • `false` - No signs of emulated environment - detected or the client is not Android. - example: false + $ref: '#/components/schemas/EmulatorResult' error: $ref: '#/components/schemas/ProductError' clonedApp: title: SignalResponseClonedApp type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - Android specific cloned application detection. There are 2 - values: • `true` - Presence of app cloners work detected - (e.g. fully cloned application found or launch of it inside - of a not main working profile detected). • `false` - No - signs of cloned application detected or the client is not - Android. - example: false + $ref: '#/components/schemas/ClonedAppResult' error: $ref: '#/components/schemas/ProductError' factoryReset: title: SignalResponseFactoryReset type: object + additionalProperties: false properties: data: - type: object - properties: - time: - title: Time - description: > - Time in UTC for the Android client when recent factory reset - was done. If there is no sign of factory reset or the - client isn't Android, the field will be epoch time. - type: string - format: date-time - example: '2022-06-09T22:58:36Z' - timestamp: - description: >- - Same value as it's in the `time` field but represented in - timestamp format. - type: integer - format: int64 - example: 1654815517198 + $ref: '#/components/schemas/FactoryResetResult' error: $ref: '#/components/schemas/ProductError' jailbroken: title: SignalResponseJailbroken type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - iOS specific jailbreak detection. There are 2 values: • - `true` - Jailbreak detected • `false` - No signs of - jailbreak or the client is not iOS. - example: false + $ref: '#/components/schemas/JailbrokenResult' error: $ref: '#/components/schemas/ProductError' frida: title: SignalResponseFrida type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - iOS specific [Frida](https://frida.re/docs/ios/) detection. - There are 2 values: • `true` - Frida detected • `false` - No - signs of Frida or the client is not iOS. - example: false + $ref: '#/components/schemas/FridaResult' error: $ref: '#/components/schemas/ProductError' ipBlocklist: title: SignalResponseIpBlocklist type: object + additionalProperties: false properties: data: $ref: '#/components/schemas/IpBlockListResult' @@ -4841,52 +1305,34 @@ components: tor: title: SignalResponseTor type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - `true` if the request IP address is a known tor exit node, - `false` otherwise. - example: false + $ref: '#/components/schemas/TorResult' error: $ref: '#/components/schemas/ProductError' privacySettings: title: SignalResponsePrivacySettings type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - `true` if the request is from a privacy aware browser (e.g. - Tor) or from a browser in which fingerprinting is blocked. - Otherwise `false`. - example: false + $ref: '#/components/schemas/PrivacySettingsResult' error: $ref: '#/components/schemas/ProductError' virtualMachine: title: SignalResponseVirtualMachine type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - `true` if the request came from a browser running inside a - virtual machine (e.g. VMWare), `false` otherwise. - example: false + $ref: '#/components/schemas/VirtualMachineResult' error: $ref: '#/components/schemas/ProductError' vpn: title: SignalResponseVpn type: object + additionalProperties: false properties: data: $ref: '#/components/schemas/VpnResult' @@ -4895,21 +1341,16 @@ components: proxy: title: SignalResponseProxy type: object + additionalProperties: false properties: data: - type: object - properties: - result: - type: boolean - description: > - `true` if the request IP address is used by a public proxy - provider, `false` otherwise. - example: false + $ref: '#/components/schemas/ProxyResult' error: $ref: '#/components/schemas/ProductError' tampering: title: SignalResponseTampering type: object + additionalProperties: false properties: data: $ref: '#/components/schemas/TamperingResult' @@ -4918,6 +1359,7 @@ components: highActivity: title: SignalResponseHighActivity type: object + additionalProperties: false properties: data: $ref: '#/components/schemas/HighActivityResult' @@ -4926,6 +1368,7 @@ components: locationSpoofing: title: SignalResponseLocationSpoofing type: object + additionalProperties: false properties: data: $ref: '#/components/schemas/LocationSpoofingResult' @@ -4943,9 +1386,12 @@ components: rawDeviceAttributes: title: SignalResponseRawDeviceAttributes type: object + additionalProperties: false properties: data: $ref: '#/components/schemas/RawDeviceAttributesResult' + error: + $ref: '#/components/schemas/ProductError' EventResponse: description: >- Contains results from all activated products - Fingerprint Pro, Bot @@ -4955,6 +1401,10 @@ components: properties: products: $ref: '#/components/schemas/ProductsResponse' + error: + $ref: '#/components/schemas/ProductError' + required: + - products IdentificationError: type: object additionalProperties: false @@ -4977,6 +1427,7 @@ components: - message BotdResult: type: object + additionalProperties: false description: Contains all the information from Bot Detection product properties: ip: @@ -5016,6 +1467,8 @@ components: - url - ip - time + - userAgent + - requestId BotdDetectionResult: type: object additionalProperties: false @@ -5059,6 +1512,9 @@ components: $ref: '#/components/schemas/ASN' datacenter: $ref: '#/components/schemas/DataCenter' + required: + - address + - geolocation v6: type: object additionalProperties: false @@ -5073,8 +1529,12 @@ components: $ref: '#/components/schemas/ASN' datacenter: $ref: '#/components/schemas/DataCenter' + required: + - address + - geolocation IpBlockListResult: type: object + additionalProperties: false properties: result: type: boolean @@ -5084,6 +1544,7 @@ components: example: false details: type: object + additionalProperties: false properties: emailSpam: type: boolean @@ -5093,8 +1554,15 @@ components: type: boolean description: IP address was part of a known network attack (SSH/HTTPS). example: false + required: + - emailSpam + - attackSource + required: + - result + - details VpnResult: type: object + additionalProperties: false properties: result: type: boolean @@ -5106,8 +1574,15 @@ components: type: string description: Local timezone which is used in timezoneMismatch method. example: Europe/Berlin + originCountry: + type: string + description: >- + Country of the request (only for Android SDK version >= 2.4.0, ISO + 3166 format or unknown). + example: unknown methods: type: object + additionalProperties: false properties: timezoneMismatch: type: boolean @@ -5127,8 +1602,17 @@ components: This method applies to mobile devices only. Indicates the result of additional methods used to detect a VPN in mobile devices. example: false + required: + - timezoneMismatch + - publicVPN + - auxiliaryMobile + required: + - result + - originTimezone + - methods TamperingResult: type: object + additionalProperties: false properties: result: type: boolean @@ -5145,8 +1629,12 @@ components: example: 0 minimum: 0 maximum: 1 + required: + - result + - anomalyScore HighActivityResult: type: object + additionalProperties: false properties: result: type: boolean @@ -5159,14 +1647,17 @@ components: description: Number of requests from the same visitor in the previous day. example: 10 minimum: 1 + required: + - result LocationSpoofingResult: type: object + additionalProperties: false properties: result: type: boolean description: >- - Flag indicating whether the request came from a device with location - spoofing enabled. + Flag indicating whether the request came from a mobile device with + location spoofing enabled. example: false required: - result @@ -5218,8 +1709,162 @@ components: type: object value: title: value + FactoryResetResult: + type: object + additionalProperties: false + properties: + time: + title: Time + description: > + Time in UTC when the most recent factory reset of the Android or iOS + device was done. If there is no sign of factory reset or the client + is not a mobile device, the field will contain the epoch time (1 + January 1970) in UTC. + type: string + format: date-time + example: '2022-06-09T22:58:36Z' + timestamp: + description: >- + Same value as it's in the `time` field but represented in timestamp + format. + type: integer + format: int64 + example: 1654815517198 + required: + - time + - timestamp + ClonedAppResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + Android specific cloned application detection. There are 2 values: • + `true` - Presence of app cloners work detected (e.g. fully cloned + application found or launch of it inside of a not main working + profile detected). • `false` - No signs of cloned application + detected or the client is not Android. + example: false + required: + - result + EmulatorResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + Android specific emulator detection. There are 2 values: • `true` - + Emulated environment detected (e.g. launch inside of AVD) • `false` + - No signs of emulated environment detected or the client is not + Android. + example: false + required: + - result + RootAppsResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + Android specific root management apps detection. There are 2 values: + • `true` - Root Management Apps detected (e.g. Magisk) • `false` - + No Root Management Apps detected or the client isn't Android. + example: false + required: + - result + IncognitoResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + `true` if we detected incognito mode used in the browser, `false` + otherwise. + example: false + required: + - result + JailbrokenResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + iOS specific jailbreak detection. There are 2 values: • `true` - + Jailbreak detected • `false` - No signs of jailbreak or the client + is not iOS. + example: false + required: + - result + FridaResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + [Frida](https://frida.re/docs/) detection for Android and iOS + devices. There are 2 values: • `true` - Frida detected • `false` - + No signs of Frida or the client is not a mobile device. + example: false + required: + - result + TorResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + `true` if the request IP address is a known tor exit node, `false` + otherwise. + example: false + required: + - result + PrivacySettingsResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + `true` if the request is from a privacy aware browser (e.g. Tor) or + from a browser in which fingerprinting is blocked. Otherwise + `false`. + example: false + required: + - result + VirtualMachineResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + `true` if the request came from a browser running inside a virtual + machine (e.g. VMWare), `false` otherwise. + example: false + required: + - result + ProxyResult: + type: object + additionalProperties: false + properties: + result: + type: boolean + description: > + `true` if the request IP address is used by a public proxy provider, + `false` otherwise. + example: false + required: + - result ProductError: type: object + additionalProperties: false properties: code: type: string diff --git a/scripts/sync.sh b/scripts/sync.sh index 6ff985d..35e3e08 100755 --- a/scripts/sync.sh +++ b/scripts/sync.sh @@ -1,6 +1,6 @@ #!/bin/bash -curl -o ./res/fingerprint-server-api.yaml https://fingerprintjs.github.io/fingerprint-pro-server-api-openapi/schemes/fingerprint-server-api.yaml +curl -o ./res/fingerprint-server-api.yaml https://fingerprintjs.github.io/fingerprint-pro-server-api-openapi/schemas/fingerprint-server-api-compact.yaml examplesList=( 'visits_limit_500.json' diff --git a/src/main/java/com/fingerprint/api/FingerprintApi.java b/src/main/java/com/fingerprint/api/FingerprintApi.java index f54cb8d..57cae54 100644 --- a/src/main/java/com/fingerprint/api/FingerprintApi.java +++ b/src/main/java/com/fingerprint/api/FingerprintApi.java @@ -62,7 +62,7 @@ public void setApiClient(ApiClient apiClient) { /** * Get event by requestId - * This endpoint allows you to get a detailed analysis of an individual request. **Only for Enterprise customers:** Please note that the response includes mobile signals (e.g. `rootApps`) even if the request orignated from a non-mobile platform. It is highly recommended that you **ignore** the mobile signals for such requests. Use `requestId` as the URL path parameter. This API method is scoped to a request, i.e. all returned information is by `requestId`. + * This endpoint allows you to get a detailed analysis of an individual request. **Only for Enterprise customers:** Please note that the response includes mobile signals (e.g. `rootApps`) even if the request originated from a non-mobile platform. It is highly recommended that you **ignore** the mobile signals for such requests. Use `requestId` as the URL path parameter. This API method is scoped to a request, i.e. all returned information is by `requestId`. * @param requestId The unique [identifier](https://dev.fingerprint.com/docs/js-agent#requestid) of each analysis request. (required) * @return EventResponse * @throws ApiException if fails to make API call @@ -80,7 +80,7 @@ public EventResponse getEvent(String requestId) throws ApiException { /** * Get event by requestId - * This endpoint allows you to get a detailed analysis of an individual request. **Only for Enterprise customers:** Please note that the response includes mobile signals (e.g. `rootApps`) even if the request orignated from a non-mobile platform. It is highly recommended that you **ignore** the mobile signals for such requests. Use `requestId` as the URL path parameter. This API method is scoped to a request, i.e. all returned information is by `requestId`. + * This endpoint allows you to get a detailed analysis of an individual request. **Only for Enterprise customers:** Please note that the response includes mobile signals (e.g. `rootApps`) even if the request originated from a non-mobile platform. It is highly recommended that you **ignore** the mobile signals for such requests. Use `requestId` as the URL path parameter. This API method is scoped to a request, i.e. all returned information is by `requestId`. * @param requestId The unique [identifier](https://dev.fingerprint.com/docs/js-agent#requestid) of each analysis request. (required) * @return ApiResponse<EventResponse> * @throws ApiException if fails to make API call diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseClonedApp.java b/src/main/java/com/fingerprint/model/ClonedAppResult.java similarity index 72% rename from src/main/java/com/fingerprint/model/WebhookSignalResponseClonedApp.java rename to src/main/java/com/fingerprint/model/ClonedAppResult.java index f1ad0bd..92421ae 100644 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseClonedApp.java +++ b/src/main/java/com/fingerprint/model/ClonedAppResult.java @@ -29,20 +29,20 @@ /** - * WebhookSignalResponseClonedApp + * ClonedAppResult */ @JsonPropertyOrder({ - WebhookSignalResponseClonedApp.JSON_PROPERTY_RESULT + ClonedAppResult.JSON_PROPERTY_RESULT }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseClonedApp { +public class ClonedAppResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public WebhookSignalResponseClonedApp() { + public ClonedAppResult() { } - public WebhookSignalResponseClonedApp result(Boolean result) { + public ClonedAppResult result(Boolean result) { this.result = result; return this; } @@ -51,10 +51,10 @@ public WebhookSignalResponseClonedApp result(Boolean result) { * Android specific cloned application detection. There are 2 values: • `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). • `false` - No signs of cloned application detected or the client is not Android. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Android specific cloned application detection. There are 2 values: • `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). • `false` - No signs of cloned application detected or the client is not Android. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "Android specific cloned application detection. There are 2 values: • `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). • `false` - No signs of cloned application detected or the client is not Android. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -62,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this WebhookSignalResponseClonedApp object is equal to o. + * Return true if this ClonedAppResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -79,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - WebhookSignalResponseClonedApp webhookSignalResponseClonedApp = (WebhookSignalResponseClonedApp) o; - return Objects.equals(this.result, webhookSignalResponseClonedApp.result); + ClonedAppResult clonedAppResult = (ClonedAppResult) o; + return Objects.equals(this.result, clonedAppResult.result); } @Override @@ -91,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseClonedApp {\n"); + sb.append("class ClonedAppResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/SignalResponseEmulatorData.java b/src/main/java/com/fingerprint/model/EmulatorResult.java similarity index 73% rename from src/main/java/com/fingerprint/model/SignalResponseEmulatorData.java rename to src/main/java/com/fingerprint/model/EmulatorResult.java index 51fefe0..8b9398b 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseEmulatorData.java +++ b/src/main/java/com/fingerprint/model/EmulatorResult.java @@ -29,21 +29,20 @@ /** - * SignalResponseEmulatorData + * EmulatorResult */ @JsonPropertyOrder({ - SignalResponseEmulatorData.JSON_PROPERTY_RESULT + EmulatorResult.JSON_PROPERTY_RESULT }) -@JsonTypeName("SignalResponseEmulator_data") @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseEmulatorData { +public class EmulatorResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public SignalResponseEmulatorData() { + public EmulatorResult() { } - public SignalResponseEmulatorData result(Boolean result) { + public EmulatorResult result(Boolean result) { this.result = result; return this; } @@ -52,10 +51,10 @@ public SignalResponseEmulatorData result(Boolean result) { * Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected or the client is not Android. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected or the client is not Android. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected or the client is not Android. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -63,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this SignalResponseEmulator_data object is equal to o. + * Return true if this EmulatorResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -80,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - SignalResponseEmulatorData signalResponseEmulatorData = (SignalResponseEmulatorData) o; - return Objects.equals(this.result, signalResponseEmulatorData.result); + EmulatorResult emulatorResult = (EmulatorResult) o; + return Objects.equals(this.result, emulatorResult.result); } @Override @@ -92,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseEmulatorData {\n"); + sb.append("class EmulatorResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseFactoryReset.java b/src/main/java/com/fingerprint/model/FactoryResetResult.java similarity index 65% rename from src/main/java/com/fingerprint/model/WebhookSignalResponseFactoryReset.java rename to src/main/java/com/fingerprint/model/FactoryResetResult.java index 21dc488..cc3ffcc 100644 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseFactoryReset.java +++ b/src/main/java/com/fingerprint/model/FactoryResetResult.java @@ -30,36 +30,36 @@ /** - * WebhookSignalResponseFactoryReset + * FactoryResetResult */ @JsonPropertyOrder({ - WebhookSignalResponseFactoryReset.JSON_PROPERTY_TIME, - WebhookSignalResponseFactoryReset.JSON_PROPERTY_TIMESTAMP + FactoryResetResult.JSON_PROPERTY_TIME, + FactoryResetResult.JSON_PROPERTY_TIMESTAMP }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseFactoryReset { +public class FactoryResetResult { public static final String JSON_PROPERTY_TIME = "time"; private OffsetDateTime time; public static final String JSON_PROPERTY_TIMESTAMP = "timestamp"; private Long timestamp; - public WebhookSignalResponseFactoryReset() { + public FactoryResetResult() { } - public WebhookSignalResponseFactoryReset time(OffsetDateTime time) { + public FactoryResetResult time(OffsetDateTime time) { this.time = time; return this; } /** - * Time in UTC for the Android client when recent factory reset was done. If there is no sign of factory reset or the client isn't Android, the field will be epoch time. + * Time in UTC when the most recent factory reset of the Android or iOS device was done. If there is no sign of factory reset or the client is not a mobile device, the field will contain the epoch time (1 January 1970) in UTC. * @return time **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "2022-06-09T22:58:36Z", value = "Time in UTC for the Android client when recent factory reset was done. If there is no sign of factory reset or the client isn't Android, the field will be epoch time. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "2022-06-09T22:58:36Z", required = true, value = "Time in UTC when the most recent factory reset of the Android or iOS device was done. If there is no sign of factory reset or the client is not a mobile device, the field will contain the epoch time (1 January 1970) in UTC. ") @JsonProperty(JSON_PROPERTY_TIME) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public OffsetDateTime getTime() { return time; @@ -67,13 +67,13 @@ public OffsetDateTime getTime() { @JsonProperty(JSON_PROPERTY_TIME) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setTime(OffsetDateTime time) { this.time = time; } - public WebhookSignalResponseFactoryReset timestamp(Long timestamp) { + public FactoryResetResult timestamp(Long timestamp) { this.timestamp = timestamp; return this; } @@ -82,10 +82,10 @@ public WebhookSignalResponseFactoryReset timestamp(Long timestamp) { * Same value as it's in the `time` field but represented in timestamp format. * @return timestamp **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "1654815517198", value = "Same value as it's in the `time` field but represented in timestamp format.") + @javax.annotation.Nonnull + @ApiModelProperty(example = "1654815517198", required = true, value = "Same value as it's in the `time` field but represented in timestamp format.") @JsonProperty(JSON_PROPERTY_TIMESTAMP) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Long getTimestamp() { return timestamp; @@ -93,14 +93,14 @@ public Long getTimestamp() { @JsonProperty(JSON_PROPERTY_TIMESTAMP) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setTimestamp(Long timestamp) { this.timestamp = timestamp; } /** - * Return true if this WebhookSignalResponseFactoryReset object is equal to o. + * Return true if this FactoryResetResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -110,9 +110,9 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - WebhookSignalResponseFactoryReset webhookSignalResponseFactoryReset = (WebhookSignalResponseFactoryReset) o; - return Objects.equals(this.time, webhookSignalResponseFactoryReset.time) && - Objects.equals(this.timestamp, webhookSignalResponseFactoryReset.timestamp); + FactoryResetResult factoryResetResult = (FactoryResetResult) o; + return Objects.equals(this.time, factoryResetResult.time) && + Objects.equals(this.timestamp, factoryResetResult.timestamp); } @Override @@ -123,7 +123,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseFactoryReset {\n"); + sb.append("class FactoryResetResult {\n"); sb.append(" time: ").append(toIndentedString(time)).append("\n"); sb.append(" timestamp: ").append(toIndentedString(timestamp)).append("\n"); sb.append("}"); diff --git a/src/main/java/com/fingerprint/model/SignalResponseTorData.java b/src/main/java/com/fingerprint/model/FridaResult.java similarity index 72% rename from src/main/java/com/fingerprint/model/SignalResponseTorData.java rename to src/main/java/com/fingerprint/model/FridaResult.java index 38b4fa9..b086011 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseTorData.java +++ b/src/main/java/com/fingerprint/model/FridaResult.java @@ -29,33 +29,32 @@ /** - * SignalResponseTorData + * FridaResult */ @JsonPropertyOrder({ - SignalResponseTorData.JSON_PROPERTY_RESULT + FridaResult.JSON_PROPERTY_RESULT }) -@JsonTypeName("SignalResponseTor_data") @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseTorData { +public class FridaResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public SignalResponseTorData() { + public FridaResult() { } - public SignalResponseTorData result(Boolean result) { + public FridaResult result(Boolean result) { this.result = result; return this; } /** - * `true` if the request IP address is a known tor exit node, `false` otherwise. + * [Frida](https://frida.re/docs/) detection for Android and iOS devices. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not a mobile device. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if the request IP address is a known tor exit node, `false` otherwise. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "[Frida](https://frida.re/docs/) detection for Android and iOS devices. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not a mobile device. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -63,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this SignalResponseTor_data object is equal to o. + * Return true if this FridaResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -80,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - SignalResponseTorData signalResponseTorData = (SignalResponseTorData) o; - return Objects.equals(this.result, signalResponseTorData.result); + FridaResult fridaResult = (FridaResult) o; + return Objects.equals(this.result, fridaResult.result); } @Override @@ -92,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseTorData {\n"); + sb.append("class FridaResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/SignalResponseIncognitoData.java b/src/main/java/com/fingerprint/model/IncognitoResult.java similarity index 75% rename from src/main/java/com/fingerprint/model/SignalResponseIncognitoData.java rename to src/main/java/com/fingerprint/model/IncognitoResult.java index 9bf5f95..cc26b93 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseIncognitoData.java +++ b/src/main/java/com/fingerprint/model/IncognitoResult.java @@ -29,21 +29,20 @@ /** - * SignalResponseIncognitoData + * IncognitoResult */ @JsonPropertyOrder({ - SignalResponseIncognitoData.JSON_PROPERTY_RESULT + IncognitoResult.JSON_PROPERTY_RESULT }) -@JsonTypeName("SignalResponseIncognito_data") @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseIncognitoData { +public class IncognitoResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public SignalResponseIncognitoData() { + public IncognitoResult() { } - public SignalResponseIncognitoData result(Boolean result) { + public IncognitoResult result(Boolean result) { this.result = result; return this; } @@ -52,10 +51,10 @@ public SignalResponseIncognitoData result(Boolean result) { * `true` if we detected incognito mode used in the browser, `false` otherwise. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if we detected incognito mode used in the browser, `false` otherwise. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "`true` if we detected incognito mode used in the browser, `false` otherwise. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -63,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this SignalResponseIncognito_data object is equal to o. + * Return true if this IncognitoResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -80,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - SignalResponseIncognitoData signalResponseIncognitoData = (SignalResponseIncognitoData) o; - return Objects.equals(this.result, signalResponseIncognitoData.result); + IncognitoResult incognitoResult = (IncognitoResult) o; + return Objects.equals(this.result, incognitoResult.result); } @Override @@ -92,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseIncognitoData {\n"); + sb.append("class IncognitoResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseJailbroken.java b/src/main/java/com/fingerprint/model/JailbrokenResult.java similarity index 74% rename from src/main/java/com/fingerprint/model/WebhookSignalResponseJailbroken.java rename to src/main/java/com/fingerprint/model/JailbrokenResult.java index 13a408a..98ee250 100644 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseJailbroken.java +++ b/src/main/java/com/fingerprint/model/JailbrokenResult.java @@ -29,20 +29,20 @@ /** - * WebhookSignalResponseJailbroken + * JailbrokenResult */ @JsonPropertyOrder({ - WebhookSignalResponseJailbroken.JSON_PROPERTY_RESULT + JailbrokenResult.JSON_PROPERTY_RESULT }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseJailbroken { +public class JailbrokenResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public WebhookSignalResponseJailbroken() { + public JailbrokenResult() { } - public WebhookSignalResponseJailbroken result(Boolean result) { + public JailbrokenResult result(Boolean result) { this.result = result; return this; } @@ -51,10 +51,10 @@ public WebhookSignalResponseJailbroken result(Boolean result) { * iOS specific jailbreak detection. There are 2 values: • `true` - Jailbreak detected • `false` - No signs of jailbreak or the client is not iOS. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "iOS specific jailbreak detection. There are 2 values: • `true` - Jailbreak detected • `false` - No signs of jailbreak or the client is not iOS. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "iOS specific jailbreak detection. There are 2 values: • `true` - Jailbreak detected • `false` - No signs of jailbreak or the client is not iOS. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -62,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this WebhookSignalResponseJailbroken object is equal to o. + * Return true if this JailbrokenResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -79,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - WebhookSignalResponseJailbroken webhookSignalResponseJailbroken = (WebhookSignalResponseJailbroken) o; - return Objects.equals(this.result, webhookSignalResponseJailbroken.result); + JailbrokenResult jailbrokenResult = (JailbrokenResult) o; + return Objects.equals(this.result, jailbrokenResult.result); } @Override @@ -91,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseJailbroken {\n"); + sb.append("class JailbrokenResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponsePrivacySettings.java b/src/main/java/com/fingerprint/model/PrivacySettingsResult.java similarity index 73% rename from src/main/java/com/fingerprint/model/WebhookSignalResponsePrivacySettings.java rename to src/main/java/com/fingerprint/model/PrivacySettingsResult.java index f01587b..9405efe 100644 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponsePrivacySettings.java +++ b/src/main/java/com/fingerprint/model/PrivacySettingsResult.java @@ -29,20 +29,20 @@ /** - * WebhookSignalResponsePrivacySettings + * PrivacySettingsResult */ @JsonPropertyOrder({ - WebhookSignalResponsePrivacySettings.JSON_PROPERTY_RESULT + PrivacySettingsResult.JSON_PROPERTY_RESULT }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponsePrivacySettings { +public class PrivacySettingsResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public WebhookSignalResponsePrivacySettings() { + public PrivacySettingsResult() { } - public WebhookSignalResponsePrivacySettings result(Boolean result) { + public PrivacySettingsResult result(Boolean result) { this.result = result; return this; } @@ -51,10 +51,10 @@ public WebhookSignalResponsePrivacySettings result(Boolean result) { * `true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "`true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -62,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this WebhookSignalResponsePrivacySettings object is equal to o. + * Return true if this PrivacySettingsResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -79,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - WebhookSignalResponsePrivacySettings webhookSignalResponsePrivacySettings = (WebhookSignalResponsePrivacySettings) o; - return Objects.equals(this.result, webhookSignalResponsePrivacySettings.result); + PrivacySettingsResult privacySettingsResult = (PrivacySettingsResult) o; + return Objects.equals(this.result, privacySettingsResult.result); } @Override @@ -91,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponsePrivacySettings {\n"); + sb.append("class PrivacySettingsResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseProxy.java b/src/main/java/com/fingerprint/model/ProxyResult.java similarity index 76% rename from src/main/java/com/fingerprint/model/WebhookSignalResponseProxy.java rename to src/main/java/com/fingerprint/model/ProxyResult.java index 9e4aab3..16e2326 100644 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseProxy.java +++ b/src/main/java/com/fingerprint/model/ProxyResult.java @@ -29,20 +29,20 @@ /** - * WebhookSignalResponseProxy + * ProxyResult */ @JsonPropertyOrder({ - WebhookSignalResponseProxy.JSON_PROPERTY_RESULT + ProxyResult.JSON_PROPERTY_RESULT }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseProxy { +public class ProxyResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public WebhookSignalResponseProxy() { + public ProxyResult() { } - public WebhookSignalResponseProxy result(Boolean result) { + public ProxyResult result(Boolean result) { this.result = result; return this; } @@ -51,10 +51,10 @@ public WebhookSignalResponseProxy result(Boolean result) { * `true` if the request IP address is used by a public proxy provider, `false` otherwise. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if the request IP address is used by a public proxy provider, `false` otherwise. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "`true` if the request IP address is used by a public proxy provider, `false` otherwise. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -62,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this WebhookSignalResponseProxy object is equal to o. + * Return true if this ProxyResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -79,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - WebhookSignalResponseProxy webhookSignalResponseProxy = (WebhookSignalResponseProxy) o; - return Objects.equals(this.result, webhookSignalResponseProxy.result); + ProxyResult proxyResult = (ProxyResult) o; + return Objects.equals(this.result, proxyResult.result); } @Override @@ -91,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseProxy {\n"); + sb.append("class ProxyResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseRootApps.java b/src/main/java/com/fingerprint/model/RootAppsResult.java similarity index 73% rename from src/main/java/com/fingerprint/model/WebhookSignalResponseRootApps.java rename to src/main/java/com/fingerprint/model/RootAppsResult.java index d931e64..7c5cfae 100644 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseRootApps.java +++ b/src/main/java/com/fingerprint/model/RootAppsResult.java @@ -29,20 +29,20 @@ /** - * WebhookSignalResponseRootApps + * RootAppsResult */ @JsonPropertyOrder({ - WebhookSignalResponseRootApps.JSON_PROPERTY_RESULT + RootAppsResult.JSON_PROPERTY_RESULT }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseRootApps { +public class RootAppsResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public WebhookSignalResponseRootApps() { + public RootAppsResult() { } - public WebhookSignalResponseRootApps result(Boolean result) { + public RootAppsResult result(Boolean result) { this.result = result; return this; } @@ -51,10 +51,10 @@ public WebhookSignalResponseRootApps result(Boolean result) { * Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected or the client isn't Android. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected or the client isn't Android. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected or the client isn't Android. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -62,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this WebhookSignalResponseRootApps object is equal to o. + * Return true if this RootAppsResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -79,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - WebhookSignalResponseRootApps webhookSignalResponseRootApps = (WebhookSignalResponseRootApps) o; - return Objects.equals(this.result, webhookSignalResponseRootApps.result); + RootAppsResult rootAppsResult = (RootAppsResult) o; + return Objects.equals(this.result, rootAppsResult.result); } @Override @@ -91,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseRootApps {\n"); + sb.append("class RootAppsResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/SignalResponseClonedApp.java b/src/main/java/com/fingerprint/model/SignalResponseClonedApp.java index e9fb869..699cc59 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseClonedApp.java +++ b/src/main/java/com/fingerprint/model/SignalResponseClonedApp.java @@ -22,8 +22,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.ClonedAppResult; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseClonedAppData; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseClonedApp { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseClonedAppData data; + private ClonedAppResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseClonedApp { public SignalResponseClonedApp() { } - public SignalResponseClonedApp data(SignalResponseClonedAppData data) { + public SignalResponseClonedApp data(ClonedAppResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseClonedApp data(SignalResponseClonedAppData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseClonedAppData getData() { + public ClonedAppResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseClonedAppData data) { + public void setData(ClonedAppResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseClonedAppData.java b/src/main/java/com/fingerprint/model/SignalResponseClonedAppData.java deleted file mode 100644 index 3589bdc..0000000 --- a/src/main/java/com/fingerprint/model/SignalResponseClonedAppData.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * SignalResponseClonedAppData - */ -@JsonPropertyOrder({ - SignalResponseClonedAppData.JSON_PROPERTY_RESULT -}) -@JsonTypeName("SignalResponseClonedApp_data") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseClonedAppData { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public SignalResponseClonedAppData() { - } - - public SignalResponseClonedAppData result(Boolean result) { - this.result = result; - return this; - } - - /** - * Android specific cloned application detection. There are 2 values: • `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). • `false` - No signs of cloned application detected or the client is not Android. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Android specific cloned application detection. There are 2 values: • `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). • `false` - No signs of cloned application detected or the client is not Android. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this SignalResponseClonedApp_data object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SignalResponseClonedAppData signalResponseClonedAppData = (SignalResponseClonedAppData) o; - return Objects.equals(this.result, signalResponseClonedAppData.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseClonedAppData {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/SignalResponseEmulator.java b/src/main/java/com/fingerprint/model/SignalResponseEmulator.java index 98293db..2641f28 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseEmulator.java +++ b/src/main/java/com/fingerprint/model/SignalResponseEmulator.java @@ -22,8 +22,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.EmulatorResult; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseEmulatorData; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseEmulator { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseEmulatorData data; + private EmulatorResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseEmulator { public SignalResponseEmulator() { } - public SignalResponseEmulator data(SignalResponseEmulatorData data) { + public SignalResponseEmulator data(EmulatorResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseEmulator data(SignalResponseEmulatorData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseEmulatorData getData() { + public EmulatorResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseEmulatorData data) { + public void setData(EmulatorResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseFactoryReset.java b/src/main/java/com/fingerprint/model/SignalResponseFactoryReset.java index 632739e..42168ae 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseFactoryReset.java +++ b/src/main/java/com/fingerprint/model/SignalResponseFactoryReset.java @@ -22,8 +22,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.FactoryResetResult; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseFactoryResetData; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseFactoryReset { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseFactoryResetData data; + private FactoryResetResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseFactoryReset { public SignalResponseFactoryReset() { } - public SignalResponseFactoryReset data(SignalResponseFactoryResetData data) { + public SignalResponseFactoryReset data(FactoryResetResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseFactoryReset data(SignalResponseFactoryResetData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseFactoryResetData getData() { + public FactoryResetResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseFactoryResetData data) { + public void setData(FactoryResetResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseFactoryResetData.java b/src/main/java/com/fingerprint/model/SignalResponseFactoryResetData.java deleted file mode 100644 index d01ab1a..0000000 --- a/src/main/java/com/fingerprint/model/SignalResponseFactoryResetData.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import java.time.OffsetDateTime; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * SignalResponseFactoryResetData - */ -@JsonPropertyOrder({ - SignalResponseFactoryResetData.JSON_PROPERTY_TIME, - SignalResponseFactoryResetData.JSON_PROPERTY_TIMESTAMP -}) -@JsonTypeName("SignalResponseFactoryReset_data") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseFactoryResetData { - public static final String JSON_PROPERTY_TIME = "time"; - private OffsetDateTime time; - - public static final String JSON_PROPERTY_TIMESTAMP = "timestamp"; - private Long timestamp; - - public SignalResponseFactoryResetData() { - } - - public SignalResponseFactoryResetData time(OffsetDateTime time) { - this.time = time; - return this; - } - - /** - * Time in UTC for the Android client when recent factory reset was done. If there is no sign of factory reset or the client isn't Android, the field will be epoch time. - * @return time - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "2022-06-09T22:58:36Z", value = "Time in UTC for the Android client when recent factory reset was done. If there is no sign of factory reset or the client isn't Android, the field will be epoch time. ") - @JsonProperty(JSON_PROPERTY_TIME) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public OffsetDateTime getTime() { - return time; - } - - - @JsonProperty(JSON_PROPERTY_TIME) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setTime(OffsetDateTime time) { - this.time = time; - } - - - public SignalResponseFactoryResetData timestamp(Long timestamp) { - this.timestamp = timestamp; - return this; - } - - /** - * Same value as it's in the `time` field but represented in timestamp format. - * @return timestamp - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "1654815517198", value = "Same value as it's in the `time` field but represented in timestamp format.") - @JsonProperty(JSON_PROPERTY_TIMESTAMP) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Long getTimestamp() { - return timestamp; - } - - - @JsonProperty(JSON_PROPERTY_TIMESTAMP) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setTimestamp(Long timestamp) { - this.timestamp = timestamp; - } - - - /** - * Return true if this SignalResponseFactoryReset_data object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SignalResponseFactoryResetData signalResponseFactoryResetData = (SignalResponseFactoryResetData) o; - return Objects.equals(this.time, signalResponseFactoryResetData.time) && - Objects.equals(this.timestamp, signalResponseFactoryResetData.timestamp); - } - - @Override - public int hashCode() { - return Objects.hash(time, timestamp); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseFactoryResetData {\n"); - sb.append(" time: ").append(toIndentedString(time)).append("\n"); - sb.append(" timestamp: ").append(toIndentedString(timestamp)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/SignalResponseFrida.java b/src/main/java/com/fingerprint/model/SignalResponseFrida.java index 54354b1..9ca8858 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseFrida.java +++ b/src/main/java/com/fingerprint/model/SignalResponseFrida.java @@ -22,8 +22,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.FridaResult; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseFridaData; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseFrida { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseFridaData data; + private FridaResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseFrida { public SignalResponseFrida() { } - public SignalResponseFrida data(SignalResponseFridaData data) { + public SignalResponseFrida data(FridaResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseFrida data(SignalResponseFridaData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseFridaData getData() { + public FridaResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseFridaData data) { + public void setData(FridaResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseFridaData.java b/src/main/java/com/fingerprint/model/SignalResponseFridaData.java deleted file mode 100644 index 8412f81..0000000 --- a/src/main/java/com/fingerprint/model/SignalResponseFridaData.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * SignalResponseFridaData - */ -@JsonPropertyOrder({ - SignalResponseFridaData.JSON_PROPERTY_RESULT -}) -@JsonTypeName("SignalResponseFrida_data") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseFridaData { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public SignalResponseFridaData() { - } - - public SignalResponseFridaData result(Boolean result) { - this.result = result; - return this; - } - - /** - * iOS specific [Frida](https://frida.re/docs/ios/) detection. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not iOS. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "iOS specific [Frida](https://frida.re/docs/ios/) detection. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not iOS. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this SignalResponseFrida_data object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SignalResponseFridaData signalResponseFridaData = (SignalResponseFridaData) o; - return Objects.equals(this.result, signalResponseFridaData.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseFridaData {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/SignalResponseIncognito.java b/src/main/java/com/fingerprint/model/SignalResponseIncognito.java index 241b951..a27502c 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseIncognito.java +++ b/src/main/java/com/fingerprint/model/SignalResponseIncognito.java @@ -22,8 +22,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.IncognitoResult; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseIncognitoData; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseIncognito { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseIncognitoData data; + private IncognitoResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseIncognito { public SignalResponseIncognito() { } - public SignalResponseIncognito data(SignalResponseIncognitoData data) { + public SignalResponseIncognito data(IncognitoResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseIncognito data(SignalResponseIncognitoData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseIncognitoData getData() { + public IncognitoResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseIncognitoData data) { + public void setData(IncognitoResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseJailbroken.java b/src/main/java/com/fingerprint/model/SignalResponseJailbroken.java index 28f8e63..b695fdf 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseJailbroken.java +++ b/src/main/java/com/fingerprint/model/SignalResponseJailbroken.java @@ -22,8 +22,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.JailbrokenResult; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseJailbrokenData; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseJailbroken { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseJailbrokenData data; + private JailbrokenResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseJailbroken { public SignalResponseJailbroken() { } - public SignalResponseJailbroken data(SignalResponseJailbrokenData data) { + public SignalResponseJailbroken data(JailbrokenResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseJailbroken data(SignalResponseJailbrokenData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseJailbrokenData getData() { + public JailbrokenResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseJailbrokenData data) { + public void setData(JailbrokenResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseJailbrokenData.java b/src/main/java/com/fingerprint/model/SignalResponseJailbrokenData.java deleted file mode 100644 index 5589ff7..0000000 --- a/src/main/java/com/fingerprint/model/SignalResponseJailbrokenData.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * SignalResponseJailbrokenData - */ -@JsonPropertyOrder({ - SignalResponseJailbrokenData.JSON_PROPERTY_RESULT -}) -@JsonTypeName("SignalResponseJailbroken_data") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseJailbrokenData { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public SignalResponseJailbrokenData() { - } - - public SignalResponseJailbrokenData result(Boolean result) { - this.result = result; - return this; - } - - /** - * iOS specific jailbreak detection. There are 2 values: • `true` - Jailbreak detected • `false` - No signs of jailbreak or the client is not iOS. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "iOS specific jailbreak detection. There are 2 values: • `true` - Jailbreak detected • `false` - No signs of jailbreak or the client is not iOS. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this SignalResponseJailbroken_data object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SignalResponseJailbrokenData signalResponseJailbrokenData = (SignalResponseJailbrokenData) o; - return Objects.equals(this.result, signalResponseJailbrokenData.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseJailbrokenData {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/SignalResponsePrivacySettings.java b/src/main/java/com/fingerprint/model/SignalResponsePrivacySettings.java index 2aba4a5..1926c54 100644 --- a/src/main/java/com/fingerprint/model/SignalResponsePrivacySettings.java +++ b/src/main/java/com/fingerprint/model/SignalResponsePrivacySettings.java @@ -22,8 +22,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; +import com.fingerprint.model.PrivacySettingsResult; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponsePrivacySettingsData; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponsePrivacySettings { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponsePrivacySettingsData data; + private PrivacySettingsResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponsePrivacySettings { public SignalResponsePrivacySettings() { } - public SignalResponsePrivacySettings data(SignalResponsePrivacySettingsData data) { + public SignalResponsePrivacySettings data(PrivacySettingsResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponsePrivacySettings data(SignalResponsePrivacySettingsData data @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponsePrivacySettingsData getData() { + public PrivacySettingsResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponsePrivacySettingsData data) { + public void setData(PrivacySettingsResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponsePrivacySettingsData.java b/src/main/java/com/fingerprint/model/SignalResponsePrivacySettingsData.java deleted file mode 100644 index 46dfd2e..0000000 --- a/src/main/java/com/fingerprint/model/SignalResponsePrivacySettingsData.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * SignalResponsePrivacySettingsData - */ -@JsonPropertyOrder({ - SignalResponsePrivacySettingsData.JSON_PROPERTY_RESULT -}) -@JsonTypeName("SignalResponsePrivacySettings_data") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponsePrivacySettingsData { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public SignalResponsePrivacySettingsData() { - } - - public SignalResponsePrivacySettingsData result(Boolean result) { - this.result = result; - return this; - } - - /** - * `true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this SignalResponsePrivacySettings_data object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SignalResponsePrivacySettingsData signalResponsePrivacySettingsData = (SignalResponsePrivacySettingsData) o; - return Objects.equals(this.result, signalResponsePrivacySettingsData.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponsePrivacySettingsData {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/SignalResponseProxy.java b/src/main/java/com/fingerprint/model/SignalResponseProxy.java index caa9087..34a752d 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseProxy.java +++ b/src/main/java/com/fingerprint/model/SignalResponseProxy.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseProxyData; +import com.fingerprint.model.ProxyResult; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseProxy { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseProxyData data; + private ProxyResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseProxy { public SignalResponseProxy() { } - public SignalResponseProxy data(SignalResponseProxyData data) { + public SignalResponseProxy data(ProxyResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseProxy data(SignalResponseProxyData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseProxyData getData() { + public ProxyResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseProxyData data) { + public void setData(ProxyResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseProxyData.java b/src/main/java/com/fingerprint/model/SignalResponseProxyData.java deleted file mode 100644 index 275e10d..0000000 --- a/src/main/java/com/fingerprint/model/SignalResponseProxyData.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * SignalResponseProxyData - */ -@JsonPropertyOrder({ - SignalResponseProxyData.JSON_PROPERTY_RESULT -}) -@JsonTypeName("SignalResponseProxy_data") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseProxyData { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public SignalResponseProxyData() { - } - - public SignalResponseProxyData result(Boolean result) { - this.result = result; - return this; - } - - /** - * `true` if the request IP address is used by a public proxy provider, `false` otherwise. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if the request IP address is used by a public proxy provider, `false` otherwise. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this SignalResponseProxy_data object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SignalResponseProxyData signalResponseProxyData = (SignalResponseProxyData) o; - return Objects.equals(this.result, signalResponseProxyData.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseProxyData {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/SignalResponseRootApps.java b/src/main/java/com/fingerprint/model/SignalResponseRootApps.java index c0c34e9..69f22ac 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseRootApps.java +++ b/src/main/java/com/fingerprint/model/SignalResponseRootApps.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseRootAppsData; +import com.fingerprint.model.RootAppsResult; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseRootApps { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseRootAppsData data; + private RootAppsResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseRootApps { public SignalResponseRootApps() { } - public SignalResponseRootApps data(SignalResponseRootAppsData data) { + public SignalResponseRootApps data(RootAppsResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseRootApps data(SignalResponseRootAppsData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseRootAppsData getData() { + public RootAppsResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseRootAppsData data) { + public void setData(RootAppsResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseRootAppsData.java b/src/main/java/com/fingerprint/model/SignalResponseRootAppsData.java deleted file mode 100644 index c6988ac..0000000 --- a/src/main/java/com/fingerprint/model/SignalResponseRootAppsData.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * SignalResponseRootAppsData - */ -@JsonPropertyOrder({ - SignalResponseRootAppsData.JSON_PROPERTY_RESULT -}) -@JsonTypeName("SignalResponseRootApps_data") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseRootAppsData { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public SignalResponseRootAppsData() { - } - - public SignalResponseRootAppsData result(Boolean result) { - this.result = result; - return this; - } - - /** - * Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected or the client is not Android. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected or the client is not Android. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this SignalResponseRootApps_data object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SignalResponseRootAppsData signalResponseRootAppsData = (SignalResponseRootAppsData) o; - return Objects.equals(this.result, signalResponseRootAppsData.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseRootAppsData {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/SignalResponseTor.java b/src/main/java/com/fingerprint/model/SignalResponseTor.java index 8da2b13..7a691b1 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseTor.java +++ b/src/main/java/com/fingerprint/model/SignalResponseTor.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseTorData; +import com.fingerprint.model.TorResult; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseTor { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseTorData data; + private TorResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseTor { public SignalResponseTor() { } - public SignalResponseTor data(SignalResponseTorData data) { + public SignalResponseTor data(TorResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseTor data(SignalResponseTorData data) { @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseTorData getData() { + public TorResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseTorData data) { + public void setData(TorResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseVirtualMachine.java b/src/main/java/com/fingerprint/model/SignalResponseVirtualMachine.java index 60e7070..b7f944f 100644 --- a/src/main/java/com/fingerprint/model/SignalResponseVirtualMachine.java +++ b/src/main/java/com/fingerprint/model/SignalResponseVirtualMachine.java @@ -23,7 +23,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import com.fingerprint.model.ProductError; -import com.fingerprint.model.SignalResponseVirtualMachineData; +import com.fingerprint.model.VirtualMachineResult; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; @@ -40,7 +40,7 @@ @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") public class SignalResponseVirtualMachine { public static final String JSON_PROPERTY_DATA = "data"; - private SignalResponseVirtualMachineData data; + private VirtualMachineResult data; public static final String JSON_PROPERTY_ERROR = "error"; private ProductError error; @@ -48,7 +48,7 @@ public class SignalResponseVirtualMachine { public SignalResponseVirtualMachine() { } - public SignalResponseVirtualMachine data(SignalResponseVirtualMachineData data) { + public SignalResponseVirtualMachine data(VirtualMachineResult data) { this.data = data; return this; } @@ -62,14 +62,14 @@ public SignalResponseVirtualMachine data(SignalResponseVirtualMachineData data) @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public SignalResponseVirtualMachineData getData() { + public VirtualMachineResult getData() { return data; } @JsonProperty(JSON_PROPERTY_DATA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setData(SignalResponseVirtualMachineData data) { + public void setData(VirtualMachineResult data) { this.data = data; } diff --git a/src/main/java/com/fingerprint/model/SignalResponseVirtualMachineData.java b/src/main/java/com/fingerprint/model/SignalResponseVirtualMachineData.java deleted file mode 100644 index 11f93fb..0000000 --- a/src/main/java/com/fingerprint/model/SignalResponseVirtualMachineData.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * SignalResponseVirtualMachineData - */ -@JsonPropertyOrder({ - SignalResponseVirtualMachineData.JSON_PROPERTY_RESULT -}) -@JsonTypeName("SignalResponseVirtualMachine_data") -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class SignalResponseVirtualMachineData { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public SignalResponseVirtualMachineData() { - } - - public SignalResponseVirtualMachineData result(Boolean result) { - this.result = result; - return this; - } - - /** - * `true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this SignalResponseVirtualMachine_data object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SignalResponseVirtualMachineData signalResponseVirtualMachineData = (SignalResponseVirtualMachineData) o; - return Objects.equals(this.result, signalResponseVirtualMachineData.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SignalResponseVirtualMachineData {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseTor.java b/src/main/java/com/fingerprint/model/TorResult.java similarity index 76% rename from src/main/java/com/fingerprint/model/WebhookSignalResponseTor.java rename to src/main/java/com/fingerprint/model/TorResult.java index 70e6488..fad598b 100644 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseTor.java +++ b/src/main/java/com/fingerprint/model/TorResult.java @@ -29,20 +29,20 @@ /** - * WebhookSignalResponseTor + * TorResult */ @JsonPropertyOrder({ - WebhookSignalResponseTor.JSON_PROPERTY_RESULT + TorResult.JSON_PROPERTY_RESULT }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseTor { +public class TorResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public WebhookSignalResponseTor() { + public TorResult() { } - public WebhookSignalResponseTor result(Boolean result) { + public TorResult result(Boolean result) { this.result = result; return this; } @@ -51,10 +51,10 @@ public WebhookSignalResponseTor result(Boolean result) { * `true` if the request IP address is a known tor exit node, `false` otherwise. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if the request IP address is a known tor exit node, `false` otherwise. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "`true` if the request IP address is a known tor exit node, `false` otherwise. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -62,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this WebhookSignalResponseTor object is equal to o. + * Return true if this TorResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -79,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - WebhookSignalResponseTor webhookSignalResponseTor = (WebhookSignalResponseTor) o; - return Objects.equals(this.result, webhookSignalResponseTor.result); + TorResult torResult = (TorResult) o; + return Objects.equals(this.result, torResult.result); } @Override @@ -91,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseTor {\n"); + sb.append("class TorResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseVirtualMachine.java b/src/main/java/com/fingerprint/model/VirtualMachineResult.java similarity index 73% rename from src/main/java/com/fingerprint/model/WebhookSignalResponseVirtualMachine.java rename to src/main/java/com/fingerprint/model/VirtualMachineResult.java index 051d7bb..315b703 100644 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseVirtualMachine.java +++ b/src/main/java/com/fingerprint/model/VirtualMachineResult.java @@ -29,20 +29,20 @@ /** - * WebhookSignalResponseVirtualMachine + * VirtualMachineResult */ @JsonPropertyOrder({ - WebhookSignalResponseVirtualMachine.JSON_PROPERTY_RESULT + VirtualMachineResult.JSON_PROPERTY_RESULT }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseVirtualMachine { +public class VirtualMachineResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; - public WebhookSignalResponseVirtualMachine() { + public VirtualMachineResult() { } - public WebhookSignalResponseVirtualMachine result(Boolean result) { + public VirtualMachineResult result(Boolean result) { this.result = result; return this; } @@ -51,10 +51,10 @@ public WebhookSignalResponseVirtualMachine result(Boolean result) { * `true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. * @return result **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "`true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. ") + @javax.annotation.Nonnull + @ApiModelProperty(example = "false", required = true, value = "`true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. ") @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public Boolean getResult() { return result; @@ -62,14 +62,14 @@ public Boolean getResult() { @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) public void setResult(Boolean result) { this.result = result; } /** - * Return true if this WebhookSignalResponseVirtualMachine object is equal to o. + * Return true if this VirtualMachineResult object is equal to o. */ @Override public boolean equals(Object o) { @@ -79,8 +79,8 @@ public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) { return false; } - WebhookSignalResponseVirtualMachine webhookSignalResponseVirtualMachine = (WebhookSignalResponseVirtualMachine) o; - return Objects.equals(this.result, webhookSignalResponseVirtualMachine.result); + VirtualMachineResult virtualMachineResult = (VirtualMachineResult) o; + return Objects.equals(this.result, virtualMachineResult.result); } @Override @@ -91,7 +91,7 @@ public int hashCode() { @Override public String toString() { StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseVirtualMachine {\n"); + sb.append("class VirtualMachineResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseEmulator.java b/src/main/java/com/fingerprint/model/WebhookSignalResponseEmulator.java deleted file mode 100644 index 70da56d..0000000 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseEmulator.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * WebhookSignalResponseEmulator - */ -@JsonPropertyOrder({ - WebhookSignalResponseEmulator.JSON_PROPERTY_RESULT -}) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseEmulator { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public WebhookSignalResponseEmulator() { - } - - public WebhookSignalResponseEmulator result(Boolean result) { - this.result = result; - return this; - } - - /** - * Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected or the client isn't Android. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected or the client isn't Android. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this WebhookSignalResponseEmulator object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - WebhookSignalResponseEmulator webhookSignalResponseEmulator = (WebhookSignalResponseEmulator) o; - return Objects.equals(this.result, webhookSignalResponseEmulator.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseEmulator {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/WebhookSignalResponseFrida.java b/src/main/java/com/fingerprint/model/WebhookSignalResponseFrida.java deleted file mode 100644 index b64d444..0000000 --- a/src/main/java/com/fingerprint/model/WebhookSignalResponseFrida.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Fingerprint Pro Server API - * Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. - * - * The version of the OpenAPI document: 3 - * Contact: support@fingerprint.com - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package com.fingerprint.model; - -import java.util.Objects; -import java.util.Arrays; -import java.util.Map; -import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fingerprint.sdk.JSON; - - -/** - * WebhookSignalResponseFrida - */ -@JsonPropertyOrder({ - WebhookSignalResponseFrida.JSON_PROPERTY_RESULT -}) -@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") -public class WebhookSignalResponseFrida { - public static final String JSON_PROPERTY_RESULT = "result"; - private Boolean result; - - public WebhookSignalResponseFrida() { - } - - public WebhookSignalResponseFrida result(Boolean result) { - this.result = result; - return this; - } - - /** - * iOS specific [Frida](https://frida.re/docs/ios/) detection. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not iOS. - * @return result - **/ - @javax.annotation.Nullable - @ApiModelProperty(example = "false", value = "iOS specific [Frida](https://frida.re/docs/ios/) detection. There are 2 values: • `true` - Frida detected • `false` - No signs of Frida or the client is not iOS. ") - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public Boolean getResult() { - return result; - } - - - @JsonProperty(JSON_PROPERTY_RESULT) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setResult(Boolean result) { - this.result = result; - } - - - /** - * Return true if this WebhookSignalResponseFrida object is equal to o. - */ - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - WebhookSignalResponseFrida webhookSignalResponseFrida = (WebhookSignalResponseFrida) o; - return Objects.equals(this.result, webhookSignalResponseFrida.result); - } - - @Override - public int hashCode() { - return Objects.hash(result); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class WebhookSignalResponseFrida {\n"); - sb.append(" result: ").append(toIndentedString(result)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/com/fingerprint/model/WebhookVisit.java b/src/main/java/com/fingerprint/model/WebhookVisit.java index 36964fb..21dde8e 100644 --- a/src/main/java/com/fingerprint/model/WebhookVisit.java +++ b/src/main/java/com/fingerprint/model/WebhookVisit.java @@ -24,31 +24,27 @@ import com.fasterxml.jackson.annotation.JsonValue; import com.fingerprint.model.BotdDetectionResult; import com.fingerprint.model.BrowserDetails; +import com.fingerprint.model.ClonedAppResult; import com.fingerprint.model.Confidence; import com.fingerprint.model.DeprecatedIPLocation; import com.fingerprint.model.EmulatorResult; import com.fingerprint.model.FactoryResetResult; import com.fingerprint.model.FridaResult; import com.fingerprint.model.HighActivityResult; -import com.fingerprint.model.IPLocation; import com.fingerprint.model.IpBlockListResult; import com.fingerprint.model.IpInfoResult; +import com.fingerprint.model.JailbrokenResult; import com.fingerprint.model.LocationSpoofingResult; +import com.fingerprint.model.PrivacySettingsResult; +import com.fingerprint.model.ProxyResult; import com.fingerprint.model.RawDeviceAttributesResultValue; +import com.fingerprint.model.RootAppsResult; import com.fingerprint.model.SeenAt; import com.fingerprint.model.SuspectScoreResult; import com.fingerprint.model.TamperingResult; +import com.fingerprint.model.TorResult; +import com.fingerprint.model.VirtualMachineResult; import com.fingerprint.model.VpnResult; -import com.fingerprint.model.WebhookSignalResponseClonedApp; -import com.fingerprint.model.WebhookSignalResponseEmulator; -import com.fingerprint.model.WebhookSignalResponseFactoryReset; -import com.fingerprint.model.WebhookSignalResponseFrida; -import com.fingerprint.model.WebhookSignalResponseJailbroken; -import com.fingerprint.model.WebhookSignalResponsePrivacySettings; -import com.fingerprint.model.WebhookSignalResponseProxy; -import com.fingerprint.model.WebhookSignalResponseRootApps; -import com.fingerprint.model.WebhookSignalResponseTor; -import com.fingerprint.model.WebhookSignalResponseVirtualMachine; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.net.URI; @@ -121,40 +117,40 @@ public class WebhookVisit { private Boolean incognito; public static final String JSON_PROPERTY_ROOT_APPS = "rootApps"; - private WebhookSignalResponseRootApps rootApps; + private RootAppsResult rootApps; public static final String JSON_PROPERTY_EMULATOR = "emulator"; - private WebhookSignalResponseEmulator emulator; + private EmulatorResult emulator; public static final String JSON_PROPERTY_CLONED_APP = "clonedApp"; - private WebhookSignalResponseClonedApp clonedApp; + private ClonedAppResult clonedApp; public static final String JSON_PROPERTY_FACTORY_RESET = "factoryReset"; - private WebhookSignalResponseFactoryReset factoryReset; + private FactoryResetResult factoryReset; public static final String JSON_PROPERTY_JAILBROKEN = "jailbroken"; - private WebhookSignalResponseJailbroken jailbroken; + private JailbrokenResult jailbroken; public static final String JSON_PROPERTY_FRIDA = "frida"; - private WebhookSignalResponseFrida frida; + private FridaResult frida; public static final String JSON_PROPERTY_IP_BLOCKLIST = "ipBlocklist"; private IpBlockListResult ipBlocklist; public static final String JSON_PROPERTY_TOR = "tor"; - private WebhookSignalResponseTor tor; + private TorResult tor; public static final String JSON_PROPERTY_PRIVACY_SETTINGS = "privacySettings"; - private WebhookSignalResponsePrivacySettings privacySettings; + private PrivacySettingsResult privacySettings; public static final String JSON_PROPERTY_VIRTUAL_MACHINE = "virtualMachine"; - private WebhookSignalResponseVirtualMachine virtualMachine; + private VirtualMachineResult virtualMachine; public static final String JSON_PROPERTY_VPN = "vpn"; private VpnResult vpn; public static final String JSON_PROPERTY_PROXY = "proxy"; - private WebhookSignalResponseProxy proxy; + private ProxyResult proxy; public static final String JSON_PROPERTY_TAMPERING = "tampering"; private TamperingResult tampering; @@ -369,7 +365,7 @@ public void setIncognito(Boolean incognito) { } - public WebhookVisit rootApps(WebhookSignalResponseRootApps rootApps) { + public WebhookVisit rootApps(RootAppsResult rootApps) { this.rootApps = rootApps; return this; } @@ -383,19 +379,19 @@ public WebhookVisit rootApps(WebhookSignalResponseRootApps rootApps) { @JsonProperty(JSON_PROPERTY_ROOT_APPS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseRootApps getRootApps() { + public RootAppsResult getRootApps() { return rootApps; } @JsonProperty(JSON_PROPERTY_ROOT_APPS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setRootApps(WebhookSignalResponseRootApps rootApps) { + public void setRootApps(RootAppsResult rootApps) { this.rootApps = rootApps; } - public WebhookVisit emulator(WebhookSignalResponseEmulator emulator) { + public WebhookVisit emulator(EmulatorResult emulator) { this.emulator = emulator; return this; } @@ -409,19 +405,19 @@ public WebhookVisit emulator(WebhookSignalResponseEmulator emulator) { @JsonProperty(JSON_PROPERTY_EMULATOR) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseEmulator getEmulator() { + public EmulatorResult getEmulator() { return emulator; } @JsonProperty(JSON_PROPERTY_EMULATOR) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setEmulator(WebhookSignalResponseEmulator emulator) { + public void setEmulator(EmulatorResult emulator) { this.emulator = emulator; } - public WebhookVisit clonedApp(WebhookSignalResponseClonedApp clonedApp) { + public WebhookVisit clonedApp(ClonedAppResult clonedApp) { this.clonedApp = clonedApp; return this; } @@ -435,19 +431,19 @@ public WebhookVisit clonedApp(WebhookSignalResponseClonedApp clonedApp) { @JsonProperty(JSON_PROPERTY_CLONED_APP) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseClonedApp getClonedApp() { + public ClonedAppResult getClonedApp() { return clonedApp; } @JsonProperty(JSON_PROPERTY_CLONED_APP) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setClonedApp(WebhookSignalResponseClonedApp clonedApp) { + public void setClonedApp(ClonedAppResult clonedApp) { this.clonedApp = clonedApp; } - public WebhookVisit factoryReset(WebhookSignalResponseFactoryReset factoryReset) { + public WebhookVisit factoryReset(FactoryResetResult factoryReset) { this.factoryReset = factoryReset; return this; } @@ -461,19 +457,19 @@ public WebhookVisit factoryReset(WebhookSignalResponseFactoryReset factoryReset) @JsonProperty(JSON_PROPERTY_FACTORY_RESET) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseFactoryReset getFactoryReset() { + public FactoryResetResult getFactoryReset() { return factoryReset; } @JsonProperty(JSON_PROPERTY_FACTORY_RESET) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFactoryReset(WebhookSignalResponseFactoryReset factoryReset) { + public void setFactoryReset(FactoryResetResult factoryReset) { this.factoryReset = factoryReset; } - public WebhookVisit jailbroken(WebhookSignalResponseJailbroken jailbroken) { + public WebhookVisit jailbroken(JailbrokenResult jailbroken) { this.jailbroken = jailbroken; return this; } @@ -487,19 +483,19 @@ public WebhookVisit jailbroken(WebhookSignalResponseJailbroken jailbroken) { @JsonProperty(JSON_PROPERTY_JAILBROKEN) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseJailbroken getJailbroken() { + public JailbrokenResult getJailbroken() { return jailbroken; } @JsonProperty(JSON_PROPERTY_JAILBROKEN) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setJailbroken(WebhookSignalResponseJailbroken jailbroken) { + public void setJailbroken(JailbrokenResult jailbroken) { this.jailbroken = jailbroken; } - public WebhookVisit frida(WebhookSignalResponseFrida frida) { + public WebhookVisit frida(FridaResult frida) { this.frida = frida; return this; } @@ -513,14 +509,14 @@ public WebhookVisit frida(WebhookSignalResponseFrida frida) { @JsonProperty(JSON_PROPERTY_FRIDA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseFrida getFrida() { + public FridaResult getFrida() { return frida; } @JsonProperty(JSON_PROPERTY_FRIDA) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setFrida(WebhookSignalResponseFrida frida) { + public void setFrida(FridaResult frida) { this.frida = frida; } @@ -551,7 +547,7 @@ public void setIpBlocklist(IpBlockListResult ipBlocklist) { } - public WebhookVisit tor(WebhookSignalResponseTor tor) { + public WebhookVisit tor(TorResult tor) { this.tor = tor; return this; } @@ -565,19 +561,19 @@ public WebhookVisit tor(WebhookSignalResponseTor tor) { @JsonProperty(JSON_PROPERTY_TOR) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseTor getTor() { + public TorResult getTor() { return tor; } @JsonProperty(JSON_PROPERTY_TOR) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setTor(WebhookSignalResponseTor tor) { + public void setTor(TorResult tor) { this.tor = tor; } - public WebhookVisit privacySettings(WebhookSignalResponsePrivacySettings privacySettings) { + public WebhookVisit privacySettings(PrivacySettingsResult privacySettings) { this.privacySettings = privacySettings; return this; } @@ -591,19 +587,19 @@ public WebhookVisit privacySettings(WebhookSignalResponsePrivacySettings privacy @JsonProperty(JSON_PROPERTY_PRIVACY_SETTINGS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponsePrivacySettings getPrivacySettings() { + public PrivacySettingsResult getPrivacySettings() { return privacySettings; } @JsonProperty(JSON_PROPERTY_PRIVACY_SETTINGS) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setPrivacySettings(WebhookSignalResponsePrivacySettings privacySettings) { + public void setPrivacySettings(PrivacySettingsResult privacySettings) { this.privacySettings = privacySettings; } - public WebhookVisit virtualMachine(WebhookSignalResponseVirtualMachine virtualMachine) { + public WebhookVisit virtualMachine(VirtualMachineResult virtualMachine) { this.virtualMachine = virtualMachine; return this; } @@ -617,14 +613,14 @@ public WebhookVisit virtualMachine(WebhookSignalResponseVirtualMachine virtualMa @JsonProperty(JSON_PROPERTY_VIRTUAL_MACHINE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseVirtualMachine getVirtualMachine() { + public VirtualMachineResult getVirtualMachine() { return virtualMachine; } @JsonProperty(JSON_PROPERTY_VIRTUAL_MACHINE) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setVirtualMachine(WebhookSignalResponseVirtualMachine virtualMachine) { + public void setVirtualMachine(VirtualMachineResult virtualMachine) { this.virtualMachine = virtualMachine; } @@ -655,7 +651,7 @@ public void setVpn(VpnResult vpn) { } - public WebhookVisit proxy(WebhookSignalResponseProxy proxy) { + public WebhookVisit proxy(ProxyResult proxy) { this.proxy = proxy; return this; } @@ -669,14 +665,14 @@ public WebhookVisit proxy(WebhookSignalResponseProxy proxy) { @JsonProperty(JSON_PROPERTY_PROXY) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public WebhookSignalResponseProxy getProxy() { + public ProxyResult getProxy() { return proxy; } @JsonProperty(JSON_PROPERTY_PROXY) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setProxy(WebhookSignalResponseProxy proxy) { + public void setProxy(ProxyResult proxy) { this.proxy = proxy; } diff --git a/src/test/resources/mocks/get_event.json b/src/test/resources/mocks/get_event.json index 808f12f..5b10050 100644 --- a/src/test/resources/mocks/get_event.json +++ b/src/test/resources/mocks/get_event.json @@ -1,232 +1,89 @@ -{ - "products": { - "identification": { - "data": { - "visitorId": "Ibk1527CUFmcnjLwIs4A9", - "requestId": "0KSh65EnVoB85JBmloQK", - "incognito": true, - "linkedId": "somelinkedId", - "time": "2019-05-21T16:40:13Z", - "timestamp": 1582299576512, - "url": "https://www.example.com/login", - "ip": "61.127.217.15", - "ipLocation": { - "accuracyRadius": 10, - "latitude": 49.982, - "longitude": 36.2566, - "postalCode": "61202", - "timezone": "Europe/Dusseldorf", - "city": { - "name": "Dusseldorf" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "country": { - "code": "DE", - "name": "Germany" - }, - "subdivisions": [ - { - "isoCode": "63", - "name": "North Rhine-Westphalia" - } - ] - }, - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "74", - "browserFullVersion": "74.0.3729", - "os": "Windows", - "osVersion": "7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." - }, - "confidence": { - "score": 0.97 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-03-16T11:26:45.362Z", - "subscription": "2022-03-16T11:31:01.101Z" - }, - "lastSeenAt": { - "global": "2022-03-16T11:28:34.023Z", - "subscription": null - } - } - }, - "botd": { - "data": { - "bot": { - "result": "notDetected" - }, - "url": "https://www.example.com/login", - "ip": "61.127.217.15", - "time": "2019-05-21T16:40:13Z" - } - }, - "ipInfo": { - "data": { - "v4": { - "address": "94.142.239.124", - "geolocation": { - "accuracyRadius": 20, - "latitude": 50.05, - "longitude": 14.4, - "postalCode": "150 00", - "timezone": "Europe/Prague", - "city": { - "name": "Prague" - }, - "country": { - "code": "CZ", - "name": "Czechia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "10", - "name": "Hlavni mesto Praha" - } - ] - }, - "asn": { - "asn": "7922", - "name": "COMCAST-7922", - "network": "73.136.0.0/13" - }, - "datacenter": { - "result": true, - "name": "DediPath" - } - } - } - }, - "incognito": { - "data": { - "result": false - } - }, - "rootApps": { - "data": { - "result": false - } - }, - "emulator": { - "data": { - "result": false - } - }, - "ipBlocklist": { - "data": { - "result": false, - "details": { - "emailSpam": false, - "attackSource": false - } - } - }, - "tor": { - "data": { - "result": false - } - }, - "vpn": { - "data": { - "result": false, - "originTimezone": "Europe/Berlin", - "methods": { - "timezoneMismatch": false, - "publicVPN": false, - "auxiliaryMobile": false - } - } - }, - "proxy": { - "data": { - "result": false - } - }, - "tampering": { - "data": { - "result": false, - "anomalyScore": 0 - } - }, - "clonedApp": { - "data": { - "result": false - } - }, - "factoryReset": { - "data": { - "time": "1970-01-01T00:00:00Z", - "timestamp": 0 - } - }, - "jailbroken": { - "data": { - "result": false - } - }, - "frida": { - "data": { - "result": false - } - }, - "privacySettings": { - "data": { - "result": false - } - }, - "virtualMachine": { - "data": { - "result": false - } - }, - "rawDeviceAttributes": { - "data": { - "architecture": { - "value": 127 - }, - "audio": { - "value": 35.73832903057337 - }, - "canvas": { - "value": { - "Winding": true, - "Geometry": "4dce9d6017c3e0c052a77252f29f2b1c", - "Text": "dd2474a56ff78c1de3e7a07070ba3b7d" - } - }, - "colorDepth": { - "value": 30 - }, - "colorGamut": { - "value": "srgb" - }, - "contrast": { - "value": 0 - }, - "cookiesEnabled": { - "value": true - } - } - }, - "highActivity": { - "data": { - "result": false - } - }, - "locationSpoofing": { - "data": { - "result": false - } - } - } -} + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/get_event_all_errors.json b/src/test/resources/mocks/get_event_all_errors.json index 00b1697..5b10050 100644 --- a/src/test/resources/mocks/get_event_all_errors.json +++ b/src/test/resources/mocks/get_event_all_errors.json @@ -1,122 +1,89 @@ -{ - "products": { - "identification": { - "error": { - "code": "Failed", - "message": "failed" - } - }, - "botd": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "ipInfo": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "incognito": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "rootApps": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "clonedApp": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "factoryReset": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "jailbroken": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "frida": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "emulator": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "ipBlocklist": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "tor": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "vpn": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "proxy": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "privacySettings": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "virtualMachine": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "tampering": { - "error": { - "code": "Failed", - "message": "internal server error" - } - }, - "rawDeviceAttributes": { - "data": { - "audio": { - "error": { - "name": "Error", - "message": "internal server error" - } - }, - "canvas": { - "error": { - "name": "Error", - "message": "internal server error" - } - } - } - } - } -} + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/get_event_botd_failed_error.json b/src/test/resources/mocks/get_event_botd_failed_error.json index 362f969..5b10050 100644 --- a/src/test/resources/mocks/get_event_botd_failed_error.json +++ b/src/test/resources/mocks/get_event_botd_failed_error.json @@ -1,67 +1,89 @@ -{ - "products": { - "identification": { - "data": { - "visitorId": "Ibk1527CUFmcnjLwIs4A9", - "requestId": "0KSh65EnVoB85JBmloQK", - "incognito": true, - "linkedId": "somelinkedId", - "time": "2019-05-21T16:40:13Z", - "timestamp": 1582299576512, - "url": "https://www.example.com/login", - "ip": "61.127.217.15", - "ipLocation": { - "accuracyRadius": 10, - "latitude": 49.982, - "longitude": 36.2566, - "postalCode": "61202", - "timezone": "Europe/Dusseldorf", - "city": { - "name": "Dusseldorf" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "country": { - "code": "DE", - "name": "Germany" - }, - "subdivisions": [ - { - "isoCode": "63", - "name": "North Rhine-Westphalia" - } - ] - }, - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "74", - "browserFullVersion": "74.0.3729", - "os": "Windows", - "osVersion": "7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." - }, - "confidence": { - "score": 0.97 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-03-16T11:26:45.362Z", - "subscription": "2022-03-16T11:31:01.101Z" - }, - "lastSeenAt": { - "global": "2022-03-16T11:28:34.023Z", - "subscription": null - } + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/get_event_botd_too_many_requests_error.json b/src/test/resources/mocks/get_event_botd_too_many_requests_error.json index 55c561b..5b10050 100644 --- a/src/test/resources/mocks/get_event_botd_too_many_requests_error.json +++ b/src/test/resources/mocks/get_event_botd_too_many_requests_error.json @@ -1,67 +1,89 @@ -{ - "products": { - "identification": { - "data": { - "visitorId": "Ibk1527CUFmcnjLwIs4A9", - "requestId": "0KSh65EnVoB85JBmloQK", - "incognito": true, - "linkedId": "somelinkedId", - "time": "2019-05-21T16:40:13Z", - "timestamp": 1582299576512, - "url": "https://www.example.com/login", - "ip": "61.127.217.15", - "ipLocation": { - "accuracyRadius": 10, - "latitude": 49.982, - "longitude": 36.2566, - "postalCode": "61202", - "timezone": "Europe/Dusseldorf", - "city": { - "name": "Dusseldorf" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "country": { - "code": "DE", - "name": "Germany" - }, - "subdivisions": [ - { - "isoCode": "63", - "name": "North Rhine-Westphalia" - } - ] - }, - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "74", - "browserFullVersion": "74.0.3729", - "os": "Windows", - "osVersion": "7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." - }, - "confidence": { - "score": 0.97 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-03-16T11:26:45.362Z", - "subscription": "2022-03-16T11:31:01.101Z" - }, - "lastSeenAt": { - "global": "2022-03-16T11:28:34.023Z", - "subscription": null - } + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/get_event_extra_fields.json b/src/test/resources/mocks/get_event_extra_fields.json index 03e50c0..5b10050 100644 --- a/src/test/resources/mocks/get_event_extra_fields.json +++ b/src/test/resources/mocks/get_event_extra_fields.json @@ -1,86 +1,89 @@ -{ - "products": { - "identification": { - "data": { - "visitorId": "Ibk1527CUFmcnjLwIs4A9", - "requestId": "0KSh65EnVoB85JBmloQK", - "incognito": true, - "linkedId": "somelinkedId", - "time": "2019-05-21T16:40:13Z", - "timestamp": 1582299576512, - "url": "https://www.example.com/login", - "ip": "61.127.217.15", - "ipLocation": { - "accuracyRadius": 10, - "latitude": 49.982, - "longitude": 36.2566, - "postalCode": "61202", - "timezone": "Europe/Dusseldorf", - "city": { - "name": "Dusseldorf" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "country": { - "code": "DE", - "name": "Germany" - }, - "subdivisions": [ - { - "isoCode": "63", - "name": "North Rhine-Westphalia" - } - ] - }, - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "74", - "browserFullVersion": "74.0.3729", - "os": "Windows", - "osVersion": "7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." - }, - "confidence": { - "score": 0.97 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-03-16T11:26:45.362Z", - "subscription": "2022-03-16T11:31:01.101Z" - }, - "lastSeenAt": { - "global": "2022-03-16T11:28:34.023Z", - "subscription": null - } + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/get_event_identification_failed_error.json b/src/test/resources/mocks/get_event_identification_failed_error.json index 22d79de..5b10050 100644 --- a/src/test/resources/mocks/get_event_identification_failed_error.json +++ b/src/test/resources/mocks/get_event_identification_failed_error.json @@ -1,20 +1,89 @@ -{ - "products": { - "identification": { - "error": { - "code": "Failed", - "message": "failed" + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/get_event_identification_too_many_requests_error.json b/src/test/resources/mocks/get_event_identification_too_many_requests_error.json index 26d3172..5b10050 100644 --- a/src/test/resources/mocks/get_event_identification_too_many_requests_error.json +++ b/src/test/resources/mocks/get_event_identification_too_many_requests_error.json @@ -1,20 +1,89 @@ -{ - "products": { - "identification": { - "error": { - "code": "429 Too Many Requests", - "message": "too many requests" + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/visits_403_error.json b/src/test/resources/mocks/visits_403_error.json index 8a886d1..5b10050 100644 --- a/src/test/resources/mocks/visits_403_error.json +++ b/src/test/resources/mocks/visits_403_error.json @@ -1,3 +1,89 @@ -{ - "error": "Forbidden (HTTP 403)" -} + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/visits_limit_500.json b/src/test/resources/mocks/visits_limit_500.json index f045133..5b10050 100644 --- a/src/test/resources/mocks/visits_limit_500.json +++ b/src/test/resources/mocks/visits_limit_500.json @@ -1,3092 +1,89 @@ -{ - "visitorId": "AcxioeQKffpXF8iGQK3P", - "visits": [ - { - "requestId": "1655373780901.HhjRFX", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "188.242.36.107", - "ipLocation": { - "accuracyRadius": 5, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1655373780912, - "time": "2022-06-16T10:03:00Z", - "url": "https://fingerprint.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-16T05:27:30.578Z", - "subscription": "2022-06-16T05:27:30.578Z" - } - }, - { - "requestId": "1655357250568.vqejDF", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "82.118.30.62", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 50.0805, - "longitude": 14.467, - "postalCode": "130 00", - "timezone": "Europe/Prague", - "city": { - "name": "Prague" - }, - "country": { - "code": "CZ", - "name": "Czechia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "10", - "name": "Hlavni mesto Praha" - } - ] - }, - "timestamp": 1655357250578, - "time": "2022-06-16T05:27:30Z", - "url": "https://fingerprint.com/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-15T15:28:33.479Z", - "subscription": "2022-06-15T15:28:33.479Z" - } - }, - { - "requestId": "1655306913474.kFQsQx", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "82.118.30.68", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 50.0805, - "longitude": 14.467, - "postalCode": "130 00", - "timezone": "Europe/Prague", - "city": { - "name": "Prague" - }, - "country": { - "code": "CZ", - "name": "Czechia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "10", - "name": "Hlavni mesto Praha" - } - ] - }, - "timestamp": 1655306913479, - "time": "2022-06-15T15:28:33Z", - "url": "https://fingerprint.com/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-15T08:47:34.677Z", - "subscription": "2022-06-15T08:47:34.677Z" - } - }, - { - "requestId": "1655282854672.vz4ZlN", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "82.118.30.91", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 50.0805, - "longitude": 14.467, - "postalCode": "130 00", - "timezone": "Europe/Prague", - "city": { - "name": "Prague" - }, - "country": { - "code": "CZ", - "name": "Czechia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "10", - "name": "Hlavni mesto Praha" - } - ] - }, - "timestamp": 1655282854677, - "time": "2022-06-15T08:47:34Z", - "url": "https://fingerprint.com/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-14T14:19:42.753Z", - "subscription": "2022-06-14T14:19:42.753Z" - } - }, - { - "requestId": "1655216382743.RDRa4h", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "188.242.36.107", - "ipLocation": { - "accuracyRadius": 5, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1655216382753, - "time": "2022-06-14T14:19:42Z", - "url": "https://fingerprint.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-13T07:53:19.878Z", - "subscription": "2022-06-13T07:53:19.878Z" - } - }, - { - "requestId": "1655106799870.C8m8hR", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.137", - "timestamp": 1655106799878, - "time": "2022-06-13T07:53:19Z", - "url": "https://fingerprint.com/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-07T12:54:35.413Z", - "subscription": "2022-06-07T12:54:35.413Z" - } - }, - { - "requestId": "1654606475406.2uXCJx", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.157", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651 - }, - "timestamp": 1654606475413, - "time": "2022-06-07T12:54:35Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-07T09:37:57.43Z", - "subscription": "2022-06-07T09:37:57.43Z" - } - }, - { - "requestId": "1654594677423.pCHmKJ", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "188.242.36.107", - "ipLocation": { - "timezone": "Europe/Moscow" - }, - "timestamp": 1654594677430, - "time": "2022-06-07T09:37:57Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-07T09:37:50.109Z", - "subscription": "2022-06-07T09:37:50.109Z" - } - }, - { - "requestId": "1654594670097.Lmodmj", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "188.242.36.107", - "ipLocation": { - "accuracyRadius": 5, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1654594670109, - "time": "2022-06-07T09:37:50Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-07T08:31:31.9Z", - "subscription": "2022-06-07T08:31:31.9Z" - } - }, - { - "requestId": "1654590691894.aCYqYE", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "188.242.36.107", - "ipLocation": { - "accuracyRadius": 5, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1654590691900, - "time": "2022-06-07T08:31:31Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-06T09:05:25.954Z", - "subscription": "2022-06-06T09:05:25.954Z" - } - }, - { - "requestId": "1654506325946.ijIwzu", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1654506325954, - "time": "2022-06-06T09:05:25Z", - "url": "https://fingerprintcom.netlify.app/blog/name-change/", - "tag": {}, - "confidence": { - "score": 0.99 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-02T16:58:53.635Z", - "subscription": "2022-06-02T16:58:53.635Z" - } - }, - { - "requestId": "1654189133629.0V1gtF", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1654189133635, - "time": "2022-06-02T16:58:53Z", - "url": "https://fingerprintcom.netlify.app/blog/name-change/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-06-02T16:58:51.483Z", - "subscription": "2022-06-02T16:58:51.483Z" - } - }, - { - "requestId": "1654189131472.r49Bbh", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "102", - "browserFullVersion": "102.0.5005", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1654189131483, - "time": "2022-06-02T16:58:51Z", - "url": "https://fingerprintcom.netlify.app/", - "tag": {}, - "confidence": { - "score": 0.95 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-27T14:52:26.624Z", - "subscription": "2022-05-27T14:52:26.624Z" - } - }, - { - "requestId": "1653663146617.o8KpJO", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1653663146624, - "time": "2022-05-27T14:52:26Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-20T09:50:06.7Z", - "subscription": "2022-05-20T09:50:06.7Z" - } - }, - { - "requestId": "1653040206694.Q5Csig", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1653040206700, - "time": "2022-05-20T09:50:06Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-19T16:27:38.029Z", - "subscription": "2022-05-19T16:27:38.029Z" - } - }, - { - "requestId": "1652977658020.xbfYhA", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1652977658029, - "time": "2022-05-19T16:27:38Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-17T15:09:32.666Z", - "subscription": "2022-05-17T15:09:32.666Z" - } - }, - { - "requestId": "1652800172657.xA22Pd", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1652800172666, - "time": "2022-05-17T15:09:32Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-17T14:18:17.631Z", - "subscription": "2022-05-17T14:18:17.631Z" - } - }, - { - "requestId": "1652797097626.faAMJO", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1652797097631, - "time": "2022-05-17T14:18:17Z", - "url": "https://fingerprintjs.com/careers/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-17T10:16:04.809Z", - "subscription": "2022-05-17T10:16:04.809Z" - } - }, - { - "requestId": "1652782564800.MWH0GO", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1652782564809, - "time": "2022-05-17T10:16:04Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-16T06:47:01.511Z", - "subscription": "2022-05-16T06:47:01.511Z" - } - }, - { - "requestId": "1652683621505.1tOjuc", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "217.150.54.233", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1652683621511, - "time": "2022-05-16T06:47:01Z", - "url": "https://fingerprintjs.com/products/bot-detection/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-16T06:45:49.586Z", - "subscription": "2022-05-16T06:45:49.586Z" - } - }, - { - "requestId": "1652683586557.67Faeg", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", - "botProbability": 0 - }, - "incognito": true, - "ip": "217.150.54.233", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1652683586562, - "time": "2022-05-16T06:46:26Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 0.94 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-16T06:45:49.586Z", - "subscription": "2022-05-16T06:45:49.586Z" - } - }, - { - "requestId": "1652683549513.aVRqEP", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "101", - "browserFullVersion": "101.0.4951", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "217.150.54.233", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1652683549586, - "time": "2022-05-16T06:45:49Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-05T10:11:25.96Z", - "subscription": "2022-05-05T10:11:25.96Z" - } - }, - { - "requestId": "1651745485951.Oj68me", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1651745485960, - "time": "2022-05-05T10:11:25Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-05T09:33:40.155Z", - "subscription": "2022-05-05T09:33:40.155Z" - } - }, - { - "requestId": "1651743220004.W02rhx", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1651743220155, - "time": "2022-05-05T09:33:40Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-05-03T15:26:32.826Z", - "subscription": "2022-05-03T15:26:32.826Z" - } - }, - { - "requestId": "1651591592822.Is9u93", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.157", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1651591592826, - "time": "2022-05-03T15:26:32Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-29T13:23:37.049Z", - "subscription": "2022-04-29T13:23:37.049Z" - } - }, - { - "requestId": "1651238617044.rMVPGS", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "89.38.224.165", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 44.804, - "longitude": 20.4651, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1651238617049, - "time": "2022-04-29T13:23:37Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-29T10:37:53.333Z", - "subscription": "2022-04-29T10:37:53.333Z" - } - }, - { - "requestId": "1651228673329.QZI2Cu", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "188.242.36.107", - "ipLocation": { - "accuracyRadius": 5, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1651228673333, - "time": "2022-04-29T10:37:53Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-28T13:58:06.323Z", - "subscription": "2022-04-28T13:58:06.323Z" - } - }, - { - "requestId": "1651154286221.YvuOCP", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "84.247.59.113", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 50.0971, - "longitude": 8.5952, - "postalCode": "65933", - "timezone": "Europe/Berlin", - "city": { - "name": "Frankfurt am Main" - }, - "country": { - "code": "DE", - "name": "Germany" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "HE", - "name": "Hesse" - } - ] - }, - "timestamp": 1651154286323, - "time": "2022-04-28T13:58:06Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-28T12:16:02.564Z", - "subscription": "2022-04-28T12:16:02.564Z" - } - }, - { - "requestId": "1651148162556.dySgif", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "84.247.59.113", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 50.0971, - "longitude": 8.5952, - "postalCode": "65933", - "timezone": "Europe/Berlin", - "city": { - "name": "Frankfurt am Main" - }, - "country": { - "code": "DE", - "name": "Germany" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "HE", - "name": "Hesse" - } - ] - }, - "timestamp": 1651148162564, - "time": "2022-04-28T12:16:02Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-28T11:57:13.267Z", - "subscription": "2022-04-28T11:57:13.267Z" - } - }, - { - "requestId": "1651147033260.SxmFvL", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "84.247.59.146", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 50.0971, - "longitude": 8.5952, - "postalCode": "65933", - "timezone": "Europe/Berlin", - "city": { - "name": "Frankfurt am Main" - }, - "country": { - "code": "DE", - "name": "Germany" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "HE", - "name": "Hesse" - } - ] - }, - "timestamp": 1651147033267, - "time": "2022-04-28T11:57:13Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-28T11:57:06.24Z", - "subscription": "2022-04-28T11:57:06.24Z" - } - }, - { - "requestId": "1651147026139.aAZ8TO", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "84.247.59.146", - "ipLocation": { - "accuracyRadius": 20, - "latitude": 50.0971, - "longitude": 8.5952, - "postalCode": "65933", - "timezone": "Europe/Berlin", - "city": { - "name": "Frankfurt am Main" - }, - "country": { - "code": "DE", - "name": "Germany" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "HE", - "name": "Hesse" - } - ] - }, - "timestamp": 1651147026240, - "time": "2022-04-28T11:57:06Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-26T14:10:31.908Z", - "subscription": "2022-04-26T14:10:31.908Z" - } - }, - { - "requestId": "1650982231903.eG0b6v", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.105", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650982231908, - "time": "2022-04-26T14:10:31Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-26T11:43:37.373Z", - "subscription": "2022-04-26T11:43:37.373Z" - } - }, - { - "requestId": "1650973417360.xupFFD", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.99", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650973417373, - "time": "2022-04-26T11:43:37Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-26T11:43:30.111Z", - "subscription": "2022-04-26T11:43:30.111Z" - } - }, - { - "requestId": "1650973410104.AQD4qu", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.99", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650973410111, - "time": "2022-04-26T11:43:30Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-26T11:22:34.148Z", - "subscription": "2022-04-26T11:22:34.148Z" - } - }, - { - "requestId": "1650972154133.lSWE8a", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.96", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650972154148, - "time": "2022-04-26T11:22:34Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-26T11:22:03.83Z", - "subscription": "2022-04-26T11:22:03.83Z" - } - }, - { - "requestId": "1650972123824.xk8MUR", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.96", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650972123830, - "time": "2022-04-26T11:22:03Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-25T09:46:15.458Z", - "subscription": "2022-04-25T09:46:15.458Z" - } - }, - { - "requestId": "1650879975452.kfuowM", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "188.242.36.107", - "ipLocation": { - "accuracyRadius": 5, - "latitude": 59.8983, - "longitude": 30.2618, - "postalCode": "190924", - "timezone": "Europe/Moscow", - "city": { - "name": "St Petersburg" - }, - "country": { - "code": "RU", - "name": "Russia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "SPE", - "name": "St.-Petersburg" - } - ] - }, - "timestamp": 1650879975458, - "time": "2022-04-25T09:46:15Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-22T16:51:44.816Z", - "subscription": "2022-04-22T16:51:44.816Z" - } - }, - { - "requestId": "1650646304808.xQbAju", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.227", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650646304816, - "time": "2022-04-22T16:51:44Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-21T11:43:33.116Z", - "subscription": "2022-04-21T11:43:33.116Z" - } - }, - { - "requestId": "1650541413105.leAPLz", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.89", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650541413116, - "time": "2022-04-21T11:43:33Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-20T17:11:54.717Z", - "subscription": "2022-04-20T17:11:54.717Z" - } - }, - { - "requestId": "1650474714710.M1IGsl", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.111", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650474714717, - "time": "2022-04-20T17:11:54Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-20T17:11:47.217Z", - "subscription": "2022-04-20T17:11:47.217Z" - } - }, - { - "requestId": "1650474707211.CEUuZk", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.111", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650474707217, - "time": "2022-04-20T17:11:47Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-20T17:11:12.076Z", - "subscription": "2022-04-20T17:11:12.076Z" - } - }, - { - "requestId": "1650474672071.Pz4WsK", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.111", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650474672076, - "time": "2022-04-20T17:11:12Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T12:29:06.692Z", - "subscription": "2022-04-19T12:29:06.692Z" - } - }, - { - "requestId": "1650371346684.1d7sgv", - "browserDetails": { - "browserName": "Chrome Mobile", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Android", - "osVersion": "6.0", - "device": "Nexus 5", - "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.198", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650371346692, - "time": "2022-04-19T12:29:06Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T12:29:02.15Z", - "subscription": "2022-04-19T12:29:02.15Z" - } - }, - { - "requestId": "1650371342145.oWyfRx", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.198", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650371342150, - "time": "2022-04-19T12:29:02Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T11:35:14.729Z", - "subscription": "2022-04-19T11:35:14.729Z" - } - }, - { - "requestId": "1650368114723.YEXcHI", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.206", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650368114729, - "time": "2022-04-19T11:35:14Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T11:13:33.107Z", - "subscription": "2022-04-19T11:13:33.107Z" - } - }, - { - "requestId": "1650366813101.SvUZC1", - "browserDetails": { - "browserName": "Chrome Mobile", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Android", - "osVersion": "6.0", - "device": "Nexus 5", - "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.204", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650366813107, - "time": "2022-04-19T11:13:33Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T11:13:28.453Z", - "subscription": "2022-04-19T11:13:28.453Z" - } - }, - { - "requestId": "1650366808426.Hy6j7v", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.204", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650366808453, - "time": "2022-04-19T11:13:28Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T11:07:05.19Z", - "subscription": "2022-04-19T11:07:05.19Z" - } - }, - { - "requestId": "1650366425184.xvYkdr", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.204", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650366425190, - "time": "2022-04-19T11:07:05Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T11:07:00.483Z", - "subscription": "2022-04-19T11:07:00.483Z" - } - }, - { - "requestId": "1650366420377.VR5pDX", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.204", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650366420483, - "time": "2022-04-19T11:07:00Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T10:37:45.279Z", - "subscription": "2022-04-19T10:37:45.279Z" - } - }, - { - "requestId": "1650364665274.qq31O4", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.172", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650364665279, - "time": "2022-04-19T10:37:45Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T10:22:58.87Z", - "subscription": "2022-04-19T10:22:58.87Z" - } - }, - { - "requestId": "1650363778864.tsVBjO", - "browserDetails": { - "browserName": "Chrome Mobile", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Android", - "osVersion": "6.0", - "device": "Nexus 5", - "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.210", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650363778870, - "time": "2022-04-19T10:22:58Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T10:22:46.894Z", - "subscription": "2022-04-19T10:22:46.894Z" - } - }, - { - "requestId": "1650363766889.KuVDpm", - "browserDetails": { - "browserName": "Chrome Mobile", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Android", - "osVersion": "6.0", - "device": "Nexus 5", - "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.210", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650363766894, - "time": "2022-04-19T10:22:46Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T10:07:01.528Z", - "subscription": "2022-04-19T10:07:01.528Z" - } - }, - { - "requestId": "1650362821521.dXH2Ce", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.180", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650362821528, - "time": "2022-04-19T10:07:01Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-19T10:02:42.46Z", - "subscription": "2022-04-19T10:02:42.46Z" - } - }, - { - "requestId": "1650362562448.a5cPLU", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.180", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650362562460, - "time": "2022-04-19T10:02:42Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-18T17:06:30.834Z", - "subscription": "2022-04-18T17:06:30.834Z" - } - }, - { - "requestId": "1650301590829.YXGX7h", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.195", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650301590834, - "time": "2022-04-18T17:06:30Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-18T12:23:30.446Z", - "subscription": "2022-04-18T12:23:30.446Z" - } - }, - { - "requestId": "1650284610441.lJrX4M", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "45.86.200.179", - "ipLocation": { - "accuracyRadius": 1000, - "latitude": 52.3824, - "longitude": 4.8995, - "timezone": "Europe/Amsterdam", - "country": { - "code": "NL", - "name": "Netherlands" - }, - "continent": { - "code": "EU", - "name": "Europe" - } - }, - "timestamp": 1650284610446, - "time": "2022-04-18T12:23:30Z", - "url": "https://fingerprintjs.com/blog/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-04-06T14:53:00.526Z", - "subscription": "2022-04-06T14:53:00.526Z" - } - }, - { - "requestId": "1649256780522.WAXWf2", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "109.245.35.200", - "ipLocation": { - "accuracyRadius": 50, - "latitude": 44.8166, - "longitude": 20.4721, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1649256780526, - "time": "2022-04-06T14:53:00Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-03-18T11:08:35.698Z", - "subscription": "2022-03-18T11:08:35.698Z" - } - }, - { - "requestId": "1649256780520.RRC4PR", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "100", - "browserFullVersion": "100.0.4896", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "109.245.35.200", - "ipLocation": { - "accuracyRadius": 50, - "latitude": 44.8166, - "longitude": 20.4721, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1649256780525, - "time": "2022-04-06T14:53:00Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-03-18T11:08:35.698Z", - "subscription": "2022-03-18T11:08:35.698Z" - } - }, - { - "requestId": "1647601715689.iocXfW", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "98", - "browserFullVersion": "98.0.4758", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "178.223.21.183", - "ipLocation": { - "accuracyRadius": 50, - "latitude": 44.8166, - "longitude": 20.4721, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1647601715698, - "time": "2022-03-18T11:08:35Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-03-16T08:21:23.62Z", - "subscription": "2022-03-16T08:21:23.62Z" - } - }, - { - "requestId": "1647418883615.Vck2NA", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "98", - "browserFullVersion": "98.0.4758", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "87.116.165.97", - "ipLocation": { - "accuracyRadius": 50, - "latitude": 44.8166, - "longitude": 20.4721, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1647418883620, - "time": "2022-03-16T08:21:23Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-03-16T08:21:18.398Z", - "subscription": "2022-03-16T08:21:18.398Z" - } - }, - { - "requestId": "1647418878391.NZDmht", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "98", - "browserFullVersion": "98.0.4758", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "87.116.165.97", - "ipLocation": { - "accuracyRadius": 50, - "latitude": 44.8166, - "longitude": 20.4721, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1647418878398, - "time": "2022-03-16T08:21:18Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-03-15T11:46:51.858Z", - "subscription": "2022-03-15T11:46:51.858Z" - } - }, - { - "requestId": "1647344811836.RvNkL5", - "browserDetails": { - "browserName": "Chrome", - "browserMajorVersion": "98", - "browserFullVersion": "98.0.4758", - "os": "Mac OS X", - "osVersion": "10.15.7", - "device": "Other", - "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36", - "botProbability": 0 - }, - "incognito": false, - "ip": "87.116.165.97", - "ipLocation": { - "accuracyRadius": 50, - "latitude": 44.8166, - "longitude": 20.4721, - "timezone": "Europe/Belgrade", - "city": { - "name": "Belgrade" - }, - "country": { - "code": "RS", - "name": "Serbia" - }, - "continent": { - "code": "EU", - "name": "Europe" - }, - "subdivisions": [ - { - "isoCode": "00", - "name": "Belgrade" - } - ] - }, - "timestamp": 1647344811858, - "time": "2022-03-15T11:46:51Z", - "url": "https://fingerprintjs.com/", - "tag": {}, - "confidence": { - "score": 1 - }, - "visitorFound": true, - "firstSeenAt": { - "global": "2022-02-04T11:31:20Z", - "subscription": "2022-02-04T11:31:20Z" - }, - "lastSeenAt": { - "global": "2022-03-08T12:33:05.677Z", - "subscription": "2022-03-08T12:33:05.677Z" - } - } - ] -} + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + diff --git a/src/test/resources/mocks/visits_too_many_requests_error.json b/src/test/resources/mocks/visits_too_many_requests_error.json index 00d00f2..5b10050 100644 --- a/src/test/resources/mocks/visits_too_many_requests_error.json +++ b/src/test/resources/mocks/visits_too_many_requests_error.json @@ -1,3 +1,89 @@ -{ - "error": "too many requests" -} + + + + + + Page not found · GitHub Pages + + + + +
+ +

404

+

File not found

+ +

+ The site configured at this address does not + contain the requested file. +

+ +

+ If this is your site, make sure that the filename case matches the URL + as well as any file permissions.
+ For root URLs (like http://example.com/) you must provide an + index.html file. +

+ +

+ Read the full documentation + for more information about using GitHub Pages. +

+ + + + + + +
+ + From 0b8f623b49c96b4f215da570ee281184bed9aa5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 27 Feb 2024 15:11:20 +0800 Subject: [PATCH 09/11] build: update examples --- scripts/sync.sh | 19 +- .../fingerprint/api/FingerprintApiTest.java | 16 +- src/test/resources/mocks/get_event.json | 89 - src/test/resources/mocks/get_event_200.json | 281 ++ .../mocks/get_event_200_all_errors.json | 140 + .../get_event_200_botd_failed_error.json | 68 + ...vent_200_botd_too_many_requests_error.json | 68 + .../mocks/get_event_200_extra_fields.json | 86 + ...event_200_identification_failed_error.json | 23 + ...dentification_too_many_requests_error.json | 23 + .../resources/mocks/get_event_all_errors.json | 89 - .../mocks/get_event_botd_failed_error.json | 89 - ...et_event_botd_too_many_requests_error.json | 89 - .../mocks/get_event_extra_fields.json | 89 - ...get_event_identification_failed_error.json | 89 - ...dentification_too_many_requests_error.json | 89 - .../mocks/get_visits_200_limit_500.json | 3092 +++++++++++++++++ ...et_visits_429_too_many_requests_error.json | 3 + .../resources/mocks/visits_limit_500.json | 89 - .../mocks/visits_too_many_requests_error.json | 89 - 20 files changed, 3801 insertions(+), 819 deletions(-) delete mode 100644 src/test/resources/mocks/get_event.json create mode 100644 src/test/resources/mocks/get_event_200.json create mode 100644 src/test/resources/mocks/get_event_200_all_errors.json create mode 100644 src/test/resources/mocks/get_event_200_botd_failed_error.json create mode 100644 src/test/resources/mocks/get_event_200_botd_too_many_requests_error.json create mode 100644 src/test/resources/mocks/get_event_200_extra_fields.json create mode 100644 src/test/resources/mocks/get_event_200_identification_failed_error.json create mode 100644 src/test/resources/mocks/get_event_200_identification_too_many_requests_error.json delete mode 100644 src/test/resources/mocks/get_event_all_errors.json delete mode 100644 src/test/resources/mocks/get_event_botd_failed_error.json delete mode 100644 src/test/resources/mocks/get_event_botd_too_many_requests_error.json delete mode 100644 src/test/resources/mocks/get_event_extra_fields.json delete mode 100644 src/test/resources/mocks/get_event_identification_failed_error.json delete mode 100644 src/test/resources/mocks/get_event_identification_too_many_requests_error.json create mode 100644 src/test/resources/mocks/get_visits_200_limit_500.json create mode 100644 src/test/resources/mocks/get_visits_429_too_many_requests_error.json delete mode 100644 src/test/resources/mocks/visits_limit_500.json delete mode 100644 src/test/resources/mocks/visits_too_many_requests_error.json diff --git a/scripts/sync.sh b/scripts/sync.sh index 35e3e08..e34e8e4 100755 --- a/scripts/sync.sh +++ b/scripts/sync.sh @@ -3,19 +3,18 @@ curl -o ./res/fingerprint-server-api.yaml https://fingerprintjs.github.io/fingerprint-pro-server-api-openapi/schemas/fingerprint-server-api-compact.yaml examplesList=( - 'visits_limit_500.json' + 'get_visits_200_limit_500.json' 'visits_403_error.json' - 'visits_too_many_requests_error.json' - 'get_event_extra_fields.json' - 'get_event.json' - 'get_event_all_errors.json' + 'get_visits_429_too_many_requests_error.json' + 'get_event_200_extra_fields.json' + 'get_event_200.json' + 'get_event_200_all_errors.json' 'get_event_403_error.json' 'get_event_404_error.json' - 'get_event_botd_failed_error.json' - 'get_event_botd_too_many_requests_error.json' - 'get_event_extra_fields.json' - 'get_event_identification_failed_error.json' - 'get_event_identification_too_many_requests_error.json' + 'get_event_200_botd_failed_error.json' + 'get_event_200_botd_too_many_requests_error.json' + 'get_event_200_identification_failed_error.json' + 'get_event_200_identification_too_many_requests_error.json' ) for example in ${examplesList[*]}; do diff --git a/src/test/java/com/fingerprint/api/FingerprintApiTest.java b/src/test/java/com/fingerprint/api/FingerprintApiTest.java index e169989..321afef 100644 --- a/src/test/java/com/fingerprint/api/FingerprintApiTest.java +++ b/src/test/java/com/fingerprint/api/FingerprintApiTest.java @@ -50,14 +50,14 @@ private InputStream getFileAsIOStream(final String fileName) { @BeforeAll public void before() throws ApiException, IOException { api = Mockito.mock(FingerprintApi.class); - when(api.getEvent(MOCK_REQUEST_ID)).thenReturn(fetchMockWithEventResponse("mocks/get_event.json")); + when(api.getEvent(MOCK_REQUEST_ID)).thenReturn(fetchMockWithEventResponse("mocks/get_event_200.json")); // TODO: Find the way to test SDK correctly for this scenario -// when(api.getEvent(MOCK_REQUEST_WITH_EXTRA_FIELDS_ID)).thenReturn(fetchMockWithEventResponse("mocks/get_event_extra_fields.json")); - when(api.getEvent(MOCK_REQUEST_WITH_ALL_FAILED_SIGNALS)).thenReturn(fetchMockWithEventResponse("mocks/get_event_all_errors.json")); - when(api.getEvent(MOCK_REQUEST_BOTD_FAILED)).thenReturn(fetchMockWithEventResponse("mocks/get_event_botd_failed_error.json")); - when(api.getEvent(MOCK_REQUEST_BOTD_MANY_REQUEST)).thenReturn(fetchMockWithEventResponse("mocks/get_event_botd_too_many_requests_error.json")); - when(api.getEvent(MOCK_REQUEST_IDENTIFICATION_FAILED)).thenReturn(fetchMockWithEventResponse("mocks/get_event_identification_failed_error.json")); - when(api.getEvent(MOCK_REQUEST_IDENTIFICATION_MANY_REQUEST)).thenReturn(fetchMockWithEventResponse("mocks/get_event_identification_too_many_requests_error.json")); +// when(api.getEvent(MOCK_REQUEST_WITH_EXTRA_FIELDS_ID)).thenReturn(fetchMockWithEventResponse("mocks/get_event_200_extra_fields.json")); + when(api.getEvent(MOCK_REQUEST_WITH_ALL_FAILED_SIGNALS)).thenReturn(fetchMockWithEventResponse("mocks/get_event_200_all_errors.json")); + when(api.getEvent(MOCK_REQUEST_BOTD_FAILED)).thenReturn(fetchMockWithEventResponse("mocks/get_event_200_botd_failed_error.json")); + when(api.getEvent(MOCK_REQUEST_BOTD_MANY_REQUEST)).thenReturn(fetchMockWithEventResponse("mocks/get_event_200_botd_too_many_requests_error.json")); + when(api.getEvent(MOCK_REQUEST_IDENTIFICATION_FAILED)).thenReturn(fetchMockWithEventResponse("mocks/get_event_200_identification_failed_error.json")); + when(api.getEvent(MOCK_REQUEST_IDENTIFICATION_MANY_REQUEST)).thenReturn(fetchMockWithEventResponse("mocks/get_event_200_identification_too_many_requests_error.json")); when(api.getVisits(MOCK_VISITOR_ID, MOCK_VISITOR_REQUEST_ID, null, 50, "1683900801733.Ogvu1j", null)).thenReturn(fetchMockVisit()); } @@ -74,7 +74,7 @@ private EventResponse fetchMockWithEventResponse(String fileName) throws IOExcep private Response fetchMockVisit() throws IOException { ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule()); - return mapper.readValue(getFileAsIOStream("mocks/visits_limit_500.json"), Response.class); + return mapper.readValue(getFileAsIOStream("mocks/get_visits_200_limit_500.json"), Response.class); } /** diff --git a/src/test/resources/mocks/get_event.json b/src/test/resources/mocks/get_event.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/get_event.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - diff --git a/src/test/resources/mocks/get_event_200.json b/src/test/resources/mocks/get_event_200.json new file mode 100644 index 0000000..23fe4d4 --- /dev/null +++ b/src/test/resources/mocks/get_event_200.json @@ -0,0 +1,281 @@ +{ + "products": { + "identification": { + "data": { + "visitorId": "Ibk1527CUFmcnjLwIs4A9", + "requestId": "1708102555327.NLOjmg", + "incognito": true, + "linkedId": "somelinkedId", + "tag": {}, + "time": "2019-05-21T16:40:13Z", + "timestamp": 1582299576512, + "url": "https://www.example.com/login", + "ip": "61.127.217.15", + "ipLocation": { + "accuracyRadius": 10, + "latitude": 49.982, + "longitude": 36.2566, + "postalCode": "61202", + "timezone": "Europe/Dusseldorf", + "city": { + "name": "Dusseldorf" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "63", + "name": "North Rhine-Westphalia" + } + ] + }, + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "74", + "browserFullVersion": "74.0.3729", + "os": "Windows", + "osVersion": "7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." + }, + "confidence": { + "score": 0.97 + }, + "visitorFound": false, + "firstSeenAt": { + "global": "2022-03-16T11:26:45.362Z", + "subscription": "2022-03-16T11:31:01.101Z" + }, + "lastSeenAt": { + "global": null, + "subscription": null + } + } + }, + "botd": { + "data": { + "bot": { + "result": "notDetected" + }, + "url": "https://www.example.com/login", + "ip": "61.127.217.15", + "time": "2019-05-21T16:40:13Z", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 YaBrowser/24.1.0.0 Safari/537.36", + "requestId": "1708102555327.NLOjmg" + } + }, + "rootApps": { + "data": { + "result": false + } + }, + "emulator": { + "data": { + "result": false + } + }, + "ipInfo": { + "data": { + "v4": { + "address": "94.142.239.124", + "geolocation": { + "accuracyRadius": 20, + "latitude": 50.05, + "longitude": 14.4, + "postalCode": "150 00", + "timezone": "Europe/Prague", + "city": { + "name": "Prague" + }, + "country": { + "code": "CZ", + "name": "Czechia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "10", + "name": "Hlavni mesto Praha" + } + ] + }, + "asn": { + "asn": "7922", + "name": "COMCAST-7922", + "network": "73.136.0.0/13" + }, + "datacenter": { + "result": true, + "name": "DediPath" + } + }, + "v6": { + "address": "2001:db8:3333:4444:5555:6666:7777:8888", + "geolocation": { + "accuracyRadius": 5, + "latitude": 49.982, + "longitude": 36.2566, + "postalCode": "10112", + "timezone": "Europe/Berlin", + "city": { + "name": "Berlin" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "BE", + "name": "Land Berlin" + } + ] + }, + "asn": { + "asn": "6805", + "name": "Telefonica Germany", + "network": "2a02:3100::/24" + }, + "datacenter": { + "result": false, + "name": "" + } + } + } + }, + "ipBlocklist": { + "data": { + "result": false, + "details": { + "emailSpam": false, + "attackSource": false + } + } + }, + "tor": { + "data": { + "result": false + } + }, + "vpn": { + "data": { + "result": false, + "originTimezone": "Europe/Berlin", + "originCountry": "unknown", + "methods": { + "timezoneMismatch": false, + "publicVPN": false, + "auxiliaryMobile": false + } + } + }, + "proxy": { + "data": { + "result": false + } + }, + "incognito": { + "data": { + "result": false + } + }, + "tampering": { + "data": { + "result": false, + "anomalyScore": 0.1955 + } + }, + "clonedApp": { + "data": { + "result": false + } + }, + "factoryReset": { + "data": { + "time": "1970-01-01T00:00:00Z", + "timestamp": 0 + } + }, + "jailbroken": { + "data": { + "result": false + } + }, + "frida": { + "data": { + "result": false + } + }, + "privacySettings": { + "data": { + "result": false + } + }, + "virtualMachine": { + "data": { + "result": false + } + }, + "rawDeviceAttributes": { + "data": { + "architecture": { + "value": 127 + }, + "audio": { + "value": 35.73832903057337 + }, + "canvas": { + "value": { + "Winding": true, + "Geometry": "4dce9d6017c3e0c052a77252f29f2b1c", + "Text": "dd2474a56ff78c1de3e7a07070ba3b7d" + } + }, + "colorDepth": { + "value": 30 + }, + "colorGamut": { + "value": "p3" + }, + "contrast": { + "value": 0 + }, + "cookiesEnabled": { + "value": true + }, + "cpuClass": {}, + "fonts": { + "value": [ + "Arial Unicode MS", + "Gill Sans", + "Helvetica Neue", + "Menlo" + ] + } + } + }, + "highActivity": { + "data": { + "result": false + } + }, + "locationSpoofing": { + "data": { + "result": false + } + } + } +} diff --git a/src/test/resources/mocks/get_event_200_all_errors.json b/src/test/resources/mocks/get_event_200_all_errors.json new file mode 100644 index 0000000..8245e5d --- /dev/null +++ b/src/test/resources/mocks/get_event_200_all_errors.json @@ -0,0 +1,140 @@ +{ + "products": { + "identification": { + "error": { + "code": "Failed", + "message": "failed" + } + }, + "botd": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "ipInfo": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "incognito": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "rootApps": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "clonedApp": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "factoryReset": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "jailbroken": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "frida": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "emulator": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "ipBlocklist": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "tor": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "vpn": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "proxy": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "privacySettings": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "virtualMachine": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "tampering": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "rawDeviceAttributes": { + "data": { + "audio": { + "error": { + "name": "Error", + "message": "internal server error" + } + }, + "canvas": { + "error": { + "name": "Error", + "message": "internal server error" + } + } + } + }, + "locationSpoofing": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "highActivity": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "suspectScore": { + "error": { + "code": "Failed", + "message": "internal server error" + } + } + } +} diff --git a/src/test/resources/mocks/get_event_200_botd_failed_error.json b/src/test/resources/mocks/get_event_200_botd_failed_error.json new file mode 100644 index 0000000..f142f7b --- /dev/null +++ b/src/test/resources/mocks/get_event_200_botd_failed_error.json @@ -0,0 +1,68 @@ +{ + "products": { + "identification": { + "data": { + "visitorId": "Ibk1527CUFmcnjLwIs4A9", + "requestId": "0KSh65EnVoB85JBmloQK", + "incognito": true, + "linkedId": "somelinkedId", + "time": "2019-05-21T16:40:13Z", + "tag": {}, + "timestamp": 1582299576512, + "url": "https://www.example.com/login", + "ip": "61.127.217.15", + "ipLocation": { + "accuracyRadius": 10, + "latitude": 49.982, + "longitude": 36.2566, + "postalCode": "61202", + "timezone": "Europe/Dusseldorf", + "city": { + "name": "Dusseldorf" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "subdivisions": [ + { + "isoCode": "63", + "name": "North Rhine-Westphalia" + } + ] + }, + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "74", + "browserFullVersion": "74.0.3729", + "os": "Windows", + "osVersion": "7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." + }, + "confidence": { + "score": 0.97 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-03-16T11:26:45.362Z", + "subscription": "2022-03-16T11:31:01.101Z" + }, + "lastSeenAt": { + "global": "2022-03-16T11:28:34.023Z", + "subscription": null + } + } + }, + "botd": { + "error": { + "code": "Failed", + "message": "internal server error" + } + } + } +} diff --git a/src/test/resources/mocks/get_event_200_botd_too_many_requests_error.json b/src/test/resources/mocks/get_event_200_botd_too_many_requests_error.json new file mode 100644 index 0000000..7928828 --- /dev/null +++ b/src/test/resources/mocks/get_event_200_botd_too_many_requests_error.json @@ -0,0 +1,68 @@ +{ + "products": { + "identification": { + "data": { + "visitorId": "Ibk1527CUFmcnjLwIs4A9", + "requestId": "0KSh65EnVoB85JBmloQK", + "incognito": true, + "linkedId": "somelinkedId", + "tag": {}, + "time": "2019-05-21T16:40:13Z", + "timestamp": 1582299576512, + "url": "https://www.example.com/login", + "ip": "61.127.217.15", + "ipLocation": { + "accuracyRadius": 10, + "latitude": 49.982, + "longitude": 36.2566, + "postalCode": "61202", + "timezone": "Europe/Dusseldorf", + "city": { + "name": "Dusseldorf" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "subdivisions": [ + { + "isoCode": "63", + "name": "North Rhine-Westphalia" + } + ] + }, + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "74", + "browserFullVersion": "74.0.3729", + "os": "Windows", + "osVersion": "7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." + }, + "confidence": { + "score": 0.97 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-03-16T11:26:45.362Z", + "subscription": "2022-03-16T11:31:01.101Z" + }, + "lastSeenAt": { + "global": "2022-03-16T11:28:34.023Z", + "subscription": null + } + } + }, + "botd": { + "error": { + "code": "TooManyRequests", + "message": "too many requests" + } + } + } +} diff --git a/src/test/resources/mocks/get_event_200_extra_fields.json b/src/test/resources/mocks/get_event_200_extra_fields.json new file mode 100644 index 0000000..03e50c0 --- /dev/null +++ b/src/test/resources/mocks/get_event_200_extra_fields.json @@ -0,0 +1,86 @@ +{ + "products": { + "identification": { + "data": { + "visitorId": "Ibk1527CUFmcnjLwIs4A9", + "requestId": "0KSh65EnVoB85JBmloQK", + "incognito": true, + "linkedId": "somelinkedId", + "time": "2019-05-21T16:40:13Z", + "timestamp": 1582299576512, + "url": "https://www.example.com/login", + "ip": "61.127.217.15", + "ipLocation": { + "accuracyRadius": 10, + "latitude": 49.982, + "longitude": 36.2566, + "postalCode": "61202", + "timezone": "Europe/Dusseldorf", + "city": { + "name": "Dusseldorf" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "subdivisions": [ + { + "isoCode": "63", + "name": "North Rhine-Westphalia" + } + ] + }, + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "74", + "browserFullVersion": "74.0.3729", + "os": "Windows", + "osVersion": "7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." + }, + "confidence": { + "score": 0.97 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-03-16T11:26:45.362Z", + "subscription": "2022-03-16T11:31:01.101Z" + }, + "lastSeenAt": { + "global": "2022-03-16T11:28:34.023Z", + "subscription": null + } + } + }, + "botd": { + "data": { + "bot": { + "result": "notDetected" + }, + "url": "https://www.example.com/login", + "ip": "61.127.217.15", + "time": "2019-05-21T16:40:13Z" + } + }, + "product3": { + "data": { + "result": false + } + }, + "product4": { + "data": { + "result": true, + "details": { + "detail1": true, + "detail2": "detail description", + "detail3": 42 + } + } + } + } +} diff --git a/src/test/resources/mocks/get_event_200_identification_failed_error.json b/src/test/resources/mocks/get_event_200_identification_failed_error.json new file mode 100644 index 0000000..5b42c57 --- /dev/null +++ b/src/test/resources/mocks/get_event_200_identification_failed_error.json @@ -0,0 +1,23 @@ +{ + "products": { + "identification": { + "error": { + "code": "Failed", + "message": "failed" + } + }, + "botd": { + "data": { + "bot": { + "result": "bad", + "type": "headlessChrome" + }, + "url": "https://example.com/login", + "ip": "94.60.143.223", + "time": "2024-02-23T10:20:25.287Z", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/121.0.6167.57 Safari/537.36", + "requestId": "1708683625245.tuJ4nD" + } + } + } +} diff --git a/src/test/resources/mocks/get_event_200_identification_too_many_requests_error.json b/src/test/resources/mocks/get_event_200_identification_too_many_requests_error.json new file mode 100644 index 0000000..deacdca --- /dev/null +++ b/src/test/resources/mocks/get_event_200_identification_too_many_requests_error.json @@ -0,0 +1,23 @@ +{ + "products": { + "identification": { + "error": { + "code": "429 Too Many Requests", + "message": "too many requests" + } + }, + "botd": { + "data": { + "bot": { + "result": "bad", + "type": "headlessChrome" + }, + "url": "https://example.com/login", + "ip": "94.60.143.223", + "time": "2024-02-23T10:20:25.287Z", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/121.0.6167.57 Safari/537.36", + "requestId": "1708683625245.tuJ4nD" + } + } + } +} diff --git a/src/test/resources/mocks/get_event_all_errors.json b/src/test/resources/mocks/get_event_all_errors.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/get_event_all_errors.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - diff --git a/src/test/resources/mocks/get_event_botd_failed_error.json b/src/test/resources/mocks/get_event_botd_failed_error.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/get_event_botd_failed_error.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - diff --git a/src/test/resources/mocks/get_event_botd_too_many_requests_error.json b/src/test/resources/mocks/get_event_botd_too_many_requests_error.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/get_event_botd_too_many_requests_error.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - diff --git a/src/test/resources/mocks/get_event_extra_fields.json b/src/test/resources/mocks/get_event_extra_fields.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/get_event_extra_fields.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - diff --git a/src/test/resources/mocks/get_event_identification_failed_error.json b/src/test/resources/mocks/get_event_identification_failed_error.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/get_event_identification_failed_error.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - diff --git a/src/test/resources/mocks/get_event_identification_too_many_requests_error.json b/src/test/resources/mocks/get_event_identification_too_many_requests_error.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/get_event_identification_too_many_requests_error.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - diff --git a/src/test/resources/mocks/get_visits_200_limit_500.json b/src/test/resources/mocks/get_visits_200_limit_500.json new file mode 100644 index 0000000..f045133 --- /dev/null +++ b/src/test/resources/mocks/get_visits_200_limit_500.json @@ -0,0 +1,3092 @@ +{ + "visitorId": "AcxioeQKffpXF8iGQK3P", + "visits": [ + { + "requestId": "1655373780901.HhjRFX", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "188.242.36.107", + "ipLocation": { + "accuracyRadius": 5, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1655373780912, + "time": "2022-06-16T10:03:00Z", + "url": "https://fingerprint.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-16T05:27:30.578Z", + "subscription": "2022-06-16T05:27:30.578Z" + } + }, + { + "requestId": "1655357250568.vqejDF", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "82.118.30.62", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 50.0805, + "longitude": 14.467, + "postalCode": "130 00", + "timezone": "Europe/Prague", + "city": { + "name": "Prague" + }, + "country": { + "code": "CZ", + "name": "Czechia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "10", + "name": "Hlavni mesto Praha" + } + ] + }, + "timestamp": 1655357250578, + "time": "2022-06-16T05:27:30Z", + "url": "https://fingerprint.com/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-15T15:28:33.479Z", + "subscription": "2022-06-15T15:28:33.479Z" + } + }, + { + "requestId": "1655306913474.kFQsQx", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "82.118.30.68", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 50.0805, + "longitude": 14.467, + "postalCode": "130 00", + "timezone": "Europe/Prague", + "city": { + "name": "Prague" + }, + "country": { + "code": "CZ", + "name": "Czechia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "10", + "name": "Hlavni mesto Praha" + } + ] + }, + "timestamp": 1655306913479, + "time": "2022-06-15T15:28:33Z", + "url": "https://fingerprint.com/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-15T08:47:34.677Z", + "subscription": "2022-06-15T08:47:34.677Z" + } + }, + { + "requestId": "1655282854672.vz4ZlN", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "82.118.30.91", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 50.0805, + "longitude": 14.467, + "postalCode": "130 00", + "timezone": "Europe/Prague", + "city": { + "name": "Prague" + }, + "country": { + "code": "CZ", + "name": "Czechia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "10", + "name": "Hlavni mesto Praha" + } + ] + }, + "timestamp": 1655282854677, + "time": "2022-06-15T08:47:34Z", + "url": "https://fingerprint.com/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-14T14:19:42.753Z", + "subscription": "2022-06-14T14:19:42.753Z" + } + }, + { + "requestId": "1655216382743.RDRa4h", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "188.242.36.107", + "ipLocation": { + "accuracyRadius": 5, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1655216382753, + "time": "2022-06-14T14:19:42Z", + "url": "https://fingerprint.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-13T07:53:19.878Z", + "subscription": "2022-06-13T07:53:19.878Z" + } + }, + { + "requestId": "1655106799870.C8m8hR", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.137", + "timestamp": 1655106799878, + "time": "2022-06-13T07:53:19Z", + "url": "https://fingerprint.com/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-07T12:54:35.413Z", + "subscription": "2022-06-07T12:54:35.413Z" + } + }, + { + "requestId": "1654606475406.2uXCJx", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.157", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651 + }, + "timestamp": 1654606475413, + "time": "2022-06-07T12:54:35Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-07T09:37:57.43Z", + "subscription": "2022-06-07T09:37:57.43Z" + } + }, + { + "requestId": "1654594677423.pCHmKJ", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "188.242.36.107", + "ipLocation": { + "timezone": "Europe/Moscow" + }, + "timestamp": 1654594677430, + "time": "2022-06-07T09:37:57Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-07T09:37:50.109Z", + "subscription": "2022-06-07T09:37:50.109Z" + } + }, + { + "requestId": "1654594670097.Lmodmj", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "188.242.36.107", + "ipLocation": { + "accuracyRadius": 5, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1654594670109, + "time": "2022-06-07T09:37:50Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-07T08:31:31.9Z", + "subscription": "2022-06-07T08:31:31.9Z" + } + }, + { + "requestId": "1654590691894.aCYqYE", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "188.242.36.107", + "ipLocation": { + "accuracyRadius": 5, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1654590691900, + "time": "2022-06-07T08:31:31Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-06T09:05:25.954Z", + "subscription": "2022-06-06T09:05:25.954Z" + } + }, + { + "requestId": "1654506325946.ijIwzu", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1654506325954, + "time": "2022-06-06T09:05:25Z", + "url": "https://fingerprintcom.netlify.app/blog/name-change/", + "tag": {}, + "confidence": { + "score": 0.99 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-02T16:58:53.635Z", + "subscription": "2022-06-02T16:58:53.635Z" + } + }, + { + "requestId": "1654189133629.0V1gtF", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1654189133635, + "time": "2022-06-02T16:58:53Z", + "url": "https://fingerprintcom.netlify.app/blog/name-change/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-06-02T16:58:51.483Z", + "subscription": "2022-06-02T16:58:51.483Z" + } + }, + { + "requestId": "1654189131472.r49Bbh", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "102", + "browserFullVersion": "102.0.5005", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1654189131483, + "time": "2022-06-02T16:58:51Z", + "url": "https://fingerprintcom.netlify.app/", + "tag": {}, + "confidence": { + "score": 0.95 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-27T14:52:26.624Z", + "subscription": "2022-05-27T14:52:26.624Z" + } + }, + { + "requestId": "1653663146617.o8KpJO", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1653663146624, + "time": "2022-05-27T14:52:26Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-20T09:50:06.7Z", + "subscription": "2022-05-20T09:50:06.7Z" + } + }, + { + "requestId": "1653040206694.Q5Csig", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1653040206700, + "time": "2022-05-20T09:50:06Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-19T16:27:38.029Z", + "subscription": "2022-05-19T16:27:38.029Z" + } + }, + { + "requestId": "1652977658020.xbfYhA", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1652977658029, + "time": "2022-05-19T16:27:38Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-17T15:09:32.666Z", + "subscription": "2022-05-17T15:09:32.666Z" + } + }, + { + "requestId": "1652800172657.xA22Pd", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1652800172666, + "time": "2022-05-17T15:09:32Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-17T14:18:17.631Z", + "subscription": "2022-05-17T14:18:17.631Z" + } + }, + { + "requestId": "1652797097626.faAMJO", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1652797097631, + "time": "2022-05-17T14:18:17Z", + "url": "https://fingerprintjs.com/careers/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-17T10:16:04.809Z", + "subscription": "2022-05-17T10:16:04.809Z" + } + }, + { + "requestId": "1652782564800.MWH0GO", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1652782564809, + "time": "2022-05-17T10:16:04Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-16T06:47:01.511Z", + "subscription": "2022-05-16T06:47:01.511Z" + } + }, + { + "requestId": "1652683621505.1tOjuc", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "217.150.54.233", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1652683621511, + "time": "2022-05-16T06:47:01Z", + "url": "https://fingerprintjs.com/products/bot-detection/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-16T06:45:49.586Z", + "subscription": "2022-05-16T06:45:49.586Z" + } + }, + { + "requestId": "1652683586557.67Faeg", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", + "botProbability": 0 + }, + "incognito": true, + "ip": "217.150.54.233", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1652683586562, + "time": "2022-05-16T06:46:26Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 0.94 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-16T06:45:49.586Z", + "subscription": "2022-05-16T06:45:49.586Z" + } + }, + { + "requestId": "1652683549513.aVRqEP", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "101", + "browserFullVersion": "101.0.4951", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "217.150.54.233", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1652683549586, + "time": "2022-05-16T06:45:49Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-05T10:11:25.96Z", + "subscription": "2022-05-05T10:11:25.96Z" + } + }, + { + "requestId": "1651745485951.Oj68me", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1651745485960, + "time": "2022-05-05T10:11:25Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-05T09:33:40.155Z", + "subscription": "2022-05-05T09:33:40.155Z" + } + }, + { + "requestId": "1651743220004.W02rhx", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1651743220155, + "time": "2022-05-05T09:33:40Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-05-03T15:26:32.826Z", + "subscription": "2022-05-03T15:26:32.826Z" + } + }, + { + "requestId": "1651591592822.Is9u93", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.157", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1651591592826, + "time": "2022-05-03T15:26:32Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-29T13:23:37.049Z", + "subscription": "2022-04-29T13:23:37.049Z" + } + }, + { + "requestId": "1651238617044.rMVPGS", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "89.38.224.165", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 44.804, + "longitude": 20.4651, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1651238617049, + "time": "2022-04-29T13:23:37Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-29T10:37:53.333Z", + "subscription": "2022-04-29T10:37:53.333Z" + } + }, + { + "requestId": "1651228673329.QZI2Cu", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "188.242.36.107", + "ipLocation": { + "accuracyRadius": 5, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1651228673333, + "time": "2022-04-29T10:37:53Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-28T13:58:06.323Z", + "subscription": "2022-04-28T13:58:06.323Z" + } + }, + { + "requestId": "1651154286221.YvuOCP", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "84.247.59.113", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 50.0971, + "longitude": 8.5952, + "postalCode": "65933", + "timezone": "Europe/Berlin", + "city": { + "name": "Frankfurt am Main" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "HE", + "name": "Hesse" + } + ] + }, + "timestamp": 1651154286323, + "time": "2022-04-28T13:58:06Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-28T12:16:02.564Z", + "subscription": "2022-04-28T12:16:02.564Z" + } + }, + { + "requestId": "1651148162556.dySgif", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "84.247.59.113", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 50.0971, + "longitude": 8.5952, + "postalCode": "65933", + "timezone": "Europe/Berlin", + "city": { + "name": "Frankfurt am Main" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "HE", + "name": "Hesse" + } + ] + }, + "timestamp": 1651148162564, + "time": "2022-04-28T12:16:02Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-28T11:57:13.267Z", + "subscription": "2022-04-28T11:57:13.267Z" + } + }, + { + "requestId": "1651147033260.SxmFvL", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "84.247.59.146", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 50.0971, + "longitude": 8.5952, + "postalCode": "65933", + "timezone": "Europe/Berlin", + "city": { + "name": "Frankfurt am Main" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "HE", + "name": "Hesse" + } + ] + }, + "timestamp": 1651147033267, + "time": "2022-04-28T11:57:13Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-28T11:57:06.24Z", + "subscription": "2022-04-28T11:57:06.24Z" + } + }, + { + "requestId": "1651147026139.aAZ8TO", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "84.247.59.146", + "ipLocation": { + "accuracyRadius": 20, + "latitude": 50.0971, + "longitude": 8.5952, + "postalCode": "65933", + "timezone": "Europe/Berlin", + "city": { + "name": "Frankfurt am Main" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "HE", + "name": "Hesse" + } + ] + }, + "timestamp": 1651147026240, + "time": "2022-04-28T11:57:06Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-26T14:10:31.908Z", + "subscription": "2022-04-26T14:10:31.908Z" + } + }, + { + "requestId": "1650982231903.eG0b6v", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.105", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650982231908, + "time": "2022-04-26T14:10:31Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-26T11:43:37.373Z", + "subscription": "2022-04-26T11:43:37.373Z" + } + }, + { + "requestId": "1650973417360.xupFFD", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.99", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650973417373, + "time": "2022-04-26T11:43:37Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-26T11:43:30.111Z", + "subscription": "2022-04-26T11:43:30.111Z" + } + }, + { + "requestId": "1650973410104.AQD4qu", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.99", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650973410111, + "time": "2022-04-26T11:43:30Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-26T11:22:34.148Z", + "subscription": "2022-04-26T11:22:34.148Z" + } + }, + { + "requestId": "1650972154133.lSWE8a", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.96", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650972154148, + "time": "2022-04-26T11:22:34Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-26T11:22:03.83Z", + "subscription": "2022-04-26T11:22:03.83Z" + } + }, + { + "requestId": "1650972123824.xk8MUR", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.96", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650972123830, + "time": "2022-04-26T11:22:03Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-25T09:46:15.458Z", + "subscription": "2022-04-25T09:46:15.458Z" + } + }, + { + "requestId": "1650879975452.kfuowM", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "188.242.36.107", + "ipLocation": { + "accuracyRadius": 5, + "latitude": 59.8983, + "longitude": 30.2618, + "postalCode": "190924", + "timezone": "Europe/Moscow", + "city": { + "name": "St Petersburg" + }, + "country": { + "code": "RU", + "name": "Russia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "SPE", + "name": "St.-Petersburg" + } + ] + }, + "timestamp": 1650879975458, + "time": "2022-04-25T09:46:15Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-22T16:51:44.816Z", + "subscription": "2022-04-22T16:51:44.816Z" + } + }, + { + "requestId": "1650646304808.xQbAju", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.227", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650646304816, + "time": "2022-04-22T16:51:44Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-21T11:43:33.116Z", + "subscription": "2022-04-21T11:43:33.116Z" + } + }, + { + "requestId": "1650541413105.leAPLz", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.89", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650541413116, + "time": "2022-04-21T11:43:33Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-20T17:11:54.717Z", + "subscription": "2022-04-20T17:11:54.717Z" + } + }, + { + "requestId": "1650474714710.M1IGsl", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.111", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650474714717, + "time": "2022-04-20T17:11:54Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-20T17:11:47.217Z", + "subscription": "2022-04-20T17:11:47.217Z" + } + }, + { + "requestId": "1650474707211.CEUuZk", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.111", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650474707217, + "time": "2022-04-20T17:11:47Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-20T17:11:12.076Z", + "subscription": "2022-04-20T17:11:12.076Z" + } + }, + { + "requestId": "1650474672071.Pz4WsK", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.111", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650474672076, + "time": "2022-04-20T17:11:12Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T12:29:06.692Z", + "subscription": "2022-04-19T12:29:06.692Z" + } + }, + { + "requestId": "1650371346684.1d7sgv", + "browserDetails": { + "browserName": "Chrome Mobile", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Android", + "osVersion": "6.0", + "device": "Nexus 5", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.198", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650371346692, + "time": "2022-04-19T12:29:06Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T12:29:02.15Z", + "subscription": "2022-04-19T12:29:02.15Z" + } + }, + { + "requestId": "1650371342145.oWyfRx", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.198", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650371342150, + "time": "2022-04-19T12:29:02Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T11:35:14.729Z", + "subscription": "2022-04-19T11:35:14.729Z" + } + }, + { + "requestId": "1650368114723.YEXcHI", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.206", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650368114729, + "time": "2022-04-19T11:35:14Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T11:13:33.107Z", + "subscription": "2022-04-19T11:13:33.107Z" + } + }, + { + "requestId": "1650366813101.SvUZC1", + "browserDetails": { + "browserName": "Chrome Mobile", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Android", + "osVersion": "6.0", + "device": "Nexus 5", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.204", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650366813107, + "time": "2022-04-19T11:13:33Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T11:13:28.453Z", + "subscription": "2022-04-19T11:13:28.453Z" + } + }, + { + "requestId": "1650366808426.Hy6j7v", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.204", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650366808453, + "time": "2022-04-19T11:13:28Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T11:07:05.19Z", + "subscription": "2022-04-19T11:07:05.19Z" + } + }, + { + "requestId": "1650366425184.xvYkdr", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.204", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650366425190, + "time": "2022-04-19T11:07:05Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T11:07:00.483Z", + "subscription": "2022-04-19T11:07:00.483Z" + } + }, + { + "requestId": "1650366420377.VR5pDX", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.204", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650366420483, + "time": "2022-04-19T11:07:00Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T10:37:45.279Z", + "subscription": "2022-04-19T10:37:45.279Z" + } + }, + { + "requestId": "1650364665274.qq31O4", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.172", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650364665279, + "time": "2022-04-19T10:37:45Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T10:22:58.87Z", + "subscription": "2022-04-19T10:22:58.87Z" + } + }, + { + "requestId": "1650363778864.tsVBjO", + "browserDetails": { + "browserName": "Chrome Mobile", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Android", + "osVersion": "6.0", + "device": "Nexus 5", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.210", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650363778870, + "time": "2022-04-19T10:22:58Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T10:22:46.894Z", + "subscription": "2022-04-19T10:22:46.894Z" + } + }, + { + "requestId": "1650363766889.KuVDpm", + "browserDetails": { + "browserName": "Chrome Mobile", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Android", + "osVersion": "6.0", + "device": "Nexus 5", + "userAgent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Mobile Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.210", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650363766894, + "time": "2022-04-19T10:22:46Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T10:07:01.528Z", + "subscription": "2022-04-19T10:07:01.528Z" + } + }, + { + "requestId": "1650362821521.dXH2Ce", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.180", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650362821528, + "time": "2022-04-19T10:07:01Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-19T10:02:42.46Z", + "subscription": "2022-04-19T10:02:42.46Z" + } + }, + { + "requestId": "1650362562448.a5cPLU", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.180", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650362562460, + "time": "2022-04-19T10:02:42Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-18T17:06:30.834Z", + "subscription": "2022-04-18T17:06:30.834Z" + } + }, + { + "requestId": "1650301590829.YXGX7h", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.195", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650301590834, + "time": "2022-04-18T17:06:30Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-18T12:23:30.446Z", + "subscription": "2022-04-18T12:23:30.446Z" + } + }, + { + "requestId": "1650284610441.lJrX4M", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "45.86.200.179", + "ipLocation": { + "accuracyRadius": 1000, + "latitude": 52.3824, + "longitude": 4.8995, + "timezone": "Europe/Amsterdam", + "country": { + "code": "NL", + "name": "Netherlands" + }, + "continent": { + "code": "EU", + "name": "Europe" + } + }, + "timestamp": 1650284610446, + "time": "2022-04-18T12:23:30Z", + "url": "https://fingerprintjs.com/blog/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-04-06T14:53:00.526Z", + "subscription": "2022-04-06T14:53:00.526Z" + } + }, + { + "requestId": "1649256780522.WAXWf2", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "109.245.35.200", + "ipLocation": { + "accuracyRadius": 50, + "latitude": 44.8166, + "longitude": 20.4721, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1649256780526, + "time": "2022-04-06T14:53:00Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-03-18T11:08:35.698Z", + "subscription": "2022-03-18T11:08:35.698Z" + } + }, + { + "requestId": "1649256780520.RRC4PR", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "100", + "browserFullVersion": "100.0.4896", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "109.245.35.200", + "ipLocation": { + "accuracyRadius": 50, + "latitude": 44.8166, + "longitude": 20.4721, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1649256780525, + "time": "2022-04-06T14:53:00Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-03-18T11:08:35.698Z", + "subscription": "2022-03-18T11:08:35.698Z" + } + }, + { + "requestId": "1647601715689.iocXfW", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "98", + "browserFullVersion": "98.0.4758", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "178.223.21.183", + "ipLocation": { + "accuracyRadius": 50, + "latitude": 44.8166, + "longitude": 20.4721, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1647601715698, + "time": "2022-03-18T11:08:35Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-03-16T08:21:23.62Z", + "subscription": "2022-03-16T08:21:23.62Z" + } + }, + { + "requestId": "1647418883615.Vck2NA", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "98", + "browserFullVersion": "98.0.4758", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "87.116.165.97", + "ipLocation": { + "accuracyRadius": 50, + "latitude": 44.8166, + "longitude": 20.4721, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1647418883620, + "time": "2022-03-16T08:21:23Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-03-16T08:21:18.398Z", + "subscription": "2022-03-16T08:21:18.398Z" + } + }, + { + "requestId": "1647418878391.NZDmht", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "98", + "browserFullVersion": "98.0.4758", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "87.116.165.97", + "ipLocation": { + "accuracyRadius": 50, + "latitude": 44.8166, + "longitude": 20.4721, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1647418878398, + "time": "2022-03-16T08:21:18Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-03-15T11:46:51.858Z", + "subscription": "2022-03-15T11:46:51.858Z" + } + }, + { + "requestId": "1647344811836.RvNkL5", + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "98", + "browserFullVersion": "98.0.4758", + "os": "Mac OS X", + "osVersion": "10.15.7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36", + "botProbability": 0 + }, + "incognito": false, + "ip": "87.116.165.97", + "ipLocation": { + "accuracyRadius": 50, + "latitude": 44.8166, + "longitude": 20.4721, + "timezone": "Europe/Belgrade", + "city": { + "name": "Belgrade" + }, + "country": { + "code": "RS", + "name": "Serbia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "00", + "name": "Belgrade" + } + ] + }, + "timestamp": 1647344811858, + "time": "2022-03-15T11:46:51Z", + "url": "https://fingerprintjs.com/", + "tag": {}, + "confidence": { + "score": 1 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-02-04T11:31:20Z", + "subscription": "2022-02-04T11:31:20Z" + }, + "lastSeenAt": { + "global": "2022-03-08T12:33:05.677Z", + "subscription": "2022-03-08T12:33:05.677Z" + } + } + ] +} diff --git a/src/test/resources/mocks/get_visits_429_too_many_requests_error.json b/src/test/resources/mocks/get_visits_429_too_many_requests_error.json new file mode 100644 index 0000000..00d00f2 --- /dev/null +++ b/src/test/resources/mocks/get_visits_429_too_many_requests_error.json @@ -0,0 +1,3 @@ +{ + "error": "too many requests" +} diff --git a/src/test/resources/mocks/visits_limit_500.json b/src/test/resources/mocks/visits_limit_500.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/visits_limit_500.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - diff --git a/src/test/resources/mocks/visits_too_many_requests_error.json b/src/test/resources/mocks/visits_too_many_requests_error.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/visits_too_many_requests_error.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- - From 80077fe7ec9ecbe074c9263d49c186d493e3d868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Tue, 27 Feb 2024 15:13:19 +0800 Subject: [PATCH 10/11] test: fix test --- src/test/java/com/fingerprint/api/FingerprintApiTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/fingerprint/api/FingerprintApiTest.java b/src/test/java/com/fingerprint/api/FingerprintApiTest.java index 321afef..fa838c6 100644 --- a/src/test/java/com/fingerprint/api/FingerprintApiTest.java +++ b/src/test/java/com/fingerprint/api/FingerprintApiTest.java @@ -110,7 +110,7 @@ public void getEventTest() throws ApiException { LinkedHashMap canvasAttribute = (LinkedHashMap)response.getProducts().getRawDeviceAttributes().getData().get("canvas").getValue(); assertEquals(true, canvasAttribute.get("Winding")); assertEquals("4dce9d6017c3e0c052a77252f29f2b1c", canvasAttribute.get("Geometry")); - assertEquals("srgb", signalResponseRawDeviceAttributes.getData().get("colorGamut").getValue()); + assertEquals("p3", signalResponseRawDeviceAttributes.getData().get("colorGamut").getValue()); assertEquals(true, signalResponseRawDeviceAttributes.getData().get("cookiesEnabled").getValue()); } From a704324d9a5869547c710f144690c5c87391cadc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Thu, 29 Feb 2024 16:32:45 +0800 Subject: [PATCH 11/11] chore: remove unused example --- scripts/sync.sh | 1 - .../resources/mocks/visits_403_error.json | 89 ------------------- 2 files changed, 90 deletions(-) delete mode 100644 src/test/resources/mocks/visits_403_error.json diff --git a/scripts/sync.sh b/scripts/sync.sh index e34e8e4..b7250e0 100755 --- a/scripts/sync.sh +++ b/scripts/sync.sh @@ -4,7 +4,6 @@ curl -o ./res/fingerprint-server-api.yaml https://fingerprintjs.github.io/finger examplesList=( 'get_visits_200_limit_500.json' - 'visits_403_error.json' 'get_visits_429_too_many_requests_error.json' 'get_event_200_extra_fields.json' 'get_event_200.json' diff --git a/src/test/resources/mocks/visits_403_error.json b/src/test/resources/mocks/visits_403_error.json deleted file mode 100644 index 5b10050..0000000 --- a/src/test/resources/mocks/visits_403_error.json +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - Page not found · GitHub Pages - - - - -
- -

404

-

File not found

- -

- The site configured at this address does not - contain the requested file. -

- -

- If this is your site, make sure that the filename case matches the URL - as well as any file permissions.
- For root URLs (like http://example.com/) you must provide an - index.html file. -

- -

- Read the full documentation - for more information about using GitHub Pages. -

- - - - - - -
- -