diff --git a/.changeset/active-call.md b/.changeset/active-call.md new file mode 100644 index 00000000..72a5e07a --- /dev/null +++ b/.changeset/active-call.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events**: Add `active_call` smart signal to `Event` diff --git a/.changeset/automation-intelligence-edge-tag.md b/.changeset/automation-intelligence-edge-tag.md new file mode 100644 index 00000000..bbba096a --- /dev/null +++ b/.changeset/automation-intelligence-edge-tag.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +Add `Edge` tag to the Automation Intelligence API endpoint diff --git a/.changeset/keyboard-layout-hash.md b/.changeset/keyboard-layout-hash.md new file mode 100644 index 00000000..5466354c --- /dev/null +++ b/.changeset/keyboard-layout-hash.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events**: Add `keyboard_layout_hash` to `RawDeviceAttributes` diff --git a/.changeset/raw-device-attributes-battery-charging.md b/.changeset/raw-device-attributes-battery-charging.md new file mode 100644 index 00000000..6b3c34ab --- /dev/null +++ b/.changeset/raw-device-attributes-battery-charging.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events**: Add `battery_charging` field to `RawDeviceAttributes` diff --git a/.changeset/search-error-responses-events-search.md b/.changeset/search-error-responses-events-search.md new file mode 100644 index 00000000..52312e16 --- /dev/null +++ b/.changeset/search-error-responses-events-search.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events-search**: Add 429 and 504 error responses to Search Events endpoint diff --git a/.changeset/search-error-responses-events.md b/.changeset/search-error-responses-events.md new file mode 100644 index 00000000..98da1f73 --- /dev/null +++ b/.changeset/search-error-responses-events.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events**: Add 504 error response to Get Event endpoint diff --git a/.schema-version b/.schema-version index 5e05a378..4d0729e5 100644 --- a/.schema-version +++ b/.schema-version @@ -1 +1 @@ -v3.4.2 \ No newline at end of file +v3.5.0 \ No newline at end of file diff --git a/docs/Event.md b/docs/Event.md index 223ac4b1..578aedfe 100644 --- a/docs/Event.md +++ b/docs/Event.md @@ -1,5 +1,5 @@ # Event -Contains results from Fingerprint Identification and all active Smart Signals. +Contains results from Fingerprint Identification and all active Smart Signals. Some Smart Signals are only supported for certain device types, these fields will be omitted for events not generated from the supported devices. Consult the [Smart Signals reference](https://docs.fingerprint.com/docs/smart-signals-reference) for more details. ## Properties Name | Type | Description | Notes @@ -26,6 +26,7 @@ Name | Type | Description | Notes **client_referrer** | **str** | Client Referrer field corresponds to the `document.referrer` field gathered during an identification request. The value is an empty string if the user navigated to the page directly (not through a link, but, for example, by using a bookmark). | [optional] **browser_details** | [**BrowserDetails**](BrowserDetails.md) | | [optional] **proximity** | [**Proximity**](Proximity.md) | | [optional] +**active_call** | **bool** | Indicates whether the mobile device had an active call (cellular or VoIP) at the time of the request. Available from SDK 2.16.0+ on iOS and Android. | [optional] **bot** | [**BotResult**](BotResult.md) | | [optional] **bot_type** | **str** | Additional classification of the bot type if detected. | [optional] **bot_info** | [**BotInfo**](BotInfo.md) | | [optional] @@ -60,7 +61,7 @@ Name | Type | Description | Notes **vpn_confidence** | [**VpnConfidence**](VpnConfidence.md) | | [optional] **vpn_ml_score** | **float** | Machine learning–based VPN score, represented as a floating-point value between 0 and 1 (inclusive), with up to three decimal places of precision. A higher score means a higher confidence in the positive `vpn` detection result. This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). | [optional] **vpn_origin_timezone** | **str** | Local timezone which is used in timezone_mismatch method. | [optional] -**vpn_origin_country** | **str** | Country of the request (only for Android SDK version >= 2.4.0, ISO 3166 format or unknown). | [optional] +**vpn_origin_country** | **str** | Country of the request (Android SDK version >= 2.4.0, iOS SDK version >= 2.9.0, JS agent >= 3.12.9 / 4.0.2), ISO 3166 format or unknown. | [optional] **vpn_methods** | [**VpnMethods**](VpnMethods.md) | | [optional] **high_activity_device** | **bool** | Flag indicating if the request came from a high-activity visitor. | [optional] **rare_device** | **bool** | `true` if the device is considered rare based on its combination of hardware and software attributes. A device is classified as rare if it falls within the top 99.9 percentile (lowest-frequency segment) of observed traffic, or if its configuration has not been previously seen (`not_seen`). > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). | [optional] diff --git a/docs/FingerprintApi.md b/docs/FingerprintApi.md index a0d2ba7a..926a8d20 100644 --- a/docs/FingerprintApi.md +++ b/docs/FingerprintApi.md @@ -181,8 +181,9 @@ Name | Type | Description | Notes **400** | Bad request. The event Id provided is not valid. | - | **403** | Forbidden. Access to this API is denied. | - | **404** | Not found. The event Id cannot be found in this workspace's data. | - | -**429** | Too Many Requests. The request is throttled. | - | +**429** | Too Many Requests. The request is throttled. To protect service stability during rare periods of extreme load, we may return HTTP 429 responses with message `too many search requests` even if you are within your assigned rate limits. | - | **500** | Workspace error. | - | +**504** | Gateway Timeout. Search execution exceeded the allowed timeout window. | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) @@ -254,7 +255,7 @@ pagination_key: str = 'S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk visitor_id: str = 'Ibk1527CUFmcnjLwIs4A9' # Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) issued by Fingerprint Identification and all active Smart Signals. Filter events by matching Visitor ID (`identification.visitor_id` property). (optional) high_recall_id: str = 'Ibk1527CUFmcnjLwIs4A9' # The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared to the standard visitor ID, the High Recall ID strives to match incoming browsers more generously (rather than precisely) with existing browsers and thus identifies fewer browsers as new. The High Recall ID is best suited for use cases that are sensitive to browsers being identified as new and where mismatched browsers are not detrimental. Filter events by matching High Recall ID (`supplementary_id_high_recall.visitor_id` property). (optional) bot: SearchEventsBot = fingerprint_server_sdk.SearchEventsBot() # Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. (optional) -bot_info: SearchEventsBotInfo = fingerprint_server_sdk.SearchEventsBotInfo() # Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. (optional) +bot_info: SearchEventsBotInfo = fingerprint_server_sdk.SearchEventsBotInfo() # Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. (optional) bot_info_category: List[BotInfoCategory] = [fingerprint_server_sdk.BotInfoCategory()] # Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. (optional) bot_info_identity: List[BotInfoIdentity] = [fingerprint_server_sdk.BotInfoIdentity()] # Filter events by their Bot Info Identity type. Multiple identity types can be provided using the repeated keys syntax. For example, `bot_info_identity=verified&bot_info_identity=signed`, will match events with a Bot Info Identity of `verified` or `signed`. Other notations like comma-separated or bracket notation are not supported. (optional) bot_info_confidence: List[BotInfoConfidence] = [fingerprint_server_sdk.BotInfoConfidence()] # Filter events by their Bot Info Confidence. Multiple confidences can be provided using the repeated keys syntax. For example, `bot_info_confidence=high&bot_info_confidence=medium`, will match events with a Bot Info Confidence of `high` or `medium`. Other notations like comma-separated or bracket notation are not supported. (optional) @@ -267,19 +268,19 @@ url: str = 'https://example.com/login' # Filter events by the URL (`url` propert bundle_id: str = 'com.example.app' # Filter events by the Bundle ID (iOS) associated with the event. (optional) package_name: str = 'com.example.app' # Filter events by the Package Name (Android) associated with the event. (optional) origin: str = 'https://example.com' # Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) (optional) -start: SearchEventsStartParameter = fingerprint_server_sdk.SearchEventsStartParameter() # Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. (optional) -end: SearchEventsEndParameter = fingerprint_server_sdk.SearchEventsEndParameter() # Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. (optional) +start: SearchEventsStartParameter = fingerprint_server_sdk.SearchEventsStartParameter() # Include events that happened after the provided `start` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to 7 days ago. Setting `start` does not change the default `end` date of `now` — adjust it separately if needed. (optional) +end: SearchEventsEndParameter = fingerprint_server_sdk.SearchEventsEndParameter() # Include events that happened before the provided `end` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to now. Setting `end` does not change the default `start` date of `7 days ago` — adjust it separately if needed. (optional) reverse: bool = True # When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). (optional) suspect: bool = True # Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. (optional) vpn: bool = True # Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. (optional) virtual_machine: bool = True # Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. (optional) -tampering: bool = True # Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. (optional) -anti_detect_browser: bool = True # Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. (optional) +tampering: bool = True # Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. (optional) +anti_detect_browser: bool = True # Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering_details.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. (optional) incognito: bool = True # Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. (optional) privacy_settings: bool = True # Filter events by Privacy Settings Detection result. > Note: When using this parameter, only events with the `privacy_settings` property set to `true` or `false` are returned. Events without a `privacy_settings` Smart Signal result are left out of the response. (optional) jailbroken: bool = True # Filter events by Jailbroken Device Detection result. > Note: When using this parameter, only events with the `jailbroken` property set to `true` or `false` are returned. Events without a `jailbroken` Smart Signal result are left out of the response. (optional) frida: bool = True # Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. (optional) -factory_reset: bool = True # Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. (optional) +factory_reset: bool = True # Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset_timestamp` property populated are included. Events without a `factory_reset_timestamp` Smart Signal result are left out of the response. (optional) cloned_app: bool = True # Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. (optional) emulator: bool = True # Filter events by Android Emulator Detection result. > Note: When using this parameter, only events with the `emulator` property set to `true` or `false` are returned. Events without an `emulator` Smart Signal result are left out of the response. (optional) root_apps: bool = True # Filter events by Rooted Device Detection result. > Note: When using this parameter, only events with the `root_apps` property set to `true` or `false` are returned. Events without a `root_apps` Smart Signal result are left out of the response. (optional) @@ -299,7 +300,7 @@ total_hits: int = 100 # When set, the response will include a `total_hits` prope tor_node: bool = True # 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) incremental_identification_status: SearchEventsIncrementalIdentificationStatus = fingerprint_server_sdk.SearchEventsIncrementalIdentificationStatus() # Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. (optional) simulator: bool = True # 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) -source: List[SearchEventsSource] = [fingerprint_server_sdk.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. > 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) +source: List[SearchEventsSource] = [fingerprint_server_sdk.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) try: # Search events @@ -327,7 +328,7 @@ Name | Type | Description | Notes **visitor_id** | **str**| Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) issued by Fingerprint Identification and all active Smart Signals. Filter events by matching Visitor ID (`identification.visitor_id` property). | [optional] **high_recall_id** | **str**| The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared to the standard visitor ID, the High Recall ID strives to match incoming browsers more generously (rather than precisely) with existing browsers and thus identifies fewer browsers as new. The High Recall ID is best suited for use cases that are sensitive to browsers being identified as new and where mismatched browsers are not detrimental. Filter events by matching High Recall ID (`supplementary_id_high_recall.visitor_id` property). | [optional] **bot** | [**SearchEventsBot**](.md)| Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. | [optional] - **bot_info** | [**SearchEventsBotInfo**](.md)| Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. | [optional] + **bot_info** | [**SearchEventsBotInfo**](.md)| Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. | [optional] **bot_info_category** | [**List[BotInfoCategory]**](BotInfoCategory.md)| Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. | [optional] **bot_info_identity** | [**List[BotInfoIdentity]**](BotInfoIdentity.md)| Filter events by their Bot Info Identity type. Multiple identity types can be provided using the repeated keys syntax. For example, `bot_info_identity=verified&bot_info_identity=signed`, will match events with a Bot Info Identity of `verified` or `signed`. Other notations like comma-separated or bracket notation are not supported. | [optional] **bot_info_confidence** | [**List[BotInfoConfidence]**](BotInfoConfidence.md)| Filter events by their Bot Info Confidence. Multiple confidences can be provided using the repeated keys syntax. For example, `bot_info_confidence=high&bot_info_confidence=medium`, will match events with a Bot Info Confidence of `high` or `medium`. Other notations like comma-separated or bracket notation are not supported. | [optional] @@ -340,19 +341,19 @@ Name | Type | Description | Notes **bundle_id** | **str**| Filter events by the Bundle ID (iOS) associated with the event. | [optional] **package_name** | **str**| Filter events by the Package Name (Android) associated with the event. | [optional] **origin** | **str**| Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) | [optional] - **start** | [**SearchEventsStartParameter**](.md)| Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. | [optional] - **end** | [**SearchEventsEndParameter**](.md)| Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. | [optional] + **start** | [**SearchEventsStartParameter**](.md)| Include events that happened after the provided `start` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to 7 days ago. Setting `start` does not change the default `end` date of `now` — adjust it separately if needed. | [optional] + **end** | [**SearchEventsEndParameter**](.md)| Include events that happened before the provided `end` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to now. Setting `end` does not change the default `start` date of `7 days ago` — adjust it separately if needed. | [optional] **reverse** | **bool**| When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). | [optional] **suspect** | **bool**| Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. | [optional] **vpn** | **bool**| Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. | [optional] **virtual_machine** | **bool**| Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. | [optional] - **tampering** | **bool**| Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. | [optional] - **anti_detect_browser** | **bool**| Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. | [optional] + **tampering** | **bool**| Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. | [optional] + **anti_detect_browser** | **bool**| Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering_details.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. | [optional] **incognito** | **bool**| Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. | [optional] **privacy_settings** | **bool**| Filter events by Privacy Settings Detection result. > Note: When using this parameter, only events with the `privacy_settings` property set to `true` or `false` are returned. Events without a `privacy_settings` Smart Signal result are left out of the response. | [optional] **jailbroken** | **bool**| Filter events by Jailbroken Device Detection result. > Note: When using this parameter, only events with the `jailbroken` property set to `true` or `false` are returned. Events without a `jailbroken` Smart Signal result are left out of the response. | [optional] **frida** | **bool**| Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. | [optional] - **factory_reset** | **bool**| Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. | [optional] + **factory_reset** | **bool**| Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset_timestamp` property populated are included. Events without a `factory_reset_timestamp` Smart Signal result are left out of the response. | [optional] **cloned_app** | **bool**| Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. | [optional] **emulator** | **bool**| Filter events by Android Emulator Detection result. > Note: When using this parameter, only events with the `emulator` property set to `true` or `false` are returned. Events without an `emulator` Smart Signal result are left out of the response. | [optional] **root_apps** | **bool**| Filter events by Rooted Device Detection result. > Note: When using this parameter, only events with the `root_apps` property set to `true` or `false` are returned. Events without a `root_apps` Smart Signal result are left out of the response. | [optional] @@ -372,7 +373,7 @@ Name | Type | Description | Notes **tor_node** | **bool**| 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] **incremental_identification_status** | [**SearchEventsIncrementalIdentificationStatus**](.md)| Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. | [optional] **simulator** | **bool**| 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] - **source** | [**List[SearchEventsSource]**](SearchEventsSource.md)| 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. > 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] + **source** | [**List[SearchEventsSource]**](SearchEventsSource.md)| 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 @@ -391,7 +392,9 @@ Name | Type | Description | Notes **400** | Bad request. One or more supplied search parameters are invalid, or a required parameter is missing. | - | **403** | Forbidden. Access to this API is denied. | - | **404** | Not found. The requested visitor does not exist in this workspace's data. | - | +**429** | Too Many Requests. The request is throttled. To protect service stability during rare periods of extreme load, we may return HTTP 429 responses with message `too many search requests` even if you are within your assigned rate limits. | - | **500** | Workspace error. | - | +**504** | Gateway Timeout. Search execution exceeded the allowed timeout window. | - | [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) diff --git a/docs/RawDeviceAttributes.md b/docs/RawDeviceAttributes.md index f9cb516f..d3cca510 100644 --- a/docs/RawDeviceAttributes.md +++ b/docs/RawDeviceAttributes.md @@ -8,7 +8,7 @@ Name | Type | Description | Notes **font_preferences** | [**FontPreferences**](FontPreferences.md) | | [optional] **emoji** | [**Emoji**](Emoji.md) | | [optional] **fonts** | **List[str]** | List of fonts detected on the device. | [optional] -**device_memory** | **int** | Rounded amount of RAM in gigabytes. | [optional] +**device_memory** | **int** | Rounded amount of RAM in gigabytes. Available for browsers, Android, and iOS devices. | [optional] **timezone** | **str** | Timezone identifier detected on the client. | [optional] **canvas** | [**Canvas**](Canvas.md) | | [optional] **languages** | **List[List[str]]** | Navigator languages reported by the agent including fallbacks. Each inner array represents ordered language preferences reported by different APIs. Available for browsers, iOS, and Android devices. | [optional] @@ -34,8 +34,10 @@ Name | Type | Description | Notes **device_manufacturer** | **str** | Device manufacturer string. Available only for Android and iOS devices. | [optional] **font_hash** | **str** | Unique identifier for the user’s installed fonts. | [optional] **timezone_offset** | **str** | UTC offset in \"±HH:MM\" format derived from the detected IANA timezone. | [optional] -**battery_level** | **int** | Battery charge level as a percentage (0-100). Available only for Android and iOS devices. | [optional] +**battery_level** | **int** | Battery charge level as a percentage (0-100). Available for Android, iOS, and web devices. On web, only available in Chromium-based browsers. | [optional] +**battery_charging** | **bool** | When `true`, the device is currently charging. Available only for web devices on Chromium-based browsers. | [optional] **battery_low_power_mode** | **bool** | Whether the device's low power mode is enabled. Available only for Android and iOS devices. | [optional] +**keyboard_layout_hash** | **str** | Unique identifier for the user's keyboard layout. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/SearchEventsBotInfo.md b/docs/SearchEventsBotInfo.md index dc9d2897..e12609a7 100644 --- a/docs/SearchEventsBotInfo.md +++ b/docs/SearchEventsBotInfo.md @@ -1,7 +1,7 @@ # SearchEventsBotInfo Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - - `none` - events where no bot was detected. + - `none` - events where no bot was detected, and no `bot_info` was present. ## Enum diff --git a/docs/Velocity.md b/docs/Velocity.md index d04c4003..c56f873d 100644 --- a/docs/Velocity.md +++ b/docs/Velocity.md @@ -10,10 +10,10 @@ intervals: 5 minutes, 1 hour, and 24 hours as follows: - Number of distinct IP addresses associated with the provided linked Id. - Number of distinct visitor Ids associated with the provided linked Id. -The `24h` interval of `distinct_ip`, `distinct_linked_id`, `distinct_country`, +The `24_hours` interval of `distinct_ip`, `distinct_linked_id`, `distinct_country`, `distinct_ip_by_linked_id` and `distinct_visitor_id_by_linked_id` will be omitted if the number of `events` for the visitor Id in the last 24 -hours (`events.['24h']`) is higher than 20.000. +hours (`events.['24_hours']`) is higher than 20.000. All will not necessarily be returned in a response, some may be omitted if the associated event does not have the required data, such as a linked_id. diff --git a/docs/VelocityData.md b/docs/VelocityData.md index 29c2fe6b..ae656ac5 100644 --- a/docs/VelocityData.md +++ b/docs/VelocityData.md @@ -7,7 +7,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **var_5_minutes** | **int** | Count for the last 5 minutes of velocity data, from the time of the event. | **var_1_hour** | **int** | Count for the last 1 hour of velocity data, from the time of the event. | -**var_24_hours** | **int** | The `24_hours` interval of `distinct_ip`, `distinct_linked_id`, `distinct_country`, `distinct_ip_by_linked_id` and `distinct_visitor_id_by_linked_id` will be omitted if the number of `events` for the visitor Id in the last 24 hours (`events.['24_hours']`) is higher than 20.000. | [optional] +**var_24_hours** | **int** | Count for the last 24 hours of velocity data, from the time of the event. | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/fingerprint_server_sdk/api/fingerprint_api.py b/fingerprint_server_sdk/api/fingerprint_api.py index edc77b07..9164f2c9 100644 --- a/fingerprint_server_sdk/api/fingerprint_api.py +++ b/fingerprint_server_sdk/api/fingerprint_api.py @@ -363,6 +363,7 @@ def get_event( '404': 'ErrorResponse', '429': 'ErrorResponse', '500': 'ErrorResponse', + '504': 'ErrorResponse', } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -437,6 +438,7 @@ def get_event_with_http_info( '404': 'ErrorResponse', '429': 'ErrorResponse', '500': 'ErrorResponse', + '504': 'ErrorResponse', } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -511,6 +513,7 @@ def get_event_without_preload_content( '404': 'ErrorResponse', '429': 'ErrorResponse', '500': 'ErrorResponse', + '504': 'ErrorResponse', } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -602,7 +605,7 @@ def search_events( bot_info: Annotated[ Optional[SearchEventsBotInfo], Field( - description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. ' + description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. ' ), ] = None, bot_info_category: Annotated[ @@ -678,13 +681,13 @@ def search_events( start: Annotated[ Optional[SearchEventsStartParameter], Field( - description="Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. ", + description='Include events that happened after the provided `start` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to 7 days ago. Setting `start` does not change the default `end` date of `now` — adjust it separately if needed. ', ), ] = None, end: Annotated[ Optional[SearchEventsEndParameter], Field( - description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", + description='Include events that happened before the provided `end` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to now. Setting `end` does not change the default `start` date of `7 days ago` — adjust it separately if needed. ', ), ] = None, reverse: Annotated[ @@ -714,13 +717,13 @@ def search_events( tampering: Annotated[ Optional[StrictBool], Field( - description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' + description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' ), ] = None, anti_detect_browser: Annotated[ Optional[StrictBool], Field( - description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' + description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering_details.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' ), ] = None, incognito: Annotated[ @@ -750,7 +753,7 @@ def search_events( factory_reset: Annotated[ Optional[StrictBool], Field( - description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. ' + description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset_timestamp` property populated are included. Events without a `factory_reset_timestamp` Smart Signal result are left out of the response. ' ), ] = None, cloned_app: Annotated[ @@ -870,7 +873,7 @@ def search_events( source: Annotated[ Optional[Annotated[list[SearchEventsSource], Field(max_length=1)]], Field( - description='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. > 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. ' + description='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. ' ), ] = None, _request_timeout: Union[ @@ -896,7 +899,7 @@ def search_events( :type high_recall_id: str :param bot: Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. :type bot: SearchEventsBot - :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. + :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. :type bot_info: SearchEventsBotInfo :param bot_info_category: Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. :type bot_info_category: List[BotInfoCategory] @@ -922,9 +925,9 @@ def search_events( :type package_name: str :param origin: Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) :type origin: str - :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. + :param start: Include events that happened after the provided `start` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to 7 days ago. Setting `start` does not change the default `end` date of `now` — adjust it separately if needed. :type start: SearchEventsStartParameter - :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. + :param end: Include events that happened before the provided `end` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to now. Setting `end` does not change the default `start` date of `7 days ago` — adjust it separately if needed. :type end: SearchEventsEndParameter :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). :type reverse: bool @@ -934,9 +937,9 @@ def search_events( :type vpn: bool :param virtual_machine: Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. :type virtual_machine: bool - :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. + :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. :type tampering: bool - :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. + :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering_details.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. :type anti_detect_browser: bool :param incognito: Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. :type incognito: bool @@ -946,7 +949,7 @@ def search_events( :type jailbroken: bool :param frida: Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. :type frida: bool - :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. + :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset_timestamp` property populated are included. Events without a `factory_reset_timestamp` Smart Signal result are left out of the response. :type factory_reset: bool :param cloned_app: Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. :type cloned_app: bool @@ -986,7 +989,7 @@ def search_events( :type incremental_identification_status: SearchEventsIncrementalIdentificationStatus :param simulator: 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. :type simulator: bool - :param 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. > 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. + :param 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. :type source: List[SearchEventsSource] :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1068,7 +1071,9 @@ def search_events( '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', + '429': 'ErrorResponse', '500': 'ErrorResponse', + '504': 'ErrorResponse', } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -1114,7 +1119,7 @@ def search_events_with_http_info( bot_info: Annotated[ Optional[SearchEventsBotInfo], Field( - description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. ' + description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. ' ), ] = None, bot_info_category: Annotated[ @@ -1190,13 +1195,13 @@ def search_events_with_http_info( start: Annotated[ Optional[SearchEventsStartParameter], Field( - description="Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. ", + description='Include events that happened after the provided `start` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to 7 days ago. Setting `start` does not change the default `end` date of `now` — adjust it separately if needed. ', ), ] = None, end: Annotated[ Optional[SearchEventsEndParameter], Field( - description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", + description='Include events that happened before the provided `end` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to now. Setting `end` does not change the default `start` date of `7 days ago` — adjust it separately if needed. ', ), ] = None, reverse: Annotated[ @@ -1226,13 +1231,13 @@ def search_events_with_http_info( tampering: Annotated[ Optional[StrictBool], Field( - description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' + description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' ), ] = None, anti_detect_browser: Annotated[ Optional[StrictBool], Field( - description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' + description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering_details.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' ), ] = None, incognito: Annotated[ @@ -1262,7 +1267,7 @@ def search_events_with_http_info( factory_reset: Annotated[ Optional[StrictBool], Field( - description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. ' + description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset_timestamp` property populated are included. Events without a `factory_reset_timestamp` Smart Signal result are left out of the response. ' ), ] = None, cloned_app: Annotated[ @@ -1382,7 +1387,7 @@ def search_events_with_http_info( source: Annotated[ Optional[Annotated[list[SearchEventsSource], Field(max_length=1)]], Field( - description='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. > 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. ' + description='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. ' ), ] = None, _request_timeout: Union[ @@ -1408,7 +1413,7 @@ def search_events_with_http_info( :type high_recall_id: str :param bot: Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. :type bot: SearchEventsBot - :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. + :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. :type bot_info: SearchEventsBotInfo :param bot_info_category: Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. :type bot_info_category: List[BotInfoCategory] @@ -1434,9 +1439,9 @@ def search_events_with_http_info( :type package_name: str :param origin: Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) :type origin: str - :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. + :param start: Include events that happened after the provided `start` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to 7 days ago. Setting `start` does not change the default `end` date of `now` — adjust it separately if needed. :type start: SearchEventsStartParameter - :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. + :param end: Include events that happened before the provided `end` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to now. Setting `end` does not change the default `start` date of `7 days ago` — adjust it separately if needed. :type end: SearchEventsEndParameter :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). :type reverse: bool @@ -1446,9 +1451,9 @@ def search_events_with_http_info( :type vpn: bool :param virtual_machine: Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. :type virtual_machine: bool - :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. + :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. :type tampering: bool - :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. + :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering_details.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. :type anti_detect_browser: bool :param incognito: Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. :type incognito: bool @@ -1458,7 +1463,7 @@ def search_events_with_http_info( :type jailbroken: bool :param frida: Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. :type frida: bool - :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. + :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset_timestamp` property populated are included. Events without a `factory_reset_timestamp` Smart Signal result are left out of the response. :type factory_reset: bool :param cloned_app: Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. :type cloned_app: bool @@ -1498,7 +1503,7 @@ def search_events_with_http_info( :type incremental_identification_status: SearchEventsIncrementalIdentificationStatus :param simulator: 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. :type simulator: bool - :param 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. > 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. + :param 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. :type source: List[SearchEventsSource] :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -1580,7 +1585,9 @@ def search_events_with_http_info( '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', + '429': 'ErrorResponse', '500': 'ErrorResponse', + '504': 'ErrorResponse', } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -1626,7 +1633,7 @@ def search_events_without_preload_content( bot_info: Annotated[ Optional[SearchEventsBotInfo], Field( - description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. ' + description='Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. ' ), ] = None, bot_info_category: Annotated[ @@ -1702,13 +1709,13 @@ def search_events_without_preload_content( start: Annotated[ Optional[SearchEventsStartParameter], Field( - description="Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. ", + description='Include events that happened after the provided `start` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to 7 days ago. Setting `start` does not change the default `end` date of `now` — adjust it separately if needed. ', ), ] = None, end: Annotated[ Optional[SearchEventsEndParameter], Field( - description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", + description='Include events that happened before the provided `end` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to now. Setting `end` does not change the default `start` date of `7 days ago` — adjust it separately if needed. ', ), ] = None, reverse: Annotated[ @@ -1738,13 +1745,13 @@ def search_events_without_preload_content( tampering: Annotated[ Optional[StrictBool], Field( - description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' + description='Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' ), ] = None, anti_detect_browser: Annotated[ Optional[StrictBool], Field( - description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' + description='Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering_details.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. ' ), ] = None, incognito: Annotated[ @@ -1774,7 +1781,7 @@ def search_events_without_preload_content( factory_reset: Annotated[ Optional[StrictBool], Field( - description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. ' + description='Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset_timestamp` property populated are included. Events without a `factory_reset_timestamp` Smart Signal result are left out of the response. ' ), ] = None, cloned_app: Annotated[ @@ -1894,7 +1901,7 @@ def search_events_without_preload_content( source: Annotated[ Optional[Annotated[list[SearchEventsSource], Field(max_length=1)]], Field( - description='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. > 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. ' + description='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. ' ), ] = None, _request_timeout: Union[ @@ -1920,7 +1927,7 @@ def search_events_without_preload_content( :type high_recall_id: str :param bot: Filter events by the Bot Detection result, specifically: `all` - events where any kind of bot was detected. `good` - events where a good bot was detected. `bad` - events where a bad bot was detected. `none` - events where no bot was detected. > Note: When using this parameter, only events with the `bot` property set to a valid value are returned. Events without a `bot` Smart Signal result are left out of the response. :type bot: SearchEventsBot - :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. + :param bot_info: Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. :type bot_info: SearchEventsBotInfo :param bot_info_category: Filter events by their Bot Info Category. Multiple categories can be provided using the repeated keys syntax. For example, `bot_info_category=ai_agent&bot_info_category=ai_assistant`, will match events with a Bot Info Category of `ai_agent` or `ai_assistant`. Other notations like comma-separated or bracket notation are not supported. :type bot_info_category: List[BotInfoCategory] @@ -1946,9 +1953,9 @@ def search_events_without_preload_content( :type package_name: str :param origin: Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) :type origin: str - :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. + :param start: Include events that happened after the provided `start` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to 7 days ago. Setting `start` does not change the default `end` date of `now` — adjust it separately if needed. :type start: SearchEventsStartParameter - :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. + :param end: Include events that happened before the provided `end` date formatted as an RFC3339 timestamp. For backward compatibility, a Unix milliseconds timestamp is also accepted. Defaults to now. Setting `end` does not change the default `start` date of `7 days ago` — adjust it separately if needed. :type end: SearchEventsEndParameter :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). :type reverse: bool @@ -1958,9 +1965,9 @@ def search_events_without_preload_content( :type vpn: bool :param virtual_machine: Filter events by Virtual Machine Detection result. > Note: When using this parameter, only events with the `virtual_machine` property set to `true` or `false` are returned. Events without a `virtual_machine` Smart Signal result are left out of the response. :type virtual_machine: bool - :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering.result` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. + :param tampering: Filter events by Browser Tampering Detection result. > Note: When using this parameter, only events with the `tampering` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. :type tampering: bool - :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. + :param anti_detect_browser: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the `tampering_details.anti_detect_browser` property set to `true` or `false` are returned. Events without a `tampering` Smart Signal result are left out of the response. :type anti_detect_browser: bool :param incognito: Filter events by Browser Incognito Detection result. > Note: When using this parameter, only events with the `incognito` property set to `true` or `false` are returned. Events without an `incognito` Smart Signal result are left out of the response. :type incognito: bool @@ -1970,7 +1977,7 @@ def search_events_without_preload_content( :type jailbroken: bool :param frida: Filter events by Frida Detection result. > Note: When using this parameter, only events with the `frida` property set to `true` or `false` are returned. Events without a `frida` Smart Signal result are left out of the response. :type frida: bool - :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset` time. Events without a `factory_reset` Smart Signal result are left out of the response. + :param factory_reset: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a `factory_reset_timestamp` property populated are included. Events without a `factory_reset_timestamp` Smart Signal result are left out of the response. :type factory_reset: bool :param cloned_app: Filter events by Cloned App Detection result. > Note: When using this parameter, only events with the `cloned_app` property set to `true` or `false` are returned. Events without a `cloned_app` Smart Signal result are left out of the response. :type cloned_app: bool @@ -2010,7 +2017,7 @@ def search_events_without_preload_content( :type incremental_identification_status: SearchEventsIncrementalIdentificationStatus :param simulator: 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. :type simulator: bool - :param 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. > 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. + :param 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. :type source: List[SearchEventsSource] :param _request_timeout: timeout setting for this request. If one number provided, it will be total request @@ -2092,7 +2099,9 @@ def search_events_without_preload_content( '400': 'ErrorResponse', '403': 'ErrorResponse', '404': 'ErrorResponse', + '429': 'ErrorResponse', '500': 'ErrorResponse', + '504': 'ErrorResponse', } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) diff --git a/fingerprint_server_sdk/models/event.py b/fingerprint_server_sdk/models/event.py index c8bd33a3..d13ecb81 100644 --- a/fingerprint_server_sdk/models/event.py +++ b/fingerprint_server_sdk/models/event.py @@ -48,7 +48,7 @@ class Event(BaseModel): """ - Contains results from Fingerprint Identification and all active Smart Signals. + Contains results from Fingerprint Identification and all active Smart Signals. Some Smart Signals are only supported for certain device types, these fields will be omitted for events not generated from the supported devices. Consult the [Smart Signals reference](https://docs.fingerprint.com/docs/smart-signals-reference) for more details. """ event_id: StrictStr = Field( @@ -112,6 +112,10 @@ class Event(BaseModel): ) browser_details: Optional[BrowserDetails] = None proximity: Optional[Proximity] = None + active_call: Optional[StrictBool] = Field( + default=None, + description='Indicates whether the mobile device had an active call (cellular or VoIP) at the time of the request. Available from SDK 2.16.0+ on iOS and Android. ', + ) bot: Optional[BotResult] = None bot_type: Optional[StrictStr] = Field( default=None, description='Additional classification of the bot type if detected. ' @@ -235,7 +239,7 @@ class Event(BaseModel): ) vpn_origin_country: Optional[StrictStr] = Field( default=None, - description='Country of the request (only for Android SDK version >= 2.4.0, ISO 3166 format or unknown). ', + description='Country of the request (Android SDK version >= 2.4.0, iOS SDK version >= 2.9.0, JS agent >= 3.12.9 / 4.0.2), ISO 3166 format or unknown. ', ) vpn_methods: Optional[VpnMethods] = None high_activity_device: Optional[StrictBool] = Field( @@ -275,6 +279,7 @@ class Event(BaseModel): 'client_referrer', 'browser_details', 'proximity', + 'active_call', 'bot', 'bot_type', 'bot_info', @@ -449,6 +454,7 @@ def from_dict(cls, obj: Optional[dict[str, Any]]) -> Optional[Self]: 'proximity': Proximity.from_dict(obj['proximity']) if obj.get('proximity') is not None else None, + 'active_call': obj.get('active_call'), 'bot': obj.get('bot'), 'bot_type': obj.get('bot_type'), 'bot_info': BotInfo.from_dict(obj['bot_info']) diff --git a/fingerprint_server_sdk/models/raw_device_attributes.py b/fingerprint_server_sdk/models/raw_device_attributes.py index 36f165e0..a842546a 100644 --- a/fingerprint_server_sdk/models/raw_device_attributes.py +++ b/fingerprint_server_sdk/models/raw_device_attributes.py @@ -41,7 +41,8 @@ class RawDeviceAttributes(BaseModel): default=None, description='List of fonts detected on the device.' ) device_memory: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( - default=None, description='Rounded amount of RAM in gigabytes.' + default=None, + description='Rounded amount of RAM in gigabytes. Available for browsers, Android, and iOS devices.', ) timezone: Optional[StrictStr] = Field( default=None, description='Timezone identifier detected on the client.' @@ -116,12 +117,19 @@ class RawDeviceAttributes(BaseModel): ) battery_level: Optional[Annotated[int, Field(le=100, strict=True, ge=0)]] = Field( default=None, - description='Battery charge level as a percentage (0-100). Available only for Android and iOS devices.', + description='Battery charge level as a percentage (0-100). Available for Android, iOS, and web devices. On web, only available in Chromium-based browsers.', + ) + battery_charging: Optional[StrictBool] = Field( + default=None, + description='When `true`, the device is currently charging. Available only for web devices on Chromium-based browsers.', ) battery_low_power_mode: Optional[StrictBool] = Field( default=None, description="Whether the device's low power mode is enabled. Available only for Android and iOS devices.", ) + keyboard_layout_hash: Optional[StrictStr] = Field( + default=None, description="Unique identifier for the user's keyboard layout." + ) __properties: ClassVar[list[str]] = [ 'font_preferences', 'emoji', @@ -153,7 +161,9 @@ class RawDeviceAttributes(BaseModel): 'font_hash', 'timezone_offset', 'battery_level', + 'battery_charging', 'battery_low_power_mode', + 'keyboard_layout_hash', ] model_config = ConfigDict( @@ -273,7 +283,9 @@ def from_dict(cls, obj: Optional[dict[str, Any]]) -> Optional[Self]: 'font_hash': obj.get('font_hash'), 'timezone_offset': obj.get('timezone_offset'), 'battery_level': obj.get('battery_level'), + 'battery_charging': obj.get('battery_charging'), 'battery_low_power_mode': obj.get('battery_low_power_mode'), + 'keyboard_layout_hash': obj.get('keyboard_layout_hash'), } ) return _obj diff --git a/fingerprint_server_sdk/models/search_events_bot_info.py b/fingerprint_server_sdk/models/search_events_bot_info.py index 988ce5bb..b281dc37 100644 --- a/fingerprint_server_sdk/models/search_events_bot_info.py +++ b/fingerprint_server_sdk/models/search_events_bot_info.py @@ -21,7 +21,7 @@ class SearchEventsBotInfo(str, Enum): """ - Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected. + Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - `none` - events where no bot was detected, and no `bot_info` was present. """ """ diff --git a/fingerprint_server_sdk/models/search_events_end_parameter.py b/fingerprint_server_sdk/models/search_events_end_parameter.py index b767f2f4..13ed0176 100644 --- a/fingerprint_server_sdk/models/search_events_end_parameter.py +++ b/fingerprint_server_sdk/models/search_events_end_parameter.py @@ -15,4 +15,4 @@ from pydantic import AwareDatetime -SearchEventsEndParameter = Union[int, AwareDatetime] +SearchEventsEndParameter = Union[AwareDatetime, int] diff --git a/fingerprint_server_sdk/models/search_events_start_parameter.py b/fingerprint_server_sdk/models/search_events_start_parameter.py index 855e05de..a3a4f4b0 100644 --- a/fingerprint_server_sdk/models/search_events_start_parameter.py +++ b/fingerprint_server_sdk/models/search_events_start_parameter.py @@ -15,4 +15,4 @@ from pydantic import AwareDatetime -SearchEventsStartParameter = Union[int, AwareDatetime] +SearchEventsStartParameter = Union[AwareDatetime, int] diff --git a/fingerprint_server_sdk/models/velocity.py b/fingerprint_server_sdk/models/velocity.py index d6109189..ad056ea2 100644 --- a/fingerprint_server_sdk/models/velocity.py +++ b/fingerprint_server_sdk/models/velocity.py @@ -26,7 +26,7 @@ class Velocity(BaseModel): """ - Sums key data points for a specific `visitor_id`, `ip_address` and `linked_id` at three distinct time intervals: 5 minutes, 1 hour, and 24 hours as follows: - Number of distinct IP addresses associated to the visitor Id. - Number of distinct linked Ids associated with the visitor Id. - Number of distinct countries associated with the visitor Id. - Number of identification events associated with the visitor Id. - Number of identification events associated with the detected IP address. - Number of distinct IP addresses associated with the provided linked Id. - Number of distinct visitor Ids associated with the provided linked Id. The `24h` interval of `distinct_ip`, `distinct_linked_id`, `distinct_country`, `distinct_ip_by_linked_id` and `distinct_visitor_id_by_linked_id` will be omitted if the number of `events` for the visitor Id in the last 24 hours (`events.['24h']`) is higher than 20.000. All will not necessarily be returned in a response, some may be omitted if the associated event does not have the required data, such as a linked_id. + Sums key data points for a specific `visitor_id`, `ip_address` and `linked_id` at three distinct time intervals: 5 minutes, 1 hour, and 24 hours as follows: - Number of distinct IP addresses associated to the visitor Id. - Number of distinct linked Ids associated with the visitor Id. - Number of distinct countries associated with the visitor Id. - Number of identification events associated with the visitor Id. - Number of identification events associated with the detected IP address. - Number of distinct IP addresses associated with the provided linked Id. - Number of distinct visitor Ids associated with the provided linked Id. The `24_hours` interval of `distinct_ip`, `distinct_linked_id`, `distinct_country`, `distinct_ip_by_linked_id` and `distinct_visitor_id_by_linked_id` will be omitted if the number of `events` for the visitor Id in the last 24 hours (`events.['24_hours']`) is higher than 20.000. All will not necessarily be returned in a response, some may be omitted if the associated event does not have the required data, such as a linked_id. """ distinct_ip: Optional[VelocityData] = None diff --git a/fingerprint_server_sdk/models/velocity_data.py b/fingerprint_server_sdk/models/velocity_data.py index 91e702a9..ac74cd62 100644 --- a/fingerprint_server_sdk/models/velocity_data.py +++ b/fingerprint_server_sdk/models/velocity_data.py @@ -37,7 +37,7 @@ class VelocityData(BaseModel): ) var_24_hours: Optional[StrictInt] = Field( default=None, - description="The `24_hours` interval of `distinct_ip`, `distinct_linked_id`, `distinct_country`, `distinct_ip_by_linked_id` and `distinct_visitor_id_by_linked_id` will be omitted if the number of `events` for the visitor Id in the last 24 hours (`events.['24_hours']`) is higher than 20.000. ", + description='Count for the last 24 hours of velocity data, from the time of the event. ', alias='24_hours', ) __properties: ClassVar[list[str]] = ['5_minutes', '1_hour', '24_hours'] diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index 2786e851..2bac3291 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -104,7 +104,12 @@ paths: schema: $ref: '#/components/schemas/ErrorResponse' '429': - description: Too Many Requests. The request is throttled. + description: > + Too Many Requests. The request is throttled. + + To protect service stability during rare periods of extreme load, we + may return HTTP 429 responses with message `too many search + requests` even if you are within your assigned rate limits. content: application/json: schema: @@ -115,6 +120,14 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + '504': + description: >- + Gateway Timeout. Search execution exceeded the allowed timeout + window. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' patch: tags: - Fingerprint @@ -350,7 +363,7 @@ paths: description: | Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - - `none` - events where no bot was detected. + - `none` - events where no bot was detected, and no `bot_info` was present. - name: bot_info_category in: query style: form @@ -526,47 +539,48 @@ paths: in: query schema: oneOf: - - type: integer - format: int64 - examples: - - 1767225600000 - example: 1767225600000 - type: string format: date-time examples: - '2026-01-01T00:00:00Z' example: '2026-01-01T00:00:00Z' + - type: integer + format: int64 + examples: + - 1767225600000 + example: 1767225600000 examples: - '2026-01-01T00:00:00Z' example: '2026-01-01T00:00:00Z' description: > - Include events that happened after this point (with timestamp - greater than or equal the provided `start` Unix milliseconds value - or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does - not change `end`'s default of `now` — adjust it separately if - needed. + Include events that happened after the provided `start` date + formatted as an RFC3339 timestamp. For backward compatibility, a + Unix milliseconds timestamp is also accepted. Defaults to 7 days + ago. Setting `start` does not change the default `end` date of `now` + — adjust it separately if needed. - name: end in: query schema: oneOf: - - type: integer - format: int64 - examples: - - 1769903999000 - example: 1769903999000 - type: string format: date-time examples: - '2026-01-31T23:59:59Z' example: '2026-01-31T23:59:59Z' + - type: integer + format: int64 + examples: + - 1769903999000 + example: 1769903999000 examples: - '2026-01-31T23:59:59Z' example: '2026-01-31T23:59:59Z' description: > - Include events that happened before this point (with timestamp less - than or equal the provided `end` Unix milliseconds value or RFC3339 - timestamp). Defaults to now. Setting `end` does not change `start`'s - default of `7 days ago` — adjust it separately if needed. + Include events that happened before the provided `end` date + formatted as an RFC3339 timestamp. For backward compatibility, a + Unix milliseconds timestamp is also accepted. Defaults to now. + Setting `end` does not change the default `start` date of `7 days + ago` — adjust it separately if needed. - name: reverse in: query schema: @@ -613,10 +627,9 @@ paths: description: > Filter events by Browser Tampering Detection result. - > Note: When using this parameter, only events with the - `tampering.result` property set to `true` or `false` are returned. - Events without a `tampering` Smart Signal result are left out of the - response. + > Note: When using this parameter, only events with the `tampering` + property set to `true` or `false` are returned. Events without a + `tampering` Smart Signal result are left out of the response. - name: anti_detect_browser in: query schema: @@ -625,9 +638,9 @@ paths: Filter events by Anti-detect Browser Detection result. > Note: When using this parameter, only events with the - `tampering.anti_detect_browser` property set to `true` or `false` - are returned. Events without a `tampering` Smart Signal result are - left out of the response. + `tampering_details.anti_detect_browser` property set to `true` or + `false` are returned. Events without a `tampering` Smart Signal + result are left out of the response. - name: incognito in: query schema: @@ -677,8 +690,9 @@ paths: Filter events by Factory Reset Detection result. > Note: When using this parameter, only events with a - `factory_reset` time. Events without a `factory_reset` Smart Signal - result are left out of the response. + `factory_reset_timestamp` property populated are included. Events + without a `factory_reset_timestamp` Smart Signal result are left out + of the response. - name: cloned_app in: query schema: @@ -941,6 +955,11 @@ paths: 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. @@ -973,12 +992,31 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + '429': + description: > + Too Many Requests. The request is throttled. + + To protect service stability during rare periods of extreme load, we + may return HTTP 429 responses with message `too many search + requests` even if you are within your assigned rate limits. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' '500': description: Workspace error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + '504': + description: >- + Gateway Timeout. Search execution exceeded the allowed timeout + window. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' /visitors/{visitor_id}: delete: tags: @@ -1197,7 +1235,7 @@ components: provider_url: type: string examples: - - https://fingerprint.com + - https://chatgpt.com description: The URL of the bot provider's website. name: type: string @@ -1963,6 +2001,12 @@ components: true device location lies within the mapped proximity zone. * Scores closer to `1` indicate high confidence that the location is inside the mapped proximity zone. * Scores closer to `0` indicate lower confidence, suggesting the true location may fall in an adjacent zone. + ActiveCall: + type: boolean + description: > + Indicates whether the mobile device had an active call (cellular or + VoIP) at the time of the request. Available from SDK 2.16.0+ on iOS and + Android. BotResult: type: string enum: @@ -1977,7 +2021,7 @@ components: BotType: type: string examples: - - fingerprint_agent + - chatgpt_agent description: | Additional classification of the bot type if detected. ClonedApp: @@ -2371,11 +2415,8 @@ components: examples: - 5 description: > - The `24_hours` interval of `distinct_ip`, `distinct_linked_id`, - `distinct_country`, `distinct_ip_by_linked_id` and - `distinct_visitor_id_by_linked_id` will be omitted if the number of - `events` for the visitor Id in the last 24 hours - (`events.['24_hours']`) is higher than 20.000. + Count for the last 24 hours of velocity data, from the time of the + event. Velocity: type: object description: > @@ -2402,7 +2443,7 @@ components: - Number of distinct visitor Ids associated with the provided linked Id. - The `24h` interval of `distinct_ip`, `distinct_linked_id`, + The `24_hours` interval of `distinct_ip`, `distinct_linked_id`, `distinct_country`, `distinct_ip_by_linked_id` and `distinct_visitor_id_by_linked_id` will @@ -2410,7 +2451,7 @@ components: if the number of `events` for the visitor Id in the last 24 - hours (`events.['24h']`) is higher than 20.000. + hours (`events.['24_hours']`) is higher than 20.000. All will not necessarily be returned in a response, some may be omitted @@ -2478,8 +2519,8 @@ components: examples: - DE description: > - Country of the request (only for Android SDK version >= 2.4.0, ISO 3166 - format or unknown). + Country of the request (Android SDK version >= 2.4.0, iOS SDK version >= + 2.9.0, JS agent >= 3.12.9 / 4.0.2), ISO 3166 format or unknown. HighActivity: type: boolean description: Flag indicating if the request came from a high-activity visitor. @@ -2622,7 +2663,9 @@ components: minimum: 0 examples: - 8 - description: Rounded amount of RAM in gigabytes. + description: >- + Rounded amount of RAM in gigabytes. Available for browsers, Android, and + iOS devices. Timezone: type: string examples: @@ -2884,13 +2927,23 @@ components: examples: - 75 description: >- - Battery charge level as a percentage (0-100). Available only for Android - and iOS devices. + Battery charge level as a percentage (0-100). Available for Android, + iOS, and web devices. On web, only available in Chromium-based browsers. + BatteryCharging: + type: boolean + description: >- + When `true`, the device is currently charging. Available only for web + devices on Chromium-based browsers. BatteryLowPowerMode: type: boolean description: >- Whether the device's low power mode is enabled. Available only for Android and iOS devices. + KeyboardLayoutHash: + type: string + examples: + - 3f33b68235d36b8821147349f1161379 + description: Unique identifier for the user's keyboard layout. RawDeviceAttributes: type: object description: > @@ -2959,8 +3012,12 @@ components: $ref: '#/components/schemas/TimezoneOffset' battery_level: $ref: '#/components/schemas/BatteryLevel' + battery_charging: + $ref: '#/components/schemas/BatteryCharging' battery_low_power_mode: $ref: '#/components/schemas/BatteryLowPowerMode' + keyboard_layout_hash: + $ref: '#/components/schemas/KeyboardLayoutHash' Labels: type: array items: @@ -2992,7 +3049,11 @@ components: type: object description: >- Contains results from Fingerprint Identification and all active Smart - Signals. + Signals. Some Smart Signals are only supported for certain device types, + these fields will be omitted for events not generated from the supported + devices. Consult the [Smart Signals + reference](https://docs.fingerprint.com/docs/smart-signals-reference) + for more details. required: - event_id - timestamp @@ -3117,6 +3178,11 @@ components: - android - ios - browser + active_call: + $ref: '#/components/schemas/ActiveCall' + x-platforms: + - android + - ios bot: $ref: '#/components/schemas/BotResult' x-platforms: @@ -3395,7 +3461,7 @@ components: description: | Filter events by their Bot Info result, specifically: - `all` - events where any kind of bot was detected. - - `none` - events where no bot was detected. + - `none` - events where no bot was detected, and no `bot_info` was present. SearchEventsVpnConfidence: type: string enum: diff --git a/test/mocks/errors/400_edge_ip_required.json b/test/mocks/errors/400_edge_ip_required.json new file mode 100644 index 00000000..8f055f8f --- /dev/null +++ b/test/mocks/errors/400_edge_ip_required.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "request_cannot_be_parsed", + "message": "at least one of ipv4_address or ipv6_address is required" + } +} diff --git a/test/mocks/errors/400_edge_unknown_field.json b/test/mocks/errors/400_edge_unknown_field.json new file mode 100644 index 00000000..c0a153ef --- /dev/null +++ b/test/mocks/errors/400_edge_unknown_field.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "request_cannot_be_parsed", + "message": "request body contains an unknown field \"unknown\"" + } +} \ No newline at end of file diff --git a/test/mocks/errors/400_request_read_timeout.json b/test/mocks/errors/400_request_read_timeout.json new file mode 100644 index 00000000..89daaca8 --- /dev/null +++ b/test/mocks/errors/400_request_read_timeout.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "request_read_timeout", + "message": "request read timeout" + } +} \ No newline at end of file diff --git a/test/mocks/errors/413_payload_too_large.json b/test/mocks/errors/413_payload_too_large.json new file mode 100644 index 00000000..00a1c6f9 --- /dev/null +++ b/test/mocks/errors/413_payload_too_large.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "payload_too_large", + "message": "payload too large" + } +} diff --git a/test/mocks/errors/429_too_many_search_requests.json b/test/mocks/errors/429_too_many_search_requests.json new file mode 100644 index 00000000..bc42b32a --- /dev/null +++ b/test/mocks/errors/429_too_many_search_requests.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "too_many_requests", + "message": "too many search requests" + } +} diff --git a/test/mocks/errors/504_search_timeout_exceeded.json b/test/mocks/errors/504_search_timeout_exceeded.json new file mode 100644 index 00000000..cc5fcbd7 --- /dev/null +++ b/test/mocks/errors/504_search_timeout_exceeded.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "failed", + "message": "gateway timeout" + } +} diff --git a/test/mocks/events/get_event_200.json b/test/mocks/events/get_event_200.json index d2922970..8c40bcd6 100644 --- a/test/mocks/events/get_event_200.json +++ b/test/mocks/events/get_event_200.json @@ -152,6 +152,11 @@ "1_hour": 1, "24_hours": 1 }, + "distinct_linked_id": { + "5_minutes": 1, + "1_hour": 5, + "24_hours": 5 + }, "distinct_country": { "5_minutes": 1, "1_hour": 2, @@ -200,103 +205,112 @@ "math": "5f030fa7d2e5f9f757bfaf81642eb1a6", "vendor": "Google Inc.", "plugins": [ - { - "description": "Portable Document Format", - "mimeTypes": [ - { - "suffixes": "pdf", - "type": "application/pdf" - }, - { - "suffixes": "pdf", - "type": "text/pdf" - } - ], - "name": "PDF Viewer" - } + { + "description": "Portable Document Format", + "mimeTypes": [ + { + "suffixes": "pdf", + "type": "application/pdf" + }, + { + "suffixes": "pdf", + "type": "text/pdf" + } + ], + "name": "PDF Viewer" + } ], "webgl_extensions": { - "context_attributes": "6b1ed336830d2bc96442a9d76373252a", - "extension_parameters": "86a8abb36f0cb30b5946dec0c761d042", - "extensions": "57233d7b10f89fcd1ff95e3837ccd72d", - "parameters": "ea118c48e308bc4b0677118bbb3019ec", - "shader_precisions": "f223dfbcd580cf142da156d93790eb83", - "unsupported_extensions": [] + "context_attributes": "6b1ed336830d2bc96442a9d76373252a", + "extension_parameters": "86a8abb36f0cb30b5946dec0c761d042", + "extensions": "57233d7b10f89fcd1ff95e3837ccd72d", + "parameters": "ea118c48e308bc4b0677118bbb3019ec", + "shader_precisions": "f223dfbcd580cf142da156d93790eb83", + "unsupported_extensions": [] }, "cookies_enabled": true, "webgl_basics": { - "renderer": "WebKit WebGL", - "renderer_unmasked": "ANGLE (Apple, ANGLE Metal Renderer: Apple M4, Unspecified Version)", - "shading_language_version": "WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)", - "vendor": "WebKit", - "vendor_unmasked": "Google Inc. (Apple)", - "version": "WebGL 1.0 (OpenGL ES 2.0 Chromium)" + "renderer": "WebKit WebGL", + "renderer_unmasked": "ANGLE (Apple, ANGLE Metal Renderer: Apple M4, Unspecified Version)", + "shading_language_version": "WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium)", + "vendor": "WebKit", + "vendor_unmasked": "Google Inc. (Apple)", + "version": "WebGL 1.0 (OpenGL ES 2.0 Chromium)" }, "canvas": { - "geometry": "db3c1462576a399a03ae93d0ab9eb5c4", - "text": "70c3d3f7eb4408dc37a6bf8af1c51029", - "winding": true + "geometry": "db3c1462576a399a03ae93d0ab9eb5c4", + "text": "70c3d3f7eb4408dc37a6bf8af1c51029", + "winding": true }, "hardware_concurrency": 10, "languages": [ - [ - "en-US" - ] + [ + "en-US" + ] ], "color_depth": 24, "fonts": [ - "Arial Unicode MS", - "Gill Sans", - "Helvetica Neue", - "Menlo" + "Arial Unicode MS", + "Gill Sans", + "Helvetica Neue", + "Menlo" ], "indexed_db": true, "touch_support": { - "max_touch_points": 0, - "touch_event": false, - "touch_start": false + "max_touch_points": 0, + "touch_event": false, + "touch_start": false }, "device_memory": 8, "oscpu": "Windows NT 6.1; Win64; x64", "architecture": 127, "screen_resolution": [ - 1920, - 1080 + 1920, + 1080 ], "timezone": "America/Sao_Paulo", "emoji": { - "bottom": 32, - "font": "Times", - "height": 18, - "left": 8, - "right": 1608, - "top": 14, - "width": 1600, - "x": 8, - "y": 14 + "bottom": 32, + "font": "Times", + "height": 18, + "left": 8, + "right": 1608, + "top": 14, + "width": 1600, + "x": 8, + "y": 14 }, "font_preferences": { - "apple": 147.5625, - "default": 147.5625, - "min": 9.234375, - "mono": 133.0625, - "sans": 144.015625, - "serif": 147.5625, - "system": 146.09375 + "apple": 147.5625, + "default": 147.5625, + "min": 9.234375, + "mono": 133.0625, + "sans": 144.015625, + "serif": 147.5625, + "system": 146.09375 }, "platform": "MacIntel", "local_storage": true, "session_storage": true, "date_time_locale": "en-US", - "audio": 124.04347745512496 + "audio": 124.04347745512496, + "keyboard_layout_hash": "691e3845c85c202a1514b6fd7ef17065", + "battery_charging": true, + "battery_level": 80, + "battery_low_power_mode": true, + "timezone_offset": "-03:00", + "font_hash": "bb4d842593877975d45017c603ff5994", + "device_manufacturer": "samsung", + "device_model": "SM-S921U" }, "rare_device": false, "rare_device_percentile_bucket": "