From 6f9cd90fddf46f784c92545fcc4a2a4e21f06c76 Mon Sep 17 00:00:00 2001 From: mcnulty-fp Date: Mon, 29 Jun 2026 14:27:47 +0000 Subject: [PATCH] feat: sync OpenAPI schema to v3.4.0 --- .changeset/edge-response-core-fields.md | 5 + .changeset/edge-response-proxy-vpn-fields.md | 5 + .changeset/edge-tags.md | 5 + .changeset/events-device-os-fields.md | 5 + .changeset/events-search-source-filter.md | 5 + ...w-device-attributes-battery-android-ios.md | 5 + .changeset/sad-ducks-jump.md | 5 + .changeset/salty-views-wish.md | 5 + .changeset/swift-banks-yawn.md | 5 + .changeset/yellow-corners-find.md | 5 + .openapi-generator/FILES | 4 +- .schema-version | 2 +- README.md | 2 +- docs/Event.md | 18 +- docs/EventUpdate.md | 2 +- docs/FingerprintApi.md | 20 +- docs/IPInfoV4.md | 2 +- docs/IPInfoV6.md | 2 +- docs/Integration.md | 4 +- docs/IntegrationSubintegration.md | 4 +- docs/ProxyDetails.md | 2 +- docs/RawDeviceAttributes.md | 6 +- docs/SDK.md | 2 +- ...sEndParameter.md => SearchEventsInline.md} | 6 +- docs/VpnMethods.md | 1 + fingerprint_server_sdk/__init__.py | 5 +- fingerprint_server_sdk/api/fingerprint_api.py | 78 +- fingerprint_server_sdk/api_client.py | 1 + fingerprint_server_sdk/configuration.py | 1 + fingerprint_server_sdk/exceptions.py | 1 + fingerprint_server_sdk/models/__init__.py | 3 +- fingerprint_server_sdk/models/bot_info.py | 1 + .../models/bot_info_category.py | 1 + .../models/bot_info_confidence.py | 1 + .../models/bot_info_identity.py | 1 + fingerprint_server_sdk/models/bot_result.py | 1 + .../models/browser_details.py | 1 + fingerprint_server_sdk/models/canvas.py | 1 + fingerprint_server_sdk/models/emoji.py | 1 + fingerprint_server_sdk/models/error.py | 1 + fingerprint_server_sdk/models/error_code.py | 1 + .../models/error_response.py | 1 + fingerprint_server_sdk/models/event.py | 45 +- .../models/event_rule_action.py | 1 + .../models/event_rule_action_allow.py | 1 + .../models/event_rule_action_block.py | 1 + fingerprint_server_sdk/models/event_search.py | 1 + fingerprint_server_sdk/models/event_update.py | 3 +- .../models/font_preferences.py | 1 + fingerprint_server_sdk/models/geolocation.py | 1 + .../models/geolocation_subdivisions_inner.py | 1 + .../models/identification.py | 1 + .../models/identification_confidence.py | 1 + .../incremental_identification_status.py | 1 + fingerprint_server_sdk/models/integration.py | 6 +- .../models/integration_subintegration.py | 5 +- .../models/ip_block_list.py | 1 + fingerprint_server_sdk/models/ip_info.py | 1 + fingerprint_server_sdk/models/ip_info_v4.py | 7 +- fingerprint_server_sdk/models/ip_info_v6.py | 7 +- fingerprint_server_sdk/models/labels_inner.py | 1 + .../models/plugins_inner.py | 1 + .../models/plugins_inner_mime_types_inner.py | 1 + fingerprint_server_sdk/models/proximity.py | 1 + .../models/proxy_confidence.py | 1 + .../models/proxy_details.py | 9 +- .../models/rare_device_percentile_bucket.py | 1 + .../models/raw_device_attributes.py | 17 +- .../models/request_header_modifications.py | 1 + .../models/rule_action_header_field.py | 1 + .../models/rule_action_type.py | 1 + fingerprint_server_sdk/models/sdk.py | 3 +- .../models/search_events_bot.py | 1 + .../models/search_events_bot_info.py | 1 + .../models/search_events_end_parameter.py | 17 - ...vents_incremental_identification_status.py | 1 + .../models/search_events_inline.py | 35 + ...ch_events_rare_device_percentile_bucket.py | 1 + .../models/search_events_sdk_platform.py | 1 + .../models/search_events_start_parameter.py | 1 + .../models/search_events_vpn_confidence.py | 1 + .../models/supplementary_id_high_recall.py | 1 + .../models/tampering_confidence.py | 1 + .../models/tampering_details.py | 1 + .../models/touch_support.py | 1 + fingerprint_server_sdk/models/velocity.py | 1 + .../models/velocity_data.py | 1 + .../models/vpn_confidence.py | 1 + fingerprint_server_sdk/models/vpn_methods.py | 7 + .../models/web_gl_basics.py | 1 + .../models/web_gl_extensions.py | 1 + fingerprint_server_sdk/rest.py | 1 + pyproject.toml | 2 +- res/fingerprint-server-api.yaml | 1227 +++++++++-------- setup.py | 1 + test/mocks/edge/analyze.json | 31 + test/mocks/edge/analyze_200.json | 50 + test/mocks/edge/analyze_200_non_bot.json | 41 + test/mocks/edge/analyze_200_proxy.json | 46 + test/mocks/errors/400_edge_ip_required.json | 6 + test/mocks/errors/400_edge_unknown_field.json | 6 + .../errors/400_request_read_timeout.json | 6 + test/mocks/errors/413_payload_too_large.json | 6 + test/mocks/events/get_event_200.json | 7 +- .../get_event_200_with_unknown_field.json | 304 ++++ test/mocks/events/get_event_ruleset_200.json | 7 +- .../events/get_event_with_bot_info_200.json | 7 +- .../events/search/get_event_search_200.json | 9 +- 108 files changed, 1519 insertions(+), 663 deletions(-) create mode 100644 .changeset/edge-response-core-fields.md create mode 100644 .changeset/edge-response-proxy-vpn-fields.md create mode 100644 .changeset/edge-tags.md create mode 100644 .changeset/events-device-os-fields.md create mode 100644 .changeset/events-search-source-filter.md create mode 100644 .changeset/raw-device-attributes-battery-android-ios.md create mode 100644 .changeset/sad-ducks-jump.md create mode 100644 .changeset/salty-views-wish.md create mode 100644 .changeset/swift-banks-yawn.md create mode 100644 .changeset/yellow-corners-find.md rename docs/{SearchEventsEndParameter.md => SearchEventsInline.md} (72%) delete mode 100644 fingerprint_server_sdk/models/search_events_end_parameter.py create mode 100644 fingerprint_server_sdk/models/search_events_inline.py create mode 100644 test/mocks/edge/analyze.json create mode 100644 test/mocks/edge/analyze_200.json create mode 100644 test/mocks/edge/analyze_200_non_bot.json create mode 100644 test/mocks/edge/analyze_200_proxy.json create mode 100644 test/mocks/errors/400_edge_ip_required.json create mode 100644 test/mocks/errors/400_edge_unknown_field.json create mode 100644 test/mocks/errors/400_request_read_timeout.json create mode 100644 test/mocks/errors/413_payload_too_large.json create mode 100644 test/mocks/events/get_event_200_with_unknown_field.json diff --git a/.changeset/edge-response-core-fields.md b/.changeset/edge-response-core-fields.md new file mode 100644 index 00000000..f88f0046 --- /dev/null +++ b/.changeset/edge-response-core-fields.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +Add required `event_id` and `timestamp` and optional `linked_id` and `url` to `EdgeResponse`; add `linked_id` to `EdgeRequest` diff --git a/.changeset/edge-response-proxy-vpn-fields.md b/.changeset/edge-response-proxy-vpn-fields.md new file mode 100644 index 00000000..97b5ea3d --- /dev/null +++ b/.changeset/edge-response-proxy-vpn-fields.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +Add `proxy`, `proxy_confidence`, `proxy_details`, `vpn`, `vpn_confidence`, and `vpn_methods` to `EdgeResponse` diff --git a/.changeset/edge-tags.md b/.changeset/edge-tags.md new file mode 100644 index 00000000..73bcfaf0 --- /dev/null +++ b/.changeset/edge-tags.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +Add `tags` to `EdgeResponse` and `EdgeRequest` 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/swift-banks-yawn.md b/.changeset/swift-banks-yawn.md new file mode 100644 index 00000000..745bfe1a --- /dev/null +++ b/.changeset/swift-banks-yawn.md @@ -0,0 +1,5 @@ +--- +'@fingerprint/python-sdk': minor +--- + +Added VPN mlScore and mlPrediction to v3 events and events search \ 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 611a9343..b8165a2f 100644 --- a/.openapi-generator/FILES +++ b/.openapi-generator/FILES @@ -45,8 +45,8 @@ docs/SDK.md docs/SealedResults.md docs/SearchEventsBot.md docs/SearchEventsBotInfo.md -docs/SearchEventsEndParameter.md docs/SearchEventsIncrementalIdentificationStatus.md +docs/SearchEventsInline.md docs/SearchEventsRareDevicePercentileBucket.md docs/SearchEventsSdkPlatform.md docs/SearchEventsStartParameter.md @@ -112,8 +112,8 @@ fingerprint_server_sdk/models/rule_action_type.py fingerprint_server_sdk/models/sdk.py fingerprint_server_sdk/models/search_events_bot.py fingerprint_server_sdk/models/search_events_bot_info.py -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_inline.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_start_parameter.py diff --git a/.schema-version b/.schema-version index 56e50151..871b3b4b 100644 --- a/.schema-version +++ b/.schema-version @@ -1 +1 @@ -v3.3.1 \ No newline at end of file +v3.4.0 \ No newline at end of file diff --git a/README.md b/README.md index 09907545..0581ed33 100644 --- a/README.md +++ b/README.md @@ -368,8 +368,8 @@ Class | Method | HTTP request | Description - [SDK](docs/SDK.md) - [SearchEventsBot](docs/SearchEventsBot.md) - [SearchEventsBotInfo](docs/SearchEventsBotInfo.md) - - [SearchEventsEndParameter](docs/SearchEventsEndParameter.md) - [SearchEventsIncrementalIdentificationStatus](docs/SearchEventsIncrementalIdentificationStatus.md) + - [SearchEventsInline](docs/SearchEventsInline.md) - [SearchEventsRareDevicePercentileBucket](docs/SearchEventsRareDevicePercentileBucket.md) - [SearchEventsSdkPlatform](docs/SearchEventsSdkPlatform.md) - [SearchEventsStartParameter](docs/SearchEventsStartParameter.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..5c4ebbbc 100644 --- a/docs/FingerprintApi.md +++ b/docs/FingerprintApi.md @@ -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 @@ -232,6 +232,7 @@ from fingerprint_server_sdk.models.event_search import EventSearch from fingerprint_server_sdk.models.search_events_bot import SearchEventsBot from fingerprint_server_sdk.models.search_events_bot_info import SearchEventsBotInfo from fingerprint_server_sdk.models.search_events_incremental_identification_status import SearchEventsIncrementalIdentificationStatus +from fingerprint_server_sdk.models.search_events_inline import SearchEventsInline 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_vpn_confidence import SearchEventsVpnConfidence @@ -248,8 +249,8 @@ 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) +limit: int = 56 # 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 = '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=S9rgMMUb4z3X5t5pr_tSgoSZlmyF0O8X7kCV2m981-iY1LmRTjraa1rTk3L-hQExnDWCi0RA-zAIjaVSTNO2AN2eqQWgzT0RjbieMxRfSdkM-HmOhdOgdQvYfPG3vqU1DJKh4Q` (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) 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) @@ -267,7 +268,7 @@ bundle_id: str = 'bundle_id_example' # Filter events by the Bundle ID (iOS) asso 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) 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) +end: SearchEventsStartParameter = fingerprint_server_sdk.SearchEventsStartParameter() # 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) suspect: bool = True # Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. (optional) vpn: bool = True # Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. (optional) @@ -298,10 +299,11 @@ total_hits: int = 56 # When set, the response will include a `total_hits` proper 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[SearchEventsInline] = [fingerprint_server_sdk.SearchEventsInline()] # 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] @@ -339,7 +341,7 @@ Name | Type | Description | Notes **package_name** | **str**| Filter events by the Package Name (Android) associated with the event. | [optional] **origin** | **str**| Filter events by the origin field of the event. This is applicable to web events only (e.g., https://example.com) | [optional] **start** | [**SearchEventsStartParameter**](.md)| Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. | [optional] - **end** | [**SearchEventsEndParameter**](.md)| Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. | [optional] + **end** | [**SearchEventsStartParameter**](.md)| Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. | [optional] **reverse** | **bool**| When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). | [optional] **suspect** | **bool**| Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. | [optional] **vpn** | **bool**| Filter events by VPN Detection result. > Note: When using this parameter, only events with the `vpn` property set to `true` or `false` are returned. Events without a `vpn` Smart Signal result are left out of the response. | [optional] @@ -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[SearchEventsInline]**](SearchEventsInline.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) 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/SearchEventsEndParameter.md b/docs/SearchEventsInline.md similarity index 72% rename from docs/SearchEventsEndParameter.md rename to docs/SearchEventsInline.md index 3a6341b1..149325b6 100644 --- a/docs/SearchEventsEndParameter.md +++ b/docs/SearchEventsInline.md @@ -1,7 +1,7 @@ -# SearchEventsEndParameter -## Type alias +# SearchEventsInline +## Enum -`Union[datetime,int]` +* `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..ced81a4b 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 @@ -84,8 +85,8 @@ 'SDK', 'SearchEventsBot', 'SearchEventsBotInfo', - 'SearchEventsEndParameter', 'SearchEventsIncrementalIdentificationStatus', + 'SearchEventsInline', 'SearchEventsRareDevicePercentileBucket', 'SearchEventsSdkPlatform', 'SearchEventsStartParameter', @@ -172,10 +173,10 @@ from fingerprint_server_sdk.models.sdk import SDK from fingerprint_server_sdk.models.search_events_bot import SearchEventsBot from fingerprint_server_sdk.models.search_events_bot_info import SearchEventsBotInfo -from fingerprint_server_sdk.models.search_events_end_parameter import SearchEventsEndParameter from fingerprint_server_sdk.models.search_events_incremental_identification_status import ( SearchEventsIncrementalIdentificationStatus, ) +from fingerprint_server_sdk.models.search_events_inline import SearchEventsInline from fingerprint_server_sdk.models.search_events_rare_device_percentile_bucket import ( SearchEventsRareDevicePercentileBucket, ) diff --git a/fingerprint_server_sdk/api/fingerprint_api.py b/fingerprint_server_sdk/api/fingerprint_api.py index 317f2475..d8dc24a2 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 @@ -26,10 +27,10 @@ from fingerprint_server_sdk.models.event_update import EventUpdate from fingerprint_server_sdk.models.search_events_bot import SearchEventsBot from fingerprint_server_sdk.models.search_events_bot_info import SearchEventsBotInfo -from fingerprint_server_sdk.models.search_events_end_parameter import SearchEventsEndParameter from fingerprint_server_sdk.models.search_events_incremental_identification_status import ( SearchEventsIncrementalIdentificationStatus, ) +from fingerprint_server_sdk.models.search_events_inline import SearchEventsInline from fingerprint_server_sdk.models.search_events_rare_device_percentile_bucket import ( SearchEventsRareDevicePercentileBucket, ) @@ -43,6 +44,7 @@ list[BotInfoCategory], list[BotInfoIdentity], list[BotInfoConfidence], + list[SearchEventsInline], str, int, float, @@ -569,13 +571,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[ @@ -679,7 +681,7 @@ def search_events( ), ] = None, end: Annotated[ - Optional[SearchEventsEndParameter], + Optional[SearchEventsStartParameter], Field( description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", ), @@ -864,6 +866,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[SearchEventsInline], 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 +885,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 @@ -916,7 +924,7 @@ def search_events( :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. :type start: SearchEventsStartParameter :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. - :type end: SearchEventsEndParameter + :type end: SearchEventsStartParameter :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). :type reverse: bool :param suspect: Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. @@ -977,6 +985,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[SearchEventsInline] :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 +1056,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 +1066,7 @@ def search_events( '200': 'EventSearch', '400': 'ErrorResponse', '403': 'ErrorResponse', + '404': 'ErrorResponse', '500': 'ErrorResponse', } @@ -1071,13 +1083,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[ @@ -1181,7 +1193,7 @@ def search_events_with_http_info( ), ] = None, end: Annotated[ - Optional[SearchEventsEndParameter], + Optional[SearchEventsStartParameter], Field( description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", ), @@ -1366,6 +1378,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[SearchEventsInline], 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 +1397,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 @@ -1418,7 +1436,7 @@ def search_events_with_http_info( :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. :type start: SearchEventsStartParameter :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. - :type end: SearchEventsEndParameter + :type end: SearchEventsStartParameter :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). :type reverse: bool :param suspect: Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. @@ -1479,6 +1497,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[SearchEventsInline] :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 +1568,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 +1578,7 @@ def search_events_with_http_info( '200': 'EventSearch', '400': 'ErrorResponse', '403': 'ErrorResponse', + '404': 'ErrorResponse', '500': 'ErrorResponse', } @@ -1573,13 +1595,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[ @@ -1683,7 +1705,7 @@ def search_events_without_preload_content( ), ] = None, end: Annotated[ - Optional[SearchEventsEndParameter], + Optional[SearchEventsStartParameter], Field( description="Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. ", ), @@ -1868,6 +1890,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[SearchEventsInline], 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 +1909,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 @@ -1920,7 +1948,7 @@ def search_events_without_preload_content( :param start: Include events that happened after this point (with timestamp greater than or equal the provided `start` Unix milliseconds value or RFC3339 timestamp). Defaults to 7 days ago. Setting `start` does not change `end`'s default of `now` — adjust it separately if needed. :type start: SearchEventsStartParameter :param end: Include events that happened before this point (with timestamp less than or equal the provided `end` Unix milliseconds value or RFC3339 timestamp). Defaults to now. Setting `end` does not change `start`'s default of `7 days ago` — adjust it separately if needed. - :type end: SearchEventsEndParameter + :type end: SearchEventsStartParameter :param reverse: When `true`, sort events oldest first (ascending timestamp order). Defaults to `false` (newest first, descending timestamp order). :type reverse: bool :param suspect: Filter events previously tagged as suspicious via the [Update API](https://docs.fingerprint.com/reference/server-api-v4-update-event). > Note: When using this parameter, only events with the `suspect` property explicitly set to `true` or `false` are returned. Events with undefined `suspect` property are left out of the response. @@ -1981,6 +2009,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[SearchEventsInline] :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 +2080,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 +2090,7 @@ def search_events_without_preload_content( '200': 'EventSearch', '400': 'ErrorResponse', '403': 'ErrorResponse', + '404': 'ErrorResponse', '500': 'ErrorResponse', } @@ -2086,7 +2118,7 @@ def _search_events_serialize( package_name: Optional[str], origin: Optional[str], start: Optional[SearchEventsStartParameter], - end: Optional[SearchEventsEndParameter], + end: Optional[SearchEventsStartParameter], reverse: Optional[bool], suspect: Optional[bool], vpn: Optional[bool], @@ -2117,6 +2149,7 @@ def _search_events_serialize( tor_node: Optional[bool], incremental_identification_status: Optional[SearchEventsIncrementalIdentificationStatus], simulator: Optional[bool], + source: Optional[list[SearchEventsInline]], _request_auth: Optional[dict[StrictStr, Any]], _content_type: Optional[StrictStr], _headers: Optional[dict[StrictStr, Any]], @@ -2129,6 +2162,7 @@ def _search_events_serialize( 'bot_info_provider': 'multi', 'bot_info_name': 'multi', 'environment': 'multi', + 'source': 'multi', } _path_params: dict[str, str] = {} @@ -2353,6 +2387,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..9f02d4d2 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 @@ -59,10 +60,10 @@ from fingerprint_server_sdk.models.sdk import SDK from fingerprint_server_sdk.models.search_events_bot import SearchEventsBot from fingerprint_server_sdk.models.search_events_bot_info import SearchEventsBotInfo -from fingerprint_server_sdk.models.search_events_end_parameter import SearchEventsEndParameter from fingerprint_server_sdk.models.search_events_incremental_identification_status import ( SearchEventsIncrementalIdentificationStatus, ) +from fingerprint_server_sdk.models.search_events_inline import SearchEventsInline from fingerprint_server_sdk.models.search_events_rare_device_percentile_bucket import ( SearchEventsRareDevicePercentileBucket, ) diff --git a/fingerprint_server_sdk/models/bot_info.py b/fingerprint_server_sdk/models/bot_info.py index 5b706334..5ace35bb 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 048bff29..54eb2f16 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 84668e2e..640f032b 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 38f88951..75d86320 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 50e5abc3..f7ade056 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 f39223c8..978a2619 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 40a52686..a5822c07 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 dcb6d980..ffe75718 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 f0af2611..f6c3616d 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 2885ddf5..313d2bad 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, @@ -42,8 +43,10 @@ class ProxyDetails(BaseModel): @field_validator('proxy_type') def proxy_type_validate_enum(cls, value: Any) -> Any: """Validates the enum""" - if value not in set(['residential', 'data_center']): - raise ValueError("must be one of enum values ('residential', 'data_center')") + if value not in set(['residential', 'data_center', 'unknown']): + raise ValueError( + "must be one of enum values ('residential', 'data_center', 'unknown')" + ) return value model_config = ConfigDict( diff --git a/fingerprint_server_sdk/models/rare_device_percentile_bucket.py b/fingerprint_server_sdk/models/rare_device_percentile_bucket.py index 1f186a13..70e05478 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 3dc0f091..d6be25cf 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 48374082..0b15947b 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 24ede8ea..f1eca691 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 97cddc4b..1f0b5523 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 deleted file mode 100644 index f6e07dd2..00000000 --- a/fingerprint_server_sdk/models/search_events_end_parameter.py +++ /dev/null @@ -1,17 +0,0 @@ -""" -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 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 typing import Union - -from pydantic import AwareDatetime - -SearchEventsEndParameter = Union[int, AwareDatetime] 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 f58c5f7a..233a331e 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_inline.py b/fingerprint_server_sdk/models/search_events_inline.py new file mode 100644 index 00000000..b846d21b --- /dev/null +++ b/fingerprint_server_sdk/models/search_events_inline.py @@ -0,0 +1,35 @@ +""" +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 SearchEventsInline(str, Enum): + """ + SearchEventsInline + """ + + """ + allowed enum values + """ + EDGE = 'edge' + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SearchEventsInline from a JSON string""" + return cls(json.loads(json_str)) 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 5984862e..ee22ac0e 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 75e5c0fd..a2e1e8dc 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_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 0837b41c..87d39ac0 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 ab829a91..a534c0a6 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 a8a5bae9..41ff65b9 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 d6e57be7..c5c9de99 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..d7c7974c 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 @@ -246,13 +249,12 @@ paths: format: int32 minimum: 1 maximum: 100 - default: 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: @@ -274,7 +276,8 @@ 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: @@ -475,10 +478,8 @@ paths: oneOf: - type: integer format: int64 - example: 1767225600000 - type: string format: date-time - 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 +492,8 @@ paths: oneOf: - type: integer format: int64 - example: 1769903999000 - type: string format: date-time - 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 @@ -844,6 +843,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/SearchEventsInline' + 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 +882,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: @@ -990,138 +1015,555 @@ components: Add your Secret API Key to the Authorization header using the standard Bearer format: `Authorization: Bearer ` schemas: + LinkedId: + type: string + 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 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: + 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: + 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. + provider_url: + type: string + 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. + 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 + 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 - enum: - - js - - android - - ios - - unknown - description: Platform of the SDK used for the identification request. - version: + timezone: type: string - description: > - Version string of the SDK used for the identification request. For - example: `"3.12.1"` - integrations: + 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: - $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 + name: + type: string + 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 + geolocation: + $ref: '#/components/schemas/Geolocation' + asn: type: string - Identification: + asn_name: + type: string + asn_network: + type: string + asn_type: + type: string + datacenter_result: + type: boolean + description: When true, the request originated from a datacenter. + datacenter_name: + type: string + 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 + geolocation: + $ref: '#/components/schemas/Geolocation' + asn: + type: string + asn_name: + type: string + asn_network: + type: string + asn_type: + type: string + datacenter_result: + type: boolean + description: When true, the request originated from a datacenter. + datacenter_name: + type: string + 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 + 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 + + 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 + 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 + 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 + description: The name of the specific integration. + version: + type: string + description: The version of the specific integration. + subintegration: + type: object + required: [] + properties: + name: + type: string + description: The name of the specific subintegration. + version: + type: string + 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 + 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 + 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 + 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 + Identification: + type: object + required: + - visitor_id + - visitor_found + properties: + visitor_id: + 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 description: > Unix epoch time milliseconds timestamp indicating the time at which this visitor ID was first seen. example: `1758069706642` - @@ -1173,43 +1615,44 @@ components: 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 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 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 description: IP address of the requesting browser or bot. UserAgent: + type: string + description: User Agent of the client. + Device: + type: string + description: > + Device model or family extracted from the user agent string. On web, + this field is also present inside `browser_details`. + Os: + type: string + description: > + Operating system family extracted from the user agent string. On web, + this field is also present inside `browser_details`. + OsVersion: type: string 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 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: @@ -1286,90 +1729,6 @@ components: type: string 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: > @@ -1399,182 +1758,35 @@ components: type: integer format: int64 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 @@ -1660,6 +1872,7 @@ components: description: >- The set of header modifications to apply, in the following order: remove, set, append. + required: [] properties: remove: type: array @@ -1818,6 +2031,7 @@ components: anti_detect_browser fields conveniently captures that fact) TamperingDetails: type: object + required: [] properties: anomaly_score: type: number @@ -1920,6 +2134,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' @@ -1953,20 +2168,18 @@ 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 + 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 description: | @@ -1976,64 +2189,6 @@ components: 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,6 +2226,7 @@ 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 @@ -2096,6 +2252,7 @@ components: Emoji: type: object description: Bounding box metrics describing how the emoji glyph renders. + required: [] properties: font: type: string @@ -2129,23 +2286,18 @@ components: description: List of fonts detected on the device. items: type: string - example: - - 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. + description: Rounded amount of RAM in gigabytes. Timezone: type: string 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 @@ -2160,7 +2312,7 @@ components: 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: @@ -2168,6 +2320,7 @@ components: WebGlExtensions: type: object description: Hashes of WebGL context attributes and extension support. + required: [] properties: context_attributes: type: string @@ -2186,6 +2339,7 @@ components: WebGlBasics: type: object description: Render and vendor strings reported by the WebGL context. + required: [] properties: version: type: string @@ -2210,6 +2364,7 @@ components: TouchSupport: type: object description: Browser-reported touch capabilities. + required: [] properties: touch_event: type: boolean @@ -2289,6 +2444,7 @@ components: type: array items: type: object + required: [] properties: type: type: string @@ -2316,12 +2472,26 @@ components: TimezoneOffset: type: string description: UTC offset in "±HH:MM" format derived from the detected IANA timezone. + BatteryLevel: + type: integer + format: int32 + minimum: 0 + maximum: 100 + 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 +2551,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: @@ -2501,6 +2675,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 +2706,7 @@ components: x-platforms: - android - ios + - browser bot: $ref: '#/components/schemas/BotResult' x-platforms: @@ -2672,6 +2865,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 +2912,20 @@ 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 + 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 @@ -2942,3 +3049,7 @@ components: Filter events by their incremental identification status (`incremental_identification_status` property). Non incremental identification events are left out of the response. + SearchEventsInline: + type: string + enum: + - edge diff --git a/setup.py b/setup.py index 72e3a147..d96131f2 100644 --- a/setup.py +++ b/setup.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/test/mocks/edge/analyze.json b/test/mocks/edge/analyze.json new file mode 100644 index 00000000..11292630 --- /dev/null +++ b/test/mocks/edge/analyze.json @@ -0,0 +1,31 @@ +{ + "headers": [ + { + "name": "user-agent", + "value": "Mozilla/5.0 (Local Test Bot)" + }, + { + "name": "host", + "value": "example.com" + }, + { + "name": "user-agent", + "value": "one.example.com" + }, + { + "name": "Signature-Agent", + "value": "\"https://fingerprint.com\"" + }, + { + "name": "Signature-Input", + "value": "binding0=(\"@authority\" \"signature-agent\");created=1769022347;keyid=\"KYG4GtgVVPWw3r1AXgM6fYFw5kAvRZiJVxZY1Rsgc3Q\";alg=\"ed25519\";expires=1769022407;tag=\"web-bot-auth\"" + }, + { + "name": "Signature", + "value": "binding0=:DLRNY0BDeHGMovOo6flKtY70U+cHa3cKDiEdLm92NGpzR0uj4m7yTHtIZnXLlHFiKjUAUBJIgbcv0HuSt8KaBg==:" + } + ], + "method": "POST", + "url": "https://example.com/login?foo=bar", + "ipv4_address": "34.162.244.71" +} \ No newline at end of file diff --git a/test/mocks/edge/analyze_200.json b/test/mocks/edge/analyze_200.json new file mode 100644 index 00000000..f0a71647 --- /dev/null +++ b/test/mocks/edge/analyze_200.json @@ -0,0 +1,50 @@ +{ + "event_id": "1758130560902.8tRtrH", + "timestamp": 1758130560902, + "url": "https://example.com/login?foo=bar", + "bot_info": { + "category": "ai_agent", + "provider": "Fingerprint", + "provider_url": "https://fingerprint.com", + "name": "Fingerprint Agent", + "identity": "signed", + "confidence": "high" + }, + "ip_info": { + "v4": { + "address": "34.162.244.71", + "geolocation": { + "accuracy_radius": 20, + "latitude": 39.96118, + "longitude": -82.99879, + "postal_code": "43215", + "timezone": "America/New_York", + "city_name": "Columbus", + "country_code": "US", + "country_name": "United States", + "continent_code": "NA", + "continent_name": "North America", + "subdivisions": [ + { + "iso_code": "OH", + "name": "Ohio" + } + ] + }, + "asn": "396982", + "asn_name": "Google LLC", + "asn_network": "34.160.0.0/12", + "asn_type": "hosting", + "datacenter_result": true, + "datacenter_name": "Google Cloud" + } + }, + "proxy": false, + "proxy_confidence": "high", + "vpn": true, + "vpn_confidence": "high", + "vpn_methods": { + "public_vpn": false, + "relay": true + } +} \ No newline at end of file diff --git a/test/mocks/edge/analyze_200_non_bot.json b/test/mocks/edge/analyze_200_non_bot.json new file mode 100644 index 00000000..920b1422 --- /dev/null +++ b/test/mocks/edge/analyze_200_non_bot.json @@ -0,0 +1,41 @@ +{ + "event_id": "1758130561034.Kp2Wqz", + "timestamp": 1758130561034, + "url": "https://example.com/login?foo=bar", + "ip_info": { + "v4": { + "address": "173.56.25.103", + "geolocation": { + "accuracy_radius": 20, + "latitude": 40.71427, + "longitude": -74.00597, + "postal_code": "10001", + "timezone": "America/New_York", + "city_name": "New York City", + "country_code": "US", + "country_name": "United States", + "continent_code": "NA", + "continent_name": "North America", + "subdivisions": [ + { + "iso_code": "NY", + "name": "New York" + } + ] + }, + "asn": "701", + "asn_name": "Verizon Business", + "asn_network": "173.56.0.0/16", + "asn_type": "isp", + "datacenter_result": false + } + }, + "proxy": false, + "proxy_confidence": "high", + "vpn": false, + "vpn_confidence": "medium", + "vpn_methods": { + "public_vpn": false, + "relay": false + } +} diff --git a/test/mocks/edge/analyze_200_proxy.json b/test/mocks/edge/analyze_200_proxy.json new file mode 100644 index 00000000..043e61b1 --- /dev/null +++ b/test/mocks/edge/analyze_200_proxy.json @@ -0,0 +1,46 @@ +{ + "event_id": "1758130561187.Rm9Vxd", + "timestamp": 1758130561187, + "url": "https://example.com/login?foo=bar", + "ip_info": { + "v4": { + "address": "173.56.25.103", + "geolocation": { + "accuracy_radius": 20, + "latitude": 40.71427, + "longitude": -74.00597, + "postal_code": "10001", + "timezone": "America/New_York", + "city_name": "New York City", + "country_code": "US", + "country_name": "United States", + "continent_code": "NA", + "continent_name": "North America", + "subdivisions": [ + { + "iso_code": "NY", + "name": "New York" + } + ] + }, + "asn": "701", + "asn_name": "Verizon Business", + "asn_network": "173.56.0.0/16", + "asn_type": "isp", + "datacenter_result": false + } + }, + "proxy": true, + "proxy_confidence": "high", + "proxy_details": { + "proxy_type": "data_center", + "last_seen_at": 1716057600000, + "provider": "DataImpulse" + }, + "vpn": false, + "vpn_confidence": "medium", + "vpn_methods": { + "public_vpn": false, + "relay": false + } +} diff --git a/test/mocks/errors/400_edge_ip_required.json b/test/mocks/errors/400_edge_ip_required.json new file mode 100644 index 00000000..8f055f8f --- /dev/null +++ b/test/mocks/errors/400_edge_ip_required.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "request_cannot_be_parsed", + "message": "at least one of ipv4_address or ipv6_address is required" + } +} diff --git a/test/mocks/errors/400_edge_unknown_field.json b/test/mocks/errors/400_edge_unknown_field.json new file mode 100644 index 00000000..c0a153ef --- /dev/null +++ b/test/mocks/errors/400_edge_unknown_field.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "request_cannot_be_parsed", + "message": "request body contains an unknown field \"unknown\"" + } +} \ No newline at end of file diff --git a/test/mocks/errors/400_request_read_timeout.json b/test/mocks/errors/400_request_read_timeout.json new file mode 100644 index 00000000..89daaca8 --- /dev/null +++ b/test/mocks/errors/400_request_read_timeout.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "request_read_timeout", + "message": "request read timeout" + } +} \ No newline at end of file diff --git a/test/mocks/errors/413_payload_too_large.json b/test/mocks/errors/413_payload_too_large.json new file mode 100644 index 00000000..96fec77e --- /dev/null +++ b/test/mocks/errors/413_payload_too_large.json @@ -0,0 +1,6 @@ +{ + "error": { + "code": "request_cannot_be_parsed", + "message": "payload too large" + } +} 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": "