diff --git a/.changeset/events-search-active-call-filter.md b/.changeset/events-search-active-call-filter.md new file mode 100644 index 00000000..5fb92d1d --- /dev/null +++ b/.changeset/events-search-active-call-filter.md @@ -0,0 +1,5 @@ +--- +'java-sdk': minor +--- + +**events-search**: Add `active_call` filter parameter diff --git a/.changeset/raw-device-attributes-keyboard-layout-name-events.md b/.changeset/raw-device-attributes-keyboard-layout-name-events.md new file mode 100644 index 00000000..76194009 --- /dev/null +++ b/.changeset/raw-device-attributes-keyboard-layout-name-events.md @@ -0,0 +1,5 @@ +--- +'java-sdk': minor +--- + +Add `keyboard_layout_name` to `RawDeviceAttributes` diff --git a/.schema-version b/.schema-version index c03b60b0..ac47b436 100644 --- a/.schema-version +++ b/.schema-version @@ -1 +1 @@ -v3.6.0 \ No newline at end of file +v3.7.0 \ No newline at end of file diff --git a/docs/FingerprintApi.md b/docs/FingerprintApi.md index c58af581..74968f9d 100644 --- a/docs/FingerprintApi.md +++ b/docs/FingerprintApi.md @@ -320,6 +320,7 @@ public class FingerprintApiExample { Boolean torNode = true; // Boolean | Filter events by Tor Node detection result. > Note: When using this parameter, only events with the `tor_node` property set to `true` or `false` are returned. Events without a `tor_node` detection result are left out of the response. SearchEventsIncrementalIdentificationStatus incrementalIdentificationStatus = SearchEventsIncrementalIdentificationStatus.fromValue("partially_completed"); // SearchEventsIncrementalIdentificationStatus | Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. Boolean simulator = true; // Boolean | Filter events by iOS Simulator Detection result. > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. + Boolean activeCall = true; // Boolean | Filter events by Active Call Detection result on mobile devices. > Note: When using this parameter, only events with the `active_call` property set to `true` or `false` are returned. Events without an `active_call` Smart Signal result are left out of the response. List source = Arrays.asList(); // List | Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. To retrieve all events regardless of source, you must make two requests. One with the `source` parameter set to `edge`, and another with the `source` parameter omitted. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. try { EventSearch result = api.searchEvents(new FingerprintApi.SearchEventsOptionalParams() @@ -375,6 +376,7 @@ public class FingerprintApiExample { .setTorNode(torNode) .setIncrementalIdentificationStatus(incrementalIdentificationStatus) .setSimulator(simulator) + .setActiveCall(activeCall) .setSource(source)); System.out.println(result); } catch (ApiException e) { @@ -450,6 +452,7 @@ Object containing optional parameters for API method. Supports a fluent interfac | **torNode** | **Boolean**| Filter events by Tor Node detection result. > Note: When using this parameter, only events with the `tor_node` property set to `true` or `false` are returned. Events without a `tor_node` detection result are left out of the response. | [optional] | | **incrementalIdentificationStatus** | **SearchEventsIncrementalIdentificationStatus**| Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. | [optional] [enum: partially_completed, completed] | | **simulator** | **Boolean**| Filter events by iOS Simulator Detection result. > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. | [optional] | +| **activeCall** | **Boolean**| Filter events by Active Call Detection result on mobile devices. > Note: When using this parameter, only events with the `active_call` property set to `true` or `false` are returned. Events without an `active_call` Smart Signal result are left out of the response. | [optional] | | **source** | **List<SearchEventsSource>**| Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. To retrieve all events regardless of source, you must make two requests. One with the `source` parameter set to `edge`, and another with the `source` parameter omitted. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. | [optional] | ### Return type diff --git a/docs/RawDeviceAttributes.md b/docs/RawDeviceAttributes.md index b3c99e2b..556cde5a 100644 --- a/docs/RawDeviceAttributes.md +++ b/docs/RawDeviceAttributes.md @@ -41,6 +41,7 @@ A curated subset of raw browser/device attributes that the API surface exposes. |**batteryCharging** | **Boolean** | When `true`, the device is currently charging. Available only for web devices on Chromium-based browsers. | [optional] | |**batteryLowPowerMode** | **Boolean** | Whether the device's low power mode is enabled. Available only for Android and iOS devices. | [optional] | |**keyboardLayoutHash** | **String** | Unique identifier for the user's keyboard layout. | [optional] | +|**keyboardLayoutName** | **String** | Name of the user's configured keyboard layout as a BCP 47-style identifier. Only available in Chromium-based browsers, omitted otherwise. | [optional] | diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index c6cb08f2..842bfbb9 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -954,6 +954,18 @@ paths: > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. + - name: active_call + in: query + schema: + type: boolean + description: > + Filter events by Active Call Detection result on mobile devices. + + + > Note: When using this parameter, only events with the + `active_call` property set to `true` or `false` are returned. Events + without an `active_call` Smart Signal result are left out of the + response. - name: source in: query required: false @@ -2971,6 +2983,16 @@ components: examples: - 3f33b68235d36b8821147349f1161379 description: Unique identifier for the user's keyboard layout. + KeyboardLayoutName: + type: string + examples: + - en-US + - de-DE + - ja-JP + description: >- + Name of the user's configured keyboard layout as a BCP 47-style + identifier. Only available in Chromium-based browsers, omitted + otherwise. RawDeviceAttributes: type: object description: > @@ -3045,6 +3067,8 @@ components: $ref: '#/components/schemas/BatteryLowPowerMode' keyboard_layout_hash: $ref: '#/components/schemas/KeyboardLayoutHash' + keyboard_layout_name: + $ref: '#/components/schemas/KeyboardLayoutName' Labels: type: array items: diff --git a/sdk/src/main/java/com/fingerprint/v4/api/FingerprintApi.java b/sdk/src/main/java/com/fingerprint/v4/api/FingerprintApi.java index 2f43b2c2..3fc88a7f 100644 --- a/sdk/src/main/java/com/fingerprint/v4/api/FingerprintApi.java +++ b/sdk/src/main/java/com/fingerprint/v4/api/FingerprintApi.java @@ -330,6 +330,7 @@ public static class SearchEventsOptionalParams { private Boolean torNode; private SearchEventsIncrementalIdentificationStatus incrementalIdentificationStatus; private Boolean simulator; + private Boolean activeCall; private List source; /** @@ -1143,6 +1144,21 @@ public SearchEventsOptionalParams setSimulator(Boolean simulator) { return this; } + /** + * getter for activeCall - Filter events by Active Call Detection result on mobile devices. > Note: When using this parameter, only events with the `active_call` property set to `true` or `false` are returned. Events without an `active_call` Smart Signal result are left out of the response. + */ + public Boolean getActiveCall() { + return activeCall; + } + + /** + * setter for activeCall - Filter events by Active Call Detection result on mobile devices. > Note: When using this parameter, only events with the `active_call` property set to `true` or `false` are returned. Events without an `active_call` Smart Signal result are left out of the response. + */ + public SearchEventsOptionalParams setActiveCall(Boolean activeCall) { + this.activeCall = activeCall; + return this; + } + /** * getter for source - Selects the source of events to search. When omitted, only traditional identification events generated from devices are returned (the default behavior). When set to `edge`, only Automation Intelligence (Edge) events are returned. To retrieve all events regardless of source, you must make two requests. One with the `source` parameter set to `edge`, and another with the `source` parameter omitted. > Note: The Automation Intelligence API is in public preview testing phase. If you encounter any issues, please [contact](https://fingerprint.com/support/) our support team. */ @@ -1347,6 +1363,9 @@ public ApiResponse searchEventsWithHttpInfo( searchEventsOptionalParams.getIncrementalIdentificationStatus())); localVarQueryParams.addAll( apiClient.parameterToPairs("", "simulator", searchEventsOptionalParams.getSimulator())); + localVarQueryParams.addAll( + apiClient.parameterToPairs( + "", "active_call", searchEventsOptionalParams.getActiveCall())); localVarQueryParams.addAll( apiClient.parameterToPairs("multi", "source", searchEventsOptionalParams.getSource())); } diff --git a/sdk/src/main/java/com/fingerprint/v4/model/RawDeviceAttributes.java b/sdk/src/main/java/com/fingerprint/v4/model/RawDeviceAttributes.java index 0e613599..9e832df7 100644 --- a/sdk/src/main/java/com/fingerprint/v4/model/RawDeviceAttributes.java +++ b/sdk/src/main/java/com/fingerprint/v4/model/RawDeviceAttributes.java @@ -55,7 +55,8 @@ RawDeviceAttributes.JSON_PROPERTY_BATTERY_LEVEL, RawDeviceAttributes.JSON_PROPERTY_BATTERY_CHARGING, RawDeviceAttributes.JSON_PROPERTY_BATTERY_LOW_POWER_MODE, - RawDeviceAttributes.JSON_PROPERTY_KEYBOARD_LAYOUT_HASH + RawDeviceAttributes.JSON_PROPERTY_KEYBOARD_LAYOUT_HASH, + RawDeviceAttributes.JSON_PROPERTY_KEYBOARD_LAYOUT_NAME }) @jakarta.annotation.Generated( value = "org.openapitools.codegen.languages.JavaClientCodegen", @@ -160,6 +161,9 @@ public class RawDeviceAttributes { public static final String JSON_PROPERTY_KEYBOARD_LAYOUT_HASH = "keyboard_layout_hash"; @jakarta.annotation.Nullable private String keyboardLayoutHash; + public static final String JSON_PROPERTY_KEYBOARD_LAYOUT_NAME = "keyboard_layout_name"; + @jakarta.annotation.Nullable private String keyboardLayoutName; + public RawDeviceAttributes() {} public RawDeviceAttributes fontPreferences( @@ -930,6 +934,29 @@ public void setKeyboardLayoutHash(@jakarta.annotation.Nullable String keyboardLa this.keyboardLayoutHash = keyboardLayoutHash; } + public RawDeviceAttributes keyboardLayoutName( + @jakarta.annotation.Nullable String keyboardLayoutName) { + this.keyboardLayoutName = keyboardLayoutName; + return this; + } + + /** + * Name of the user's configured keyboard layout as a BCP 47-style identifier. Only available in Chromium-based browsers, omitted otherwise. + * @return keyboardLayoutName + */ + @jakarta.annotation.Nullable + @JsonProperty(value = JSON_PROPERTY_KEYBOARD_LAYOUT_NAME, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getKeyboardLayoutName() { + return keyboardLayoutName; + } + + @JsonProperty(value = JSON_PROPERTY_KEYBOARD_LAYOUT_NAME, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setKeyboardLayoutName(@jakarta.annotation.Nullable String keyboardLayoutName) { + this.keyboardLayoutName = keyboardLayoutName; + } + /** * Return true if this RawDeviceAttributes object is equal to o. */ @@ -974,7 +1001,8 @@ public boolean equals(Object o) { && Objects.equals(this.batteryLevel, rawDeviceAttributes.batteryLevel) && Objects.equals(this.batteryCharging, rawDeviceAttributes.batteryCharging) && Objects.equals(this.batteryLowPowerMode, rawDeviceAttributes.batteryLowPowerMode) - && Objects.equals(this.keyboardLayoutHash, rawDeviceAttributes.keyboardLayoutHash); + && Objects.equals(this.keyboardLayoutHash, rawDeviceAttributes.keyboardLayoutHash) + && Objects.equals(this.keyboardLayoutName, rawDeviceAttributes.keyboardLayoutName); } @Override @@ -1012,7 +1040,8 @@ public int hashCode() { batteryLevel, batteryCharging, batteryLowPowerMode, - keyboardLayoutHash); + keyboardLayoutHash, + keyboardLayoutName); } @Override @@ -1056,6 +1085,7 @@ public String toString() { .append(toIndentedString(batteryLowPowerMode)) .append("\n"); sb.append(" keyboardLayoutHash: ").append(toIndentedString(keyboardLayoutHash)).append("\n"); + sb.append(" keyboardLayoutName: ").append(toIndentedString(keyboardLayoutName)).append("\n"); sb.append("}"); return sb.toString(); } diff --git a/sdk/src/test/java/com/fingerprint/v4/api/FingerprintApiTest.java b/sdk/src/test/java/com/fingerprint/v4/api/FingerprintApiTest.java index 00b7172a..6c4df7ed 100644 --- a/sdk/src/test/java/com/fingerprint/v4/api/FingerprintApiTest.java +++ b/sdk/src/test/java/com/fingerprint/v4/api/FingerprintApiTest.java @@ -505,6 +505,7 @@ public void searchEventsMaximumParamsTest() throws ApiException { SearchEventsIncrementalIdentificationStatus.PARTIALLY_COMPLETED; final Boolean SIMULATOR = true; final List SOURCE = Arrays.asList(SearchEventsSource.EDGE); + final Boolean ACTIVE_CALL = true; Map expectedQueryParams = new HashMap<>(); expectedQueryParams.put("limit", String.valueOf(LIMIT)); @@ -550,6 +551,7 @@ public void searchEventsMaximumParamsTest() throws ApiException { expectedQueryParams.put( "incremental_identification_status", String.valueOf(INCREMENTAL_IDENTIFICATION_STATUS)); expectedQueryParams.put("simulator", String.valueOf(SIMULATOR)); + expectedQueryParams.put("active_call", String.valueOf(ACTIVE_CALL)); final int arrayQueryParamsCount = ENVIRONMENT.size() @@ -634,7 +636,8 @@ public void searchEventsMaximumParamsTest() throws ApiException { .setHighRecallId(HIGH_RECALL_ID) .setIncrementalIdentificationStatus(INCREMENTAL_IDENTIFICATION_STATUS) .setSimulator(SIMULATOR) - .setSource(SOURCE)); + .setSource(SOURCE) + .setActiveCall(ACTIVE_CALL)); List events = response.getEvents(); assertEquals(events.size(), 1); } diff --git a/sdk/src/test/resources/mocks/events/get_event_200.json b/sdk/src/test/resources/mocks/events/get_event_200.json index 6d6c726e..72f12f44 100644 --- a/sdk/src/test/resources/mocks/events/get_event_200.json +++ b/sdk/src/test/resources/mocks/events/get_event_200.json @@ -296,6 +296,7 @@ "date_time_locale": "en-US", "audio": 124.04347745512496, "keyboard_layout_hash": "691e3845c85c202a1514b6fd7ef17065", + "keyboard_layout_name": "en-US", "battery_charging": true, "battery_level": 80, "battery_low_power_mode": true, diff --git a/sdk/src/test/resources/mocks/events/get_event_200_with_unknown_field.json b/sdk/src/test/resources/mocks/events/get_event_200_with_unknown_field.json index bdbf8715..e6712e39 100644 --- a/sdk/src/test/resources/mocks/events/get_event_200_with_unknown_field.json +++ b/sdk/src/test/resources/mocks/events/get_event_200_with_unknown_field.json @@ -297,6 +297,7 @@ "date_time_locale": "en-US", "audio": 124.04347745512496, "keyboard_layout_hash": "691e3845c85c202a1514b6fd7ef17065", + "keyboard_layout_name": "en-US", "battery_charging": true, "battery_level": 80, "battery_low_power_mode": true, diff --git a/sdk/src/test/resources/mocks/events/get_event_ruleset_200.json b/sdk/src/test/resources/mocks/events/get_event_ruleset_200.json index 1e5337c0..f775f7d9 100644 --- a/sdk/src/test/resources/mocks/events/get_event_ruleset_200.json +++ b/sdk/src/test/resources/mocks/events/get_event_ruleset_200.json @@ -296,6 +296,7 @@ "date_time_locale": "en-US", "audio": 124.04347745512496, "keyboard_layout_hash": "691e3845c85c202a1514b6fd7ef17065", + "keyboard_layout_name": "en-US", "battery_charging": true, "battery_level": 80, "battery_low_power_mode": true, diff --git a/sdk/src/test/resources/mocks/events/get_event_with_bot_info_200.json b/sdk/src/test/resources/mocks/events/get_event_with_bot_info_200.json index b44a687a..98ca7d5c 100644 --- a/sdk/src/test/resources/mocks/events/get_event_with_bot_info_200.json +++ b/sdk/src/test/resources/mocks/events/get_event_with_bot_info_200.json @@ -302,6 +302,7 @@ "date_time_locale": "en-US", "audio": 124.04347745512496, "keyboard_layout_hash": "691e3845c85c202a1514b6fd7ef17065", + "keyboard_layout_name": "en-US", "battery_charging": true, "battery_level": 80, "battery_low_power_mode": true, diff --git a/sdk/src/test/resources/mocks/events/search/get_event_search_200.json b/sdk/src/test/resources/mocks/events/search/get_event_search_200.json index daad06b0..8e9dbdc8 100644 --- a/sdk/src/test/resources/mocks/events/search/get_event_search_200.json +++ b/sdk/src/test/resources/mocks/events/search/get_event_search_200.json @@ -298,6 +298,7 @@ "date_time_locale": "en-US", "audio": 124.04347745512496, "keyboard_layout_hash": "691e3845c85c202a1514b6fd7ef17065", + "keyboard_layout_name": "en-US", "battery_charging": true, "battery_level": 80, "battery_low_power_mode": true,