diff --git a/.changeset/compromised-device-integrity-events-search.md b/.changeset/compromised-device-integrity-events-search.md new file mode 100644 index 00000000..3d5e0854 --- /dev/null +++ b/.changeset/compromised-device-integrity-events-search.md @@ -0,0 +1,5 @@ +--- +'java-sdk': minor +--- + +**events-search**: Add `compromised_device_integrity` filter parameter diff --git a/.changeset/compromised-device-integrity-events.md b/.changeset/compromised-device-integrity-events.md new file mode 100644 index 00000000..0dce8db2 --- /dev/null +++ b/.changeset/compromised-device-integrity-events.md @@ -0,0 +1,5 @@ +--- +'java-sdk': minor +--- + +**events**: Add `compromised_device_integrity` to `Event` diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 00000000..a7c0dedd --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,8 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "java-sdk": "8.9.0" + }, + "changesets": [] +} diff --git a/.schema-version b/.schema-version index 65aee83a..aef07c2c 100644 --- a/.schema-version +++ b/.schema-version @@ -1 +1 @@ -v3.9.0 \ No newline at end of file +v3.10.0 \ No newline at end of file diff --git a/docs/Event.md b/docs/Event.md index 87e44134..961d277f 100644 --- a/docs/Event.md +++ b/docs/Event.md @@ -36,6 +36,7 @@ Contains results from Fingerprint Identification and all active Smart Signals. S |**botType** | **String** | Additional classification of the bot type if detected. | [optional] | |**botInfo** | [**BotInfo**](BotInfo.md) | | [optional] | |**clonedApp** | **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] | +|**compromisedDeviceIntegrity** | **Boolean** | `true` if the Android device's boot or system integrity is compromised (e.g., an unlocked bootloader or a failed verified boot), so the device cannot be trusted. `false` if no integrity issue was detected. Available from Android SDK 2.6.0+. | [optional] | |**developerTools** | **Boolean** | `true` if the browser has DevTools open (Chrome, Firefox) or the Android/iOS device has Developer Tools enabled, `false` otherwise. | [optional] | |**deviceDetails** | [**DeviceDetails**](DeviceDetails.md) | | [optional] | |**emulator** | **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] | diff --git a/docs/FingerprintApi.md b/docs/FingerprintApi.md index c2c5b03b..2e75d589 100644 --- a/docs/FingerprintApi.md +++ b/docs/FingerprintApi.md @@ -323,6 +323,7 @@ public class FingerprintApiExample { 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. + Boolean compromisedDeviceIntegrity = true; // Boolean | Filter events by Compromised Device Integrity result on Android devices. > Note: When using this parameter, only events with the `compromised_device_integrity` property set to `true` or `false` are returned. Events without a `compromised_device_integrity` Smart Signal result are left out of the response. try { EventSearch result = api.searchEvents(new FingerprintApi.SearchEventsOptionalParams() .setLimit(limit) @@ -378,7 +379,8 @@ public class FingerprintApiExample { .setIncrementalIdentificationStatus(incrementalIdentificationStatus) .setSimulator(simulator) .setActiveCall(activeCall) - .setSource(source)); + .setSource(source) + .setCompromisedDeviceIntegrity(compromisedDeviceIntegrity)); System.out.println(result); } catch (ApiException e) { System.err.println("Exception when calling FingerprintApi.searchEvents:" + e.getMessage()); @@ -455,6 +457,7 @@ Object containing optional parameters for API method. Supports a fluent interfac | **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] | +| **compromisedDeviceIntegrity** | **Boolean**| Filter events by Compromised Device Integrity result on Android devices. > Note: When using this parameter, only events with the `compromised_device_integrity` property set to `true` or `false` are returned. Events without a `compromised_device_integrity` Smart Signal result are left out of the response. | [optional] | ### Return type @@ -493,7 +496,9 @@ Change information in existing events specified by `event_id` or *flag suspiciou When an event is created, it can be assigned `linked_id` and `tags` submitted through the JS agent parameters. This information might not have been available on the client initially, so the Server API permits updating these attributes after the fact. -**Warning** It's not possible to update events older than one month. +**Warning** You can only update events created within the last 10 days. Updating an older event returns HTTP 400 with the message `event is too old to be updated (> 10 days)`, even if your plan retains events for longer. + +**Warning** Events created by the Automation Intelligence API (`POST /edge`) cannot be updated. Updating them returns HTTP 400. **Warning** Trying to update an event immediately after creation may temporarily result in an error (HTTP 409 Conflict. The event is not mutable yet.) as the event is fully propagated across our systems. In such a case, simply retry the request. @@ -563,7 +568,7 @@ null (empty response body) | Status code | Description | Response headers | |-------------|-------------|------------------| | **200** | OK. | - | -| **400** | Bad request. The request payload is not valid. | - | +| **400** | Bad request. The request payload is not valid, the event is older than 10 days, or the event cannot be updated. | - | | **403** | Forbidden. Access to this API is denied. | - | | **404** | Not found. The event ID cannot be found in this workspace's data. | - | | **409** | Conflict. The event is not mutable yet. | - | diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index 531bdae8..a5e376b8 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -145,7 +145,14 @@ paths: so the Server API permits updating these attributes after the fact. - **Warning** It's not possible to update events older than one month. + **Warning** You can only update events created within the last 10 days. + Updating an older event returns HTTP 400 with the message `event is too + old to be updated (> 10 days)`, even if your plan retains events for + longer. + + + **Warning** Events created by the Automation Intelligence API (`POST + /edge`) cannot be updated. Updating them returns HTTP 400. **Warning** Trying to update an event immediately after creation may @@ -176,7 +183,9 @@ paths: '200': description: OK. '400': - description: Bad request. The request payload is not valid. + description: >- + Bad request. The request payload is not valid, the event is older + than 10 days, or the event cannot be updated. content: application/json: schema: @@ -989,6 +998,19 @@ paths: > 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. + - name: compromised_device_integrity + in: query + schema: + type: boolean + description: > + Filter events by Compromised Device Integrity result on Android + devices. + + + > Note: When using this parameter, only events with the + `compromised_device_integrity` property set to `true` or `false` are + returned. Events without a `compromised_device_integrity` Smart + Signal result are left out of the response. responses: '200': description: Events matching the filter(s). @@ -2075,6 +2097,13 @@ components: * `false` - No signs of cloned application detected or the client is not Android. + CompromisedDeviceIntegrity: + type: boolean + description: > + `true` if the Android device's boot or system integrity is compromised + (e.g., an unlocked bootloader or a failed verified boot), so the device + cannot be trusted. `false` if no integrity issue was detected. Available + from Android SDK 2.6.0+. DeveloperTools: type: boolean description: > @@ -3304,6 +3333,10 @@ components: $ref: '#/components/schemas/ClonedApp' x-platforms: - android + compromised_device_integrity: + $ref: '#/components/schemas/CompromisedDeviceIntegrity' + x-platforms: + - android developer_tools: $ref: '#/components/schemas/DeveloperTools' x-platforms: 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 e37c738a..9dd8b9e2 100644 --- a/sdk/src/main/java/com/fingerprint/v4/api/FingerprintApi.java +++ b/sdk/src/main/java/com/fingerprint/v4/api/FingerprintApi.java @@ -346,6 +346,7 @@ public static class SearchEventsOptionalParams { private Boolean simulator; private Boolean activeCall; private List source; + private Boolean compromisedDeviceIntegrity; /** * getter for limit - Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. @@ -1187,6 +1188,22 @@ public SearchEventsOptionalParams setSource(List source) { this.source = source; return this; } + + /** + * getter for compromisedDeviceIntegrity - Filter events by Compromised Device Integrity result on Android devices. > Note: When using this parameter, only events with the `compromised_device_integrity` property set to `true` or `false` are returned. Events without a `compromised_device_integrity` Smart Signal result are left out of the response. + */ + public Boolean getCompromisedDeviceIntegrity() { + return compromisedDeviceIntegrity; + } + + /** + * setter for compromisedDeviceIntegrity - Filter events by Compromised Device Integrity result on Android devices. > Note: When using this parameter, only events with the `compromised_device_integrity` property set to `true` or `false` are returned. Events without a `compromised_device_integrity` Smart Signal result are left out of the response. + */ + public SearchEventsOptionalParams setCompromisedDeviceIntegrity( + Boolean compromisedDeviceIntegrity) { + this.compromisedDeviceIntegrity = compromisedDeviceIntegrity; + return this; + } } /** @@ -1384,6 +1401,11 @@ public ApiResponse searchEventsWithHttpInfo( "", "active_call", searchEventsOptionalParams.getActiveCall())); localVarQueryParams.addAll( apiClient.parameterToPairs("multi", "source", searchEventsOptionalParams.getSource())); + localVarQueryParams.addAll( + apiClient.parameterToPairs( + "", + "compromised_device_integrity", + searchEventsOptionalParams.getCompromisedDeviceIntegrity())); } final String localVarAccept = apiClient.selectHeaderAccept("application/json"); @@ -1410,7 +1432,7 @@ public ApiResponse searchEventsWithHttpInfo( /** * Update an event - * Change information in existing events specified by `event_id` or *flag suspicious events*. When an event is created, it can be assigned `linked_id` and `tags` submitted through the JS agent parameters. This information might not have been available on the client initially, so the Server API permits updating these attributes after the fact. **Warning** It's not possible to update events older than one month. **Warning** Trying to update an event immediately after creation may temporarily result in an error (HTTP 409 Conflict. The event is not mutable yet.) as the event is fully propagated across our systems. In such a case, simply retry the request. + * Change information in existing events specified by `event_id` or *flag suspicious events*. When an event is created, it can be assigned `linked_id` and `tags` submitted through the JS agent parameters. This information might not have been available on the client initially, so the Server API permits updating these attributes after the fact. **Warning** You can only update events created within the last 10 days. Updating an older event returns HTTP 400 with the message `event is too old to be updated (> 10 days)`, even if your plan retains events for longer. **Warning** Events created by the Automation Intelligence API (`POST /edge`) cannot be updated. Updating them returns HTTP 400. **Warning** Trying to update an event immediately after creation may temporarily result in an error (HTTP 409 Conflict. The event is not mutable yet.) as the event is fully propagated across our systems. In such a case, simply retry the request. * @param eventId The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-get-function#event_id). (required) A value that is not a valid identifier is rejected with an {@link ApiException} before a request is sent. * @param eventUpdate (required) * @throws ApiException if fails to make API call @@ -1418,7 +1440,7 @@ public ApiResponse searchEventsWithHttpInfo( * * * - * + * * * * @@ -1430,7 +1452,7 @@ public void updateEvent(String eventId, EventUpdate eventUpdate) throws ApiExcep /** * Update an event - * Change information in existing events specified by `event_id` or *flag suspicious events*. When an event is created, it can be assigned `linked_id` and `tags` submitted through the JS agent parameters. This information might not have been available on the client initially, so the Server API permits updating these attributes after the fact. **Warning** It's not possible to update events older than one month. **Warning** Trying to update an event immediately after creation may temporarily result in an error (HTTP 409 Conflict. The event is not mutable yet.) as the event is fully propagated across our systems. In such a case, simply retry the request. + * Change information in existing events specified by `event_id` or *flag suspicious events*. When an event is created, it can be assigned `linked_id` and `tags` submitted through the JS agent parameters. This information might not have been available on the client initially, so the Server API permits updating these attributes after the fact. **Warning** You can only update events created within the last 10 days. Updating an older event returns HTTP 400 with the message `event is too old to be updated (> 10 days)`, even if your plan retains events for longer. **Warning** Events created by the Automation Intelligence API (`POST /edge`) cannot be updated. Updating them returns HTTP 400. **Warning** Trying to update an event immediately after creation may temporarily result in an error (HTTP 409 Conflict. The event is not mutable yet.) as the event is fully propagated across our systems. In such a case, simply retry the request. * @param eventId The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-get-function#event_id). (required) A value that is not a valid identifier is rejected with an {@link ApiException} before a request is sent. * @param eventUpdate (required) * @return ApiResponse @@ -1439,7 +1461,7 @@ public void updateEvent(String eventId, EventUpdate eventUpdate) throws ApiExcep *
Status Code Description Response Headers
200 OK. -
400 Bad request. The request payload is not valid. -
400 Bad request. The request payload is not valid, the event is older than 10 days, or the event cannot be updated. -
403 Forbidden. Access to this API is denied. -
404 Not found. The event ID cannot be found in this workspace's data. -
409 Conflict. The event is not mutable yet. -
* * - * + * * * * diff --git a/sdk/src/main/java/com/fingerprint/v4/model/Event.java b/sdk/src/main/java/com/fingerprint/v4/model/Event.java index b49f2041..3847b303 100644 --- a/sdk/src/main/java/com/fingerprint/v4/model/Event.java +++ b/sdk/src/main/java/com/fingerprint/v4/model/Event.java @@ -53,6 +53,7 @@ Event.JSON_PROPERTY_BOT_TYPE, Event.JSON_PROPERTY_BOT_INFO, Event.JSON_PROPERTY_CLONED_APP, + Event.JSON_PROPERTY_COMPROMISED_DEVICE_INTEGRITY, Event.JSON_PROPERTY_DEVELOPER_TOOLS, Event.JSON_PROPERTY_DEVICE_DETAILS, Event.JSON_PROPERTY_EMULATOR, @@ -184,6 +185,10 @@ public class Event { public static final String JSON_PROPERTY_CLONED_APP = "cloned_app"; @jakarta.annotation.Nullable private Boolean clonedApp; + public static final String JSON_PROPERTY_COMPROMISED_DEVICE_INTEGRITY = + "compromised_device_integrity"; + @jakarta.annotation.Nullable private Boolean compromisedDeviceIntegrity; + public static final String JSON_PROPERTY_DEVELOPER_TOOLS = "developer_tools"; @jakarta.annotation.Nullable private Boolean developerTools; @@ -931,6 +936,30 @@ public void setClonedApp(@jakarta.annotation.Nullable Boolean clonedApp) { this.clonedApp = clonedApp; } + public Event compromisedDeviceIntegrity( + @jakarta.annotation.Nullable Boolean compromisedDeviceIntegrity) { + this.compromisedDeviceIntegrity = compromisedDeviceIntegrity; + return this; + } + + /** + * `true` if the Android device's boot or system integrity is compromised (e.g., an unlocked bootloader or a failed verified boot), so the device cannot be trusted. `false` if no integrity issue was detected. Available from Android SDK 2.6.0+. + * @return compromisedDeviceIntegrity + */ + @jakarta.annotation.Nullable + @JsonProperty(value = JSON_PROPERTY_COMPROMISED_DEVICE_INTEGRITY, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getCompromisedDeviceIntegrity() { + return compromisedDeviceIntegrity; + } + + @JsonProperty(value = JSON_PROPERTY_COMPROMISED_DEVICE_INTEGRITY, required = false) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public void setCompromisedDeviceIntegrity( + @jakarta.annotation.Nullable Boolean compromisedDeviceIntegrity) { + this.compromisedDeviceIntegrity = compromisedDeviceIntegrity; + } + public Event developerTools(@jakarta.annotation.Nullable Boolean developerTools) { this.developerTools = developerTools; return this; @@ -1830,6 +1859,7 @@ public boolean equals(Object o) { && Objects.equals(this.botType, event.botType) && Objects.equals(this.botInfo, event.botInfo) && Objects.equals(this.clonedApp, event.clonedApp) + && Objects.equals(this.compromisedDeviceIntegrity, event.compromisedDeviceIntegrity) && Objects.equals(this.developerTools, event.developerTools) && Objects.equals(this.deviceDetails, event.deviceDetails) && Objects.equals(this.emulator, event.emulator) @@ -1901,6 +1931,7 @@ public int hashCode() { botType, botInfo, clonedApp, + compromisedDeviceIntegrity, developerTools, deviceDetails, emulator, @@ -1977,6 +2008,9 @@ public String toString() { sb.append(" botType: ").append(toIndentedString(botType)).append("\n"); sb.append(" botInfo: ").append(toIndentedString(botInfo)).append("\n"); sb.append(" clonedApp: ").append(toIndentedString(clonedApp)).append("\n"); + sb.append(" compromisedDeviceIntegrity: ") + .append(toIndentedString(compromisedDeviceIntegrity)) + .append("\n"); sb.append(" developerTools: ").append(toIndentedString(developerTools)).append("\n"); sb.append(" deviceDetails: ").append(toIndentedString(deviceDetails)).append("\n"); sb.append(" emulator: ").append(toIndentedString(emulator)).append("\n"); 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 6c4df7ed..a42aa55b 100644 --- a/sdk/src/test/java/com/fingerprint/v4/api/FingerprintApiTest.java +++ b/sdk/src/test/java/com/fingerprint/v4/api/FingerprintApiTest.java @@ -218,6 +218,7 @@ public void getEventTest() throws ApiException { assertFalse(response.getVirtualMachine()); assertInstanceOf(VelocityData.class, response.getVelocity().getDistinctCountry()); assertFalse(response.getLocationSpoofing()); + assertFalse(response.getCompromisedDeviceIntegrity()); assertEquals(0L, response.getFactoryResetTimestamp()); assertNotNull(response.getTags()); assertTrue(response.getTags().isEmpty()); @@ -447,6 +448,7 @@ public void searchEventsMinimumParamsTest() throws ApiException { assertFalse(event.getVirtualMachine()); assertInstanceOf(VelocityData.class, event.getVelocity().getDistinctVisitorIdByLinkedId()); assertFalse(event.getLocationSpoofing()); + assertFalse(event.getCompromisedDeviceIntegrity()); assertEquals(0L, event.getFactoryResetTimestamp()); } @@ -504,8 +506,9 @@ public void searchEventsMaximumParamsTest() throws ApiException { final SearchEventsIncrementalIdentificationStatus INCREMENTAL_IDENTIFICATION_STATUS = SearchEventsIncrementalIdentificationStatus.PARTIALLY_COMPLETED; final Boolean SIMULATOR = true; - final List SOURCE = Arrays.asList(SearchEventsSource.EDGE); final Boolean ACTIVE_CALL = true; + final List SOURCE = Arrays.asList(SearchEventsSource.EDGE); + final Boolean COMPROMISED_DEVICE_INTEGRITY = true; Map expectedQueryParams = new HashMap<>(); expectedQueryParams.put("limit", String.valueOf(LIMIT)); @@ -552,6 +555,8 @@ public void searchEventsMaximumParamsTest() throws ApiException { "incremental_identification_status", String.valueOf(INCREMENTAL_IDENTIFICATION_STATUS)); expectedQueryParams.put("simulator", String.valueOf(SIMULATOR)); expectedQueryParams.put("active_call", String.valueOf(ACTIVE_CALL)); + expectedQueryParams.put( + "compromised_device_integrity", String.valueOf(COMPROMISED_DEVICE_INTEGRITY)); final int arrayQueryParamsCount = ENVIRONMENT.size() @@ -636,8 +641,9 @@ public void searchEventsMaximumParamsTest() throws ApiException { .setHighRecallId(HIGH_RECALL_ID) .setIncrementalIdentificationStatus(INCREMENTAL_IDENTIFICATION_STATUS) .setSimulator(SIMULATOR) + .setActiveCall(ACTIVE_CALL) .setSource(SOURCE) - .setActiveCall(ACTIVE_CALL)); + .setCompromisedDeviceIntegrity(COMPROMISED_DEVICE_INTEGRITY)); 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 e3446c04..a2456b91 100644 --- a/sdk/src/test/resources/mocks/events/get_event_200.json +++ b/sdk/src/test/resources/mocks/events/get_event_200.json @@ -319,5 +319,6 @@ "ml_score": 0.01 } ], - "active_call": false + "active_call": false, + "compromised_device_integrity": false } 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 39bc6324..8c326426 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 @@ -321,5 +321,6 @@ } ], "active_call": false, + "compromised_device_integrity": false, "unknown_field": "unknown_field_value" } 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 94863ac3..f2ebfe99 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 @@ -320,6 +320,7 @@ } ], "active_call": false, + "compromised_device_integrity": false, "rule_action": { "type": "block", "status_code": 403, 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 5729c37d..f746fd86 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 @@ -321,7 +321,8 @@ "ml_score": 0.01 } ], - "active_call": false + "active_call": false, + "compromised_device_integrity": false } ], "pagination_key": "S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q"
Status Code Description Response Headers
200 OK. -
400 Bad request. The request payload is not valid. -
400 Bad request. The request payload is not valid, the event is older than 10 days, or the event cannot be updated. -
403 Forbidden. Access to this API is denied. -
404 Not found. The event ID cannot be found in this workspace's data. -
409 Conflict. The event is not mutable yet. -