diff --git a/.changeset/events-device-os-fields.md b/.changeset/events-device-os-fields.md new file mode 100644 index 00000000..b40c129a --- /dev/null +++ b/.changeset/events-device-os-fields.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events**: Add `device`, `os`, and `os_version` to `Event` diff --git a/.changeset/events-search-source-filter.md b/.changeset/events-search-source-filter.md new file mode 100644 index 00000000..0efe2d25 --- /dev/null +++ b/.changeset/events-search-source-filter.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events-search**: Add `source` query parameter to filter events by `edge` (Automation Intelligence) source diff --git a/.changeset/raw-device-attributes-battery-android-ios.md b/.changeset/raw-device-attributes-battery-android-ios.md new file mode 100644 index 00000000..6dd2f950 --- /dev/null +++ b/.changeset/raw-device-attributes-battery-android-ios.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events**: Add `battery_level` and `battery_low_power_mode` to `RawDeviceAttributes` diff --git a/.changeset/sad-ducks-jump.md b/.changeset/sad-ducks-jump.md new file mode 100644 index 00000000..c5f6d29a --- /dev/null +++ b/.changeset/sad-ducks-jump.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events**: Add `ml_prediction` to `vpn_methods` \ No newline at end of file diff --git a/.changeset/salty-views-wish.md b/.changeset/salty-views-wish.md new file mode 100644 index 00000000..227f99eb --- /dev/null +++ b/.changeset/salty-views-wish.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events**: Add `vpn_ml_score` to `Event` \ No newline at end of file diff --git a/.changeset/yellow-corners-find.md b/.changeset/yellow-corners-find.md new file mode 100644 index 00000000..c684ff5d --- /dev/null +++ b/.changeset/yellow-corners-find.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +**events-search**: Document 404 response for `searchEvents` operation \ No newline at end of file diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES index 14e8dfb4..ee60f952 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -50,6 +50,7 @@ docs/SearchEventsEndParameter.md docs/SearchEventsIncrementalIdentificationStatus.md docs/SearchEventsRareDevicePercentileBucket.md docs/SearchEventsSdkPlatform.md +docs/SearchEventsSource.md docs/SearchEventsStartParameter.md docs/SearchEventsVpnConfidence.md docs/SupplementaryIDHighRecall.md @@ -117,6 +118,7 @@ fingerprint_server_sdk/models/search_events_end_parameter.py fingerprint_server_sdk/models/search_events_incremental_identification_status.py fingerprint_server_sdk/models/search_events_rare_device_percentile_bucket.py fingerprint_server_sdk/models/search_events_sdk_platform.py +fingerprint_server_sdk/models/search_events_source.py fingerprint_server_sdk/models/search_events_start_parameter.py fingerprint_server_sdk/models/search_events_vpn_confidence.py fingerprint_server_sdk/models/supplementary_id_high_recall.py diff --git a/.schema-version b/.schema-version index 56e50151..5e05a378 100644 --- a/.schema-version +++ b/.schema-version @@ -1 +1 @@ -v3.3.1 \ No newline at end of file +v3.4.2 \ No newline at end of file diff --git a/README.md b/README.md index cb8accc7..4fc7dc26 100644 --- a/README.md +++ b/README.md @@ -358,6 +358,7 @@ Class | Method | HTTP request | Description - [SearchEventsIncrementalIdentificationStatus](docs/SearchEventsIncrementalIdentificationStatus.md) - [SearchEventsRareDevicePercentileBucket](docs/SearchEventsRareDevicePercentileBucket.md) - [SearchEventsSdkPlatform](docs/SearchEventsSdkPlatform.md) + - [SearchEventsSource](docs/SearchEventsSource.md) - [SearchEventsStartParameter](docs/SearchEventsStartParameter.md) - [SearchEventsVpnConfidence](docs/SearchEventsVpnConfidence.md) - [SupplementaryIDHighRecall](docs/SupplementaryIDHighRecall.md) diff --git a/README.pypi.md b/README.pypi.md index 8c56e22e..6b200dc2 100644 --- a/README.pypi.md +++ b/README.pypi.md @@ -354,6 +354,7 @@ Class | Method | HTTP request | Description - [SearchEventsIncrementalIdentificationStatus](https://github.com/fingerprintjs/python-sdk/blob/main/docs/SearchEventsIncrementalIdentificationStatus.md) - [SearchEventsRareDevicePercentileBucket](https://github.com/fingerprintjs/python-sdk/blob/main/docs/SearchEventsRareDevicePercentileBucket.md) - [SearchEventsSdkPlatform](https://github.com/fingerprintjs/python-sdk/blob/main/docs/SearchEventsSdkPlatform.md) + - [SearchEventsSource](https://github.com/fingerprintjs/python-sdk/blob/main/docs/SearchEventsSource.md) - [SearchEventsStartParameter](https://github.com/fingerprintjs/python-sdk/blob/main/docs/SearchEventsStartParameter.md) - [SearchEventsVpnConfidence](https://github.com/fingerprintjs/python-sdk/blob/main/docs/SearchEventsVpnConfidence.md) - [SupplementaryIDHighRecall](https://github.com/fingerprintjs/python-sdk/blob/main/docs/SupplementaryIDHighRecall.md) diff --git a/docs/Event.md b/docs/Event.md index 7e0412f8..223ac4b1 100644 --- a/docs/Event.md +++ b/docs/Event.md @@ -4,23 +4,26 @@ Contains results from Fingerprint Identification and all active Smart Signals. ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**event_id** | **str** | Unique identifier of the user's request. The first portion of the event_id is a unix epoch milliseconds timestamp For example: `1758130560902.8tRtrH` | +**event_id** | **str** | Unique identifier of the user's request. The first portion of the event_id is a unix epoch milliseconds timestamp. | **timestamp** | **int** | Timestamp of the event with millisecond precision in Unix time. | **incremental_identification_status** | [**IncrementalIdentificationStatus**](IncrementalIdentificationStatus.md) | | [optional] **linked_id** | **str** | A customer-provided id that was sent with the request. | [optional] -**environment_id** | **str** | Environment Id of the event. For example: `ae_47abaca3db2c7c43` | [optional] +**environment_id** | **str** | Environment Id of the event. | [optional] **suspect** | **bool** | Field is `true` if you have previously set the `suspect` flag for this event using the [Server API Update event endpoint](https://docs.fingerprint.com/reference/server-api-v4-update-event). | [optional] **sdk** | [**SDK**](SDK.md) | | [optional] **replayed** | **bool** | `true` if we determined that this payload was replayed, `false` otherwise. | [optional] **identification** | [**Identification**](Identification.md) | | [optional] **supplementary_id_high_recall** | [**SupplementaryIDHighRecall**](SupplementaryIDHighRecall.md) | | [optional] **tags** | **Dict[str, object]** | A customer-provided value or an object that was sent with the identification request or updated later. | [optional] -**url** | **str** | Page URL from which the request was sent. For example `https://example.com/` | [optional] -**bundle_id** | **str** | Bundle Id of the iOS application integrated with the Fingerprint SDK for the event. For example: `com.foo.app` | [optional] -**package_name** | **str** | Package name of the Android application integrated with the Fingerprint SDK for the event. For example: `com.foo.app` | [optional] +**url** | **str** | Page URL from which the request was sent. | [optional] +**bundle_id** | **str** | Bundle Id of the iOS application integrated with the Fingerprint SDK for the event. | [optional] +**package_name** | **str** | Package name of the Android application integrated with the Fingerprint SDK for the event. | [optional] **ip_address** | **str** | IP address of the requesting browser or bot. | [optional] -**user_agent** | **str** | User Agent of the client, for example: `Mozilla/5.0 (Windows NT 6.1; Win64; x64) ....` | [optional] -**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) For example: `https://example.com/blog/my-article` | [optional] +**user_agent** | **str** | User Agent of the client. | [optional] +**device** | **str** | Device model or family extracted from the user agent string. On web, this field is also present inside `browser_details`. | [optional] +**os** | **str** | Operating system family extracted from the user agent string. On web, this field is also present inside `browser_details`. | [optional] +**os_version** | **str** | Operating system version string extracted from the user agent string. On web, this field is also present inside `browser_details`. | [optional] +**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] **bot** | [**BotResult**](BotResult.md) | | [optional] @@ -55,6 +58,7 @@ Name | Type | Description | Notes **virtual_machine_ml_score** | **float** | Machine learning–based virtual machine 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 `virtual_machine` 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** | **bool** | VPN or other anonymizing service has been used when sending the request. | [optional] **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_methods** | [**VpnMethods**](VpnMethods.md) | | [optional] diff --git a/docs/EventUpdate.md b/docs/EventUpdate.md index eb5726b9..07edc1da 100644 --- a/docs/EventUpdate.md +++ b/docs/EventUpdate.md @@ -2,7 +2,7 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**linked_id** | **str** | Linked Id value to assign to the existing event | [optional] +**linked_id** | **str** | Linked ID value to assign to the existing event | [optional] **tags** | **Dict[str, object]** | A customer-provided value or an object that was sent with the identification request or updated later. | [optional] **suspect** | **bool** | Suspect flag indicating observed suspicious or fraudulent event | [optional] diff --git a/docs/FingerprintApi.md b/docs/FingerprintApi.md index 4bafcdaf..a0d2ba7a 100644 --- a/docs/FingerprintApi.md +++ b/docs/FingerprintApi.md @@ -63,7 +63,7 @@ configuration = fingerprint_server_sdk.Configuration( # Create an instance of the API class api_instance = fingerprint_server_sdk.FingerprintApi(configuration) -visitor_id: str = 'visitor_id_example' # The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) you want to delete. +visitor_id: str = 'Ibk1527CUFmcnjLwIs4A9' # The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) you want to delete. try: # Delete a visitor ID @@ -137,8 +137,8 @@ configuration = fingerprint_server_sdk.Configuration( # Create an instance of the API class api_instance = fingerprint_server_sdk.FingerprintApi(configuration) -event_id: str = 'event_id_example' # The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) of each identification request (`requestId` can be used in its place). -ruleset_id: str = 'ruleset_id_example' # The ID of the ruleset to evaluate against the event, producing the action to take for this event. The resulting action is returned in the `rule_action` attribute of the response. (optional) +event_id: str = '1708102555327.NLOjmg' # The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) of each identification request (`requestId` can be used in its place). +ruleset_id: str = 'D6N9Kbk9HRWrIWGz' # The ID of the ruleset to evaluate against the event, producing the action to take for this event. The resulting action is returned in the `rule_action` attribute of the response. (optional) try: # Get an event by event ID @@ -187,7 +187,7 @@ Name | Type | Description | Notes [[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) # **search_events** -> EventSearch search_events(limit=limit, pagination_key=pagination_key, visitor_id=visitor_id, high_recall_id=high_recall_id, bot=bot, bot_info=bot_info, bot_info_category=bot_info_category, bot_info_identity=bot_info_identity, bot_info_confidence=bot_info_confidence, bot_info_provider=bot_info_provider, bot_info_name=bot_info_name, ip_address=ip_address, asn=asn, linked_id=linked_id, url=url, bundle_id=bundle_id, package_name=package_name, origin=origin, start=start, end=end, reverse=reverse, suspect=suspect, vpn=vpn, virtual_machine=virtual_machine, tampering=tampering, anti_detect_browser=anti_detect_browser, incognito=incognito, privacy_settings=privacy_settings, jailbroken=jailbroken, frida=frida, factory_reset=factory_reset, cloned_app=cloned_app, emulator=emulator, root_apps=root_apps, vpn_confidence=vpn_confidence, min_suspect_score=min_suspect_score, developer_tools=developer_tools, location_spoofing=location_spoofing, mitm_attack=mitm_attack, rare_device=rare_device, rare_device_percentile_bucket=rare_device_percentile_bucket, proxy=proxy, sdk_version=sdk_version, sdk_platform=sdk_platform, environment=environment, proximity_id=proximity_id, total_hits=total_hits, tor_node=tor_node, incremental_identification_status=incremental_identification_status, simulator=simulator) +> EventSearch search_events(limit=limit, pagination_key=pagination_key, visitor_id=visitor_id, high_recall_id=high_recall_id, bot=bot, bot_info=bot_info, bot_info_category=bot_info_category, bot_info_identity=bot_info_identity, bot_info_confidence=bot_info_confidence, bot_info_provider=bot_info_provider, bot_info_name=bot_info_name, ip_address=ip_address, asn=asn, linked_id=linked_id, url=url, bundle_id=bundle_id, package_name=package_name, origin=origin, start=start, end=end, reverse=reverse, suspect=suspect, vpn=vpn, virtual_machine=virtual_machine, tampering=tampering, anti_detect_browser=anti_detect_browser, incognito=incognito, privacy_settings=privacy_settings, jailbroken=jailbroken, frida=frida, factory_reset=factory_reset, cloned_app=cloned_app, emulator=emulator, root_apps=root_apps, vpn_confidence=vpn_confidence, min_suspect_score=min_suspect_score, developer_tools=developer_tools, location_spoofing=location_spoofing, mitm_attack=mitm_attack, rare_device=rare_device, rare_device_percentile_bucket=rare_device_percentile_bucket, proxy=proxy, sdk_version=sdk_version, sdk_platform=sdk_platform, environment=environment, proximity_id=proximity_id, total_hits=total_hits, tor_node=tor_node, incremental_identification_status=incremental_identification_status, simulator=simulator, source=source) Search events @@ -234,6 +234,7 @@ from fingerprint_server_sdk.models.search_events_bot_info import SearchEventsBot from fingerprint_server_sdk.models.search_events_incremental_identification_status import SearchEventsIncrementalIdentificationStatus from fingerprint_server_sdk.models.search_events_rare_device_percentile_bucket import SearchEventsRareDevicePercentileBucket from fingerprint_server_sdk.models.search_events_sdk_platform import SearchEventsSdkPlatform +from fingerprint_server_sdk.models.search_events_source import SearchEventsSource from fingerprint_server_sdk.models.search_events_vpn_confidence import SearchEventsVpnConfidence from fingerprint_server_sdk import ApiException, ErrorResponse from fingerprint_server_sdk.configuration import Region @@ -248,10 +249,10 @@ configuration = fingerprint_server_sdk.Configuration( # Create an instance of the API class api_instance = fingerprint_server_sdk.FingerprintApi(configuration) -limit: int = 10 # Maximum number of events to return. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. (optional) (default to 10) -pagination_key: str = 'pagination_key_example' # Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=1740815825085` (optional) -visitor_id: str = 'visitor_id_example' # 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 = 'high_recall_id_example' # 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) +limit: int = 10 # Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. (optional) +pagination_key: str = 'S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q' # Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` (optional) +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_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) @@ -259,13 +260,13 @@ bot_info_identity: List[BotInfoIdentity] = [fingerprint_server_sdk.BotInfoIdenti 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) bot_info_provider: List[str] = ['bot_info_provider_example'] # Filter events by their Bot Info Provider. The provider must match exactly, partial or wildcard matching is not supported. Multiple Providers can be provided using the repeated keys syntax. For example, `bot_info_provider=OpenAI&bot_info_provider=AWS`, will match events with a Bot Info Provider of `OpenAI` or `AWS`. Other notations like comma-separated or bracket notation are not supported. (optional) bot_info_name: List[str] = ['bot_info_name_example'] # Filter events by their Bot Info Name. The name must match exactly, partial or wildcard matching is not supported. Multiple Names can be provided using the repeated keys syntax. For example, `bot_info_name=ChatGPT%20Agent&bot_info_name=Bedrock%20AgentCore`, will match events with a Bot Info Name of `ChatGPT Agent` or `Bedrock AgentCore`. Other notations like comma-separated or bracket notation are not supported. (optional) -ip_address: str = 'ip_address_example' # Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is assumed. Examples of range based queries: 10.0.0.0/24, 192.168.0.1/32 (optional) -asn: str = 'asn_example' # Filter events by the ASN associated with the event's IP address. This corresponds to the `ip_info.(v4|v6).asn` property in the response. (optional) -linked_id: str = 'linked_id_example' # Filter events by your custom identifier. You can use [linked Ids](https://docs.fingerprint.com/reference/js-agent-v4-get-function#linkedid) to associate identification requests with your own identifier, for example, session Id, purchase Id, or transaction Id. You can then use this `linked_id` parameter to retrieve all events associated with your custom identifier. (optional) -url: str = 'url_example' # Filter events by the URL (`url` property) associated with the event. (optional) -bundle_id: str = 'bundle_id_example' # Filter events by the Bundle ID (iOS) associated with the event. (optional) -package_name: str = 'package_name_example' # Filter events by the Package Name (Android) associated with the event. (optional) -origin: str = 'origin_example' # Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) (optional) +ip_address: str = '61.127.217.15' # Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is assumed. Examples of range based queries: 10.0.0.0/24, 192.168.0.1/32 (optional) +asn: str = '12876' # Filter events by the ASN associated with the event's IP address. This corresponds to the `ip_info.(v4|v6).asn` property in the response. (optional) +linked_id: str = 'somelinkedId' # Filter events by your custom identifier. You can use [linked Ids](https://docs.fingerprint.com/reference/js-agent-v4-get-function#linkedid) to associate identification requests with your own identifier, for example, session Id, purchase Id, or transaction Id. You can then use this `linked_id` parameter to retrieve all events associated with your custom identifier. (optional) +url: str = 'https://example.com/login' # Filter events by the URL (`url` property) associated with the event. (optional) +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) reverse: bool = True # When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). (optional) @@ -283,25 +284,26 @@ cloned_app: bool = True # Filter events by Cloned App Detection result. > Note: 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) vpn_confidence: SearchEventsVpnConfidence = fingerprint_server_sdk.SearchEventsVpnConfidence() # Filter events by VPN Detection result confidence level. `high` - events with high VPN Detection confidence. `medium` - events with medium VPN Detection confidence. `low` - events with low VPN Detection confidence. > Note: When using this parameter, only events with the `vpn.confidence` property set to a valid value are returned. Events without a `vpn` Smart Signal result are left out of the response. (optional) -min_suspect_score: float = 3.4 # Filter events with Suspect Score result above a provided minimum threshold. > Note: When using this parameter, only events where the `suspect_score` property set to a value exceeding your threshold are returned. Events without a `suspect_score` Smart Signal result are left out of the response. (optional) +min_suspect_score: float = 7.5 # Filter events with Suspect Score result above a provided minimum threshold. > Note: When using this parameter, only events where the `suspect_score` property set to a value exceeding your threshold are returned. Events without a `suspect_score` Smart Signal result are left out of the response. (optional) developer_tools: bool = True # Filter events by Developer Tools detection result. > Note: When using this parameter, only events with the `developer_tools` property set to `true` or `false` are returned. Events without a `developer_tools` Smart Signal result are left out of the response. (optional) location_spoofing: bool = True # Filter events by Location Spoofing detection result. > Note: When using this parameter, only events with the `location_spoofing` property set to `true` or `false` are returned. Events without a `location_spoofing` Smart Signal result are left out of the response. (optional) mitm_attack: bool = True # Filter events by MITM (Man-in-the-Middle) Attack detection result. > Note: When using this parameter, only events with the `mitm_attack` property set to `true` or `false` are returned. Events without a `mitm_attack` Smart Signal result are left out of the response. (optional) rare_device: bool = True # Filter events by Device Rarity detection result. > Note: When using this parameter, only events with the `rare_device` property set to `true` or `false` are returned. Events without a Device Rarity Smart Signal result are left out of the response. > 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) rare_device_percentile_bucket: SearchEventsRareDevicePercentileBucket = fingerprint_server_sdk.SearchEventsRareDevicePercentileBucket() # Filter events by Device Rarity percentile bucket. ` 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) proxy: bool = True # Filter events by Proxy detection result. > Note: When using this parameter, only events with the `proxy` property set to `true` or `false` are returned. Events without a `proxy` Smart Signal result are left out of the response. (optional) -sdk_version: str = 'sdk_version_example' # Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` (optional) +sdk_version: str = '3.11.14' # Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` (optional) sdk_platform: SearchEventsSdkPlatform = fingerprint_server_sdk.SearchEventsSdkPlatform() # Filter events by the SDK Platform associated with the identification event (`sdk.platform` property) . `js` - Javascript agent (Web). `ios` - Apple iOS based devices. `android` - Android based devices. (optional) environment: List[str] = ['environment_example'] # Filter for events by providing one or more environment IDs (`environment_id` property). ### Array syntax To provide multiple environment IDs, use the repeated keys syntax (`environment=env1&environment=env2`). Other notations like comma-separated (`environment=env1,env2`) or bracket notation (`environment[]=env1&environment[]=env2`) are not supported. (optional) -proximity_id: str = 'proximity_id_example' # Filter events by the most precise Proximity ID provided by default. > Note: When using this parameter, only events with the `proximity.id` property matching the provided ID are returned. Events without a `proximity` result are left out of the response. (optional) -total_hits: int = 56 # When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified limit. (optional) +proximity_id: str = 'C9rJYBlOFsAfBwQ' # Filter events by the most precise Proximity ID provided by default. > Note: When using this parameter, only events with the `proximity.id` property matching the provided ID are returned. Events without a `proximity` result are left out of the response. (optional) +total_hits: int = 100 # When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified limit. (optional) 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) try: # Search events - api_response = api_instance.search_events(limit=limit, pagination_key=pagination_key, visitor_id=visitor_id, high_recall_id=high_recall_id, bot=bot, bot_info=bot_info, bot_info_category=bot_info_category, bot_info_identity=bot_info_identity, bot_info_confidence=bot_info_confidence, bot_info_provider=bot_info_provider, bot_info_name=bot_info_name, ip_address=ip_address, asn=asn, linked_id=linked_id, url=url, bundle_id=bundle_id, package_name=package_name, origin=origin, start=start, end=end, reverse=reverse, suspect=suspect, vpn=vpn, virtual_machine=virtual_machine, tampering=tampering, anti_detect_browser=anti_detect_browser, incognito=incognito, privacy_settings=privacy_settings, jailbroken=jailbroken, frida=frida, factory_reset=factory_reset, cloned_app=cloned_app, emulator=emulator, root_apps=root_apps, vpn_confidence=vpn_confidence, min_suspect_score=min_suspect_score, developer_tools=developer_tools, location_spoofing=location_spoofing, mitm_attack=mitm_attack, rare_device=rare_device, rare_device_percentile_bucket=rare_device_percentile_bucket, proxy=proxy, sdk_version=sdk_version, sdk_platform=sdk_platform, environment=environment, proximity_id=proximity_id, total_hits=total_hits, tor_node=tor_node, incremental_identification_status=incremental_identification_status, simulator=simulator) + api_response = api_instance.search_events(limit=limit, pagination_key=pagination_key, visitor_id=visitor_id, high_recall_id=high_recall_id, bot=bot, bot_info=bot_info, bot_info_category=bot_info_category, bot_info_identity=bot_info_identity, bot_info_confidence=bot_info_confidence, bot_info_provider=bot_info_provider, bot_info_name=bot_info_name, ip_address=ip_address, asn=asn, linked_id=linked_id, url=url, bundle_id=bundle_id, package_name=package_name, origin=origin, start=start, end=end, reverse=reverse, suspect=suspect, vpn=vpn, virtual_machine=virtual_machine, tampering=tampering, anti_detect_browser=anti_detect_browser, incognito=incognito, privacy_settings=privacy_settings, jailbroken=jailbroken, frida=frida, factory_reset=factory_reset, cloned_app=cloned_app, emulator=emulator, root_apps=root_apps, vpn_confidence=vpn_confidence, min_suspect_score=min_suspect_score, developer_tools=developer_tools, location_spoofing=location_spoofing, mitm_attack=mitm_attack, rare_device=rare_device, rare_device_percentile_bucket=rare_device_percentile_bucket, proxy=proxy, sdk_version=sdk_version, sdk_platform=sdk_platform, environment=environment, proximity_id=proximity_id, total_hits=total_hits, tor_node=tor_node, incremental_identification_status=incremental_identification_status, simulator=simulator, source=source) print("The response of FingerprintApi->search_events:\n") pprint(api_response) except ApiException as e: @@ -320,8 +322,8 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **limit** | **int**| Maximum number of events to return. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. | [optional] [default to 10] - **pagination_key** | **str**| Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=1740815825085` | [optional] + **limit** | **int**| Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. | [optional] + **pagination_key** | **str**| Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` | [optional] **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] @@ -370,6 +372,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] ### Return type @@ -387,6 +390,7 @@ Name | Type | Description | Notes **200** | Events matching the filter(s). | - | **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. | - | **500** | Workspace error. | - | [[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) @@ -427,7 +431,7 @@ configuration = fingerprint_server_sdk.Configuration( # Create an instance of the API class api_instance = fingerprint_server_sdk.FingerprintApi(configuration) -event_id: str = 'event_id_example' # The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id). +event_id: str = '1708102555327.NLOjmg' # The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id). event_update: EventUpdate = fingerprint_server_sdk.EventUpdate() # try: diff --git a/docs/IPInfoV4.md b/docs/IPInfoV4.md index 3d07164b..53abbed8 100644 --- a/docs/IPInfoV4.md +++ b/docs/IPInfoV4.md @@ -8,7 +8,7 @@ Name | Type | Description | Notes **asn_name** | **str** | | [optional] **asn_network** | **str** | | [optional] **asn_type** | **str** | | [optional] -**datacenter_result** | **bool** | | [optional] +**datacenter_result** | **bool** | When true, the request originated from a datacenter. | [optional] **datacenter_name** | **str** | | [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/IPInfoV6.md b/docs/IPInfoV6.md index b7a08f12..9f8b6668 100644 --- a/docs/IPInfoV6.md +++ b/docs/IPInfoV6.md @@ -8,7 +8,7 @@ Name | Type | Description | Notes **asn_name** | **str** | | [optional] **asn_network** | **str** | | [optional] **asn_type** | **str** | | [optional] -**datacenter_result** | **bool** | | [optional] +**datacenter_result** | **bool** | When true, the request originated from a datacenter. | [optional] **datacenter_name** | **str** | | [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/Integration.md b/docs/Integration.md index 6b5c5031..4a126e09 100644 --- a/docs/Integration.md +++ b/docs/Integration.md @@ -2,8 +2,8 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**name** | **str** | The name of the specific integration, e.g. \"fingerprint-pro-react\". | [optional] -**version** | **str** | The version of the specific integration, e.g. \"3.11.10\". | [optional] +**name** | **str** | The name of the specific integration. | [optional] +**version** | **str** | The version of the specific integration. | [optional] **subintegration** | [**IntegrationSubintegration**](IntegrationSubintegration.md) | | [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/IntegrationSubintegration.md b/docs/IntegrationSubintegration.md index 53869fa5..e1be2d83 100644 --- a/docs/IntegrationSubintegration.md +++ b/docs/IntegrationSubintegration.md @@ -2,8 +2,8 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**name** | **str** | The name of the specific subintegration, e.g. \"preact\". | [optional] -**version** | **str** | The version of the specific subintegration, e.g. \"10.21.0\". | [optional] +**name** | **str** | The name of the specific subintegration. | [optional] +**version** | **str** | The version of the specific subintegration. | [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/ProxyDetails.md b/docs/ProxyDetails.md index eebc662f..67d16e34 100644 --- a/docs/ProxyDetails.md +++ b/docs/ProxyDetails.md @@ -4,7 +4,7 @@ Proxy detection details (present if `proxy` is `true`) ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**proxy_type** | **str** | Residential proxies use real user IP addresses to appear as legitimate traffic, while data center proxies are public proxies hosted in data centers | +**proxy_type** | **str** | Proxy type: * `residential` - proxies that route through residential and telecom IP addresses to appear as legitimate traffic * `data_center` - proxies which route through data centers * `unknown` - reported when a proxy is detected solely by the ML model and the IP sources did not determine a specific type | **last_seen_at** | **int** | Unix millisecond timestamp with hourly resolution of when this IP was last seen as a proxy | [optional] **provider** | **str** | String representing the last proxy service provider detected when this IP was synced. An IP can be shared by multiple service providers. | [optional] diff --git a/docs/RawDeviceAttributes.md b/docs/RawDeviceAttributes.md index 6c073c23..f9cb516f 100644 --- a/docs/RawDeviceAttributes.md +++ b/docs/RawDeviceAttributes.md @@ -8,10 +8,10 @@ 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) reported by the browser. | [optional] +**device_memory** | **int** | Rounded amount of RAM in gigabytes. | [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 both browsers and iOS devices | [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] **webgl_extensions** | [**WebGlExtensions**](WebGlExtensions.md) | | [optional] **webgl_basics** | [**WebGlBasics**](WebGlBasics.md) | | [optional] **screen_resolution** | **List[int]** | Current screen resolution. Available for both browsers and iOS devices | [optional] @@ -34,6 +34,8 @@ 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_low_power_mode** | **bool** | Whether the device's low power mode is enabled. Available only for Android and iOS devices. | [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/SDK.md b/docs/SDK.md index 81e1db25..e4a31ff4 100644 --- a/docs/SDK.md +++ b/docs/SDK.md @@ -5,7 +5,7 @@ Contains information about the SDK used to perform the request. Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **platform** | **str** | Platform of the SDK used for the identification request. | -**version** | **str** | Version string of the SDK used for the identification request. For example: `\"3.12.1\"` | +**version** | **str** | Version string of the SDK used for the identification request. | **integrations** | [**List[Integration]**](Integration.md) | | [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/SearchEventsSource.md b/docs/SearchEventsSource.md new file mode 100644 index 00000000..7581c878 --- /dev/null +++ b/docs/SearchEventsSource.md @@ -0,0 +1,7 @@ +# SearchEventsSource +## Enum + +* `EDGE` (value: `'edge'`) + +[[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/VpnMethods.md b/docs/VpnMethods.md index 090227d4..f5a4a3ea 100644 --- a/docs/VpnMethods.md +++ b/docs/VpnMethods.md @@ -7,6 +7,7 @@ Name | Type | Description | Notes **auxiliary_mobile** | **bool** | This method applies to mobile devices only. Indicates the result of additional methods used to detect a VPN in mobile devices. | [optional] **os_mismatch** | **bool** | The browser runs on a different operating system than the operating system inferred from the request network signature. | [optional] **relay** | **bool** | Request IP address belongs to a relay service provider, indicating the use of relay services like [Apple Private relay](https://support.apple.com/en-us/102602) or [Cloudflare Warp](https://developers.cloudflare.com/warp-client/). * Like VPNs, relay services anonymize the visitor's true IP address. * Unlike traditional VPNs, relay services don't let visitors spoof their location by choosing an exit node in a different country. This field allows you to differentiate VPN users and relay service users in your fraud prevention logic. | [optional] +**ml_prediction** | **bool** | `true` if the request came from a device running a VPN, `false` otherwise. | [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/__init__.py b/fingerprint_server_sdk/__init__.py index 9644ee49..20f33672 100644 --- a/fingerprint_server_sdk/__init__.py +++ b/fingerprint_server_sdk/__init__.py @@ -4,6 +4,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -88,6 +89,7 @@ 'SearchEventsIncrementalIdentificationStatus', 'SearchEventsRareDevicePercentileBucket', 'SearchEventsSdkPlatform', + 'SearchEventsSource', 'SearchEventsStartParameter', 'SearchEventsVpnConfidence', 'SupplementaryIDHighRecall', @@ -180,6 +182,7 @@ SearchEventsRareDevicePercentileBucket, ) from fingerprint_server_sdk.models.search_events_sdk_platform import SearchEventsSdkPlatform +from fingerprint_server_sdk.models.search_events_source import SearchEventsSource from fingerprint_server_sdk.models.search_events_start_parameter import SearchEventsStartParameter from fingerprint_server_sdk.models.search_events_vpn_confidence import SearchEventsVpnConfidence from fingerprint_server_sdk.models.supplementary_id_high_recall import SupplementaryIDHighRecall diff --git a/fingerprint_server_sdk/api/fingerprint_api.py b/fingerprint_server_sdk/api/fingerprint_api.py index 317f2475..edc77b07 100644 --- a/fingerprint_server_sdk/api/fingerprint_api.py +++ b/fingerprint_server_sdk/api/fingerprint_api.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -34,6 +35,7 @@ SearchEventsRareDevicePercentileBucket, ) from fingerprint_server_sdk.models.search_events_sdk_platform import SearchEventsSdkPlatform +from fingerprint_server_sdk.models.search_events_source import SearchEventsSource from fingerprint_server_sdk.models.search_events_start_parameter import SearchEventsStartParameter from fingerprint_server_sdk.models.search_events_vpn_confidence import SearchEventsVpnConfidence from fingerprint_server_sdk.rest import RESTResponseType @@ -43,6 +45,7 @@ list[BotInfoCategory], list[BotInfoIdentity], list[BotInfoConfidence], + list[SearchEventsSource], str, int, float, @@ -569,13 +572,13 @@ def search_events( limit: Annotated[ Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field( - description='Maximum number of events to return. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' + description='Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' ), ] = None, pagination_key: Annotated[ Optional[StrictStr], Field( - description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=1740815825085` ' + description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` ' ), ] = None, visitor_id: Annotated[ @@ -864,6 +867,12 @@ def search_events( description='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. ' ), ] = None, + 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. ' + ), + ] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -877,9 +886,9 @@ def search_events( ## Search The `/v4/events` endpoint provides a convenient way to search for past events based on specific parameters. Typical use cases and queries include: - Searching for events associated with a single `visitor_id` within a time range to get historical behavior of a visitor. - Searching for events associated with a single `linked_id` within a time range to get all events associated with your internal account identifier. - Excluding all bot traffic from the query (`good` and `bad` bots) By default, the API searches events from the last 7 days, sorts them by newest first and returns the last 10 events. - Use `start` and `end` to specify the time range of the search. - Use `reverse=true` to sort the results oldest first. - Use `limit` to specify the number of events to return. - Use `pagination_key` to get the next page of results if there are more than `limit` events. ### Filtering events with the `suspect` flag The `/v4/events` endpoint unlocks a powerful method for fraud protection analytics. The `suspect` flag is exposed in all events where it was previously set by the update API. You can also apply the `suspect` query parameter as a filter to find all potentially fraudulent activity that you previously marked as `suspect`. This helps identify patterns of fraudulent behavior. ### Environment scoping If you use a secret key that is scoped to an environment, you will only get events associated with the same environment. With a workspace-scoped environment, you will get events from all environments. Smart Signals not activated for your workspace or are not included in the response. - :param limit: Maximum number of events to return. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. + :param limit: Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. :type limit: int - :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=1740815825085` + :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` :type pagination_key: str :param visitor_id: 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). :type visitor_id: str @@ -977,6 +986,8 @@ 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. + :type source: List[SearchEventsSource] :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -1046,6 +1057,7 @@ def search_events( tor_node=tor_node, incremental_identification_status=incremental_identification_status, simulator=simulator, + source=source, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1055,6 +1067,7 @@ def search_events( '200': 'EventSearch', '400': 'ErrorResponse', '403': 'ErrorResponse', + '404': 'ErrorResponse', '500': 'ErrorResponse', } @@ -1071,13 +1084,13 @@ def search_events_with_http_info( limit: Annotated[ Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field( - description='Maximum number of events to return. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' + description='Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' ), ] = None, pagination_key: Annotated[ Optional[StrictStr], Field( - description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=1740815825085` ' + description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` ' ), ] = None, visitor_id: Annotated[ @@ -1366,6 +1379,12 @@ def search_events_with_http_info( description='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. ' ), ] = None, + 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. ' + ), + ] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1379,9 +1398,9 @@ def search_events_with_http_info( ## Search The `/v4/events` endpoint provides a convenient way to search for past events based on specific parameters. Typical use cases and queries include: - Searching for events associated with a single `visitor_id` within a time range to get historical behavior of a visitor. - Searching for events associated with a single `linked_id` within a time range to get all events associated with your internal account identifier. - Excluding all bot traffic from the query (`good` and `bad` bots) By default, the API searches events from the last 7 days, sorts them by newest first and returns the last 10 events. - Use `start` and `end` to specify the time range of the search. - Use `reverse=true` to sort the results oldest first. - Use `limit` to specify the number of events to return. - Use `pagination_key` to get the next page of results if there are more than `limit` events. ### Filtering events with the `suspect` flag The `/v4/events` endpoint unlocks a powerful method for fraud protection analytics. The `suspect` flag is exposed in all events where it was previously set by the update API. You can also apply the `suspect` query parameter as a filter to find all potentially fraudulent activity that you previously marked as `suspect`. This helps identify patterns of fraudulent behavior. ### Environment scoping If you use a secret key that is scoped to an environment, you will only get events associated with the same environment. With a workspace-scoped environment, you will get events from all environments. Smart Signals not activated for your workspace or are not included in the response. - :param limit: Maximum number of events to return. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. + :param limit: Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. :type limit: int - :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=1740815825085` + :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` :type pagination_key: str :param visitor_id: 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). :type visitor_id: str @@ -1479,6 +1498,8 @@ 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. + :type source: List[SearchEventsSource] :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -1548,6 +1569,7 @@ def search_events_with_http_info( tor_node=tor_node, incremental_identification_status=incremental_identification_status, simulator=simulator, + source=source, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -1557,6 +1579,7 @@ def search_events_with_http_info( '200': 'EventSearch', '400': 'ErrorResponse', '403': 'ErrorResponse', + '404': 'ErrorResponse', '500': 'ErrorResponse', } @@ -1573,13 +1596,13 @@ def search_events_without_preload_content( limit: Annotated[ Optional[Annotated[int, Field(le=100, strict=True, ge=1)]], Field( - description='Maximum number of events to return. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' + description='Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. ' ), ] = None, pagination_key: Annotated[ Optional[StrictStr], Field( - description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=1740815825085` ' + description='Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` ' ), ] = None, visitor_id: Annotated[ @@ -1868,6 +1891,12 @@ def search_events_without_preload_content( description='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. ' ), ] = None, + 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. ' + ), + ] = None, _request_timeout: Union[ None, Annotated[StrictFloat, Field(gt=0)], @@ -1881,9 +1910,9 @@ def search_events_without_preload_content( ## Search The `/v4/events` endpoint provides a convenient way to search for past events based on specific parameters. Typical use cases and queries include: - Searching for events associated with a single `visitor_id` within a time range to get historical behavior of a visitor. - Searching for events associated with a single `linked_id` within a time range to get all events associated with your internal account identifier. - Excluding all bot traffic from the query (`good` and `bad` bots) By default, the API searches events from the last 7 days, sorts them by newest first and returns the last 10 events. - Use `start` and `end` to specify the time range of the search. - Use `reverse=true` to sort the results oldest first. - Use `limit` to specify the number of events to return. - Use `pagination_key` to get the next page of results if there are more than `limit` events. ### Filtering events with the `suspect` flag The `/v4/events` endpoint unlocks a powerful method for fraud protection analytics. The `suspect` flag is exposed in all events where it was previously set by the update API. You can also apply the `suspect` query parameter as a filter to find all potentially fraudulent activity that you previously marked as `suspect`. This helps identify patterns of fraudulent behavior. ### Environment scoping If you use a secret key that is scoped to an environment, you will only get events associated with the same environment. With a workspace-scoped environment, you will get events from all environments. Smart Signals not activated for your workspace or are not included in the response. - :param limit: Maximum number of events to return. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. + :param limit: Maximum number of events to return. Defaults to 10 when omitted. Results are selected from the time range (`start`, `end`), ordered by `reverse`, then truncated to provided `limit` size. So `reverse=true` returns the oldest N=`limit` events, otherwise the newest N=`limit` events. :type limit: int - :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=1740815825085` + :param pagination_key: Use `pagination_key` to get the next page of results. When more results are available (e.g., you requested up to 100 results for your query using `limit`, but there are more than 100 events total matching your request), the `pagination_key` field is added to the response. The pagination key is an arbitrary string that should not be interpreted in any way and should be passed as-is. In the following request, use that value in the `pagination_key` parameter to get the next page of results: 1. First request, returning most recent 100 events: `GET api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: `GET api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` :type pagination_key: str :param visitor_id: 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). :type visitor_id: str @@ -1981,6 +2010,8 @@ 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. + :type source: List[SearchEventsSource] :param _request_timeout: timeout setting for this request. If one number provided, it will be total request timeout. It can also be a pair (tuple) of @@ -2050,6 +2081,7 @@ def search_events_without_preload_content( tor_node=tor_node, incremental_identification_status=incremental_identification_status, simulator=simulator, + source=source, _request_auth=_request_auth, _content_type=_content_type, _headers=_headers, @@ -2059,6 +2091,7 @@ def search_events_without_preload_content( '200': 'EventSearch', '400': 'ErrorResponse', '403': 'ErrorResponse', + '404': 'ErrorResponse', '500': 'ErrorResponse', } @@ -2117,6 +2150,7 @@ def _search_events_serialize( tor_node: Optional[bool], incremental_identification_status: Optional[SearchEventsIncrementalIdentificationStatus], simulator: Optional[bool], + source: Optional[list[SearchEventsSource]], _request_auth: Optional[dict[StrictStr, Any]], _content_type: Optional[StrictStr], _headers: Optional[dict[StrictStr, Any]], @@ -2129,6 +2163,7 @@ def _search_events_serialize( 'bot_info_provider': 'multi', 'bot_info_name': 'multi', 'environment': 'multi', + 'source': 'multi', } _path_params: dict[str, str] = {} @@ -2353,6 +2388,10 @@ def _search_events_serialize( if simulator is not None: _query_params.append(('simulator', simulator)) + # process the query parameters + if source is not None: + _query_params.append(('source', source)) + # set the HTTP header `Accept` if 'Accept' not in _header_params: _header_params['Accept'] = self.api_client.select_header_accept(['application/json']) diff --git a/fingerprint_server_sdk/api_client.py b/fingerprint_server_sdk/api_client.py index 75606481..7469b4e1 100644 --- a/fingerprint_server_sdk/api_client.py +++ b/fingerprint_server_sdk/api_client.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/configuration.py b/fingerprint_server_sdk/configuration.py index e8c411b9..a86038a7 100644 --- a/fingerprint_server_sdk/configuration.py +++ b/fingerprint_server_sdk/configuration.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/exceptions.py b/fingerprint_server_sdk/exceptions.py index 4cf97a6d..2c83f71f 100644 --- a/fingerprint_server_sdk/exceptions.py +++ b/fingerprint_server_sdk/exceptions.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/__init__.py b/fingerprint_server_sdk/models/__init__.py index 74980247..126c4941 100644 --- a/fingerprint_server_sdk/models/__init__.py +++ b/fingerprint_server_sdk/models/__init__.py @@ -3,6 +3,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -67,6 +68,7 @@ SearchEventsRareDevicePercentileBucket, ) from fingerprint_server_sdk.models.search_events_sdk_platform import SearchEventsSdkPlatform +from fingerprint_server_sdk.models.search_events_source import SearchEventsSource from fingerprint_server_sdk.models.search_events_start_parameter import SearchEventsStartParameter from fingerprint_server_sdk.models.search_events_vpn_confidence import SearchEventsVpnConfidence from fingerprint_server_sdk.models.supplementary_id_high_recall import SupplementaryIDHighRecall diff --git a/fingerprint_server_sdk/models/bot_info.py b/fingerprint_server_sdk/models/bot_info.py index 5b1e6163..75781a78 100644 --- a/fingerprint_server_sdk/models/bot_info.py +++ b/fingerprint_server_sdk/models/bot_info.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/bot_info_category.py b/fingerprint_server_sdk/models/bot_info_category.py index b0cdb7a4..0f9809c7 100644 --- a/fingerprint_server_sdk/models/bot_info_category.py +++ b/fingerprint_server_sdk/models/bot_info_category.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/bot_info_confidence.py b/fingerprint_server_sdk/models/bot_info_confidence.py index 89cb08af..74ae0764 100644 --- a/fingerprint_server_sdk/models/bot_info_confidence.py +++ b/fingerprint_server_sdk/models/bot_info_confidence.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/bot_info_identity.py b/fingerprint_server_sdk/models/bot_info_identity.py index 2aeb8e4f..b10eb8f8 100644 --- a/fingerprint_server_sdk/models/bot_info_identity.py +++ b/fingerprint_server_sdk/models/bot_info_identity.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/bot_result.py b/fingerprint_server_sdk/models/bot_result.py index 545a5b05..9bc334f9 100644 --- a/fingerprint_server_sdk/models/bot_result.py +++ b/fingerprint_server_sdk/models/bot_result.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/browser_details.py b/fingerprint_server_sdk/models/browser_details.py index ef4847b7..fa86ccc8 100644 --- a/fingerprint_server_sdk/models/browser_details.py +++ b/fingerprint_server_sdk/models/browser_details.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/canvas.py b/fingerprint_server_sdk/models/canvas.py index 653faf0d..150e0812 100644 --- a/fingerprint_server_sdk/models/canvas.py +++ b/fingerprint_server_sdk/models/canvas.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/emoji.py b/fingerprint_server_sdk/models/emoji.py index 9410a2b1..3c4fa0e5 100644 --- a/fingerprint_server_sdk/models/emoji.py +++ b/fingerprint_server_sdk/models/emoji.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/error.py b/fingerprint_server_sdk/models/error.py index 020f5b3d..25a188be 100644 --- a/fingerprint_server_sdk/models/error.py +++ b/fingerprint_server_sdk/models/error.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/error_code.py b/fingerprint_server_sdk/models/error_code.py index 1655e282..42001929 100644 --- a/fingerprint_server_sdk/models/error_code.py +++ b/fingerprint_server_sdk/models/error_code.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/error_response.py b/fingerprint_server_sdk/models/error_response.py index 0959355e..b6529989 100644 --- a/fingerprint_server_sdk/models/error_response.py +++ b/fingerprint_server_sdk/models/error_response.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/event.py b/fingerprint_server_sdk/models/event.py index 9936ad9a..c8bd33a3 100644 --- a/fingerprint_server_sdk/models/event.py +++ b/fingerprint_server_sdk/models/event.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -51,7 +52,7 @@ class Event(BaseModel): """ event_id: StrictStr = Field( - description="Unique identifier of the user's request. The first portion of the event_id is a unix epoch milliseconds timestamp For example: `1758130560902.8tRtrH` " + description="Unique identifier of the user's request. The first portion of the event_id is a unix epoch milliseconds timestamp. " ) timestamp: StrictInt = Field( description='Timestamp of the event with millisecond precision in Unix time.' @@ -61,8 +62,7 @@ class Event(BaseModel): default=None, description='A customer-provided id that was sent with the request.' ) environment_id: Optional[StrictStr] = Field( - default=None, - description='Environment Id of the event. For example: `ae_47abaca3db2c7c43` ', + default=None, description='Environment Id of the event.' ) suspect: Optional[StrictBool] = Field( default=None, @@ -80,27 +80,35 @@ class Event(BaseModel): description='A customer-provided value or an object that was sent with the identification request or updated later.', ) url: Optional[StrictStr] = Field( - default=None, - description='Page URL from which the request was sent. For example `https://example.com/` ', + default=None, description='Page URL from which the request was sent.' ) bundle_id: Optional[StrictStr] = Field( default=None, - description='Bundle Id of the iOS application integrated with the Fingerprint SDK for the event. For example: `com.foo.app` ', + description='Bundle Id of the iOS application integrated with the Fingerprint SDK for the event. ', ) package_name: Optional[StrictStr] = Field( default=None, - description='Package name of the Android application integrated with the Fingerprint SDK for the event. For example: `com.foo.app` ', + description='Package name of the Android application integrated with the Fingerprint SDK for the event. ', ) ip_address: Optional[StrictStr] = Field( default=None, description='IP address of the requesting browser or bot.' ) - user_agent: Optional[StrictStr] = Field( + user_agent: Optional[StrictStr] = Field(default=None, description='User Agent of the client.') + device: Optional[StrictStr] = Field( + default=None, + description='Device model or family extracted from the user agent string. On web, this field is also present inside `browser_details`. ', + ) + os: Optional[StrictStr] = Field( default=None, - description='User Agent of the client, for example: `Mozilla/5.0 (Windows NT 6.1; Win64; x64) ....` ', + description='Operating system family extracted from the user agent string. On web, this field is also present inside `browser_details`. ', + ) + os_version: Optional[StrictStr] = Field( + default=None, + description='Operating system version string extracted from the user agent string. On web, this field is also present inside `browser_details`. ', ) client_referrer: Optional[StrictStr] = Field( default=None, - description='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) For example: `https://example.com/blog/my-article` ', + description='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). ', ) browser_details: Optional[BrowserDetails] = None proximity: Optional[Proximity] = None @@ -213,6 +221,15 @@ class Event(BaseModel): description='VPN or other anonymizing service has been used when sending the request. ', ) vpn_confidence: Optional[VpnConfidence] = None + vpn_ml_score: Optional[ + Union[ + Annotated[float, Field(le=1, strict=True, ge=0)], + Annotated[int, Field(le=1, strict=True, ge=0)], + ] + ] = Field( + default=None, + description='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/). ', + ) vpn_origin_timezone: Optional[StrictStr] = Field( default=None, description='Local timezone which is used in timezone_mismatch method. ' ) @@ -252,6 +269,9 @@ class Event(BaseModel): 'package_name', 'ip_address', 'user_agent', + 'device', + 'os', + 'os_version', 'client_referrer', 'browser_details', 'proximity', @@ -287,6 +307,7 @@ class Event(BaseModel): 'virtual_machine_ml_score', 'vpn', 'vpn_confidence', + 'vpn_ml_score', 'vpn_origin_timezone', 'vpn_origin_country', 'vpn_methods', @@ -418,6 +439,9 @@ def from_dict(cls, obj: Optional[dict[str, Any]]) -> Optional[Self]: 'package_name': obj.get('package_name'), 'ip_address': obj.get('ip_address'), 'user_agent': obj.get('user_agent'), + 'device': obj.get('device'), + 'os': obj.get('os'), + 'os_version': obj.get('os_version'), 'client_referrer': obj.get('client_referrer'), 'browser_details': BrowserDetails.from_dict(obj['browser_details']) if obj.get('browser_details') is not None @@ -471,6 +495,7 @@ def from_dict(cls, obj: Optional[dict[str, Any]]) -> Optional[Self]: 'virtual_machine_ml_score': obj.get('virtual_machine_ml_score'), 'vpn': obj.get('vpn'), 'vpn_confidence': obj.get('vpn_confidence'), + 'vpn_ml_score': obj.get('vpn_ml_score'), 'vpn_origin_timezone': obj.get('vpn_origin_timezone'), 'vpn_origin_country': obj.get('vpn_origin_country'), 'vpn_methods': VpnMethods.from_dict(obj['vpn_methods']) diff --git a/fingerprint_server_sdk/models/event_rule_action.py b/fingerprint_server_sdk/models/event_rule_action.py index 6846cd16..87eb5580 100644 --- a/fingerprint_server_sdk/models/event_rule_action.py +++ b/fingerprint_server_sdk/models/event_rule_action.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/event_rule_action_allow.py b/fingerprint_server_sdk/models/event_rule_action_allow.py index 1d879d0f..0cdb614a 100644 --- a/fingerprint_server_sdk/models/event_rule_action_allow.py +++ b/fingerprint_server_sdk/models/event_rule_action_allow.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/event_rule_action_block.py b/fingerprint_server_sdk/models/event_rule_action_block.py index faf3d24d..09c86bbc 100644 --- a/fingerprint_server_sdk/models/event_rule_action_block.py +++ b/fingerprint_server_sdk/models/event_rule_action_block.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/event_search.py b/fingerprint_server_sdk/models/event_search.py index 85672e00..cc4b64bb 100644 --- a/fingerprint_server_sdk/models/event_search.py +++ b/fingerprint_server_sdk/models/event_search.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/event_update.py b/fingerprint_server_sdk/models/event_update.py index 59ef0eb0..7be0a16b 100644 --- a/fingerprint_server_sdk/models/event_update.py +++ b/fingerprint_server_sdk/models/event_update.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -27,7 +28,7 @@ class EventUpdate(BaseModel): """ linked_id: Optional[StrictStr] = Field( - default=None, description='Linked Id value to assign to the existing event' + default=None, description='Linked ID value to assign to the existing event' ) tags: Optional[dict[str, Any]] = Field( default=None, diff --git a/fingerprint_server_sdk/models/font_preferences.py b/fingerprint_server_sdk/models/font_preferences.py index 234b93d8..5d48869c 100644 --- a/fingerprint_server_sdk/models/font_preferences.py +++ b/fingerprint_server_sdk/models/font_preferences.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/geolocation.py b/fingerprint_server_sdk/models/geolocation.py index 21349a26..558e3434 100644 --- a/fingerprint_server_sdk/models/geolocation.py +++ b/fingerprint_server_sdk/models/geolocation.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/geolocation_subdivisions_inner.py b/fingerprint_server_sdk/models/geolocation_subdivisions_inner.py index 8102658a..74daa924 100644 --- a/fingerprint_server_sdk/models/geolocation_subdivisions_inner.py +++ b/fingerprint_server_sdk/models/geolocation_subdivisions_inner.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/identification.py b/fingerprint_server_sdk/models/identification.py index 99493488..90819cce 100644 --- a/fingerprint_server_sdk/models/identification.py +++ b/fingerprint_server_sdk/models/identification.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/identification_confidence.py b/fingerprint_server_sdk/models/identification_confidence.py index 3d1e43c1..1192c695 100644 --- a/fingerprint_server_sdk/models/identification_confidence.py +++ b/fingerprint_server_sdk/models/identification_confidence.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/incremental_identification_status.py b/fingerprint_server_sdk/models/incremental_identification_status.py index 397c035b..fd180dda 100644 --- a/fingerprint_server_sdk/models/incremental_identification_status.py +++ b/fingerprint_server_sdk/models/incremental_identification_status.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/integration.py b/fingerprint_server_sdk/models/integration.py index b7b0daa6..14174ea3 100644 --- a/fingerprint_server_sdk/models/integration.py +++ b/fingerprint_server_sdk/models/integration.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -29,11 +30,10 @@ class Integration(BaseModel): """ name: Optional[StrictStr] = Field( - default=None, - description='The name of the specific integration, e.g. "fingerprint-pro-react".', + default=None, description='The name of the specific integration.' ) version: Optional[StrictStr] = Field( - default=None, description='The version of the specific integration, e.g. "3.11.10".' + default=None, description='The version of the specific integration.' ) subintegration: Optional[IntegrationSubintegration] = None __properties: ClassVar[list[str]] = ['name', 'version', 'subintegration'] diff --git a/fingerprint_server_sdk/models/integration_subintegration.py b/fingerprint_server_sdk/models/integration_subintegration.py index e4b29299..a9251237 100644 --- a/fingerprint_server_sdk/models/integration_subintegration.py +++ b/fingerprint_server_sdk/models/integration_subintegration.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -27,10 +28,10 @@ class IntegrationSubintegration(BaseModel): """ name: Optional[StrictStr] = Field( - default=None, description='The name of the specific subintegration, e.g. "preact".' + default=None, description='The name of the specific subintegration.' ) version: Optional[StrictStr] = Field( - default=None, description='The version of the specific subintegration, e.g. "10.21.0".' + default=None, description='The version of the specific subintegration.' ) __properties: ClassVar[list[str]] = ['name', 'version'] diff --git a/fingerprint_server_sdk/models/ip_block_list.py b/fingerprint_server_sdk/models/ip_block_list.py index ba93ae82..dff11f73 100644 --- a/fingerprint_server_sdk/models/ip_block_list.py +++ b/fingerprint_server_sdk/models/ip_block_list.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/ip_info.py b/fingerprint_server_sdk/models/ip_info.py index abb8dee2..0e885640 100644 --- a/fingerprint_server_sdk/models/ip_info.py +++ b/fingerprint_server_sdk/models/ip_info.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/ip_info_v4.py b/fingerprint_server_sdk/models/ip_info_v4.py index edfd29d6..3a04b812 100644 --- a/fingerprint_server_sdk/models/ip_info_v4.py +++ b/fingerprint_server_sdk/models/ip_info_v4.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -17,7 +18,7 @@ import re # noqa: F401 from typing import Any, ClassVar, Optional -from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing_extensions import Self from fingerprint_server_sdk.models.geolocation import Geolocation @@ -34,7 +35,9 @@ class IPInfoV4(BaseModel): asn_name: Optional[StrictStr] = None asn_network: Optional[StrictStr] = None asn_type: Optional[StrictStr] = None - datacenter_result: Optional[StrictBool] = None + datacenter_result: Optional[StrictBool] = Field( + default=None, description='When true, the request originated from a datacenter.' + ) datacenter_name: Optional[StrictStr] = None __properties: ClassVar[list[str]] = [ 'address', diff --git a/fingerprint_server_sdk/models/ip_info_v6.py b/fingerprint_server_sdk/models/ip_info_v6.py index 6e901771..04a736ca 100644 --- a/fingerprint_server_sdk/models/ip_info_v6.py +++ b/fingerprint_server_sdk/models/ip_info_v6.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -17,7 +18,7 @@ import re # noqa: F401 from typing import Any, ClassVar, Optional -from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr from typing_extensions import Self from fingerprint_server_sdk.models.geolocation import Geolocation @@ -34,7 +35,9 @@ class IPInfoV6(BaseModel): asn_name: Optional[StrictStr] = None asn_network: Optional[StrictStr] = None asn_type: Optional[StrictStr] = None - datacenter_result: Optional[StrictBool] = None + datacenter_result: Optional[StrictBool] = Field( + default=None, description='When true, the request originated from a datacenter.' + ) datacenter_name: Optional[StrictStr] = None __properties: ClassVar[list[str]] = [ 'address', diff --git a/fingerprint_server_sdk/models/labels_inner.py b/fingerprint_server_sdk/models/labels_inner.py index ae40aa1b..ab78a903 100644 --- a/fingerprint_server_sdk/models/labels_inner.py +++ b/fingerprint_server_sdk/models/labels_inner.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/plugins_inner.py b/fingerprint_server_sdk/models/plugins_inner.py index 8b9d6cb8..c0e110d9 100644 --- a/fingerprint_server_sdk/models/plugins_inner.py +++ b/fingerprint_server_sdk/models/plugins_inner.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/plugins_inner_mime_types_inner.py b/fingerprint_server_sdk/models/plugins_inner_mime_types_inner.py index 17d873fe..0c950e01 100644 --- a/fingerprint_server_sdk/models/plugins_inner_mime_types_inner.py +++ b/fingerprint_server_sdk/models/plugins_inner_mime_types_inner.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/proximity.py b/fingerprint_server_sdk/models/proximity.py index 14c8f17d..63285165 100644 --- a/fingerprint_server_sdk/models/proximity.py +++ b/fingerprint_server_sdk/models/proximity.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/proxy_confidence.py b/fingerprint_server_sdk/models/proxy_confidence.py index ae833aea..bcbd65a5 100644 --- a/fingerprint_server_sdk/models/proxy_confidence.py +++ b/fingerprint_server_sdk/models/proxy_confidence.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/proxy_details.py b/fingerprint_server_sdk/models/proxy_details.py index 0c357f20..ad2ae8ff 100644 --- a/fingerprint_server_sdk/models/proxy_details.py +++ b/fingerprint_server_sdk/models/proxy_details.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -27,7 +28,7 @@ class ProxyDetails(BaseModel): """ proxy_type: StrictStr = Field( - description='Residential proxies use real user IP addresses to appear as legitimate traffic, while data center proxies are public proxies hosted in data centers ' + description='Proxy type: * `residential` - proxies that route through residential and telecom IP addresses to appear as legitimate traffic * `data_center` - proxies which route through data centers * `unknown` - reported when a proxy is detected solely by the ML model and the IP sources did not determine a specific type ' ) last_seen_at: Optional[StrictInt] = Field( default=None, diff --git a/fingerprint_server_sdk/models/rare_device_percentile_bucket.py b/fingerprint_server_sdk/models/rare_device_percentile_bucket.py index 1c9120be..ebfad2d7 100644 --- a/fingerprint_server_sdk/models/rare_device_percentile_bucket.py +++ b/fingerprint_server_sdk/models/rare_device_percentile_bucket.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/raw_device_attributes.py b/fingerprint_server_sdk/models/raw_device_attributes.py index aa742f5f..36f165e0 100644 --- a/fingerprint_server_sdk/models/raw_device_attributes.py +++ b/fingerprint_server_sdk/models/raw_device_attributes.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -40,7 +41,7 @@ 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) reported by the browser.' + default=None, description='Rounded amount of RAM in gigabytes.' ) timezone: Optional[StrictStr] = Field( default=None, description='Timezone identifier detected on the client.' @@ -48,7 +49,7 @@ class RawDeviceAttributes(BaseModel): canvas: Optional[Canvas] = None languages: Optional[list[list[StrictStr]]] = Field( default=None, - description='Navigator languages reported by the agent including fallbacks. Each inner array represents ordered language preferences reported by different APIs. Available for both browsers and iOS devices ', + description='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. ', ) webgl_extensions: Optional[WebGlExtensions] = None webgl_basics: Optional[WebGlBasics] = None @@ -113,6 +114,14 @@ class RawDeviceAttributes(BaseModel): default=None, description='UTC offset in "±HH:MM" format derived from the detected IANA timezone.', ) + 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.', + ) + 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.", + ) __properties: ClassVar[list[str]] = [ 'font_preferences', 'emoji', @@ -143,6 +152,8 @@ class RawDeviceAttributes(BaseModel): 'device_manufacturer', 'font_hash', 'timezone_offset', + 'battery_level', + 'battery_low_power_mode', ] model_config = ConfigDict( @@ -261,6 +272,8 @@ def from_dict(cls, obj: Optional[dict[str, Any]]) -> Optional[Self]: 'device_manufacturer': obj.get('device_manufacturer'), 'font_hash': obj.get('font_hash'), 'timezone_offset': obj.get('timezone_offset'), + 'battery_level': obj.get('battery_level'), + 'battery_low_power_mode': obj.get('battery_low_power_mode'), } ) return _obj diff --git a/fingerprint_server_sdk/models/request_header_modifications.py b/fingerprint_server_sdk/models/request_header_modifications.py index 92a6729c..5a8f45f7 100644 --- a/fingerprint_server_sdk/models/request_header_modifications.py +++ b/fingerprint_server_sdk/models/request_header_modifications.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/rule_action_header_field.py b/fingerprint_server_sdk/models/rule_action_header_field.py index d8bc62ad..43f71cdf 100644 --- a/fingerprint_server_sdk/models/rule_action_header_field.py +++ b/fingerprint_server_sdk/models/rule_action_header_field.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/rule_action_type.py b/fingerprint_server_sdk/models/rule_action_type.py index 3e078f68..ee3171df 100644 --- a/fingerprint_server_sdk/models/rule_action_type.py +++ b/fingerprint_server_sdk/models/rule_action_type.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/sdk.py b/fingerprint_server_sdk/models/sdk.py index ef06139b..0cae436a 100644 --- a/fingerprint_server_sdk/models/sdk.py +++ b/fingerprint_server_sdk/models/sdk.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -32,7 +33,7 @@ class SDK(BaseModel): description='Platform of the SDK used for the identification request.' ) version: StrictStr = Field( - description='Version string of the SDK used for the identification request. For example: `"3.12.1"` ' + description='Version string of the SDK used for the identification request.' ) integrations: Optional[list[Integration]] = None __properties: ClassVar[list[str]] = ['platform', 'version', 'integrations'] diff --git a/fingerprint_server_sdk/models/search_events_bot.py b/fingerprint_server_sdk/models/search_events_bot.py index 1bcdfd8e..1b282d02 100644 --- a/fingerprint_server_sdk/models/search_events_bot.py +++ b/fingerprint_server_sdk/models/search_events_bot.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/search_events_bot_info.py b/fingerprint_server_sdk/models/search_events_bot_info.py index 6e80098d..988ce5bb 100644 --- a/fingerprint_server_sdk/models/search_events_bot_info.py +++ b/fingerprint_server_sdk/models/search_events_bot_info.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/search_events_end_parameter.py b/fingerprint_server_sdk/models/search_events_end_parameter.py index f6e07dd2..b767f2f4 100644 --- a/fingerprint_server_sdk/models/search_events_end_parameter.py +++ b/fingerprint_server_sdk/models/search_events_end_parameter.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/search_events_incremental_identification_status.py b/fingerprint_server_sdk/models/search_events_incremental_identification_status.py index 7469293d..b0efd6f6 100644 --- a/fingerprint_server_sdk/models/search_events_incremental_identification_status.py +++ b/fingerprint_server_sdk/models/search_events_incremental_identification_status.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/search_events_rare_device_percentile_bucket.py b/fingerprint_server_sdk/models/search_events_rare_device_percentile_bucket.py index de9cd812..3034858a 100644 --- a/fingerprint_server_sdk/models/search_events_rare_device_percentile_bucket.py +++ b/fingerprint_server_sdk/models/search_events_rare_device_percentile_bucket.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/search_events_sdk_platform.py b/fingerprint_server_sdk/models/search_events_sdk_platform.py index 9d498aa3..ed24dab3 100644 --- a/fingerprint_server_sdk/models/search_events_sdk_platform.py +++ b/fingerprint_server_sdk/models/search_events_sdk_platform.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/search_events_source.py b/fingerprint_server_sdk/models/search_events_source.py new file mode 100644 index 00000000..9e68ba81 --- /dev/null +++ b/fingerprint_server_sdk/models/search_events_source.py @@ -0,0 +1,47 @@ +""" +Server API +Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. +Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. + +The version of the OpenAPI document: 4 +Contact: support@fingerprint.com +Generated by OpenAPI Generator (https://openapi-generator.tech) + +Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations + +import json +from enum import Enum + +from typing_extensions import Self + + +class SearchEventsSource(str, Enum): + """ + SearchEventsSource + """ + + """ + allowed enum values + """ + EDGE = 'edge' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SearchEventsSource from a JSON string""" + return cls(json.loads(json_str)) + + @classmethod + def _missing_(cls, value: object) -> Self: + """Accept unknown enum values gracefully.""" + if not isinstance(value, str): + raise ValueError(f'{value!r} is not a valid {cls.__name__}') + obj = str.__new__(cls, value) + obj._name_ = str(value) + obj._value_ = value + # cache it so the same value won't trigger `_missing_` again + cls._value2member_map_[value] = obj + return obj diff --git a/fingerprint_server_sdk/models/search_events_start_parameter.py b/fingerprint_server_sdk/models/search_events_start_parameter.py index 7004b67c..855e05de 100644 --- a/fingerprint_server_sdk/models/search_events_start_parameter.py +++ b/fingerprint_server_sdk/models/search_events_start_parameter.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/search_events_vpn_confidence.py b/fingerprint_server_sdk/models/search_events_vpn_confidence.py index a0d15163..9241c5ab 100644 --- a/fingerprint_server_sdk/models/search_events_vpn_confidence.py +++ b/fingerprint_server_sdk/models/search_events_vpn_confidence.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/supplementary_id_high_recall.py b/fingerprint_server_sdk/models/supplementary_id_high_recall.py index 0818e3f5..a1a99238 100644 --- a/fingerprint_server_sdk/models/supplementary_id_high_recall.py +++ b/fingerprint_server_sdk/models/supplementary_id_high_recall.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/tampering_confidence.py b/fingerprint_server_sdk/models/tampering_confidence.py index 719073fe..c2d06eb2 100644 --- a/fingerprint_server_sdk/models/tampering_confidence.py +++ b/fingerprint_server_sdk/models/tampering_confidence.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/tampering_details.py b/fingerprint_server_sdk/models/tampering_details.py index 07c4db39..021ec7cd 100644 --- a/fingerprint_server_sdk/models/tampering_details.py +++ b/fingerprint_server_sdk/models/tampering_details.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/touch_support.py b/fingerprint_server_sdk/models/touch_support.py index a55197a6..b3e5e467 100644 --- a/fingerprint_server_sdk/models/touch_support.py +++ b/fingerprint_server_sdk/models/touch_support.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/velocity.py b/fingerprint_server_sdk/models/velocity.py index 6f6d0a8f..d6109189 100644 --- a/fingerprint_server_sdk/models/velocity.py +++ b/fingerprint_server_sdk/models/velocity.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/velocity_data.py b/fingerprint_server_sdk/models/velocity_data.py index f336c74d..91e702a9 100644 --- a/fingerprint_server_sdk/models/velocity_data.py +++ b/fingerprint_server_sdk/models/velocity_data.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/vpn_confidence.py b/fingerprint_server_sdk/models/vpn_confidence.py index c6fd5d48..606e7820 100644 --- a/fingerprint_server_sdk/models/vpn_confidence.py +++ b/fingerprint_server_sdk/models/vpn_confidence.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/vpn_methods.py b/fingerprint_server_sdk/models/vpn_methods.py index 19da9b18..ccd783c0 100644 --- a/fingerprint_server_sdk/models/vpn_methods.py +++ b/fingerprint_server_sdk/models/vpn_methods.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com @@ -46,12 +47,17 @@ class VpnMethods(BaseModel): default=None, description="Request IP address belongs to a relay service provider, indicating the use of relay services like [Apple Private relay](https://support.apple.com/en-us/102602) or [Cloudflare Warp](https://developers.cloudflare.com/warp-client/). * Like VPNs, relay services anonymize the visitor's true IP address. * Unlike traditional VPNs, relay services don't let visitors spoof their location by choosing an exit node in a different country. This field allows you to differentiate VPN users and relay service users in your fraud prevention logic. ", ) + ml_prediction: Optional[StrictBool] = Field( + default=None, + description='`true` if the request came from a device running a VPN, `false` otherwise. ', + ) __properties: ClassVar[list[str]] = [ 'timezone_mismatch', 'public_vpn', 'auxiliary_mobile', 'os_mismatch', 'relay', + 'ml_prediction', ] model_config = ConfigDict( @@ -109,6 +115,7 @@ def from_dict(cls, obj: Optional[dict[str, Any]]) -> Optional[Self]: 'auxiliary_mobile': obj.get('auxiliary_mobile'), 'os_mismatch': obj.get('os_mismatch'), 'relay': obj.get('relay'), + 'ml_prediction': obj.get('ml_prediction'), } ) return _obj diff --git a/fingerprint_server_sdk/models/web_gl_basics.py b/fingerprint_server_sdk/models/web_gl_basics.py index cf1f8046..fb7feb18 100644 --- a/fingerprint_server_sdk/models/web_gl_basics.py +++ b/fingerprint_server_sdk/models/web_gl_basics.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/models/web_gl_extensions.py b/fingerprint_server_sdk/models/web_gl_extensions.py index 3b7e07b3..b8dec87d 100644 --- a/fingerprint_server_sdk/models/web_gl_extensions.py +++ b/fingerprint_server_sdk/models/web_gl_extensions.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/fingerprint_server_sdk/rest.py b/fingerprint_server_sdk/rest.py index 4e17c64b..3151bd45 100644 --- a/fingerprint_server_sdk/rest.py +++ b/fingerprint_server_sdk/rest.py @@ -2,6 +2,7 @@ Server API Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. +The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. The version of the OpenAPI document: 4 Contact: support@fingerprint.com diff --git a/pyproject.toml b/pyproject.toml index 86d7b010..c7258209 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "fingerprint_server_sdk" version = "9.3.0" -description = "Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. " +description = "Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. The API also supports collection of Automation Intelligence for requests to your server in edge, pre-origin, or middleware contexts. " authors = [ {name = "Fingerprint Support",email = "support@fingerprint.com"}, ] diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index ffd5ee8f..2786e851 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -8,6 +8,9 @@ info: Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device. + + The API also supports collection of Automation Intelligence for requests to + your server in edge, pre-origin, or middleware contexts. version: '4' contact: name: Fingerprint Support @@ -53,6 +56,9 @@ paths: required: true schema: type: string + examples: + - 1708102555327.NLOjmg + example: 1708102555327.NLOjmg description: >- The unique [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id) @@ -63,6 +69,9 @@ paths: required: false schema: type: string + examples: + - D6N9Kbk9HRWrIWGz + example: D6N9Kbk9HRWrIWGz description: > The ID of the ruleset to evaluate against the event, producing the action to take for this event. @@ -138,6 +147,9 @@ paths: required: true schema: type: string + examples: + - 1708102555327.NLOjmg + example: 1708102555327.NLOjmg description: >- The unique event [identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#event_id). @@ -246,17 +258,24 @@ paths: format: int32 minimum: 1 maximum: 100 - default: 10 + examples: + - 10 example: 10 description: > - Maximum number of events to return. Results are selected from the - time range (`start`, `end`), ordered by `reverse`, then truncated to - provided `limit` size. So `reverse=true` returns the oldest - N=`limit` events, otherwise the newest N=`limit` events. + Maximum number of events to return. Defaults to 10 when omitted. + Results are selected from the time range (`start`, `end`), ordered + by `reverse`, then truncated to provided `limit` size. So + `reverse=true` returns the oldest N=`limit` events, otherwise the + newest N=`limit` events. - name: pagination_key in: query schema: type: string + examples: + - >- + S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q + example: >- + S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q description: > Use `pagination_key` to get the next page of results. @@ -274,11 +293,15 @@ paths: api-base-url/events?limit=100` 2. Use `response.pagination_key` to get the next page of results: - `GET api-base-url/events?limit=100&pagination_key=1740815825085` + `GET + api-base-url/events?limit=100&pagination_key=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` - name: visitor_id in: query schema: type: string + examples: + - Ibk1527CUFmcnjLwIs4A9 + example: Ibk1527CUFmcnjLwIs4A9 description: > Unique [visitor identifier](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) @@ -291,6 +314,9 @@ paths: in: query schema: type: string + examples: + - Ibk1527CUFmcnjLwIs4A9 + example: Ibk1527CUFmcnjLwIs4A9 description: > The High Recall ID is a supplementary browser identifier designed for use cases that require wider coverage over precision. Compared @@ -382,6 +408,9 @@ paths: type: array items: type: string + examples: + - OpenAI + example: OpenAI description: > Filter events by their Bot Info Provider. The provider must match exactly, partial or wildcard matching is not supported. @@ -399,6 +428,9 @@ paths: type: array items: type: string + examples: + - ChatGPT-User + example: ChatGPT-User description: > Filter events by their Bot Info Name. The name must match exactly, partial or wildcard matching is not supported. @@ -414,6 +446,9 @@ paths: in: query schema: type: string + examples: + - 61.127.217.15 + example: 61.127.217.15 description: > Filter events by IP address or IP range (if CIDR notation is used). If CIDR notation is not used, a /32 for IPv4 or /128 for IPv6 is @@ -424,6 +459,9 @@ paths: in: query schema: type: string + examples: + - '12876' + example: '12876' description: > Filter events by the ASN associated with the event's IP address. @@ -433,6 +471,9 @@ paths: in: query schema: type: string + examples: + - somelinkedId + example: somelinkedId description: > Filter events by your custom identifier. @@ -447,18 +488,27 @@ paths: in: query schema: type: string + examples: + - https://example.com/login + example: https://example.com/login description: | Filter events by the URL (`url` property) associated with the event. - name: bundle_id in: query schema: type: string + examples: + - com.example.app + example: com.example.app description: | Filter events by the Bundle ID (iOS) associated with the event. - name: package_name in: query schema: type: string + examples: + - com.example.app + example: com.example.app description: > Filter events by the Package Name (Android) associated with the event. @@ -466,6 +516,9 @@ paths: in: query schema: type: string + examples: + - https://example.com + example: https://example.com description: > Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) @@ -475,10 +528,17 @@ paths: 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' + 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 @@ -491,10 +551,17 @@ paths: 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' + 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 @@ -663,6 +730,9 @@ paths: schema: type: number format: float + examples: + - 7.5 + example: 7.5 description: > Filter events with Suspect Score result above a provided minimum threshold. @@ -757,6 +827,9 @@ paths: in: query schema: type: string + examples: + - 3.11.14 + example: 3.11.14 description: > Filter events by a specific SDK version associated with the identification event (`sdk.version` property). Example: `3.11.14` @@ -793,11 +866,17 @@ paths: type: array items: type: string + examples: + - ae_47abaca3db2c7c43 + example: ae_47abaca3db2c7c43 style: form - name: proximity_id in: query schema: type: string + examples: + - C9rJYBlOFsAfBwQ + example: C9rJYBlOFsAfBwQ description: > Filter events by the most precise Proximity ID provided by default. @@ -811,6 +890,9 @@ paths: format: int64 minimum: 1 maximum: 1000 + examples: + - 100 + example: 100 description: > When set, the response will include a `total_hits` property with a count of total query matches across all pages, up to the specified @@ -844,6 +926,24 @@ paths: > Note: When using this parameter, only events with the `simulator` property set to `true` or `false` are returned. Events without a `simulator` Smart Signal result are left out of the response. + - name: source + in: query + required: false + schema: + type: array + maxItems: 1 + items: + $ref: '#/components/schemas/SearchEventsSource' + 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. responses: '200': description: Events matching the filter(s). @@ -865,6 +965,14 @@ paths: application/json: schema: $ref: '#/components/schemas/ErrorResponse' + '404': + description: >- + Not found. The requested visitor does not exist in this workspace's + data. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' '500': description: Workspace error. content: @@ -947,6 +1055,9 @@ paths: required: true schema: type: string + examples: + - Ibk1527CUFmcnjLwIs4A9 + example: Ibk1527CUFmcnjLwIs4A9 description: >- The [visitor ID](https://docs.fingerprint.com/reference/js-agent-v4-get-function#visitor_id) @@ -990,138 +1101,672 @@ components: Add your Secret API Key to the Authorization header using the standard Bearer format: `Authorization: Bearer ` schemas: + LinkedId: + type: string + examples: + - somelinkedId + description: A customer-provided id that was sent with the request. + Tags: + type: object + description: >- + A customer-provided value or an object that was sent with the + identification request or updated later. + additionalProperties: true + required: [] EventId: type: string + examples: + - 1708102555327.NLOjmg description: > Unique identifier of the user's request. The first portion of the - event_id is a unix epoch milliseconds timestamp For example: - `1758130560902.8tRtrH` + event_id is a unix epoch milliseconds timestamp. Timestamp: description: Timestamp of the event with millisecond precision in Unix time. type: integer format: int64 - IncrementalIdentificationStatus: + examples: + - 1708102555327 + Url: type: string - description: > - Only included for requests using incremental identification. - - - `partially_completed` - Indicates this event corresponds to a - 'minimal' request. Smart Signals, even if included in your plan, are not - computed; hence, their values must be ignored. - - - `completed` - Indicates this event corresponds to a 'complete' - request. Smart Signals, if included in your plan, are computed; hence, - their values are valid and relevant. - enum: - - partially_completed - - completed - LinkedId: + examples: + - https://www.example.com/login + description: Page URL from which the request was sent. + BotInfoCategory: type: string - description: A customer-provided id that was sent with the request. - EnvironmentId: + enum: + - advertising_and_marketing + - aggregator + - ai_agent + - ai_assistant + - ai_browser + - ai_crawler + - ai_search + - browser_automation + - ecommerce + - monitoring_and_analytics + - other + - scraping + - security + - search_engine_crawler + - search_engine_optimization + - unknown + description: | + The type and purpose of the bot. + BotInfoIdentity: type: string + enum: + - verified + - signed + - spoofed + - unknown description: | - Environment Id of the event. For example: `ae_47abaca3db2c7c43` - Suspect: - type: boolean - description: >- - Field is `true` if you have previously set the `suspect` flag for this - event using the [Server API Update event - endpoint](https://docs.fingerprint.com/reference/server-api-v4-update-event). - Integration: + The verification status of the bot's identity: + * `verified` - well-known bot with publicly verifiable identity, directed by the bot provider. + * `signed` - bot that signs its platform via Web Bot Auth, directed by the bot provider's customers. + * `spoofed` - bot that claims a public identity but fails verification. + * `unknown` - bot that does not publish a verifiable identity. + BotInfoConfidence: + type: string + enum: + - low + - medium + - high + description: Confidence level of the bot identification. + BotInfo: type: object + description: Extended bot information. + required: + - category + - provider + - name + - identity + - confidence properties: + category: + type: string + description: | + The type and purpose of the bot. + provider: + type: string + description: The organization or company operating the bot. + examples: + - Anthropic + - Browserbase + - Google + - OpenAI + provider_url: + type: string + examples: + - https://fingerprint.com + description: The URL of the bot provider's website. name: type: string - description: The name of the specific integration, e.g. "fingerprint-pro-react". - version: + description: The specific name or identifier of the bot. + examples: + - ClaudeBot + - Browserbase Agent + - Googlebot + - GPTBot + - ChatGPT-User + identity: type: string - description: The version of the specific integration, e.g. "3.11.10". - subintegration: - type: object - properties: - name: - type: string - description: The name of the specific subintegration, e.g. "preact". - version: - type: string - description: The version of the specific subintegration, e.g. "10.21.0". - SDK: + enum: + - verified + - signed + - spoofed + - unknown + description: | + The verification status of the bot's identity: + * `verified` - well-known bot with publicly verifiable identity, directed by the bot provider. + * `signed` - bot that signs its platform via Web Bot Auth, directed by the bot provider's customers. + * `spoofed` - bot that claims a public identity but fails verification. + * `unknown` - bot that does not publish a verifiable identity. + confidence: + type: string + enum: + - low + - medium + - high + description: Confidence level of the bot identification. + Geolocation: type: object - description: Contains information about the SDK used to perform the request. - required: - - platform - - version + required: [] properties: - platform: + accuracy_radius: + type: integer + examples: + - 20 + minimum: 0 + description: >- + The IP address is likely to be within this radius (in km) of the + specified location. + latitude: + type: number + format: double + examples: + - 50.05 + minimum: -90 + maximum: 90 + longitude: + type: number + format: double + examples: + - 14.4 + minimum: -180 + maximum: 180 + postal_code: type: string - enum: - - js - - android - - ios - - unknown - description: Platform of the SDK used for the identification request. - version: + examples: + - 150 00 + timezone: type: string - description: > - Version string of the SDK used for the identification request. For - example: `"3.12.1"` - integrations: + format: timezone + examples: + - Europe/Prague + city_name: + type: string + examples: + - Prague + country_code: + type: string + examples: + - CZ + minLength: 2 + maxLength: 2 + country_name: + type: string + examples: + - Czechia + continent_code: + type: string + examples: + - EU + minLength: 2 + maxLength: 2 + continent_name: + type: string + examples: + - Europe + subdivisions: type: array items: - $ref: '#/components/schemas/Integration' - Replayed: - type: boolean - description: > - `true` if we determined that this payload was replayed, `false` - otherwise. - IdentificationConfidence: + type: object + required: + - iso_code + - name + properties: + iso_code: + type: string + examples: + - '10' + name: + type: string + examples: + - Hlavni mesto Praha + IPInfoV4: type: object - description: >- - The confidence score represents the probability of a false-positive - identification. To learn more, visit [Confidence - Score](https://docs.fingerprint.com/docs/identification-accuracy-and-confidence#confidence-score). - Please note that the confidence score is not yet supported for [High - Recall - ID](https://docs.fingerprint.com/docs/supplementary-identifiers-highrecall). required: - - score + - address properties: - score: - type: number - format: double - minimum: 0 - maximum: 1 - description: >- - A floating-point number between 0 and 1 that represents the - probability of a false-positive identification. For High Recall ID, - this value is 0. - version: + address: type: string - description: >- - The version name of the method used to calculate the confidence - score. For High Recall ID, this value is "Not Supported". - comment: + format: ipv4 + examples: + - 94.142.239.124 + geolocation: + $ref: '#/components/schemas/Geolocation' + asn: type: string - Identification: + examples: + - '396982' + - '16509' + - '701' + asn_name: + type: string + examples: + - Google LLC + - Amazon.com, Inc. + - Verizon Business + asn_network: + type: string + examples: + - 34.160.0.0/12 + - 3.208.0.0/12 + - 173.56.0.0/16 + asn_type: + type: string + examples: + - hosting + - isp + - business + - education + datacenter_result: + type: boolean + description: When true, the request originated from a datacenter. + datacenter_name: + type: string + examples: + - Google Cloud + - Amazon AWS + IPInfoV6: type: object required: - - visitor_id - - visitor_found + - address properties: - visitor_id: + address: type: string - description: >- - String of 20 characters that uniquely identifies the visitor's - browser or mobile device. - confidence: - $ref: '#/components/schemas/IdentificationConfidence' - visitor_found: - type: boolean - description: Attribute represents if a visitor had been identified before. - first_seen_at: - type: integer - format: int64 + format: ipv6 + examples: + - 2001:db8:3333:4444:5555:6666:7777:8888 + geolocation: + $ref: '#/components/schemas/Geolocation' + asn: + type: string + examples: + - '396982' + - '16509' + - '701' + asn_name: + type: string + examples: + - Google LLC + - Amazon.com, Inc. + - Verizon Business + asn_network: + type: string + examples: + - 2001:4860:4801:10::/64 + - 2600:1f00::/24 + - 2001:4868:800::/40 + asn_type: + type: string + examples: + - hosting + - isp + - business + - education + datacenter_result: + type: boolean + description: When true, the request originated from a datacenter. + datacenter_name: + type: string + examples: + - Google Cloud + - Amazon AWS + IPInfo: + type: object + description: >- + Details about the request IP address. Has separate fields for v4 and v6 + IP address versions. + required: [] + properties: + v4: + $ref: '#/components/schemas/IPInfoV4' + v6: + $ref: '#/components/schemas/IPInfoV6' + Proxy: + type: boolean + description: > + IP address was used by a public proxy provider or belonged to a known + recent residential proxy + ProxyConfidence: + type: string + enum: + - low + - medium + - high + description: > + Confidence level of the proxy detection. If a proxy is not detected, + confidence is "high". If it's detected, can be "low", "medium", or + "high". + ProxyDetails: + type: object + description: Proxy detection details (present if `proxy` is `true`) + required: + - proxy_type + properties: + proxy_type: + type: string + enum: + - residential + - data_center + - unknown + description: | + Proxy type: + * `residential` - proxies that route through residential and telecom IP addresses to appear as legitimate traffic + * `data_center` - proxies which route through data centers + * `unknown` - reported when a proxy is detected solely by the ML model and the IP sources did not determine a specific type + last_seen_at: + type: integer + format: int64 + examples: + - 1708102555327 + description: > + Unix millisecond timestamp with hourly resolution of when this IP + was last seen as a proxy + provider: + type: string + examples: + - Massive + description: > + String representing the last proxy service provider detected when + this + + IP was synced. An IP can be shared by multiple service providers. + Vpn: + type: boolean + description: | + VPN or other anonymizing service has been used when sending the request. + VpnConfidence: + type: string + enum: + - low + - medium + - high + description: >- + A confidence rating for the VPN detection result — "low", "medium", or + "high". Depends on the combination of results returned from all VPN + detection methods. + VpnMethods: + type: object + required: [] + properties: + timezone_mismatch: + type: boolean + x-platforms: + - android + - ios + - browser + description: >- + The browser timezone doesn't match the timezone inferred from the + request IP address. + public_vpn: + type: boolean + x-platforms: + - android + - ios + - browser + description: >- + Request IP address is owned and used by a public VPN service + provider. + auxiliary_mobile: + type: boolean + x-platforms: + - android + - ios + - browser + description: >- + This method applies to mobile devices only. Indicates the result of + additional methods used to detect a VPN in mobile devices. + os_mismatch: + type: boolean + x-platforms: + - browser + description: >- + The browser runs on a different operating system than the operating + system inferred from the request network signature. + relay: + type: boolean + x-platforms: + - android + - ios + - browser + description: > + Request IP address belongs to a relay service provider, indicating + the use of relay services like [Apple Private + relay](https://support.apple.com/en-us/102602) or [Cloudflare + Warp](https://developers.cloudflare.com/warp-client/). + + + * Like VPNs, relay services anonymize the visitor's true IP address. + + * Unlike traditional VPNs, relay services don't let visitors spoof + their location by choosing an exit node in a different country. + + + This field allows you to differentiate VPN users and relay service + users in your fraud prevention logic. + ml_prediction: + type: boolean + x-platforms: + - browser + description: > + `true` if the request came from a device running a VPN, `false` + otherwise. + ErrorCode: + type: string + enum: + - request_cannot_be_parsed + - request_read_timeout + - secret_api_key_required + - secret_api_key_not_found + - public_api_key_required + - public_api_key_not_found + - subscription_not_active + - wrong_region + - feature_not_enabled + - visitor_not_found + - too_many_requests + - state_not_ready + - failed + - event_not_found + - missing_module + - payload_too_large + - service_unavailable + - ruleset_not_found + description: > + Error code: + + * `request_cannot_be_parsed` - The query parameters or JSON payload + contains some errors + that prevented us from parsing it (wrong type/surpassed limits). + * `request_read_timeout` - The request body could not be read before the + connection timed out. + + * `secret_api_key_required` - secret API key in header is missing or + empty. + + * `secret_api_key_not_found` - No Fingerprint workspace found for + specified secret API key. + + * `public_api_key_required` - public API key in header is missing or + empty. + + * `public_api_key_not_found` - No Fingerprint workspace found for + specified public API key. + + * `subscription_not_active` - Fingerprint workspace is not active. + + * `wrong_region` - Server and workspace region differ. + + * `feature_not_enabled` - This feature (for example, Delete API) is not + enabled for your workspace. + + * `visitor_not_found` - The specified visitor ID was not found. It never + existed or it may have already been deleted. + + * `too_many_requests` - The limit on secret API key requests per second + has been exceeded. + + * `state_not_ready` - The event specified with event ID is + not ready for updates yet. Try again. + This error happens in rare cases when update API is called immediately + after receiving the event ID on the client. In case you need to send + information right away, we recommend using the JS agent API instead. + * `failed` - Internal server error. + + * `event_not_found` - The specified event ID was not found. It never + existed, expired, or it has been deleted. + + * `missing_module` - The request is invalid because it is missing a + required module. + + * `payload_too_large` - The request payload is too large and cannot be + processed. + + * `service_unavailable` - The service was unable to process the request. + + * `ruleset_not_found` - The specified ruleset was not found. It never + existed or it has been deleted. + Error: + type: object + required: + - code + - message + properties: + code: + $ref: '#/components/schemas/ErrorCode' + message: + type: string + examples: + - Forbidden + ErrorResponse: + type: object + required: + - error + properties: + error: + $ref: '#/components/schemas/Error' + IncrementalIdentificationStatus: + type: string + description: > + Only included for requests using incremental identification. + + - `partially_completed` - Indicates this event corresponds to a + 'minimal' request. Smart Signals, even if included in your plan, are not + computed; hence, their values must be ignored. + + - `completed` - Indicates this event corresponds to a 'complete' + request. Smart Signals, if included in your plan, are computed; hence, + their values are valid and relevant. + enum: + - partially_completed + - completed + EnvironmentId: + type: string + examples: + - ae_47abaca3db2c7c43 + description: Environment Id of the event. + Suspect: + type: boolean + description: >- + Field is `true` if you have previously set the `suspect` flag for this + event using the [Server API Update event + endpoint](https://docs.fingerprint.com/reference/server-api-v4-update-event). + Integration: + type: object + required: [] + properties: + name: + type: string + examples: + - fingerprint-pro-react + description: The name of the specific integration. + version: + type: string + examples: + - 3.11.10 + description: The version of the specific integration. + subintegration: + type: object + required: [] + properties: + name: + type: string + examples: + - preact + description: The name of the specific subintegration. + version: + type: string + examples: + - 10.21.0 + description: The version of the specific subintegration. + SDK: + type: object + description: Contains information about the SDK used to perform the request. + required: + - platform + - version + properties: + platform: + type: string + enum: + - js + - android + - ios + - unknown + description: Platform of the SDK used for the identification request. + version: + type: string + examples: + - 3.11.10 + description: Version string of the SDK used for the identification request. + integrations: + type: array + items: + $ref: '#/components/schemas/Integration' + Replayed: + type: boolean + description: > + `true` if we determined that this payload was replayed, `false` + otherwise. + IdentificationConfidence: + type: object + description: >- + The confidence score represents the probability of a false-positive + identification. To learn more, visit [Confidence + Score](https://docs.fingerprint.com/docs/identification-accuracy-and-confidence#confidence-score). + Please note that the confidence score is not yet supported for [High + Recall + ID](https://docs.fingerprint.com/docs/supplementary-identifiers-highrecall). + required: + - score + properties: + score: + type: number + format: double + examples: + - 0.97 + minimum: 0 + maximum: 1 + description: >- + A floating-point number between 0 and 1 that represents the + probability of a false-positive identification. For High Recall ID, + this value is 0. + version: + type: string + examples: + - '1.1' + description: >- + The version name of the method used to calculate the confidence + score. For High Recall ID, this value is "Not Supported". + comment: + type: string + examples: + - Low confidence due to bot signals + Identification: + type: object + required: + - visitor_id + - visitor_found + properties: + visitor_id: + type: string + examples: + - Ibk1527CUFmcnjLwIs4A9 + description: >- + String of 20 characters that uniquely identifies the visitor's + browser or mobile device. + confidence: + $ref: '#/components/schemas/IdentificationConfidence' + visitor_found: + type: boolean + description: Attribute represents if a visitor had been identified before. + first_seen_at: + type: integer + format: int64 + examples: + - 1708102555327 description: > Unix epoch time milliseconds timestamp indicating the time at which this visitor ID was first seen. example: `1758069706642` - @@ -1129,6 +1774,8 @@ components: last_seen_at: type: integer format: int64 + examples: + - 1708102555327 description: > Unix epoch time milliseconds timestamp indicating the time at which this visitor ID was last seen. example: `1758069706642` - @@ -1149,6 +1796,8 @@ components: properties: visitor_id: type: string + examples: + - 0jnGMkPYXX37DqVa4ZIO3f_hr description: >- The High Recall identifier for the visitor's browser. It is an alphanumeric string with a maximum length of 25 characters. @@ -1162,6 +1811,8 @@ components: first_seen_at: type: integer format: int64 + examples: + - 1778086556130 description: > Unix epoch timestamp (in milliseconds) indicating when the browser was first identified. example: `1758069706642` - Corresponding to @@ -1169,47 +1820,72 @@ components: last_seen_at: type: integer format: int64 + examples: + - 1778604975494 description: > Unix epoch timestamp (in milliseconds) corresponding to the most recent visit by this browser. example: `1758069706642` - Corresponding to Wed Sep 17 2025 00:41:46 GMT+0000 - Tags: - type: object - description: >- - A customer-provided value or an object that was sent with the - identification request or updated later. - additionalProperties: true - Url: - type: string - description: > - Page URL from which the request was sent. For example - `https://example.com/` BundleId: type: string + examples: + - com.foo.app description: > Bundle Id of the iOS application integrated with the Fingerprint SDK for - the event. For example: `com.foo.app` + the event. PackageName: type: string + examples: + - com.foo.app description: > Package name of the Android application integrated with the Fingerprint - SDK for the event. For example: `com.foo.app` + SDK for the event. IpAddress: type: string + examples: + - 61.127.217.15 description: IP address of the requesting browser or bot. UserAgent: type: string + examples: + - Mozilla/5.0 (Windows NT 6.1; Win64; x64) .... + description: User Agent of the client. + Device: + type: string + examples: + - Generic Smartphone + - Desktop + - iPhone + description: > + Device model or family extracted from the user agent string. On web, + this field is also present inside `browser_details`. + Os: + type: string + examples: + - Windows + - iOS + - Android + description: > + Operating system family extracted from the user agent string. On web, + this field is also present inside `browser_details`. + OsVersion: + type: string + examples: + - '17.4' + - '14' + - '10' description: > - User Agent of the client, for example: `Mozilla/5.0 (Windows NT 6.1; - Win64; x64) ....` + Operating system version string extracted from the user agent string. On + web, this field is also present inside `browser_details`. ClientReferrer: type: string + examples: + - https://example.com/blog/my-article description: > 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) For example: - `https://example.com/blog/my-article` + example, by using a bookmark). BrowserDetails: type: object required: @@ -1222,16 +1898,28 @@ components: properties: browser_name: type: string + examples: + - Chrome browser_major_version: type: string + examples: + - '74' browser_full_version: type: string + examples: + - 74.0.3729 os: type: string + examples: + - Windows os_version: type: string + examples: + - '7' device: type: string + examples: + - Other Proximity: type: object description: > @@ -1244,6 +1932,8 @@ components: properties: id: type: string + examples: + - w1aTfd4MCvl description: | A stable privacy-preserving identifier for a given proximity zone. precision_radius: @@ -1264,6 +1954,8 @@ components: confidence: type: number format: float + examples: + - 0.95 minimum: 0 maximum: 1 description: > @@ -1284,92 +1976,10 @@ components: * `not_detected` - the visitor is not a bot BotType: type: string + examples: + - fingerprint_agent description: | Additional classification of the bot type if detected. - BotInfoCategory: - type: string - enum: - - advertising_and_marketing - - aggregator - - ai_agent - - ai_assistant - - ai_browser - - ai_crawler - - ai_search - - browser_automation - - ecommerce - - monitoring_and_analytics - - other - - scraping - - security - - search_engine_crawler - - search_engine_optimization - - unknown - description: | - The type and purpose of the bot. - BotInfoIdentity: - type: string - enum: - - verified - - signed - - spoofed - - unknown - description: | - The verification status of the bot's identity: - * `verified` - well-known bot with publicly verifiable identity, directed by the bot provider. - * `signed` - bot that signs its platform via Web Bot Auth, directed by the bot provider's customers. - * `spoofed` - bot that claims a public identity but fails verification. - * `unknown` - bot that does not publish a verifiable identity. - BotInfoConfidence: - type: string - enum: - - low - - medium - - high - description: Confidence level of the bot identification. - BotInfo: - type: object - description: Extended bot information. - required: - - category - - provider - - name - - identity - - confidence - properties: - category: - type: string - description: | - The type and purpose of the bot. - provider: - type: string - description: The organization or company operating the bot. - provider_url: - type: string - description: The URL of the bot provider's website. - name: - type: string - description: The specific name or identifier of the bot. - identity: - type: string - enum: - - verified - - signed - - spoofed - - unknown - description: | - The verification status of the bot's identity: - * `verified` - well-known bot with publicly verifiable identity, directed by the bot provider. - * `signed` - bot that signs its platform via Web Bot Auth, directed by the bot provider's customers. - * `spoofed` - bot that claims a public identity but fails verification. - * `unknown` - bot that does not publish a verifiable identity. - confidence: - type: string - enum: - - low - - medium - - high - description: Confidence level of the bot identification. ClonedApp: type: boolean description: > @@ -1398,186 +2008,43 @@ components: FactoryReset: type: integer format: int64 + examples: + - 1708102555327 description: > - The time of the most recent factory reset that happened on the **mobile - device** is expressed as Unix epoch time. When a factory reset cannot be - detected on the mobile device or when the request is initiated from a - browser, this field will correspond to the *epoch* time (i.e 1 Jan 1970 - UTC) as a value of 0. See [Factory Reset - Detection](https://docs.fingerprint.com/docs/smart-signals-reference#factory-reset-detection) - to learn more about this Smart Signal. - Frida: - type: boolean - description: > - [Frida](https://frida.re/docs/) detection for Android and iOS devices. - There are 2 values: - - * `true` - Frida detected - - * `false` - No signs of Frida or the client is not a mobile device. - IPBlockList: - type: object - properties: - email_spam: - type: boolean - description: IP address was part of a known email spam attack (SMTP). - attack_source: - type: boolean - description: IP address was part of a known network attack (SSH/HTTPS). - tor_node: - type: boolean - description: IP address was part of known TOR network activity. - Geolocation: - type: object - properties: - accuracy_radius: - type: integer - minimum: 0 - description: >- - The IP address is likely to be within this radius (in km) of the - specified location. - latitude: - type: number - format: double - minimum: -90 - maximum: 90 - longitude: - type: number - format: double - minimum: -180 - maximum: 180 - postal_code: - type: string - timezone: - type: string - format: timezone - city_name: - type: string - country_code: - type: string - minLength: 2 - maxLength: 2 - country_name: - type: string - continent_code: - type: string - minLength: 2 - maxLength: 2 - continent_name: - type: string - subdivisions: - type: array - items: - type: object - required: - - iso_code - - name - properties: - iso_code: - type: string - name: - type: string - IPInfoV4: - type: object - required: - - address - properties: - address: - type: string - format: ipv4 - geolocation: - $ref: '#/components/schemas/Geolocation' - asn: - type: string - asn_name: - type: string - asn_network: - type: string - asn_type: - type: string - datacenter_result: - type: boolean - datacenter_name: - type: string - IPInfoV6: - type: object - required: - - address - properties: - address: - type: string - format: ipv6 - geolocation: - $ref: '#/components/schemas/Geolocation' - asn: - type: string - asn_name: - type: string - asn_network: - type: string - asn_type: - type: string - datacenter_result: - type: boolean - datacenter_name: - type: string - IPInfo: - type: object - description: >- - Details about the request IP address. Has separate fields for v4 and v6 - IP address versions. - properties: - v4: - $ref: '#/components/schemas/IPInfoV4' - v6: - $ref: '#/components/schemas/IPInfoV6' - Proxy: - type: boolean - description: > - IP address was used by a public proxy provider or belonged to a known - recent residential proxy - ProxyConfidence: - type: string - enum: - - low - - medium - - high + The time of the most recent factory reset that happened on the **mobile + device** is expressed as Unix epoch time. When a factory reset cannot be + detected on the mobile device or when the request is initiated from a + browser, this field will correspond to the *epoch* time (i.e 1 Jan 1970 + UTC) as a value of 0. See [Factory Reset + Detection](https://docs.fingerprint.com/docs/smart-signals-reference#factory-reset-detection) + to learn more about this Smart Signal. + Frida: + type: boolean description: > - Confidence level of the proxy detection. If a proxy is not detected, - confidence is "high". If it's detected, can be "low", "medium", or - "high". - ProxyDetails: - type: object - description: Proxy detection details (present if `proxy` is `true`) - required: - - proxy_type - properties: - proxy_type: - type: string - enum: - - residential - - data_center - description: > - Residential proxies use real user IP addresses to appear as - legitimate traffic, + [Frida](https://frida.re/docs/) detection for Android and iOS devices. + There are 2 values: - while data center proxies are public proxies hosted in data centers - last_seen_at: - type: integer - format: int64 - description: > - Unix millisecond timestamp with hourly resolution of when this IP - was last seen as a proxy - provider: - type: string - description: > - String representing the last proxy service provider detected when - this + * `true` - Frida detected - IP was synced. An IP can be shared by multiple service providers. + * `false` - No signs of Frida or the client is not a mobile device. + IPBlockList: + type: object + required: [] + properties: + email_spam: + type: boolean + description: IP address was part of a known email spam attack (SMTP). + attack_source: + type: boolean + description: IP address was part of a known network attack (SSH/HTTPS). + tor_node: + type: boolean + description: IP address was part of known TOR network activity. ProxyMLScore: type: number format: double + examples: + - 0.2 minimum: 0 maximum: 1 description: > @@ -1630,12 +2097,18 @@ components: Android. RulesetId: type: string + examples: + - rs_b1k1blhqpOX3kU description: The ID of the evaluated ruleset. RuleId: type: string + examples: + - r_uE0af8497PFAOD description: The ID of the rule that matched the identification event. RuleExpression: type: string + examples: + - bot in ["bad"] || incognito description: The expression of the rule that matched the identification event. RuleActionType: type: string @@ -1651,21 +2124,28 @@ components: properties: name: type: string + examples: + - Content-Type description: The header field name. value: type: string + examples: + - application/json description: The value of the header field. RequestHeaderModifications: type: object description: >- The set of header modifications to apply, in the following order: remove, set, append. + required: [] properties: remove: type: array description: The list of headers to remove. items: type: string + examples: + - X-Forwarded-For set: type: array description: >- @@ -1701,9 +2181,13 @@ components: - type StatusCode: type: integer + examples: + - 200 description: A valid HTTP status code. RuleActionBody: type: string + examples: + - '{"title":"Forbidden"}' description: The response body to send to the client. EventRuleActionBlock: description: >- @@ -1756,6 +2240,8 @@ components: * `false` - No signs of simulator or the client is not iOS. SuspectScore: type: integer + examples: + - 8 description: > Suspect Score is an easy way to integrate Smart Signals into your fraud protection work flow. It is a weighted representation of all Smart @@ -1808,6 +2294,8 @@ components: TamperingMlScore: type: number format: double + examples: + - 0.5 minimum: 0 maximum: 1 description: > @@ -1818,10 +2306,13 @@ components: anti_detect_browser fields conveniently captures that fact) TamperingDetails: type: object + required: [] properties: anomaly_score: type: number format: double + examples: + - 0.5 minimum: 0 maximum: 1 x-platforms: @@ -1863,16 +2354,22 @@ components: properties: 5_minutes: type: integer + examples: + - 1 description: > Count for the last 5 minutes of velocity data, from the time of the event. 1_hour: type: integer + examples: + - 5 description: > Count for the last 1 hour of velocity data, from the time of the event. 24_hours: type: integer + examples: + - 5 description: > The `24_hours` interval of `distinct_ip`, `distinct_linked_id`, `distinct_country`, `distinct_ip_by_linked_id` and @@ -1920,6 +2417,7 @@ components: if the associated event does not have the required data, such as a linked_id. + required: [] properties: distinct_ip: $ref: '#/components/schemas/VelocityData' @@ -1943,6 +2441,8 @@ components: VirtualMachineMLScore: type: number format: double + examples: + - 0.5 minimum: 0 maximum: 1 description: > @@ -1953,87 +2453,33 @@ components: currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/). - Vpn: - type: boolean - description: | - VPN or other anonymizing service has been used when sending the request. - VpnConfidence: - type: string - enum: - - low - - medium - - high - description: >- - A confidence rating for the VPN detection result — "low", "medium", or - "high". Depends on the combination of results returned from all VPN - detection methods. + VpnMLScore: + type: number + format: double + examples: + - 0.2 + minimum: 0 + maximum: 1 + description: > + 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/). VpnOriginTimezone: type: string + examples: + - Europe/Berlin description: | Local timezone which is used in timezone_mismatch method. VpnOriginCountry: type: string + examples: + - DE description: > Country of the request (only for Android SDK version >= 2.4.0, ISO 3166 format or unknown). - VpnMethods: - type: object - properties: - timezone_mismatch: - type: boolean - x-platforms: - - android - - ios - - browser - description: >- - The browser timezone doesn't match the timezone inferred from the - request IP address. - public_vpn: - type: boolean - x-platforms: - - android - - ios - - browser - description: >- - Request IP address is owned and used by a public VPN service - provider. - auxiliary_mobile: - type: boolean - x-platforms: - - android - - ios - - browser - description: >- - This method applies to mobile devices only. Indicates the result of - additional methods used to detect a VPN in mobile devices. - os_mismatch: - type: boolean - x-platforms: - - browser - description: >- - The browser runs on a different operating system than the operating - system inferred from the request network signature. - relay: - type: boolean - x-platforms: - - android - - ios - - browser - description: > - Request IP address belongs to a relay service provider, indicating - the use of relay services like [Apple Private - relay](https://support.apple.com/en-us/102602) or [Cloudflare - Warp](https://developers.cloudflare.com/warp-client/). - - - * Like VPNs, relay services anonymize the visitor's true IP address. - - * Unlike traditional VPNs, relay services don't let visitors spoof - their location by choosing an exit node in a different country. - - - This field allows you to differentiate VPN users and relay service - users in your fraud prevention logic. HighActivity: type: boolean description: Flag indicating if the request came from a high-activity visitor. @@ -2071,134 +2517,206 @@ components: Baseline measurement of canonical fonts rendered on the device. Numeric width metrics, in CSS pixels, for the canonical fonts collected by the agent. + required: [] properties: default: type: number format: double + examples: + - 147.5625 serif: type: number format: double + examples: + - 147.5625 sans: type: number format: double + examples: + - 144.015625 mono: type: number format: double + examples: + - 133.0625 apple: type: number format: double + examples: + - 147.5625 min: type: number format: double + examples: + - 9.234375 system: type: number format: double + examples: + - 146.09375 Emoji: type: object description: Bounding box metrics describing how the emoji glyph renders. + required: [] properties: font: type: string + examples: + - Times description: Font family reported by the browser when drawing the emoji. width: type: number format: double + examples: + - 1600 height: type: number format: double + examples: + - 18 top: type: number format: double + examples: + - 14 bottom: type: number format: double + examples: + - 32 left: type: number format: double + examples: + - 8 right: type: number format: double + examples: + - 1608 x: type: number format: double + examples: + - 8 'y': type: number format: double + examples: + - 14 Fonts: type: array description: List of fonts detected on the device. items: type: string - example: - - Arial Unicode MS - - Gill Sans - - Helvetica Neue - - Menlo + examples: + - Arial Unicode MS + examples: + - - Arial Unicode MS + - Gill Sans + - Helvetica Neue + - Menlo DeviceMemory: type: integer format: int32 minimum: 0 - example: 8 - description: Rounded amount of RAM (in gigabytes) reported by the browser. + examples: + - 8 + description: Rounded amount of RAM in gigabytes. Timezone: type: string + examples: + - America/Sao_Paulo description: Timezone identifier detected on the client. Canvas: type: object description: Canvas fingerprint containing winding flag plus geometry/text hashes. + required: [] properties: winding: type: boolean geometry: type: string + examples: + - db3c1462576a399a03ae93d0ab9eb5c4 description: Hash of geometry rendering output or `unsupported` markers. text: type: string + examples: + - 70c3d3f7eb4408dc37a6bf8af1c51029 description: Hash of text rendering output or `unsupported` markers. Languages: type: array description: > Navigator languages reported by the agent including fallbacks. Each inner array represents ordered language preferences reported by - different APIs. Available for both browsers and iOS devices + different APIs. Available for browsers, iOS, and Android devices. items: type: array items: type: string + examples: + - en-US WebGlExtensions: type: object description: Hashes of WebGL context attributes and extension support. + required: [] properties: context_attributes: type: string + examples: + - 6b1ed336830d2bc96442a9d76373252a parameters: type: string + examples: + - ea118c48e308bc4b0677118bbb3019ec shader_precisions: type: string + examples: + - f223dfbcd580cf142da156d93790eb83 extensions: type: string + examples: + - 57233d7b10f89fcd1ff95e3837ccd72d extension_parameters: type: string + examples: + - 86a8abb36f0cb30b5946dec0c761d042 unsupported_extensions: type: array items: type: string + examples: + - WEBGL_compressed_texture_s3tc_srgb WebGlBasics: type: object description: Render and vendor strings reported by the WebGL context. + required: [] properties: version: type: string + examples: + - WebGL 1.0 (OpenGL ES 2.0 Chromium) vendor: type: string + examples: + - WebKit vendor_unmasked: type: string + examples: + - Google Inc. (Apple) renderer: type: string + examples: + - WebKit WebGL renderer_unmasked: type: string + examples: + - 'ANGLE (Apple, ANGLE Metal Renderer: Apple M4, Unspecified Version)' shading_language_version: type: string + examples: + - WebGL GLSL ES 1.0 (OpenGL ES GLSL ES 1.0 Chromium) ScreenResolution: type: array description: Current screen resolution. Available for both browsers and iOS devices @@ -2207,9 +2725,12 @@ components: items: type: integer format: int32 + examples: + - 1920 TouchSupport: type: object description: Browser-reported touch capabilities. + required: [] properties: touch_event: type: boolean @@ -2218,12 +2739,18 @@ components: max_touch_points: type: integer format: int64 + examples: + - 0 Oscpu: type: string + examples: + - Windows NT 6.1; Win64; x64 description: Navigator `oscpu` string. Architecture: type: integer format: int32 + examples: + - 127 description: Integer representing the CPU architecture exposed by the browser. CookiesEnabled: type: boolean @@ -2231,9 +2758,13 @@ components: HardwareConcurrency: type: integer format: int32 + examples: + - 10 description: Number of logical CPU cores reported by the browser. DateTimeLocale: type: string + examples: + - en-US description: > Locale derived from the Intl.DateTimeFormat API. Negative values indicate known error states. The negative statuses can be: @@ -2247,13 +2778,19 @@ components: is undefined or null. Vendor: type: string + examples: + - Google Inc. description: Navigator vendor string. ColorDepth: type: integer format: int32 + examples: + - 24 description: Screen color depth in bits. Platform: type: string + examples: + - MacIntel description: Navigator platform string. SessionStorage: type: boolean @@ -2264,6 +2801,8 @@ components: Audio: type: number format: double + examples: + - 124.04347745512496 description: > AudioContext fingerprint or negative status when unavailable. The negative statuses can be: @@ -2283,19 +2822,30 @@ components: properties: name: type: string + examples: + - PDF Viewer description: type: string + examples: + - Portable Document Format mimeTypes: type: array items: type: object + required: [] properties: type: type: string + examples: + - application/pdf suffixes: type: string + examples: + - pdf description: type: string + examples: + - Portable Document Format required: - name IndexedDb: @@ -2303,25 +2853,51 @@ components: description: Whether IndexedDB is available. Math: type: string + examples: + - 5f030fa7d2e5f9f757bfaf81642eb1a6 description: Hash of Math APIs used for entropy collection. DeviceModel: type: string + examples: + - iPhone 15 Pro description: Device model string. Available only for Android and iOS devices. DeviceManufacturer: type: string + examples: + - Apple description: Device manufacturer string. Available only for Android and iOS devices. FontHash: type: string + examples: + - e9f96f6c0e2c0b3a7a8b1d2c3e4f5a6b description: Unique identifier for the user’s installed fonts. TimezoneOffset: type: string + examples: + - '+02:00' description: UTC offset in "±HH:MM" format derived from the detected IANA timezone. + BatteryLevel: + type: integer + format: int32 + minimum: 0 + maximum: 100 + examples: + - 75 + description: >- + Battery charge level as a percentage (0-100). Available only for Android + and iOS devices. + BatteryLowPowerMode: + type: boolean + description: >- + Whether the device's low power mode is enabled. Available only for + Android and iOS devices. RawDeviceAttributes: type: object description: > A curated subset of raw browser/device attributes that the API surface exposes. Each property contains a value or object with the data for the collected signal. + required: [] properties: font_preferences: $ref: '#/components/schemas/FontPreferences' @@ -2381,6 +2957,10 @@ components: $ref: '#/components/schemas/FontHash' timezone_offset: $ref: '#/components/schemas/TimezoneOffset' + battery_level: + $ref: '#/components/schemas/BatteryLevel' + battery_low_power_mode: + $ref: '#/components/schemas/BatteryLowPowerMode' Labels: type: array items: @@ -2390,11 +2970,15 @@ components: properties: label: type: string + examples: + - automation_tool prediction: type: boolean ml_score: type: number format: double + examples: + - 0.95 minimum: 0 maximum: 1 description: > @@ -2501,6 +3085,24 @@ components: - android - ios - browser + device: + $ref: '#/components/schemas/Device' + x-platforms: + - android + - ios + - browser + os: + $ref: '#/components/schemas/Os' + x-platforms: + - android + - ios + - browser + os_version: + $ref: '#/components/schemas/OsVersion' + x-platforms: + - android + - ios + - browser client_referrer: $ref: '#/components/schemas/ClientReferrer' x-platforms: @@ -2514,6 +3116,7 @@ components: x-platforms: - android - ios + - browser bot: $ref: '#/components/schemas/BotResult' x-platforms: @@ -2672,6 +3275,10 @@ components: - android - ios - browser + vpn_ml_score: + $ref: '#/components/schemas/VpnMLScore' + x-platforms: + - browser vpn_origin_timezone: $ref: '#/components/schemas/VpnOriginTimezone' x-platforms: @@ -2715,110 +3322,22 @@ components: - browser - ios - android - ErrorCode: - type: string - enum: - - request_cannot_be_parsed - - request_read_timeout - - secret_api_key_required - - secret_api_key_not_found - - public_api_key_required - - public_api_key_not_found - - subscription_not_active - - wrong_region - - feature_not_enabled - - visitor_not_found - - too_many_requests - - state_not_ready - - failed - - event_not_found - - missing_module - - payload_too_large - - service_unavailable - - ruleset_not_found - description: > - Error code: - - * `request_cannot_be_parsed` - The query parameters or JSON payload - contains some errors - that prevented us from parsing it (wrong type/surpassed limits). - * `request_read_timeout` - The request body could not be read before the - connection timed out. - - * `secret_api_key_required` - secret API key in header is missing or - empty. - - * `secret_api_key_not_found` - No Fingerprint workspace found for - specified secret API key. - - * `public_api_key_required` - public API key in header is missing or - empty. - - * `public_api_key_not_found` - No Fingerprint workspace found for - specified public API key. - - * `subscription_not_active` - Fingerprint workspace is not active. - - * `wrong_region` - Server and workspace region differ. - - * `feature_not_enabled` - This feature (for example, Delete API) is not - enabled for your workspace. - - * `visitor_not_found` - The specified visitor ID was not found. It never - existed or it may have already been deleted. - - * `too_many_requests` - The limit on secret API key requests per second - has been exceeded. - - * `state_not_ready` - The event specified with event ID is - not ready for updates yet. Try again. - This error happens in rare cases when update API is called immediately - after receiving the event ID on the client. In case you need to send - information right away, we recommend using the JS agent API instead. - * `failed` - Internal server error. - - * `event_not_found` - The specified event ID was not found. It never - existed, expired, or it has been deleted. - - * `missing_module` - The request is invalid because it is missing a - required module. - - * `payload_too_large` - The request payload is too large and cannot be - processed. - - * `service_unavailable` - The service was unable to process the request. - - * `ruleset_not_found` - The specified ruleset was not found. It never - existed or it has been deleted. - Error: - type: object - required: - - code - - message - properties: - code: - $ref: '#/components/schemas/ErrorCode' - message: - type: string - ErrorResponse: - type: object - required: - - error - properties: - error: - $ref: '#/components/schemas/Error' EventUpdate: type: object + required: [] properties: linked_id: type: string - description: Linked Id value to assign to the existing event + examples: + - somelinkedId + description: Linked ID value to assign to the existing event tags: type: object description: >- A customer-provided value or an object that was sent with the identification request or updated later. additionalProperties: true + required: [] suspect: type: boolean description: Suspect flag indicating observed suspicious or fraudulent event @@ -2837,12 +3356,17 @@ components: $ref: '#/components/schemas/Event' pagination_key: type: string + examples: + - >- + S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q description: >- Use this value in the `pagination_key` parameter to request the next page of search results. total_hits: type: integer format: int64 + examples: + - 100 description: >- This value represents the total number of events matching the search query, up to the limit provided in the `total_hits` query parameter. @@ -2942,3 +3466,7 @@ components: Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. + SearchEventsSource: + type: string + enum: + - edge diff --git a/test/mocks/events/get_event_200.json b/test/mocks/events/get_event_200.json index ee1978a2..d2922970 100644 --- a/test/mocks/events/get_event_200.json +++ b/test/mocks/events/get_event_200.json @@ -7,6 +7,9 @@ "url": "https://www.example.com/login?hope{this{works[!", "ip_address": "61.127.217.15", "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ....", + "device": "Other", + "os": "Windows", + "os_version": "7", "client_referrer": "https://example.com/blog/my-article", "browser_details": { "browser_name": "Chrome", @@ -115,6 +118,7 @@ "proxy_ml_score": 0.2, "vpn": false, "vpn_confidence": "high", + "vpn_ml_score": 0.2, "vpn_origin_timezone": "Europe/Berlin", "vpn_origin_country": "unknown", "vpn_methods": { @@ -122,7 +126,8 @@ "public_vpn": false, "auxiliary_mobile": false, "os_mismatch": false, - "relay": false + "relay": false, + "ml_prediction": false }, "incognito": false, "tampering": false, diff --git a/test/mocks/events/get_event_200_with_unknown_field.json b/test/mocks/events/get_event_200_with_unknown_field.json new file mode 100644 index 00000000..499e6faa --- /dev/null +++ b/test/mocks/events/get_event_200_with_unknown_field.json @@ -0,0 +1,304 @@ +{ + "linked_id": "somelinkedId", + "tags": {}, + "timestamp": 1708102555327, + "event_id": "1708102555327.NLOjmg", + "incremental_identification_status": "completed", + "url": "https://www.example.com/login?hope{this{works[!", + "ip_address": "61.127.217.15", + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ....", + "device": "Other", + "os": "Windows", + "os_version": "7", + "client_referrer": "https://example.com/blog/my-article", + "browser_details": { + "browser_name": "Chrome", + "browser_major_version": "74", + "browser_full_version": "74.0.3729", + "os": "Windows", + "os_version": "7", + "device": "Other", + "unknown_sub_field": "unknown_sub_field_value" + }, + "identification": { + "visitor_id": "Ibk1527CUFmcnjLwIs4A9", + "confidence": { + "score": 0.97, + "version": "1.1" + }, + "visitor_found": false, + "first_seen_at": 1708102555327, + "last_seen_at": 1708102555327 + }, + "supplementary_id_high_recall": { + "visitor_id": "0jnGMkPYXX37DqVa4ZIO3f_hr", + "visitor_found": true, + "confidence": { + "score": 0, + "version": "Not Supported" + }, + "first_seen_at": 1778086556130, + "last_seen_at": 1778604975494 + }, + "proximity": { + "id": "w1aTfd4MCvl", + "precision_radius": 10, + "confidence": 0.95 + }, + "bot": "not_detected", + "root_apps": false, + "emulator": false, + "ip_info": { + "v4": { + "address": "94.142.239.124", + "geolocation": { + "accuracy_radius": 20, + "latitude": 50.05, + "longitude": 14.4, + "postal_code": "150 00", + "timezone": "Europe/Prague", + "city_name": "Prague", + "country_code": "CZ", + "country_name": "Czechia", + "continent_code": "EU", + "continent_name": "Europe", + "subdivisions": [ + { + "iso_code": "10", + "name": "Hlavni mesto Praha" + } + ] + }, + "asn": "7922", + "asn_name": "COMCAST-7922", + "asn_network": "73.136.0.0/13", + "asn_type": "isp", + "datacenter_result": true, + "datacenter_name": "DediPath" + }, + "v6": { + "address": "2001:db8:3333:4444:5555:6666:7777:8888", + "geolocation": { + "accuracy_radius": 5, + "latitude": 49.982, + "longitude": 36.2566, + "postal_code": "10112", + "timezone": "Europe/Berlin", + "city_name": "Berlin", + "country_code": "DE", + "country_name": "Germany", + "continent_code": "EU", + "continent_name": "Europe", + "subdivisions": [ + { + "iso_code": "BE", + "name": "Land Berlin" + } + ] + }, + "asn": "6805", + "asn_name": "Telefonica Germany", + "asn_network": "2a02:3100::/24", + "asn_type": "isp", + "datacenter_result": false, + "datacenter_name": "" + } + }, + "ip_blocklist": { + "email_spam": false, + "attack_source": false, + "tor_node": false + }, + "proxy": true, + "proxy_confidence": "low", + "proxy_details": { + "proxy_type": "residential", + "last_seen_at": 1708102555327, + "provider": "Massive" + }, + "proxy_ml_score": 0.2, + "vpn": false, + "vpn_confidence": "high", + "vpn_ml_score": 0.2, + "vpn_origin_timezone": "Europe/Berlin", + "vpn_origin_country": "unknown", + "vpn_methods": { + "timezone_mismatch": false, + "public_vpn": false, + "auxiliary_mobile": false, + "os_mismatch": false, + "relay": false, + "ml_prediction": false + }, + "incognito": false, + "tampering": false, + "tampering_confidence": "high", + "tampering_ml_score": 0.3231, + "tampering_details": { + "anomaly_score": 0.1955, + "anti_detect_browser": false + }, + "cloned_app": false, + "factory_reset_timestamp": 0, + "jailbroken": false, + "simulator": false, + "frida": false, + "privacy_settings": false, + "virtual_machine": false, + "virtual_machine_ml_score": 0.2, + "location_spoofing": false, + "velocity": { + "distinct_ip": { + "5_minutes": 1, + "1_hour": 1, + "24_hours": 1 + }, + "distinct_country": { + "5_minutes": 1, + "1_hour": 2, + "24_hours": 2 + }, + "events": { + "5_minutes": 1, + "1_hour": 5, + "24_hours": 5 + }, + "ip_events": { + "5_minutes": 1, + "1_hour": 5, + "24_hours": 5 + }, + "distinct_ip_by_linked_id": { + "5_minutes": 1, + "1_hour": 5, + "24_hours": 5 + }, + "distinct_visitor_id_by_linked_id": { + "5_minutes": 1, + "1_hour": 5, + "24_hours": 5 + } + }, + "developer_tools": false, + "mitm_attack": false, + "sdk": { + "platform": "js", + "version": "3.11.10", + "integrations": [ + { + "name": "fingerprint-pro-react", + "version": "3.11.10", + "subintegration": { + "name": "preact", + "version": "10.21.0" + } + } + ] + }, + "replayed": false, + "high_activity_device": false, + "raw_device_attributes": { + "math": "5f030fa7d2e5f9f757bfaf81642eb1a6", + "vendor": "Google Inc.", + "plugins": [ + { + "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": [] + }, + "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)" + }, + "canvas": { + "geometry": "db3c1462576a399a03ae93d0ab9eb5c4", + "text": "70c3d3f7eb4408dc37a6bf8af1c51029", + "winding": true + }, + "hardware_concurrency": 10, + "languages": [ + [ + "en-US" + ] + ], + "color_depth": 24, + "fonts": [ + "Arial Unicode MS", + "Gill Sans", + "Helvetica Neue", + "Menlo" + ], + "indexed_db": true, + "touch_support": { + "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 + ], + "timezone": "America/Sao_Paulo", + "emoji": { + "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 + }, + "platform": "MacIntel", + "local_storage": true, + "session_storage": true, + "date_time_locale": "en-US", + "audio": 124.04347745512496 + }, + "rare_device": false, + "rare_device_percentile_bucket": " None: event_response = self.api.get_event(event_id) self.assertIsInstance(event_response, Event) + def test_get_event_with_unknown_field(self) -> None: + """Test case for get_event with unknown fields in the response + + Validates that the SDK can deserialize an event response that contains + unknown fields, ignoring them without failing. + """ + mock_pool = MockPoolManager(self) + self.api.api_client.rest_client.pool_manager = mock_pool + event_id = '0000000000000.XXXXX' + mock_pool.expect_request( + 'GET', + TestFingerprintApi.get_event_path(event_id), + fields=[], + headers=self.request_headers, + preload_content=True, + timeout=None, + response_data_file='events/get_event_200_with_unknown_field.json', + ) + + event_response = self.api.get_event(event_id) + self.assertIsInstance(event_response, Event) + self.assertEqual(event_response.identification.visitor_id, 'Ibk1527CUFmcnjLwIs4A9') + def test_get_event_bad_request(self) -> None: """Test case for get_event with 400 Bad Request response""" mock_pool = MockPoolManager(self) @@ -387,6 +411,7 @@ def test_search_events_all_params(self) -> None: 'bot_info_confidence': [BotInfoConfidence.HIGH, BotInfoConfidence.MEDIUM], 'bot_info_provider': ['provider'], 'bot_info_name': ['name1', 'name2'], + 'source': [SearchEventsSource.EDGE], } # URL params use serialized values (enum.value, lowercase bool) in API definition order url_params = { @@ -439,6 +464,7 @@ def test_search_events_all_params(self) -> None: 'tor_node': 'true', 'incremental_identification_status': 'partially_completed', 'simulator': 'true', + 'source': ['edge'], } mock_pool = MockPoolManager(self)