diff --git a/README.md b/README.md index 333c377..6c971b5 100644 --- a/README.md +++ b/README.md @@ -220,6 +220,7 @@ Class | Method | HTTP request | Description - [ErrorEvent404ResponseError](docs/ErrorEvent404ResponseError.md) - [ErrorVisits403](docs/ErrorVisits403.md) - [EventResponse](docs/EventResponse.md) + - [HighActivityResult](docs/HighActivityResult.md) - [IPLocation](docs/IPLocation.md) - [IPLocationCity](docs/IPLocationCity.md) - [IdentificationError](docs/IdentificationError.md) @@ -229,6 +230,7 @@ Class | Method | HTTP request | Description - [IpInfoResultV4](docs/IpInfoResultV4.md) - [IpInfoResultV6](docs/IpInfoResultV6.md) - [Location](docs/Location.md) + - [LocationSpoofingResult](docs/LocationSpoofingResult.md) - [ManyRequestsResponse](docs/ManyRequestsResponse.md) - [ProductError](docs/ProductError.md) - [ProductsResponse](docs/ProductsResponse.md) @@ -247,12 +249,14 @@ Class | Method | HTTP request | Description - [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) diff --git a/docs/HighActivityResult.md b/docs/HighActivityResult.md new file mode 100644 index 0000000..aa72da2 --- /dev/null +++ b/docs/HighActivityResult.md @@ -0,0 +1,14 @@ + + +# HighActivityResult + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**result** | **Boolean** | Flag indicating whether the request came from a high activity visitor. | [optional] | +|**dailyRequests** | [**BigDecimal**](BigDecimal.md) | Number of requests from the same visitor in the previous day. | [optional] | + + + diff --git a/docs/IPLocation.md b/docs/IPLocation.md index 676dcfe..e1186a7 100644 --- a/docs/IPLocation.md +++ b/docs/IPLocation.md @@ -7,7 +7,7 @@ | Name | Type | Description | Notes | |------------ | ------------- | ------------- | -------------| -|**accuracyRadius** | **Integer** | | [optional] | +|**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] | diff --git a/docs/LocationSpoofingResult.md b/docs/LocationSpoofingResult.md new file mode 100644 index 0000000..2d5a25b --- /dev/null +++ b/docs/LocationSpoofingResult.md @@ -0,0 +1,13 @@ + + +# LocationSpoofingResult + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**result** | **Boolean** | Flag indicating whether the request came from a device with location spoofing enabled. | [optional] | + + + diff --git a/docs/ProductsResponse.md b/docs/ProductsResponse.md index 0c4e09b..263367d 100644 --- a/docs/ProductsResponse.md +++ b/docs/ProductsResponse.md @@ -25,6 +25,8 @@ Contains all information about the request identified by `requestId`, depending |**vpn** | [**SignalResponseVpn**](SignalResponseVpn.md) | | [optional] | |**proxy** | [**SignalResponseProxy**](SignalResponseProxy.md) | | [optional] | |**tampering** | [**SignalResponseTampering**](SignalResponseTampering.md) | | [optional] | +|**highActivity** | [**SignalResponseHighActivity**](SignalResponseHighActivity.md) | | [optional] | +|**locationSpoofing** | [**SignalResponseLocationSpoofing**](SignalResponseLocationSpoofing.md) | | [optional] | |**rawDeviceAttributes** | [**SignalResponseRawDeviceAttributes**](SignalResponseRawDeviceAttributes.md) | | [optional] | diff --git a/docs/ProductsResponseIdentificationData.md b/docs/ProductsResponseIdentificationData.md index d4f3be5..efaa0c9 100644 --- a/docs/ProductsResponseIdentificationData.md +++ b/docs/ProductsResponseIdentificationData.md @@ -21,7 +21,7 @@ |**visitorFound** | **Boolean** | Attribute represents if a visitor had been identified before. | | |**firstSeenAt** | [**SeenAt**](SeenAt.md) | | | |**lastSeenAt** | [**SeenAt**](SeenAt.md) | | | -|**visitorId** | **String** | String of 20 characters that uniquely identifies the visitor's browser. **Pro Plus:** If a bot is detected (`products.botd.bot.result != \"notDetected\"`), the `visitorId` value contains a placeholder string `BotDetected000000000`. | | +|**visitorId** | **String** | String of 20 characters that uniquely identifies the visitor's browser. | | diff --git a/docs/SignalResponseHighActivity.md b/docs/SignalResponseHighActivity.md new file mode 100644 index 0000000..97e0145 --- /dev/null +++ b/docs/SignalResponseHighActivity.md @@ -0,0 +1,14 @@ + + +# SignalResponseHighActivity + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**HighActivityResult**](HighActivityResult.md) | | [optional] | +|**error** | [**ProductError**](ProductError.md) | | [optional] | + + + diff --git a/docs/SignalResponseLocationSpoofing.md b/docs/SignalResponseLocationSpoofing.md new file mode 100644 index 0000000..23cbdd4 --- /dev/null +++ b/docs/SignalResponseLocationSpoofing.md @@ -0,0 +1,14 @@ + + +# SignalResponseLocationSpoofing + + +## Properties + +| Name | Type | Description | Notes | +|------------ | ------------- | ------------- | -------------| +|**data** | [**LocationSpoofingResult**](LocationSpoofingResult.md) | | [optional] | +|**error** | [**ProductError**](ProductError.md) | | [optional] | + + + diff --git a/docs/VpnResult.md b/docs/VpnResult.md index 3128dcd..da756a1 100644 --- a/docs/VpnResult.md +++ b/docs/VpnResult.md @@ -8,6 +8,7 @@ | 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] | diff --git a/docs/WebhookVisit.md b/docs/WebhookVisit.md index 4d868eb..71e4560 100644 --- a/docs/WebhookVisit.md +++ b/docs/WebhookVisit.md @@ -27,6 +27,8 @@ |**proxy** | [**WebhookSignalResponseProxy**](WebhookSignalResponseProxy.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] | +|**locationSpoofing** | [**LocationSpoofingResult**](LocationSpoofingResult.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 bdd5fc4..d5a61a2 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -182,6 +182,7 @@ paths: vpn: data: result: false + originTimezone: Europe/Berlin methods: timezoneMismatch: false publicVPN: false @@ -231,106 +232,12 @@ paths: value: 0 cookiesEnabled: value: true - proPlusBotDetectedResponse: - summary: Bot detected on Pro Plus plan - value: - products: - identification: - data: - visitorId: BotDetected000000000 - 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: {} - browserDetails: - browserName: '' - browserMajorVersion: '' - browserFullVersion: '' - os: '' - osVersion: '' - device: '' - userAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) .... - confidence: - score: 0.5 - comment: The real score is unknown - visitorFound: false - firstSeenAt: - global: null - subscription: null - lastSeenAt: - global: null - subscription: null - botd: - data: - bot: - result: bad - type: selenium - 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: + highActivity: data: result: false - details: - emailSpam: false - attackSource: false - tor: + locationSpoofing: data: result: false - vpn: - data: - result: false - methods: - timezoneMismatch: false - publicVPN: false - proxy: - data: - result: false - tampering: - data: - result: false - anomalyScore: 0 allErrorsResponse: summary: All failed signals value: @@ -3810,6 +3717,7 @@ paths: result: false vpn: result: false + originTimezone: Europe/Berlin methods: timezoneMismatch: false publicVPN: false @@ -3850,6 +3758,10 @@ paths: value: 0 cookiesEnabled: value: true + highActivity: + result: false + locationSpoofing: + result: true responses: default: description: The server doesn't validate the answer. @@ -4186,6 +4098,10 @@ components: $ref: '#/components/schemas/TamperingResult' rawDeviceAttributes: $ref: '#/components/schemas/RawDeviceAttributesResult' + highActivity: + $ref: '#/components/schemas/HighActivityResult' + locationSpoofing: + $ref: '#/components/schemas/LocationSpoofingResult' requestId: description: Unique identifier of the user's identification request. type: string @@ -4421,6 +4337,9 @@ components: additionalProperties: false properties: accuracyRadius: + description: >- + The IP address is likely to be within this radius (in km) of the + specified location. type: integer minimum: 0 example: 1000 @@ -4563,16 +4482,8 @@ components: description: > String of 20 characters that uniquely identifies the visitor's browser. - - - **Pro Plus:** - - If a bot is detected (`products.botd.bot.result != - "notDetected"`), the `visitorId` value contains a - placeholder string `BotDetected000000000`. example: - Ibk1527CUFmcnjLwIs4A - - BotDetected000000000 additionalProperties: false required: - browserDetails @@ -4816,6 +4727,22 @@ components: $ref: '#/components/schemas/TamperingResult' error: $ref: '#/components/schemas/ProductError' + highActivity: + title: SignalResponseHighActivity + type: object + properties: + data: + $ref: '#/components/schemas/HighActivityResult' + error: + $ref: '#/components/schemas/ProductError' + locationSpoofing: + title: SignalResponseLocationSpoofing + type: object + properties: + data: + $ref: '#/components/schemas/LocationSpoofingResult' + error: + $ref: '#/components/schemas/ProductError' rawDeviceAttributes: title: SignalResponseRawDeviceAttributes type: object @@ -4975,6 +4902,10 @@ components: VPN or other anonymizing service has been used when sending the request. example: false + originTimezone: + type: string + description: Local timezone which is used in timezoneMismatch method. + example: Europe/Berlin methods: type: object properties: @@ -5014,6 +4945,29 @@ components: example: 0 minimum: 0 maximum: 1 + HighActivityResult: + type: object + properties: + result: + type: boolean + description: >- + Flag indicating whether the request came from a high activity + visitor. + example: false + dailyRequests: + type: number + description: Number of requests from the same visitor in the previous day. + example: 10 + minimum: 1 + LocationSpoofingResult: + type: object + properties: + result: + type: boolean + description: >- + Flag indicating whether the request came from a device with location + spoofing enabled. + example: false RawDeviceAttributesResult: type: object description: > diff --git a/src/main/java/com/fingerprint/model/HighActivityResult.java b/src/main/java/com/fingerprint/model/HighActivityResult.java new file mode 100644 index 0000000..622fd66 --- /dev/null +++ b/src/main/java/com/fingerprint/model/HighActivityResult.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 io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fingerprint.sdk.JSON; + + +/** + * HighActivityResult + */ +@JsonPropertyOrder({ + HighActivityResult.JSON_PROPERTY_RESULT, + HighActivityResult.JSON_PROPERTY_DAILY_REQUESTS +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class HighActivityResult { + public static final String JSON_PROPERTY_RESULT = "result"; + private Boolean result; + + public static final String JSON_PROPERTY_DAILY_REQUESTS = "dailyRequests"; + private BigDecimal dailyRequests; + + public HighActivityResult() { + } + + public HighActivityResult result(Boolean result) { + this.result = result; + return this; + } + + /** + * 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.") + @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; + } + + + public HighActivityResult dailyRequests(BigDecimal dailyRequests) { + this.dailyRequests = dailyRequests; + return this; + } + + /** + * Number of requests from the same visitor in the previous day. + * minimum: 1 + * @return dailyRequests + **/ + @javax.annotation.Nullable + @ApiModelProperty(example = "10", value = "Number of requests from the same visitor in the previous day.") + @JsonProperty(JSON_PROPERTY_DAILY_REQUESTS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public BigDecimal getDailyRequests() { + return dailyRequests; + } + + + @JsonProperty(JSON_PROPERTY_DAILY_REQUESTS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setDailyRequests(BigDecimal dailyRequests) { + this.dailyRequests = dailyRequests; + } + + + /** + * Return true if this HighActivityResult object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + HighActivityResult highActivityResult = (HighActivityResult) o; + return Objects.equals(this.result, highActivityResult.result) && + Objects.equals(this.dailyRequests, highActivityResult.dailyRequests); + } + + @Override + public int hashCode() { + return Objects.hash(result, dailyRequests); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class HighActivityResult {\n"); + sb.append(" result: ").append(toIndentedString(result)).append("\n"); + sb.append(" dailyRequests: ").append(toIndentedString(dailyRequests)).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 ea1b298..701659e 100644 --- a/src/main/java/com/fingerprint/model/IPLocation.java +++ b/src/main/java/com/fingerprint/model/IPLocation.java @@ -85,12 +85,12 @@ public IPLocation accuracyRadius(Integer accuracyRadius) { } /** - * Get accuracyRadius + * The IP address is likely to be within this radius (in km) of the specified location. * minimum: 0 * @return accuracyRadius **/ @javax.annotation.Nullable - @ApiModelProperty(example = "1000", value = "") + @ApiModelProperty(example = "1000", 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) diff --git a/src/main/java/com/fingerprint/model/LocationSpoofingResult.java b/src/main/java/com/fingerprint/model/LocationSpoofingResult.java new file mode 100644 index 0000000..cf15d6c --- /dev/null +++ b/src/main/java/com/fingerprint/model/LocationSpoofingResult.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; + + +/** + * LocationSpoofingResult + */ +@JsonPropertyOrder({ + LocationSpoofingResult.JSON_PROPERTY_RESULT +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class LocationSpoofingResult { + public static final String JSON_PROPERTY_RESULT = "result"; + private Boolean result; + + public LocationSpoofingResult() { + } + + public LocationSpoofingResult result(Boolean result) { + this.result = result; + return this; + } + + /** + * Flag indicating whether the request came from a 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.") + @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 LocationSpoofingResult object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + LocationSpoofingResult locationSpoofingResult = (LocationSpoofingResult) o; + return Objects.equals(this.result, locationSpoofingResult.result); + } + + @Override + public int hashCode() { + return Objects.hash(result); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class LocationSpoofingResult {\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/ProductsResponse.java b/src/main/java/com/fingerprint/model/ProductsResponse.java index 2476ede..bb5dc3f 100644 --- a/src/main/java/com/fingerprint/model/ProductsResponse.java +++ b/src/main/java/com/fingerprint/model/ProductsResponse.java @@ -28,10 +28,12 @@ import com.fingerprint.model.SignalResponseEmulator; import com.fingerprint.model.SignalResponseFactoryReset; import com.fingerprint.model.SignalResponseFrida; +import com.fingerprint.model.SignalResponseHighActivity; import com.fingerprint.model.SignalResponseIncognito; import com.fingerprint.model.SignalResponseIpBlocklist; import com.fingerprint.model.SignalResponseIpInfo; import com.fingerprint.model.SignalResponseJailbroken; +import com.fingerprint.model.SignalResponseLocationSpoofing; import com.fingerprint.model.SignalResponsePrivacySettings; import com.fingerprint.model.SignalResponseProxy; import com.fingerprint.model.SignalResponseRawDeviceAttributes; @@ -68,6 +70,8 @@ ProductsResponse.JSON_PROPERTY_VPN, ProductsResponse.JSON_PROPERTY_PROXY, ProductsResponse.JSON_PROPERTY_TAMPERING, + ProductsResponse.JSON_PROPERTY_HIGH_ACTIVITY, + ProductsResponse.JSON_PROPERTY_LOCATION_SPOOFING, ProductsResponse.JSON_PROPERTY_RAW_DEVICE_ATTRIBUTES }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") @@ -123,6 +127,12 @@ public class ProductsResponse { public static final String JSON_PROPERTY_TAMPERING = "tampering"; private SignalResponseTampering tampering; + public static final String JSON_PROPERTY_HIGH_ACTIVITY = "highActivity"; + private SignalResponseHighActivity highActivity; + + public static final String JSON_PROPERTY_LOCATION_SPOOFING = "locationSpoofing"; + private SignalResponseLocationSpoofing locationSpoofing; + public static final String JSON_PROPERTY_RAW_DEVICE_ATTRIBUTES = "rawDeviceAttributes"; private SignalResponseRawDeviceAttributes rawDeviceAttributes; @@ -571,6 +581,58 @@ public void setTampering(SignalResponseTampering tampering) { } + public ProductsResponse highActivity(SignalResponseHighActivity highActivity) { + this.highActivity = highActivity; + return this; + } + + /** + * Get highActivity + * @return highActivity + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_HIGH_ACTIVITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public SignalResponseHighActivity getHighActivity() { + return highActivity; + } + + + @JsonProperty(JSON_PROPERTY_HIGH_ACTIVITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setHighActivity(SignalResponseHighActivity highActivity) { + this.highActivity = highActivity; + } + + + public ProductsResponse locationSpoofing(SignalResponseLocationSpoofing locationSpoofing) { + this.locationSpoofing = locationSpoofing; + return this; + } + + /** + * Get locationSpoofing + * @return locationSpoofing + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_LOCATION_SPOOFING) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public SignalResponseLocationSpoofing getLocationSpoofing() { + return locationSpoofing; + } + + + @JsonProperty(JSON_PROPERTY_LOCATION_SPOOFING) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setLocationSpoofing(SignalResponseLocationSpoofing locationSpoofing) { + this.locationSpoofing = locationSpoofing; + } + + public ProductsResponse rawDeviceAttributes(SignalResponseRawDeviceAttributes rawDeviceAttributes) { this.rawDeviceAttributes = rawDeviceAttributes; return this; @@ -626,12 +688,14 @@ public boolean equals(Object o) { Objects.equals(this.vpn, productsResponse.vpn) && Objects.equals(this.proxy, productsResponse.proxy) && Objects.equals(this.tampering, productsResponse.tampering) && + Objects.equals(this.highActivity, productsResponse.highActivity) && + Objects.equals(this.locationSpoofing, productsResponse.locationSpoofing) && 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, rawDeviceAttributes); + return Objects.hash(identification, botd, ipInfo, incognito, rootApps, emulator, clonedApp, factoryReset, jailbroken, frida, ipBlocklist, tor, privacySettings, virtualMachine, vpn, proxy, tampering, highActivity, locationSpoofing, rawDeviceAttributes); } @Override @@ -655,6 +719,8 @@ public String toString() { sb.append(" vpn: ").append(toIndentedString(vpn)).append("\n"); sb.append(" proxy: ").append(toIndentedString(proxy)).append("\n"); 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(" rawDeviceAttributes: ").append(toIndentedString(rawDeviceAttributes)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java b/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java index eb6b204..b34ce49 100644 --- a/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java +++ b/src/main/java/com/fingerprint/model/ProductsResponseIdentificationData.java @@ -484,11 +484,11 @@ public ProductsResponseIdentificationData visitorId(String visitorId) { } /** - * String of 20 characters that uniquely identifies the visitor's browser. **Pro Plus:** If a bot is detected (`products.botd.bot.result != \"notDetected\"`), the `visitorId` value contains a placeholder string `BotDetected000000000`. + * String of 20 characters that uniquely identifies the visitor's browser. * @return visitorId **/ @javax.annotation.Nonnull - @ApiModelProperty(example = "[\"Ibk1527CUFmcnjLwIs4A\",\"BotDetected000000000\"]", required = true, value = "String of 20 characters that uniquely identifies the visitor's browser. **Pro Plus:** If a bot is detected (`products.botd.bot.result != \"notDetected\"`), the `visitorId` value contains a placeholder string `BotDetected000000000`. ") + @ApiModelProperty(example = "[\"Ibk1527CUFmcnjLwIs4A\"]", required = true, value = "String of 20 characters that uniquely identifies the visitor's browser. ") @JsonProperty(JSON_PROPERTY_VISITOR_ID) @JsonInclude(value = JsonInclude.Include.ALWAYS) diff --git a/src/main/java/com/fingerprint/model/SignalResponseHighActivity.java b/src/main/java/com/fingerprint/model/SignalResponseHighActivity.java new file mode 100644 index 0000000..20224a4 --- /dev/null +++ b/src/main/java/com/fingerprint/model/SignalResponseHighActivity.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.HighActivityResult; +import com.fingerprint.model.ProductError; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fingerprint.sdk.JSON; + + +/** + * SignalResponseHighActivity + */ +@JsonPropertyOrder({ + SignalResponseHighActivity.JSON_PROPERTY_DATA, + SignalResponseHighActivity.JSON_PROPERTY_ERROR +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class SignalResponseHighActivity { + public static final String JSON_PROPERTY_DATA = "data"; + private HighActivityResult data; + + public static final String JSON_PROPERTY_ERROR = "error"; + private ProductError error; + + public SignalResponseHighActivity() { + } + + public SignalResponseHighActivity data(HighActivityResult 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 HighActivityResult getData() { + return data; + } + + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setData(HighActivityResult data) { + this.data = data; + } + + + public SignalResponseHighActivity 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 SignalResponseHighActivity object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SignalResponseHighActivity signalResponseHighActivity = (SignalResponseHighActivity) o; + return Objects.equals(this.data, signalResponseHighActivity.data) && + Objects.equals(this.error, signalResponseHighActivity.error); + } + + @Override + public int hashCode() { + return Objects.hash(data, error); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SignalResponseHighActivity {\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/SignalResponseLocationSpoofing.java b/src/main/java/com/fingerprint/model/SignalResponseLocationSpoofing.java new file mode 100644 index 0000000..505a993 --- /dev/null +++ b/src/main/java/com/fingerprint/model/SignalResponseLocationSpoofing.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.LocationSpoofingResult; +import com.fingerprint.model.ProductError; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.fingerprint.sdk.JSON; + + +/** + * SignalResponseLocationSpoofing + */ +@JsonPropertyOrder({ + SignalResponseLocationSpoofing.JSON_PROPERTY_DATA, + SignalResponseLocationSpoofing.JSON_PROPERTY_ERROR +}) +@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") +public class SignalResponseLocationSpoofing { + public static final String JSON_PROPERTY_DATA = "data"; + private LocationSpoofingResult data; + + public static final String JSON_PROPERTY_ERROR = "error"; + private ProductError error; + + public SignalResponseLocationSpoofing() { + } + + public SignalResponseLocationSpoofing data(LocationSpoofingResult 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 LocationSpoofingResult getData() { + return data; + } + + + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setData(LocationSpoofingResult data) { + this.data = data; + } + + + public SignalResponseLocationSpoofing 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 SignalResponseLocationSpoofing object is equal to o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SignalResponseLocationSpoofing signalResponseLocationSpoofing = (SignalResponseLocationSpoofing) o; + return Objects.equals(this.data, signalResponseLocationSpoofing.data) && + Objects.equals(this.error, signalResponseLocationSpoofing.error); + } + + @Override + public int hashCode() { + return Objects.hash(data, error); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SignalResponseLocationSpoofing {\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/VpnResult.java b/src/main/java/com/fingerprint/model/VpnResult.java index fdf85c6..e351b47 100644 --- a/src/main/java/com/fingerprint/model/VpnResult.java +++ b/src/main/java/com/fingerprint/model/VpnResult.java @@ -34,6 +34,7 @@ */ @JsonPropertyOrder({ VpnResult.JSON_PROPERTY_RESULT, + VpnResult.JSON_PROPERTY_ORIGIN_TIMEZONE, VpnResult.JSON_PROPERTY_METHODS }) @javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen") @@ -41,6 +42,9 @@ public class VpnResult { public static final String JSON_PROPERTY_RESULT = "result"; private Boolean result; + public static final String JSON_PROPERTY_ORIGIN_TIMEZONE = "originTimezone"; + private String originTimezone; + public static final String JSON_PROPERTY_METHODS = "methods"; private VpnResultMethods methods; @@ -73,6 +77,32 @@ public void setResult(Boolean result) { } + public VpnResult originTimezone(String originTimezone) { + this.originTimezone = originTimezone; + return this; + } + + /** + * 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.") + @JsonProperty(JSON_PROPERTY_ORIGIN_TIMEZONE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public String getOriginTimezone() { + return originTimezone; + } + + + @JsonProperty(JSON_PROPERTY_ORIGIN_TIMEZONE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setOriginTimezone(String originTimezone) { + this.originTimezone = originTimezone; + } + + public VpnResult methods(VpnResultMethods methods) { this.methods = methods; return this; @@ -112,12 +142,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.methods, vpnResult.methods); } @Override public int hashCode() { - return Objects.hash(result, methods); + return Objects.hash(result, originTimezone, methods); } @Override @@ -125,6 +156,7 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("class VpnResult {\n"); sb.append(" result: ").append(toIndentedString(result)).append("\n"); + sb.append(" originTimezone: ").append(toIndentedString(originTimezone)).append("\n"); sb.append(" methods: ").append(toIndentedString(methods)).append("\n"); sb.append("}"); return sb.toString(); diff --git a/src/main/java/com/fingerprint/model/WebhookVisit.java b/src/main/java/com/fingerprint/model/WebhookVisit.java index 64e9b6c..85406cc 100644 --- a/src/main/java/com/fingerprint/model/WebhookVisit.java +++ b/src/main/java/com/fingerprint/model/WebhookVisit.java @@ -25,9 +25,11 @@ import com.fingerprint.model.BotdDetectionResult; import com.fingerprint.model.BrowserDetails; import com.fingerprint.model.Confidence; +import com.fingerprint.model.HighActivityResult; import com.fingerprint.model.IPLocation; import com.fingerprint.model.IpBlockListResult; import com.fingerprint.model.IpInfoResult; +import com.fingerprint.model.LocationSpoofingResult; import com.fingerprint.model.RawDeviceAttributesResultValue; import com.fingerprint.model.SeenAt; import com.fingerprint.model.TamperingResult; @@ -76,6 +78,8 @@ WebhookVisit.JSON_PROPERTY_PROXY, WebhookVisit.JSON_PROPERTY_TAMPERING, WebhookVisit.JSON_PROPERTY_RAW_DEVICE_ATTRIBUTES, + WebhookVisit.JSON_PROPERTY_HIGH_ACTIVITY, + WebhookVisit.JSON_PROPERTY_LOCATION_SPOOFING, WebhookVisit.JSON_PROPERTY_REQUEST_ID, WebhookVisit.JSON_PROPERTY_BROWSER_DETAILS, WebhookVisit.JSON_PROPERTY_IP, @@ -152,6 +156,12 @@ public class WebhookVisit { public static final String JSON_PROPERTY_RAW_DEVICE_ATTRIBUTES = "rawDeviceAttributes"; private Map rawDeviceAttributes = null; + public static final String JSON_PROPERTY_HIGH_ACTIVITY = "highActivity"; + private HighActivityResult highActivity; + + public static final String JSON_PROPERTY_LOCATION_SPOOFING = "locationSpoofing"; + private LocationSpoofingResult locationSpoofing; + public static final String JSON_PROPERTY_REQUEST_ID = "requestId"; private String requestId; @@ -722,6 +732,58 @@ public void setRawDeviceAttributes(Map r } + public WebhookVisit highActivity(HighActivityResult highActivity) { + this.highActivity = highActivity; + return this; + } + + /** + * Get highActivity + * @return highActivity + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_HIGH_ACTIVITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public HighActivityResult getHighActivity() { + return highActivity; + } + + + @JsonProperty(JSON_PROPERTY_HIGH_ACTIVITY) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setHighActivity(HighActivityResult highActivity) { + this.highActivity = highActivity; + } + + + public WebhookVisit locationSpoofing(LocationSpoofingResult locationSpoofing) { + this.locationSpoofing = locationSpoofing; + return this; + } + + /** + * Get locationSpoofing + * @return locationSpoofing + **/ + @javax.annotation.Nullable + @ApiModelProperty(value = "") + @JsonProperty(JSON_PROPERTY_LOCATION_SPOOFING) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + + public LocationSpoofingResult getLocationSpoofing() { + return locationSpoofing; + } + + + @JsonProperty(JSON_PROPERTY_LOCATION_SPOOFING) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setLocationSpoofing(LocationSpoofingResult locationSpoofing) { + this.locationSpoofing = locationSpoofing; + } + + public WebhookVisit requestId(String requestId) { this.requestId = requestId; return this; @@ -1100,6 +1162,8 @@ public boolean equals(Object o) { Objects.equals(this.proxy, webhookVisit.proxy) && Objects.equals(this.tampering, webhookVisit.tampering) && Objects.equals(this.rawDeviceAttributes, webhookVisit.rawDeviceAttributes) && + Objects.equals(this.highActivity, webhookVisit.highActivity) && + Objects.equals(this.locationSpoofing, webhookVisit.locationSpoofing) && Objects.equals(this.requestId, webhookVisit.requestId) && Objects.equals(this.browserDetails, webhookVisit.browserDetails) && Objects.equals(this.ip, webhookVisit.ip) && @@ -1117,7 +1181,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, 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, requestId, browserDetails, ip, ipLocation, timestamp, time, url, tag, linkedId, confidence, visitorFound, firstSeenAt, lastSeenAt); } @Override @@ -1144,6 +1208,8 @@ public String toString() { sb.append(" proxy: ").append(toIndentedString(proxy)).append("\n"); sb.append(" tampering: ").append(toIndentedString(tampering)).append("\n"); 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(" requestId: ").append(toIndentedString(requestId)).append("\n"); sb.append(" browserDetails: ").append(toIndentedString(browserDetails)).append("\n"); sb.append(" ip: ").append(toIndentedString(ip)).append("\n"); diff --git a/src/test/resources/mocks/get_event.json b/src/test/resources/mocks/get_event.json index 90abb41..0a89f7d 100644 --- a/src/test/resources/mocks/get_event.json +++ b/src/test/resources/mocks/get_event.json @@ -139,6 +139,7 @@ "vpn": { "data": { "result": false, + "originTimezone": "Europe/Berlin", "methods": { "timezoneMismatch": false, "publicVPN": false, @@ -216,6 +217,16 @@ "value": true } } + }, + "highActivity": { + "data": { + "result": false + } + }, + "locationSpoofing": { + "data": { + "result": false + } } } -} +} \ No newline at end of file