From 4e5fc79eebc0d67bd5b451636e60c461f08dd7ee Mon Sep 17 00:00:00 2001 From: Ilya Taratukhin Date: Wed, 10 May 2023 20:32:44 +0200 Subject: [PATCH] feat: introduce additional signals --- README.md | 28 +- docs/BotdDetectionResult.md | 1 + docs/BotdResult.md | 2 + docs/IpBlockListResult.md | 10 + docs/IpBlockListResultDetails.md | 10 + docs/IpInfoResult.md | 10 + docs/IpInfoResultV4.md | 10 + docs/IpInfoResultV6.md | 10 + docs/{BotdError.md => ProductError.md} | 2 +- docs/ProductsResponse.md | 9 + docs/ProductsResponseBotd.md | 2 +- docs/SignalResponseEmulator.md | 10 + docs/SignalResponseEmulatorData.md | 9 + docs/SignalResponseIncognito.md | 10 + docs/SignalResponseIncognitoData.md | 9 + docs/SignalResponseIpBlocklist.md | 10 + docs/SignalResponseIpInfo.md | 10 + docs/SignalResponseProxy.md | 10 + docs/SignalResponseProxyData.md | 9 + docs/SignalResponseRootApps.md | 10 + docs/SignalResponseRootAppsData.md | 9 + docs/SignalResponseTampering.md | 10 + docs/SignalResponseTor.md | 10 + docs/SignalResponseTorData.md | 9 + docs/SignalResponseVpn.md | 10 + docs/TamperingResult.md | 10 + docs/VpnResult.md | 10 + docs/VpnResultMethods.md | 10 + docs/WebhookSignalResponseEmulator.md | 9 + docs/WebhookSignalResponseProxy.md | 9 + docs/WebhookSignalResponseRootApps.md | 9 + docs/WebhookSignalResponseTor.md | 9 + docs/WebhookVisit.md | 12 +- fingerprint_pro_server_api_sdk/__init__.py | 28 +- .../models/__init__.py | 28 +- .../models/botd_detection_result.py | 32 +- .../models/botd_result.py | 54 +- .../models/ip_block_list_result.py | 141 +++++ .../models/ip_block_list_result_details.py | 143 ++++++ .../models/ip_info_result.py | 139 +++++ .../models/ip_info_result_v4.py | 139 +++++ .../models/ip_info_result_v6.py | 139 +++++ .../{botd_error.py => product_error.py} | 26 +- .../models/products_response.py | 240 ++++++++- .../models/products_response_botd.py | 6 +- .../models/signal_response_emulator.py | 139 +++++ .../models/signal_response_emulator_data.py | 115 +++++ .../models/signal_response_incognito.py | 139 +++++ .../models/signal_response_incognito_data.py | 115 +++++ .../models/signal_response_ip_blocklist.py | 139 +++++ .../models/signal_response_ip_info.py | 139 +++++ .../models/signal_response_proxy.py | 139 +++++ .../models/signal_response_proxy_data.py | 115 +++++ .../models/signal_response_root_apps.py | 139 +++++ .../models/signal_response_root_apps_data.py | 115 +++++ .../models/signal_response_tampering.py | 139 +++++ .../models/signal_response_tor.py | 139 +++++ .../models/signal_response_tor_data.py | 115 +++++ .../models/signal_response_vpn.py | 139 +++++ .../models/tampering_result.py | 143 ++++++ .../models/vpn_result.py | 141 +++++ .../models/vpn_result_methods.py | 143 ++++++ .../webhook_signal_response_emulator.py | 115 +++++ .../models/webhook_signal_response_proxy.py | 115 +++++ .../webhook_signal_response_root_apps.py | 115 +++++ .../models/webhook_signal_response_tor.py | 115 +++++ .../models/webhook_visit.py | 320 ++++++++++-- res/fingerprint-server-api.yaml | 485 ++++++++++++++++-- sync.sh | 2 + test/mocks/get_event.json | 83 ++- test/mocks/get_event_all_errors.json | 70 +++ test/mocks/get_event_extra_fields.json | 86 ++++ test/mocks/webhook.json | 64 +++ test/test_fingerprint_api.py | 8 + 74 files changed, 5154 insertions(+), 99 deletions(-) create mode 100644 docs/IpBlockListResult.md create mode 100644 docs/IpBlockListResultDetails.md create mode 100644 docs/IpInfoResult.md create mode 100644 docs/IpInfoResultV4.md create mode 100644 docs/IpInfoResultV6.md rename docs/{BotdError.md => ProductError.md} (96%) create mode 100644 docs/SignalResponseEmulator.md create mode 100644 docs/SignalResponseEmulatorData.md create mode 100644 docs/SignalResponseIncognito.md create mode 100644 docs/SignalResponseIncognitoData.md create mode 100644 docs/SignalResponseIpBlocklist.md create mode 100644 docs/SignalResponseIpInfo.md create mode 100644 docs/SignalResponseProxy.md create mode 100644 docs/SignalResponseProxyData.md create mode 100644 docs/SignalResponseRootApps.md create mode 100644 docs/SignalResponseRootAppsData.md create mode 100644 docs/SignalResponseTampering.md create mode 100644 docs/SignalResponseTor.md create mode 100644 docs/SignalResponseTorData.md create mode 100644 docs/SignalResponseVpn.md create mode 100644 docs/TamperingResult.md create mode 100644 docs/VpnResult.md create mode 100644 docs/VpnResultMethods.md create mode 100644 docs/WebhookSignalResponseEmulator.md create mode 100644 docs/WebhookSignalResponseProxy.md create mode 100644 docs/WebhookSignalResponseRootApps.md create mode 100644 docs/WebhookSignalResponseTor.md create mode 100644 fingerprint_pro_server_api_sdk/models/ip_block_list_result.py create mode 100644 fingerprint_pro_server_api_sdk/models/ip_block_list_result_details.py create mode 100644 fingerprint_pro_server_api_sdk/models/ip_info_result.py create mode 100644 fingerprint_pro_server_api_sdk/models/ip_info_result_v4.py create mode 100644 fingerprint_pro_server_api_sdk/models/ip_info_result_v6.py rename fingerprint_pro_server_api_sdk/models/{botd_error.py => product_error.py} (84%) create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_emulator.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_emulator_data.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_incognito.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_incognito_data.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_ip_blocklist.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_ip_info.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_proxy.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_proxy_data.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_root_apps.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_root_apps_data.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_tampering.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_tor.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_tor_data.py create mode 100644 fingerprint_pro_server_api_sdk/models/signal_response_vpn.py create mode 100644 fingerprint_pro_server_api_sdk/models/tampering_result.py create mode 100644 fingerprint_pro_server_api_sdk/models/vpn_result.py create mode 100644 fingerprint_pro_server_api_sdk/models/vpn_result_methods.py create mode 100644 fingerprint_pro_server_api_sdk/models/webhook_signal_response_emulator.py create mode 100644 fingerprint_pro_server_api_sdk/models/webhook_signal_response_proxy.py create mode 100644 fingerprint_pro_server_api_sdk/models/webhook_signal_response_root_apps.py create mode 100644 fingerprint_pro_server_api_sdk/models/webhook_signal_response_tor.py create mode 100644 test/mocks/get_event_all_errors.json create mode 100644 test/mocks/get_event_extra_fields.json diff --git a/README.md b/README.md index f1c52022..b1b23e02 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,6 @@ Class | Method | HTTP request | Description ## Documentation For Models - [BotdDetectionResult](docs/BotdDetectionResult.md) - - [BotdError](docs/BotdError.md) - [BotdResult](docs/BotdResult.md) - [BrowserDetails](docs/BrowserDetails.md) - [Confidence](docs/Confidence.md) @@ -166,8 +165,14 @@ Class | Method | HTTP request | Description - [IPLocation](docs/IPLocation.md) - [IPLocationCity](docs/IPLocationCity.md) - [IdentificationError](docs/IdentificationError.md) + - [IpBlockListResult](docs/IpBlockListResult.md) + - [IpBlockListResultDetails](docs/IpBlockListResultDetails.md) + - [IpInfoResult](docs/IpInfoResult.md) + - [IpInfoResultV4](docs/IpInfoResultV4.md) + - [IpInfoResultV6](docs/IpInfoResultV6.md) - [Location](docs/Location.md) - [ManyRequestsResponse](docs/ManyRequestsResponse.md) + - [ProductError](docs/ProductError.md) - [ProductsResponse](docs/ProductsResponse.md) - [ProductsResponseBotd](docs/ProductsResponseBotd.md) - [ProductsResponseIdentification](docs/ProductsResponseIdentification.md) @@ -175,8 +180,29 @@ Class | Method | HTTP request | Description - [Response](docs/Response.md) - [ResponseVisits](docs/ResponseVisits.md) - [SeenAt](docs/SeenAt.md) + - [SignalResponseEmulator](docs/SignalResponseEmulator.md) + - [SignalResponseEmulatorData](docs/SignalResponseEmulatorData.md) + - [SignalResponseIncognito](docs/SignalResponseIncognito.md) + - [SignalResponseIncognitoData](docs/SignalResponseIncognitoData.md) + - [SignalResponseIpBlocklist](docs/SignalResponseIpBlocklist.md) + - [SignalResponseIpInfo](docs/SignalResponseIpInfo.md) + - [SignalResponseProxy](docs/SignalResponseProxy.md) + - [SignalResponseProxyData](docs/SignalResponseProxyData.md) + - [SignalResponseRootApps](docs/SignalResponseRootApps.md) + - [SignalResponseRootAppsData](docs/SignalResponseRootAppsData.md) + - [SignalResponseTampering](docs/SignalResponseTampering.md) + - [SignalResponseTor](docs/SignalResponseTor.md) + - [SignalResponseTorData](docs/SignalResponseTorData.md) + - [SignalResponseVpn](docs/SignalResponseVpn.md) - [Subdivision](docs/Subdivision.md) + - [TamperingResult](docs/TamperingResult.md) - [Visit](docs/Visit.md) + - [VpnResult](docs/VpnResult.md) + - [VpnResultMethods](docs/VpnResultMethods.md) + - [WebhookSignalResponseEmulator](docs/WebhookSignalResponseEmulator.md) + - [WebhookSignalResponseProxy](docs/WebhookSignalResponseProxy.md) + - [WebhookSignalResponseRootApps](docs/WebhookSignalResponseRootApps.md) + - [WebhookSignalResponseTor](docs/WebhookSignalResponseTor.md) - [WebhookVisit](docs/WebhookVisit.md) ## Documentation For Authorization diff --git a/docs/BotdDetectionResult.md b/docs/BotdDetectionResult.md index 21893c4f..59ab10f1 100644 --- a/docs/BotdDetectionResult.md +++ b/docs/BotdDetectionResult.md @@ -4,6 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **result** | **str** | Bot detection result: * `notDetected` - the visitor is not a bot * `good` - good bot detected, such as Google bot, Baidu Spider, AlexaBot and so on * `bad` - bad bot detected, such as Selenium, Puppeteer, Playwright, headless browsers, and so on | +**type** | **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/BotdResult.md b/docs/BotdResult.md index 0adca28a..b2a027cc 100644 --- a/docs/BotdResult.md +++ b/docs/BotdResult.md @@ -6,6 +6,8 @@ Name | Type | Description | Notes **ip** | **str** | IP address of the requesting browser or bot. | **time** | **datetime** | Time in UTC when the request from the JS agent was made. We recommend to treat requests that are older than 2 minutes as malicious. Otherwise, request replay attacks are possible | **url** | **str** | Page URL from which identification request was sent. | +**user_agent** | **str** | | [optional] +**request_id** | **str** | | [optional] **bot** | [**BotdDetectionResult**](BotdDetectionResult.md) | | [[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/IpBlockListResult.md b/docs/IpBlockListResult.md new file mode 100644 index 00000000..8dcf9b0c --- /dev/null +++ b/docs/IpBlockListResult.md @@ -0,0 +1,10 @@ +# IpBlockListResult + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | `true` if request IP address is part of any database that we use to search for known malicious actors, `false` otherwise. | [optional] +**details** | [**IpBlockListResultDetails**](IpBlockListResultDetails.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/IpBlockListResultDetails.md b/docs/IpBlockListResultDetails.md new file mode 100644 index 00000000..41c58a42 --- /dev/null +++ b/docs/IpBlockListResultDetails.md @@ -0,0 +1,10 @@ +# IpBlockListResultDetails + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**email_spam** | **bool** | IP address was part of a known email spam attack (SMTP). | [optional] +**attack_source** | **bool** | IP address was part of a known network attack (SSH/HTTPS). | [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/IpInfoResult.md b/docs/IpInfoResult.md new file mode 100644 index 00000000..3a80723a --- /dev/null +++ b/docs/IpInfoResult.md @@ -0,0 +1,10 @@ +# IpInfoResult + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**v4** | [**IpInfoResultV4**](IpInfoResultV4.md) | | [optional] +**v6** | [**IpInfoResultV6**](IpInfoResultV6.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/IpInfoResultV4.md b/docs/IpInfoResultV4.md new file mode 100644 index 00000000..6394a14b --- /dev/null +++ b/docs/IpInfoResultV4.md @@ -0,0 +1,10 @@ +# IpInfoResultV4 + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**address** | **str** | | [optional] +**geolocation** | [**IPLocation**](IPLocation.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/IpInfoResultV6.md b/docs/IpInfoResultV6.md new file mode 100644 index 00000000..82ebbcf7 --- /dev/null +++ b/docs/IpInfoResultV6.md @@ -0,0 +1,10 @@ +# IpInfoResultV6 + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**address** | **str** | | [optional] +**geolocation** | [**IPLocation**](IPLocation.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/BotdError.md b/docs/ProductError.md similarity index 96% rename from docs/BotdError.md rename to docs/ProductError.md index 84ae9ee3..665121da 100644 --- a/docs/BotdError.md +++ b/docs/ProductError.md @@ -1,4 +1,4 @@ -# BotdError +# ProductError ## Properties Name | Type | Description | Notes diff --git a/docs/ProductsResponse.md b/docs/ProductsResponse.md index be3e44c7..f01ee3a7 100644 --- a/docs/ProductsResponse.md +++ b/docs/ProductsResponse.md @@ -5,6 +5,15 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **identification** | [**ProductsResponseIdentification**](ProductsResponseIdentification.md) | | [optional] **botd** | [**ProductsResponseBotd**](ProductsResponseBotd.md) | | [optional] +**ip_info** | [**SignalResponseIpInfo**](SignalResponseIpInfo.md) | | [optional] +**incognito** | [**SignalResponseIncognito**](SignalResponseIncognito.md) | | [optional] +**root_apps** | [**SignalResponseRootApps**](SignalResponseRootApps.md) | | [optional] +**emulator** | [**SignalResponseEmulator**](SignalResponseEmulator.md) | | [optional] +**ip_blocklist** | [**SignalResponseIpBlocklist**](SignalResponseIpBlocklist.md) | | [optional] +**tor** | [**SignalResponseTor**](SignalResponseTor.md) | | [optional] +**vpn** | [**SignalResponseVpn**](SignalResponseVpn.md) | | [optional] +**proxy** | [**SignalResponseProxy**](SignalResponseProxy.md) | | [optional] +**tampering** | [**SignalResponseTampering**](SignalResponseTampering.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/ProductsResponseBotd.md b/docs/ProductsResponseBotd.md index bb18a440..9c9f86f9 100644 --- a/docs/ProductsResponseBotd.md +++ b/docs/ProductsResponseBotd.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **data** | [**BotdResult**](BotdResult.md) | | [optional] -**error** | [**BotdError**](BotdError.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseEmulator.md b/docs/SignalResponseEmulator.md new file mode 100644 index 00000000..2a58815e --- /dev/null +++ b/docs/SignalResponseEmulator.md @@ -0,0 +1,10 @@ +# SignalResponseEmulator + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**SignalResponseEmulatorData**](SignalResponseEmulatorData.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseEmulatorData.md b/docs/SignalResponseEmulatorData.md new file mode 100644 index 00000000..363425eb --- /dev/null +++ b/docs/SignalResponseEmulatorData.md @@ -0,0 +1,9 @@ +# SignalResponseEmulatorData + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected Available only for events from Android client. The field will not be present for a browser or iOS event. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/SignalResponseIncognito.md b/docs/SignalResponseIncognito.md new file mode 100644 index 00000000..64f4d903 --- /dev/null +++ b/docs/SignalResponseIncognito.md @@ -0,0 +1,10 @@ +# SignalResponseIncognito + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**SignalResponseIncognitoData**](SignalResponseIncognitoData.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseIncognitoData.md b/docs/SignalResponseIncognitoData.md new file mode 100644 index 00000000..51827bd8 --- /dev/null +++ b/docs/SignalResponseIncognitoData.md @@ -0,0 +1,9 @@ +# SignalResponseIncognitoData + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | `true` if we detected incognito mode used in the browser, `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/docs/SignalResponseIpBlocklist.md b/docs/SignalResponseIpBlocklist.md new file mode 100644 index 00000000..980d4ca4 --- /dev/null +++ b/docs/SignalResponseIpBlocklist.md @@ -0,0 +1,10 @@ +# SignalResponseIpBlocklist + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**IpBlockListResult**](IpBlockListResult.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseIpInfo.md b/docs/SignalResponseIpInfo.md new file mode 100644 index 00000000..b95b3dbe --- /dev/null +++ b/docs/SignalResponseIpInfo.md @@ -0,0 +1,10 @@ +# SignalResponseIpInfo + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**IpInfoResult**](IpInfoResult.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseProxy.md b/docs/SignalResponseProxy.md new file mode 100644 index 00000000..991b1758 --- /dev/null +++ b/docs/SignalResponseProxy.md @@ -0,0 +1,10 @@ +# SignalResponseProxy + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**SignalResponseProxyData**](SignalResponseProxyData.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseProxyData.md b/docs/SignalResponseProxyData.md new file mode 100644 index 00000000..8f369db7 --- /dev/null +++ b/docs/SignalResponseProxyData.md @@ -0,0 +1,9 @@ +# SignalResponseProxyData + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | `true` if the request IP address is used by a public proxy provider, `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/docs/SignalResponseRootApps.md b/docs/SignalResponseRootApps.md new file mode 100644 index 00000000..7abc2d85 --- /dev/null +++ b/docs/SignalResponseRootApps.md @@ -0,0 +1,10 @@ +# SignalResponseRootApps + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**SignalResponseRootAppsData**](SignalResponseRootAppsData.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseRootAppsData.md b/docs/SignalResponseRootAppsData.md new file mode 100644 index 00000000..0ba51cb3 --- /dev/null +++ b/docs/SignalResponseRootAppsData.md @@ -0,0 +1,9 @@ +# SignalResponseRootAppsData + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected Available only for events from Android client. The field will not be present for a browser or iOS event. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/SignalResponseTampering.md b/docs/SignalResponseTampering.md new file mode 100644 index 00000000..328826d2 --- /dev/null +++ b/docs/SignalResponseTampering.md @@ -0,0 +1,10 @@ +# SignalResponseTampering + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**TamperingResult**](TamperingResult.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseTor.md b/docs/SignalResponseTor.md new file mode 100644 index 00000000..c5e40958 --- /dev/null +++ b/docs/SignalResponseTor.md @@ -0,0 +1,10 @@ +# SignalResponseTor + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**SignalResponseTorData**](SignalResponseTorData.md) | | [optional] +**error** | [**ProductError**](ProductError.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/SignalResponseTorData.md b/docs/SignalResponseTorData.md new file mode 100644 index 00000000..7b361bef --- /dev/null +++ b/docs/SignalResponseTorData.md @@ -0,0 +1,9 @@ +# SignalResponseTorData + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | `true` if the request IP address is a known tor exit node, `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/docs/SignalResponseVpn.md b/docs/SignalResponseVpn.md new file mode 100644 index 00000000..e630148e --- /dev/null +++ b/docs/SignalResponseVpn.md @@ -0,0 +1,10 @@ +# SignalResponseVpn + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**VpnResult**](VpnResult.md) | | [optional] +**error** | [**ProductError**](ProductError.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/TamperingResult.md b/docs/TamperingResult.md new file mode 100644 index 00000000..cf83fc26 --- /dev/null +++ b/docs/TamperingResult.md @@ -0,0 +1,10 @@ +# TamperingResult + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | Flag indicating whether browser tampering was detected according to our internal thresholds. | [optional] +**anomaly_score** | **float** | Confidence score (`0.0 - 1.0`) for the tampering detection. Values above `0.5` suggest that we're reasonably sure there was a tampering attempt. Values below `0.5` are genuine browsers. | [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/VpnResult.md b/docs/VpnResult.md new file mode 100644 index 00000000..93fa212a --- /dev/null +++ b/docs/VpnResult.md @@ -0,0 +1,10 @@ +# VpnResult + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | VPN or other anonymising service has been used when sending the request. | [optional] +**methods** | [**VpnResultMethods**](VpnResultMethods.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/VpnResultMethods.md b/docs/VpnResultMethods.md new file mode 100644 index 00000000..04cc9910 --- /dev/null +++ b/docs/VpnResultMethods.md @@ -0,0 +1,10 @@ +# VpnResultMethods + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**timezone_mismatch** | **bool** | User's browser timezone doesn't match the timezone from which the request was originally made. | [optional] +**public_vpn** | **bool** | Request IP address is owned and used by a public VPN service provider. | [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/WebhookSignalResponseEmulator.md b/docs/WebhookSignalResponseEmulator.md new file mode 100644 index 00000000..bd686f32 --- /dev/null +++ b/docs/WebhookSignalResponseEmulator.md @@ -0,0 +1,9 @@ +# WebhookSignalResponseEmulator + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected Available only for events from Android client. The field will not be present for a browser or iOS event. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/WebhookSignalResponseProxy.md b/docs/WebhookSignalResponseProxy.md new file mode 100644 index 00000000..a0322b19 --- /dev/null +++ b/docs/WebhookSignalResponseProxy.md @@ -0,0 +1,9 @@ +# WebhookSignalResponseProxy + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | `true` if the request IP address is used by a public proxy provider, `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/docs/WebhookSignalResponseRootApps.md b/docs/WebhookSignalResponseRootApps.md new file mode 100644 index 00000000..b026c2c9 --- /dev/null +++ b/docs/WebhookSignalResponseRootApps.md @@ -0,0 +1,9 @@ +# WebhookSignalResponseRootApps + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected Available only for events from Android client. The field will not be present for a browser or iOS event. | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + diff --git a/docs/WebhookSignalResponseTor.md b/docs/WebhookSignalResponseTor.md new file mode 100644 index 00000000..d5e7aa6d --- /dev/null +++ b/docs/WebhookSignalResponseTor.md @@ -0,0 +1,9 @@ +# WebhookSignalResponseTor + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**result** | **bool** | `true` if the request IP address is a known tor exit node, `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/docs/WebhookVisit.md b/docs/WebhookVisit.md index fe4657bd..98cc995f 100644 --- a/docs/WebhookVisit.md +++ b/docs/WebhookVisit.md @@ -5,9 +5,19 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **visitor_id** | **str** | | **client_referrer** | **str** | | [optional] +**user_agent** | **str** | | [optional] +**bot** | [**BotdDetectionResult**](BotdDetectionResult.md) | | [optional] +**ip_info** | [**IpInfoResult**](IpInfoResult.md) | | [optional] +**incognito** | **bool** | Flag if user used incognito session. | +**root_apps** | [**WebhookSignalResponseRootApps**](WebhookSignalResponseRootApps.md) | | [optional] +**emulator** | [**WebhookSignalResponseEmulator**](WebhookSignalResponseEmulator.md) | | [optional] +**ip_blocklist** | [**IpBlockListResult**](IpBlockListResult.md) | | [optional] +**tor** | [**WebhookSignalResponseTor**](WebhookSignalResponseTor.md) | | [optional] +**vpn** | [**VpnResult**](VpnResult.md) | | [optional] +**proxy** | [**WebhookSignalResponseProxy**](WebhookSignalResponseProxy.md) | | [optional] +**tampering** | [**TamperingResult**](TamperingResult.md) | | [optional] **request_id** | **str** | Unique identifier of the user's identification request. | **browser_details** | [**BrowserDetails**](BrowserDetails.md) | | -**incognito** | **bool** | Flag if user used incognito session. | **ip** | **str** | | **ip_location** | [**IPLocation**](IPLocation.md) | | **timestamp** | **int** | Timestamp of the event with millisecond precision in Unix time. | diff --git a/fingerprint_pro_server_api_sdk/__init__.py b/fingerprint_pro_server_api_sdk/__init__.py index 12b37b80..e88fa52c 100644 --- a/fingerprint_pro_server_api_sdk/__init__.py +++ b/fingerprint_pro_server_api_sdk/__init__.py @@ -21,7 +21,6 @@ from fingerprint_pro_server_api_sdk.configuration import Configuration # import models into sdk package from fingerprint_pro_server_api_sdk.models.botd_detection_result import BotdDetectionResult -from fingerprint_pro_server_api_sdk.models.botd_error import BotdError from fingerprint_pro_server_api_sdk.models.botd_result import BotdResult from fingerprint_pro_server_api_sdk.models.browser_details import BrowserDetails from fingerprint_pro_server_api_sdk.models.confidence import Confidence @@ -34,8 +33,14 @@ from fingerprint_pro_server_api_sdk.models.ip_location import IPLocation from fingerprint_pro_server_api_sdk.models.ip_location_city import IPLocationCity from fingerprint_pro_server_api_sdk.models.identification_error import IdentificationError +from fingerprint_pro_server_api_sdk.models.ip_block_list_result import IpBlockListResult +from fingerprint_pro_server_api_sdk.models.ip_block_list_result_details import IpBlockListResultDetails +from fingerprint_pro_server_api_sdk.models.ip_info_result import IpInfoResult +from fingerprint_pro_server_api_sdk.models.ip_info_result_v4 import IpInfoResultV4 +from fingerprint_pro_server_api_sdk.models.ip_info_result_v6 import IpInfoResultV6 from fingerprint_pro_server_api_sdk.models.location import Location from fingerprint_pro_server_api_sdk.models.many_requests_response import ManyRequestsResponse +from fingerprint_pro_server_api_sdk.models.product_error import ProductError from fingerprint_pro_server_api_sdk.models.products_response import ProductsResponse from fingerprint_pro_server_api_sdk.models.products_response_botd import ProductsResponseBotd from fingerprint_pro_server_api_sdk.models.products_response_identification import ProductsResponseIdentification @@ -43,6 +48,27 @@ from fingerprint_pro_server_api_sdk.models.response import Response from fingerprint_pro_server_api_sdk.models.response_visits import ResponseVisits from fingerprint_pro_server_api_sdk.models.seen_at import SeenAt +from fingerprint_pro_server_api_sdk.models.signal_response_emulator import SignalResponseEmulator +from fingerprint_pro_server_api_sdk.models.signal_response_emulator_data import SignalResponseEmulatorData +from fingerprint_pro_server_api_sdk.models.signal_response_incognito import SignalResponseIncognito +from fingerprint_pro_server_api_sdk.models.signal_response_incognito_data import SignalResponseIncognitoData +from fingerprint_pro_server_api_sdk.models.signal_response_ip_blocklist import SignalResponseIpBlocklist +from fingerprint_pro_server_api_sdk.models.signal_response_ip_info import SignalResponseIpInfo +from fingerprint_pro_server_api_sdk.models.signal_response_proxy import SignalResponseProxy +from fingerprint_pro_server_api_sdk.models.signal_response_proxy_data import SignalResponseProxyData +from fingerprint_pro_server_api_sdk.models.signal_response_root_apps import SignalResponseRootApps +from fingerprint_pro_server_api_sdk.models.signal_response_root_apps_data import SignalResponseRootAppsData +from fingerprint_pro_server_api_sdk.models.signal_response_tampering import SignalResponseTampering +from fingerprint_pro_server_api_sdk.models.signal_response_tor import SignalResponseTor +from fingerprint_pro_server_api_sdk.models.signal_response_tor_data import SignalResponseTorData +from fingerprint_pro_server_api_sdk.models.signal_response_vpn import SignalResponseVpn from fingerprint_pro_server_api_sdk.models.subdivision import Subdivision +from fingerprint_pro_server_api_sdk.models.tampering_result import TamperingResult from fingerprint_pro_server_api_sdk.models.visit import Visit +from fingerprint_pro_server_api_sdk.models.vpn_result import VpnResult +from fingerprint_pro_server_api_sdk.models.vpn_result_methods import VpnResultMethods +from fingerprint_pro_server_api_sdk.models.webhook_signal_response_emulator import WebhookSignalResponseEmulator +from fingerprint_pro_server_api_sdk.models.webhook_signal_response_proxy import WebhookSignalResponseProxy +from fingerprint_pro_server_api_sdk.models.webhook_signal_response_root_apps import WebhookSignalResponseRootApps +from fingerprint_pro_server_api_sdk.models.webhook_signal_response_tor import WebhookSignalResponseTor from fingerprint_pro_server_api_sdk.models.webhook_visit import WebhookVisit diff --git a/fingerprint_pro_server_api_sdk/models/__init__.py b/fingerprint_pro_server_api_sdk/models/__init__.py index b2478ee0..d76ee6f4 100644 --- a/fingerprint_pro_server_api_sdk/models/__init__.py +++ b/fingerprint_pro_server_api_sdk/models/__init__.py @@ -15,7 +15,6 @@ # import models into model package from fingerprint_pro_server_api_sdk.models.botd_detection_result import BotdDetectionResult -from fingerprint_pro_server_api_sdk.models.botd_error import BotdError from fingerprint_pro_server_api_sdk.models.botd_result import BotdResult from fingerprint_pro_server_api_sdk.models.browser_details import BrowserDetails from fingerprint_pro_server_api_sdk.models.confidence import Confidence @@ -28,8 +27,14 @@ from fingerprint_pro_server_api_sdk.models.ip_location import IPLocation from fingerprint_pro_server_api_sdk.models.ip_location_city import IPLocationCity from fingerprint_pro_server_api_sdk.models.identification_error import IdentificationError +from fingerprint_pro_server_api_sdk.models.ip_block_list_result import IpBlockListResult +from fingerprint_pro_server_api_sdk.models.ip_block_list_result_details import IpBlockListResultDetails +from fingerprint_pro_server_api_sdk.models.ip_info_result import IpInfoResult +from fingerprint_pro_server_api_sdk.models.ip_info_result_v4 import IpInfoResultV4 +from fingerprint_pro_server_api_sdk.models.ip_info_result_v6 import IpInfoResultV6 from fingerprint_pro_server_api_sdk.models.location import Location from fingerprint_pro_server_api_sdk.models.many_requests_response import ManyRequestsResponse +from fingerprint_pro_server_api_sdk.models.product_error import ProductError from fingerprint_pro_server_api_sdk.models.products_response import ProductsResponse from fingerprint_pro_server_api_sdk.models.products_response_botd import ProductsResponseBotd from fingerprint_pro_server_api_sdk.models.products_response_identification import ProductsResponseIdentification @@ -37,6 +42,27 @@ from fingerprint_pro_server_api_sdk.models.response import Response from fingerprint_pro_server_api_sdk.models.response_visits import ResponseVisits from fingerprint_pro_server_api_sdk.models.seen_at import SeenAt +from fingerprint_pro_server_api_sdk.models.signal_response_emulator import SignalResponseEmulator +from fingerprint_pro_server_api_sdk.models.signal_response_emulator_data import SignalResponseEmulatorData +from fingerprint_pro_server_api_sdk.models.signal_response_incognito import SignalResponseIncognito +from fingerprint_pro_server_api_sdk.models.signal_response_incognito_data import SignalResponseIncognitoData +from fingerprint_pro_server_api_sdk.models.signal_response_ip_blocklist import SignalResponseIpBlocklist +from fingerprint_pro_server_api_sdk.models.signal_response_ip_info import SignalResponseIpInfo +from fingerprint_pro_server_api_sdk.models.signal_response_proxy import SignalResponseProxy +from fingerprint_pro_server_api_sdk.models.signal_response_proxy_data import SignalResponseProxyData +from fingerprint_pro_server_api_sdk.models.signal_response_root_apps import SignalResponseRootApps +from fingerprint_pro_server_api_sdk.models.signal_response_root_apps_data import SignalResponseRootAppsData +from fingerprint_pro_server_api_sdk.models.signal_response_tampering import SignalResponseTampering +from fingerprint_pro_server_api_sdk.models.signal_response_tor import SignalResponseTor +from fingerprint_pro_server_api_sdk.models.signal_response_tor_data import SignalResponseTorData +from fingerprint_pro_server_api_sdk.models.signal_response_vpn import SignalResponseVpn from fingerprint_pro_server_api_sdk.models.subdivision import Subdivision +from fingerprint_pro_server_api_sdk.models.tampering_result import TamperingResult from fingerprint_pro_server_api_sdk.models.visit import Visit +from fingerprint_pro_server_api_sdk.models.vpn_result import VpnResult +from fingerprint_pro_server_api_sdk.models.vpn_result_methods import VpnResultMethods +from fingerprint_pro_server_api_sdk.models.webhook_signal_response_emulator import WebhookSignalResponseEmulator +from fingerprint_pro_server_api_sdk.models.webhook_signal_response_proxy import WebhookSignalResponseProxy +from fingerprint_pro_server_api_sdk.models.webhook_signal_response_root_apps import WebhookSignalResponseRootApps +from fingerprint_pro_server_api_sdk.models.webhook_signal_response_tor import WebhookSignalResponseTor from fingerprint_pro_server_api_sdk.models.webhook_visit import WebhookVisit diff --git a/fingerprint_pro_server_api_sdk/models/botd_detection_result.py b/fingerprint_pro_server_api_sdk/models/botd_detection_result.py index f6fc5442..f6710c5b 100644 --- a/fingerprint_pro_server_api_sdk/models/botd_detection_result.py +++ b/fingerprint_pro_server_api_sdk/models/botd_detection_result.py @@ -28,18 +28,23 @@ class BotdDetectionResult(object): and the value is json key in definition. """ swagger_types = { - 'result': 'str' + 'result': 'str', + 'type': 'str' } attribute_map = { - 'result': 'result' + 'result': 'result', + 'type': 'type' } - def __init__(self, result=None): # noqa: E501 + def __init__(self, result=None, type=None): # noqa: E501 """BotdDetectionResult - a model defined in Swagger""" # noqa: E501 self._result = None + self._type = None self.discriminator = None self.result = result + if type is not None: + self.type = type @property def result(self): @@ -72,6 +77,27 @@ def result(self, result): self._result = result + @property + def type(self): + """Gets the type of this BotdDetectionResult. # noqa: E501 + + + :return: The type of this BotdDetectionResult. # noqa: E501 + :rtype: str + """ + return self._type + + @type.setter + def type(self, type): + """Sets the type of this BotdDetectionResult. + + + :param type: The type of this BotdDetectionResult. # noqa: E501 + :type: str + """ + + self._type = type + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/fingerprint_pro_server_api_sdk/models/botd_result.py b/fingerprint_pro_server_api_sdk/models/botd_result.py index 5e4e7452..a85b6af8 100644 --- a/fingerprint_pro_server_api_sdk/models/botd_result.py +++ b/fingerprint_pro_server_api_sdk/models/botd_result.py @@ -31,6 +31,8 @@ class BotdResult(object): 'ip': 'str', 'time': 'datetime', 'url': 'str', + 'user_agent': 'str', + 'request_id': 'str', 'bot': 'BotdDetectionResult' } @@ -38,19 +40,27 @@ class BotdResult(object): 'ip': 'ip', 'time': 'time', 'url': 'url', + 'user_agent': 'userAgent', + 'request_id': 'requestId', 'bot': 'bot' } - def __init__(self, ip=None, time=None, url=None, bot=None): # noqa: E501 + def __init__(self, ip=None, time=None, url=None, user_agent=None, request_id=None, bot=None): # noqa: E501 """BotdResult - a model defined in Swagger""" # noqa: E501 self._ip = None self._time = None self._url = None + self._user_agent = None + self._request_id = None self._bot = None self.discriminator = None self.ip = ip self.time = time self.url = url + if user_agent is not None: + self.user_agent = user_agent + if request_id is not None: + self.request_id = request_id self.bot = bot @property @@ -128,6 +138,48 @@ def url(self, url): self._url = url + @property + def user_agent(self): + """Gets the user_agent of this BotdResult. # noqa: E501 + + + :return: The user_agent of this BotdResult. # noqa: E501 + :rtype: str + """ + return self._user_agent + + @user_agent.setter + def user_agent(self, user_agent): + """Sets the user_agent of this BotdResult. + + + :param user_agent: The user_agent of this BotdResult. # noqa: E501 + :type: str + """ + + self._user_agent = user_agent + + @property + def request_id(self): + """Gets the request_id of this BotdResult. # noqa: E501 + + + :return: The request_id of this BotdResult. # noqa: E501 + :rtype: str + """ + return self._request_id + + @request_id.setter + def request_id(self, request_id): + """Sets the request_id of this BotdResult. + + + :param request_id: The request_id of this BotdResult. # noqa: E501 + :type: str + """ + + self._request_id = request_id + @property def bot(self): """Gets the bot of this BotdResult. # noqa: E501 diff --git a/fingerprint_pro_server_api_sdk/models/ip_block_list_result.py b/fingerprint_pro_server_api_sdk/models/ip_block_list_result.py new file mode 100644 index 00000000..5c1c020f --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/ip_block_list_result.py @@ -0,0 +1,141 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class IpBlockListResult(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool', + 'details': 'IpBlockListResultDetails' + } + + attribute_map = { + 'result': 'result', + 'details': 'details' + } + + def __init__(self, result=None, details=None): # noqa: E501 + """IpBlockListResult - a model defined in Swagger""" # noqa: E501 + self._result = None + self._details = None + self.discriminator = None + if result is not None: + self.result = result + if details is not None: + self.details = details + + @property + def result(self): + """Gets the result of this IpBlockListResult. # noqa: E501 + + `true` if request IP address is part of any database that we use to search for known malicious actors, `false` otherwise. # noqa: E501 + + :return: The result of this IpBlockListResult. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this IpBlockListResult. + + `true` if request IP address is part of any database that we use to search for known malicious actors, `false` otherwise. # noqa: E501 + + :param result: The result of this IpBlockListResult. # noqa: E501 + :type: bool + """ + + self._result = result + + @property + def details(self): + """Gets the details of this IpBlockListResult. # noqa: E501 + + + :return: The details of this IpBlockListResult. # noqa: E501 + :rtype: IpBlockListResultDetails + """ + return self._details + + @details.setter + def details(self, details): + """Sets the details of this IpBlockListResult. + + + :param details: The details of this IpBlockListResult. # noqa: E501 + :type: IpBlockListResultDetails + """ + + self._details = details + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(IpBlockListResult, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, IpBlockListResult): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, IpBlockListResult): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/ip_block_list_result_details.py b/fingerprint_pro_server_api_sdk/models/ip_block_list_result_details.py new file mode 100644 index 00000000..48c22a20 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/ip_block_list_result_details.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class IpBlockListResultDetails(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'email_spam': 'bool', + 'attack_source': 'bool' + } + + attribute_map = { + 'email_spam': 'emailSpam', + 'attack_source': 'attackSource' + } + + def __init__(self, email_spam=None, attack_source=None): # noqa: E501 + """IpBlockListResultDetails - a model defined in Swagger""" # noqa: E501 + self._email_spam = None + self._attack_source = None + self.discriminator = None + if email_spam is not None: + self.email_spam = email_spam + if attack_source is not None: + self.attack_source = attack_source + + @property + def email_spam(self): + """Gets the email_spam of this IpBlockListResultDetails. # noqa: E501 + + IP address was part of a known email spam attack (SMTP). # noqa: E501 + + :return: The email_spam of this IpBlockListResultDetails. # noqa: E501 + :rtype: bool + """ + return self._email_spam + + @email_spam.setter + def email_spam(self, email_spam): + """Sets the email_spam of this IpBlockListResultDetails. + + IP address was part of a known email spam attack (SMTP). # noqa: E501 + + :param email_spam: The email_spam of this IpBlockListResultDetails. # noqa: E501 + :type: bool + """ + + self._email_spam = email_spam + + @property + def attack_source(self): + """Gets the attack_source of this IpBlockListResultDetails. # noqa: E501 + + IP address was part of a known network attack (SSH/HTTPS). # noqa: E501 + + :return: The attack_source of this IpBlockListResultDetails. # noqa: E501 + :rtype: bool + """ + return self._attack_source + + @attack_source.setter + def attack_source(self, attack_source): + """Sets the attack_source of this IpBlockListResultDetails. + + IP address was part of a known network attack (SSH/HTTPS). # noqa: E501 + + :param attack_source: The attack_source of this IpBlockListResultDetails. # noqa: E501 + :type: bool + """ + + self._attack_source = attack_source + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(IpBlockListResultDetails, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, IpBlockListResultDetails): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, IpBlockListResultDetails): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/ip_info_result.py b/fingerprint_pro_server_api_sdk/models/ip_info_result.py new file mode 100644 index 00000000..24289b27 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/ip_info_result.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class IpInfoResult(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'v4': 'IpInfoResultV4', + 'v6': 'IpInfoResultV6' + } + + attribute_map = { + 'v4': 'v4', + 'v6': 'v6' + } + + def __init__(self, v4=None, v6=None): # noqa: E501 + """IpInfoResult - a model defined in Swagger""" # noqa: E501 + self._v4 = None + self._v6 = None + self.discriminator = None + if v4 is not None: + self.v4 = v4 + if v6 is not None: + self.v6 = v6 + + @property + def v4(self): + """Gets the v4 of this IpInfoResult. # noqa: E501 + + + :return: The v4 of this IpInfoResult. # noqa: E501 + :rtype: IpInfoResultV4 + """ + return self._v4 + + @v4.setter + def v4(self, v4): + """Sets the v4 of this IpInfoResult. + + + :param v4: The v4 of this IpInfoResult. # noqa: E501 + :type: IpInfoResultV4 + """ + + self._v4 = v4 + + @property + def v6(self): + """Gets the v6 of this IpInfoResult. # noqa: E501 + + + :return: The v6 of this IpInfoResult. # noqa: E501 + :rtype: IpInfoResultV6 + """ + return self._v6 + + @v6.setter + def v6(self, v6): + """Sets the v6 of this IpInfoResult. + + + :param v6: The v6 of this IpInfoResult. # noqa: E501 + :type: IpInfoResultV6 + """ + + self._v6 = v6 + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(IpInfoResult, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, IpInfoResult): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, IpInfoResult): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/ip_info_result_v4.py b/fingerprint_pro_server_api_sdk/models/ip_info_result_v4.py new file mode 100644 index 00000000..686a36ec --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/ip_info_result_v4.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class IpInfoResultV4(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'address': 'str', + 'geolocation': 'IPLocation' + } + + attribute_map = { + 'address': 'address', + 'geolocation': 'geolocation' + } + + def __init__(self, address=None, geolocation=None): # noqa: E501 + """IpInfoResultV4 - a model defined in Swagger""" # noqa: E501 + self._address = None + self._geolocation = None + self.discriminator = None + if address is not None: + self.address = address + if geolocation is not None: + self.geolocation = geolocation + + @property + def address(self): + """Gets the address of this IpInfoResultV4. # noqa: E501 + + + :return: The address of this IpInfoResultV4. # noqa: E501 + :rtype: str + """ + return self._address + + @address.setter + def address(self, address): + """Sets the address of this IpInfoResultV4. + + + :param address: The address of this IpInfoResultV4. # noqa: E501 + :type: str + """ + + self._address = address + + @property + def geolocation(self): + """Gets the geolocation of this IpInfoResultV4. # noqa: E501 + + + :return: The geolocation of this IpInfoResultV4. # noqa: E501 + :rtype: IPLocation + """ + return self._geolocation + + @geolocation.setter + def geolocation(self, geolocation): + """Sets the geolocation of this IpInfoResultV4. + + + :param geolocation: The geolocation of this IpInfoResultV4. # noqa: E501 + :type: IPLocation + """ + + self._geolocation = geolocation + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(IpInfoResultV4, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, IpInfoResultV4): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, IpInfoResultV4): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/ip_info_result_v6.py b/fingerprint_pro_server_api_sdk/models/ip_info_result_v6.py new file mode 100644 index 00000000..da75d8c9 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/ip_info_result_v6.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class IpInfoResultV6(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'address': 'str', + 'geolocation': 'IPLocation' + } + + attribute_map = { + 'address': 'address', + 'geolocation': 'geolocation' + } + + def __init__(self, address=None, geolocation=None): # noqa: E501 + """IpInfoResultV6 - a model defined in Swagger""" # noqa: E501 + self._address = None + self._geolocation = None + self.discriminator = None + if address is not None: + self.address = address + if geolocation is not None: + self.geolocation = geolocation + + @property + def address(self): + """Gets the address of this IpInfoResultV6. # noqa: E501 + + + :return: The address of this IpInfoResultV6. # noqa: E501 + :rtype: str + """ + return self._address + + @address.setter + def address(self, address): + """Sets the address of this IpInfoResultV6. + + + :param address: The address of this IpInfoResultV6. # noqa: E501 + :type: str + """ + + self._address = address + + @property + def geolocation(self): + """Gets the geolocation of this IpInfoResultV6. # noqa: E501 + + + :return: The geolocation of this IpInfoResultV6. # noqa: E501 + :rtype: IPLocation + """ + return self._geolocation + + @geolocation.setter + def geolocation(self, geolocation): + """Sets the geolocation of this IpInfoResultV6. + + + :param geolocation: The geolocation of this IpInfoResultV6. # noqa: E501 + :type: IPLocation + """ + + self._geolocation = geolocation + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(IpInfoResultV6, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, IpInfoResultV6): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, IpInfoResultV6): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/botd_error.py b/fingerprint_pro_server_api_sdk/models/product_error.py similarity index 84% rename from fingerprint_pro_server_api_sdk/models/botd_error.py rename to fingerprint_pro_server_api_sdk/models/product_error.py index 3ee5ea17..46b35b79 100644 --- a/fingerprint_pro_server_api_sdk/models/botd_error.py +++ b/fingerprint_pro_server_api_sdk/models/product_error.py @@ -15,7 +15,7 @@ import six -class BotdError(object): +class ProductError(object): """NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually. @@ -38,7 +38,7 @@ class BotdError(object): } def __init__(self, code=None, message=None): # noqa: E501 - """BotdError - a model defined in Swagger""" # noqa: E501 + """ProductError - a model defined in Swagger""" # noqa: E501 self._code = None self._message = None self.discriminator = None @@ -47,22 +47,22 @@ def __init__(self, code=None, message=None): # noqa: E501 @property def code(self): - """Gets the code of this BotdError. # noqa: E501 + """Gets the code of this ProductError. # noqa: E501 Error code: * `TooManyRequests` - the limit on secret API key requests per second has been exceeded * `Failed` - internal server error # noqa: E501 - :return: The code of this BotdError. # noqa: E501 + :return: The code of this ProductError. # noqa: E501 :rtype: str """ return self._code @code.setter def code(self, code): - """Sets the code of this BotdError. + """Sets the code of this ProductError. Error code: * `TooManyRequests` - the limit on secret API key requests per second has been exceeded * `Failed` - internal server error # noqa: E501 - :param code: The code of this BotdError. # noqa: E501 + :param code: The code of this ProductError. # noqa: E501 :type: str """ if code is None: @@ -78,20 +78,20 @@ def code(self, code): @property def message(self): - """Gets the message of this BotdError. # noqa: E501 + """Gets the message of this ProductError. # noqa: E501 - :return: The message of this BotdError. # noqa: E501 + :return: The message of this ProductError. # noqa: E501 :rtype: str """ return self._message @message.setter def message(self, message): - """Sets the message of this BotdError. + """Sets the message of this ProductError. - :param message: The message of this BotdError. # noqa: E501 + :param message: The message of this ProductError. # noqa: E501 :type: str """ if message is None: @@ -120,7 +120,7 @@ def to_dict(self): )) else: result[attr] = value - if issubclass(BotdError, dict): + if issubclass(ProductError, dict): for key, value in self.items(): result[key] = value @@ -136,14 +136,14 @@ def __repr__(self): def __eq__(self, other): """Returns true if both objects are equal""" - if not isinstance(other, BotdError): + if not isinstance(other, ProductError): return False return self.to_dict() == other.to_dict() def __ne__(self, other): """Returns true if both objects are not equal""" - if not isinstance(other, BotdError): + if not isinstance(other, ProductError): return True return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/products_response.py b/fingerprint_pro_server_api_sdk/models/products_response.py index 01f3ee0f..90cf6092 100644 --- a/fingerprint_pro_server_api_sdk/models/products_response.py +++ b/fingerprint_pro_server_api_sdk/models/products_response.py @@ -29,23 +29,68 @@ class ProductsResponse(object): """ swagger_types = { 'identification': 'ProductsResponseIdentification', - 'botd': 'ProductsResponseBotd' + 'botd': 'ProductsResponseBotd', + 'ip_info': 'SignalResponseIpInfo', + 'incognito': 'SignalResponseIncognito', + 'root_apps': 'SignalResponseRootApps', + 'emulator': 'SignalResponseEmulator', + 'ip_blocklist': 'SignalResponseIpBlocklist', + 'tor': 'SignalResponseTor', + 'vpn': 'SignalResponseVpn', + 'proxy': 'SignalResponseProxy', + 'tampering': 'SignalResponseTampering' } attribute_map = { 'identification': 'identification', - 'botd': 'botd' + 'botd': 'botd', + 'ip_info': 'ipInfo', + 'incognito': 'incognito', + 'root_apps': 'rootApps', + 'emulator': 'emulator', + 'ip_blocklist': 'ipBlocklist', + 'tor': 'tor', + 'vpn': 'vpn', + 'proxy': 'proxy', + 'tampering': 'tampering' } - def __init__(self, identification=None, botd=None): # noqa: E501 + def __init__(self, identification=None, botd=None, ip_info=None, incognito=None, root_apps=None, emulator=None, ip_blocklist=None, tor=None, vpn=None, proxy=None, tampering=None): # noqa: E501 """ProductsResponse - a model defined in Swagger""" # noqa: E501 self._identification = None self._botd = None + self._ip_info = None + self._incognito = None + self._root_apps = None + self._emulator = None + self._ip_blocklist = None + self._tor = None + self._vpn = None + self._proxy = None + self._tampering = None self.discriminator = None if identification is not None: self.identification = identification if botd is not None: self.botd = botd + if ip_info is not None: + self.ip_info = ip_info + if incognito is not None: + self.incognito = incognito + if root_apps is not None: + self.root_apps = root_apps + if emulator is not None: + self.emulator = emulator + if ip_blocklist is not None: + self.ip_blocklist = ip_blocklist + if tor is not None: + self.tor = tor + if vpn is not None: + self.vpn = vpn + if proxy is not None: + self.proxy = proxy + if tampering is not None: + self.tampering = tampering @property def identification(self): @@ -89,6 +134,195 @@ def botd(self, botd): self._botd = botd + @property + def ip_info(self): + """Gets the ip_info of this ProductsResponse. # noqa: E501 + + + :return: The ip_info of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseIpInfo + """ + return self._ip_info + + @ip_info.setter + def ip_info(self, ip_info): + """Sets the ip_info of this ProductsResponse. + + + :param ip_info: The ip_info of this ProductsResponse. # noqa: E501 + :type: SignalResponseIpInfo + """ + + self._ip_info = ip_info + + @property + def incognito(self): + """Gets the incognito of this ProductsResponse. # noqa: E501 + + + :return: The incognito of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseIncognito + """ + return self._incognito + + @incognito.setter + def incognito(self, incognito): + """Sets the incognito of this ProductsResponse. + + + :param incognito: The incognito of this ProductsResponse. # noqa: E501 + :type: SignalResponseIncognito + """ + + self._incognito = incognito + + @property + def root_apps(self): + """Gets the root_apps of this ProductsResponse. # noqa: E501 + + + :return: The root_apps of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseRootApps + """ + return self._root_apps + + @root_apps.setter + def root_apps(self, root_apps): + """Sets the root_apps of this ProductsResponse. + + + :param root_apps: The root_apps of this ProductsResponse. # noqa: E501 + :type: SignalResponseRootApps + """ + + self._root_apps = root_apps + + @property + def emulator(self): + """Gets the emulator of this ProductsResponse. # noqa: E501 + + + :return: The emulator of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseEmulator + """ + return self._emulator + + @emulator.setter + def emulator(self, emulator): + """Sets the emulator of this ProductsResponse. + + + :param emulator: The emulator of this ProductsResponse. # noqa: E501 + :type: SignalResponseEmulator + """ + + self._emulator = emulator + + @property + def ip_blocklist(self): + """Gets the ip_blocklist of this ProductsResponse. # noqa: E501 + + + :return: The ip_blocklist of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseIpBlocklist + """ + return self._ip_blocklist + + @ip_blocklist.setter + def ip_blocklist(self, ip_blocklist): + """Sets the ip_blocklist of this ProductsResponse. + + + :param ip_blocklist: The ip_blocklist of this ProductsResponse. # noqa: E501 + :type: SignalResponseIpBlocklist + """ + + self._ip_blocklist = ip_blocklist + + @property + def tor(self): + """Gets the tor of this ProductsResponse. # noqa: E501 + + + :return: The tor of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseTor + """ + return self._tor + + @tor.setter + def tor(self, tor): + """Sets the tor of this ProductsResponse. + + + :param tor: The tor of this ProductsResponse. # noqa: E501 + :type: SignalResponseTor + """ + + self._tor = tor + + @property + def vpn(self): + """Gets the vpn of this ProductsResponse. # noqa: E501 + + + :return: The vpn of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseVpn + """ + return self._vpn + + @vpn.setter + def vpn(self, vpn): + """Sets the vpn of this ProductsResponse. + + + :param vpn: The vpn of this ProductsResponse. # noqa: E501 + :type: SignalResponseVpn + """ + + self._vpn = vpn + + @property + def proxy(self): + """Gets the proxy of this ProductsResponse. # noqa: E501 + + + :return: The proxy of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseProxy + """ + return self._proxy + + @proxy.setter + def proxy(self, proxy): + """Sets the proxy of this ProductsResponse. + + + :param proxy: The proxy of this ProductsResponse. # noqa: E501 + :type: SignalResponseProxy + """ + + self._proxy = proxy + + @property + def tampering(self): + """Gets the tampering of this ProductsResponse. # noqa: E501 + + + :return: The tampering of this ProductsResponse. # noqa: E501 + :rtype: SignalResponseTampering + """ + return self._tampering + + @tampering.setter + def tampering(self, tampering): + """Sets the tampering of this ProductsResponse. + + + :param tampering: The tampering of this ProductsResponse. # noqa: E501 + :type: SignalResponseTampering + """ + + self._tampering = tampering + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/fingerprint_pro_server_api_sdk/models/products_response_botd.py b/fingerprint_pro_server_api_sdk/models/products_response_botd.py index 24125b60..4207fef7 100644 --- a/fingerprint_pro_server_api_sdk/models/products_response_botd.py +++ b/fingerprint_pro_server_api_sdk/models/products_response_botd.py @@ -29,7 +29,7 @@ class ProductsResponseBotd(object): """ swagger_types = { 'data': 'BotdResult', - 'error': 'BotdError' + 'error': 'ProductError' } attribute_map = { @@ -74,7 +74,7 @@ def error(self): :return: The error of this ProductsResponseBotd. # noqa: E501 - :rtype: BotdError + :rtype: ProductError """ return self._error @@ -84,7 +84,7 @@ def error(self, error): :param error: The error of this ProductsResponseBotd. # noqa: E501 - :type: BotdError + :type: ProductError """ self._error = error diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_emulator.py b/fingerprint_pro_server_api_sdk/models/signal_response_emulator.py new file mode 100644 index 00000000..445f6386 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_emulator.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseEmulator(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'SignalResponseEmulatorData', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseEmulator - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseEmulator. # noqa: E501 + + + :return: The data of this SignalResponseEmulator. # noqa: E501 + :rtype: SignalResponseEmulatorData + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseEmulator. + + + :param data: The data of this SignalResponseEmulator. # noqa: E501 + :type: SignalResponseEmulatorData + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseEmulator. # noqa: E501 + + + :return: The error of this SignalResponseEmulator. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseEmulator. + + + :param error: The error of this SignalResponseEmulator. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseEmulator, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseEmulator): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseEmulator): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_emulator_data.py b/fingerprint_pro_server_api_sdk/models/signal_response_emulator_data.py new file mode 100644 index 00000000..bc08b520 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_emulator_data.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseEmulatorData(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """SignalResponseEmulatorData - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this SignalResponseEmulatorData. # noqa: E501 + + Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected Available only for events from Android client. The field will not be present for a browser or iOS event. # noqa: E501 + + :return: The result of this SignalResponseEmulatorData. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this SignalResponseEmulatorData. + + Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected Available only for events from Android client. The field will not be present for a browser or iOS event. # noqa: E501 + + :param result: The result of this SignalResponseEmulatorData. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseEmulatorData, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseEmulatorData): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseEmulatorData): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_incognito.py b/fingerprint_pro_server_api_sdk/models/signal_response_incognito.py new file mode 100644 index 00000000..fa4502ff --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_incognito.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseIncognito(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'SignalResponseIncognitoData', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseIncognito - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseIncognito. # noqa: E501 + + + :return: The data of this SignalResponseIncognito. # noqa: E501 + :rtype: SignalResponseIncognitoData + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseIncognito. + + + :param data: The data of this SignalResponseIncognito. # noqa: E501 + :type: SignalResponseIncognitoData + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseIncognito. # noqa: E501 + + + :return: The error of this SignalResponseIncognito. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseIncognito. + + + :param error: The error of this SignalResponseIncognito. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseIncognito, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseIncognito): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseIncognito): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_incognito_data.py b/fingerprint_pro_server_api_sdk/models/signal_response_incognito_data.py new file mode 100644 index 00000000..7c368091 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_incognito_data.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseIncognitoData(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """SignalResponseIncognitoData - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this SignalResponseIncognitoData. # noqa: E501 + + `true` if we detected incognito mode used in the browser, `false` otherwise. # noqa: E501 + + :return: The result of this SignalResponseIncognitoData. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this SignalResponseIncognitoData. + + `true` if we detected incognito mode used in the browser, `false` otherwise. # noqa: E501 + + :param result: The result of this SignalResponseIncognitoData. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseIncognitoData, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseIncognitoData): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseIncognitoData): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_ip_blocklist.py b/fingerprint_pro_server_api_sdk/models/signal_response_ip_blocklist.py new file mode 100644 index 00000000..e2c38159 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_ip_blocklist.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseIpBlocklist(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'IpBlockListResult', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseIpBlocklist - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseIpBlocklist. # noqa: E501 + + + :return: The data of this SignalResponseIpBlocklist. # noqa: E501 + :rtype: IpBlockListResult + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseIpBlocklist. + + + :param data: The data of this SignalResponseIpBlocklist. # noqa: E501 + :type: IpBlockListResult + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseIpBlocklist. # noqa: E501 + + + :return: The error of this SignalResponseIpBlocklist. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseIpBlocklist. + + + :param error: The error of this SignalResponseIpBlocklist. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseIpBlocklist, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseIpBlocklist): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseIpBlocklist): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_ip_info.py b/fingerprint_pro_server_api_sdk/models/signal_response_ip_info.py new file mode 100644 index 00000000..a595108f --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_ip_info.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseIpInfo(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'IpInfoResult', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseIpInfo - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseIpInfo. # noqa: E501 + + + :return: The data of this SignalResponseIpInfo. # noqa: E501 + :rtype: IpInfoResult + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseIpInfo. + + + :param data: The data of this SignalResponseIpInfo. # noqa: E501 + :type: IpInfoResult + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseIpInfo. # noqa: E501 + + + :return: The error of this SignalResponseIpInfo. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseIpInfo. + + + :param error: The error of this SignalResponseIpInfo. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseIpInfo, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseIpInfo): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseIpInfo): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_proxy.py b/fingerprint_pro_server_api_sdk/models/signal_response_proxy.py new file mode 100644 index 00000000..9644a53b --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_proxy.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseProxy(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'SignalResponseProxyData', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseProxy - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseProxy. # noqa: E501 + + + :return: The data of this SignalResponseProxy. # noqa: E501 + :rtype: SignalResponseProxyData + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseProxy. + + + :param data: The data of this SignalResponseProxy. # noqa: E501 + :type: SignalResponseProxyData + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseProxy. # noqa: E501 + + + :return: The error of this SignalResponseProxy. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseProxy. + + + :param error: The error of this SignalResponseProxy. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseProxy, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseProxy): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseProxy): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_proxy_data.py b/fingerprint_pro_server_api_sdk/models/signal_response_proxy_data.py new file mode 100644 index 00000000..8af7c061 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_proxy_data.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseProxyData(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """SignalResponseProxyData - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this SignalResponseProxyData. # noqa: E501 + + `true` if the request IP address is used by a public proxy provider, `false` otherwise. # noqa: E501 + + :return: The result of this SignalResponseProxyData. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this SignalResponseProxyData. + + `true` if the request IP address is used by a public proxy provider, `false` otherwise. # noqa: E501 + + :param result: The result of this SignalResponseProxyData. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseProxyData, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseProxyData): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseProxyData): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_root_apps.py b/fingerprint_pro_server_api_sdk/models/signal_response_root_apps.py new file mode 100644 index 00000000..28005d89 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_root_apps.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseRootApps(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'SignalResponseRootAppsData', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseRootApps - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseRootApps. # noqa: E501 + + + :return: The data of this SignalResponseRootApps. # noqa: E501 + :rtype: SignalResponseRootAppsData + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseRootApps. + + + :param data: The data of this SignalResponseRootApps. # noqa: E501 + :type: SignalResponseRootAppsData + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseRootApps. # noqa: E501 + + + :return: The error of this SignalResponseRootApps. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseRootApps. + + + :param error: The error of this SignalResponseRootApps. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseRootApps, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseRootApps): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseRootApps): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_root_apps_data.py b/fingerprint_pro_server_api_sdk/models/signal_response_root_apps_data.py new file mode 100644 index 00000000..a1a1c5c1 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_root_apps_data.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseRootAppsData(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """SignalResponseRootAppsData - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this SignalResponseRootAppsData. # noqa: E501 + + Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected Available only for events from Android client. The field will not be present for a browser or iOS event. # noqa: E501 + + :return: The result of this SignalResponseRootAppsData. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this SignalResponseRootAppsData. + + Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected Available only for events from Android client. The field will not be present for a browser or iOS event. # noqa: E501 + + :param result: The result of this SignalResponseRootAppsData. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseRootAppsData, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseRootAppsData): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseRootAppsData): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_tampering.py b/fingerprint_pro_server_api_sdk/models/signal_response_tampering.py new file mode 100644 index 00000000..a7fbe539 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_tampering.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseTampering(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'TamperingResult', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseTampering - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseTampering. # noqa: E501 + + + :return: The data of this SignalResponseTampering. # noqa: E501 + :rtype: TamperingResult + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseTampering. + + + :param data: The data of this SignalResponseTampering. # noqa: E501 + :type: TamperingResult + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseTampering. # noqa: E501 + + + :return: The error of this SignalResponseTampering. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseTampering. + + + :param error: The error of this SignalResponseTampering. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseTampering, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseTampering): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseTampering): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_tor.py b/fingerprint_pro_server_api_sdk/models/signal_response_tor.py new file mode 100644 index 00000000..a048ddc7 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_tor.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseTor(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'SignalResponseTorData', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseTor - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseTor. # noqa: E501 + + + :return: The data of this SignalResponseTor. # noqa: E501 + :rtype: SignalResponseTorData + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseTor. + + + :param data: The data of this SignalResponseTor. # noqa: E501 + :type: SignalResponseTorData + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseTor. # noqa: E501 + + + :return: The error of this SignalResponseTor. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseTor. + + + :param error: The error of this SignalResponseTor. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseTor, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseTor): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseTor): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_tor_data.py b/fingerprint_pro_server_api_sdk/models/signal_response_tor_data.py new file mode 100644 index 00000000..ee407f04 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_tor_data.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseTorData(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """SignalResponseTorData - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this SignalResponseTorData. # noqa: E501 + + `true` if the request IP address is a known tor exit node, `false` otherwise. # noqa: E501 + + :return: The result of this SignalResponseTorData. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this SignalResponseTorData. + + `true` if the request IP address is a known tor exit node, `false` otherwise. # noqa: E501 + + :param result: The result of this SignalResponseTorData. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseTorData, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseTorData): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseTorData): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/signal_response_vpn.py b/fingerprint_pro_server_api_sdk/models/signal_response_vpn.py new file mode 100644 index 00000000..c61ceaa4 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/signal_response_vpn.py @@ -0,0 +1,139 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class SignalResponseVpn(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'data': 'VpnResult', + 'error': 'ProductError' + } + + attribute_map = { + 'data': 'data', + 'error': 'error' + } + + def __init__(self, data=None, error=None): # noqa: E501 + """SignalResponseVpn - a model defined in Swagger""" # noqa: E501 + self._data = None + self._error = None + self.discriminator = None + if data is not None: + self.data = data + if error is not None: + self.error = error + + @property + def data(self): + """Gets the data of this SignalResponseVpn. # noqa: E501 + + + :return: The data of this SignalResponseVpn. # noqa: E501 + :rtype: VpnResult + """ + return self._data + + @data.setter + def data(self, data): + """Sets the data of this SignalResponseVpn. + + + :param data: The data of this SignalResponseVpn. # noqa: E501 + :type: VpnResult + """ + + self._data = data + + @property + def error(self): + """Gets the error of this SignalResponseVpn. # noqa: E501 + + + :return: The error of this SignalResponseVpn. # noqa: E501 + :rtype: ProductError + """ + return self._error + + @error.setter + def error(self, error): + """Sets the error of this SignalResponseVpn. + + + :param error: The error of this SignalResponseVpn. # noqa: E501 + :type: ProductError + """ + + self._error = error + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(SignalResponseVpn, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, SignalResponseVpn): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, SignalResponseVpn): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/tampering_result.py b/fingerprint_pro_server_api_sdk/models/tampering_result.py new file mode 100644 index 00000000..6661df40 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/tampering_result.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class TamperingResult(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool', + 'anomaly_score': 'float' + } + + attribute_map = { + 'result': 'result', + 'anomaly_score': 'anomalyScore' + } + + def __init__(self, result=None, anomaly_score=None): # noqa: E501 + """TamperingResult - a model defined in Swagger""" # noqa: E501 + self._result = None + self._anomaly_score = None + self.discriminator = None + if result is not None: + self.result = result + if anomaly_score is not None: + self.anomaly_score = anomaly_score + + @property + def result(self): + """Gets the result of this TamperingResult. # noqa: E501 + + Flag indicating whether browser tampering was detected according to our internal thresholds. # noqa: E501 + + :return: The result of this TamperingResult. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this TamperingResult. + + Flag indicating whether browser tampering was detected according to our internal thresholds. # noqa: E501 + + :param result: The result of this TamperingResult. # noqa: E501 + :type: bool + """ + + self._result = result + + @property + def anomaly_score(self): + """Gets the anomaly_score of this TamperingResult. # noqa: E501 + + Confidence score (`0.0 - 1.0`) for the tampering detection. Values above `0.5` suggest that we're reasonably sure there was a tampering attempt. Values below `0.5` are genuine browsers. # noqa: E501 + + :return: The anomaly_score of this TamperingResult. # noqa: E501 + :rtype: float + """ + return self._anomaly_score + + @anomaly_score.setter + def anomaly_score(self, anomaly_score): + """Sets the anomaly_score of this TamperingResult. + + Confidence score (`0.0 - 1.0`) for the tampering detection. Values above `0.5` suggest that we're reasonably sure there was a tampering attempt. Values below `0.5` are genuine browsers. # noqa: E501 + + :param anomaly_score: The anomaly_score of this TamperingResult. # noqa: E501 + :type: float + """ + + self._anomaly_score = anomaly_score + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(TamperingResult, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, TamperingResult): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, TamperingResult): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/vpn_result.py b/fingerprint_pro_server_api_sdk/models/vpn_result.py new file mode 100644 index 00000000..b6b7e4e7 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/vpn_result.py @@ -0,0 +1,141 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class VpnResult(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool', + 'methods': 'VpnResultMethods' + } + + attribute_map = { + 'result': 'result', + 'methods': 'methods' + } + + def __init__(self, result=None, methods=None): # noqa: E501 + """VpnResult - a model defined in Swagger""" # noqa: E501 + self._result = None + self._methods = None + self.discriminator = None + if result is not None: + self.result = result + if methods is not None: + self.methods = methods + + @property + def result(self): + """Gets the result of this VpnResult. # noqa: E501 + + VPN or other anonymising service has been used when sending the request. # noqa: E501 + + :return: The result of this VpnResult. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this VpnResult. + + VPN or other anonymising service has been used when sending the request. # noqa: E501 + + :param result: The result of this VpnResult. # noqa: E501 + :type: bool + """ + + self._result = result + + @property + def methods(self): + """Gets the methods of this VpnResult. # noqa: E501 + + + :return: The methods of this VpnResult. # noqa: E501 + :rtype: VpnResultMethods + """ + return self._methods + + @methods.setter + def methods(self, methods): + """Sets the methods of this VpnResult. + + + :param methods: The methods of this VpnResult. # noqa: E501 + :type: VpnResultMethods + """ + + self._methods = methods + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(VpnResult, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, VpnResult): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, VpnResult): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/vpn_result_methods.py b/fingerprint_pro_server_api_sdk/models/vpn_result_methods.py new file mode 100644 index 00000000..ea28e500 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/vpn_result_methods.py @@ -0,0 +1,143 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class VpnResultMethods(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'timezone_mismatch': 'bool', + 'public_vpn': 'bool' + } + + attribute_map = { + 'timezone_mismatch': 'timezoneMismatch', + 'public_vpn': 'publicVPN' + } + + def __init__(self, timezone_mismatch=None, public_vpn=None): # noqa: E501 + """VpnResultMethods - a model defined in Swagger""" # noqa: E501 + self._timezone_mismatch = None + self._public_vpn = None + self.discriminator = None + if timezone_mismatch is not None: + self.timezone_mismatch = timezone_mismatch + if public_vpn is not None: + self.public_vpn = public_vpn + + @property + def timezone_mismatch(self): + """Gets the timezone_mismatch of this VpnResultMethods. # noqa: E501 + + User's browser timezone doesn't match the timezone from which the request was originally made. # noqa: E501 + + :return: The timezone_mismatch of this VpnResultMethods. # noqa: E501 + :rtype: bool + """ + return self._timezone_mismatch + + @timezone_mismatch.setter + def timezone_mismatch(self, timezone_mismatch): + """Sets the timezone_mismatch of this VpnResultMethods. + + User's browser timezone doesn't match the timezone from which the request was originally made. # noqa: E501 + + :param timezone_mismatch: The timezone_mismatch of this VpnResultMethods. # noqa: E501 + :type: bool + """ + + self._timezone_mismatch = timezone_mismatch + + @property + def public_vpn(self): + """Gets the public_vpn of this VpnResultMethods. # noqa: E501 + + Request IP address is owned and used by a public VPN service provider. # noqa: E501 + + :return: The public_vpn of this VpnResultMethods. # noqa: E501 + :rtype: bool + """ + return self._public_vpn + + @public_vpn.setter + def public_vpn(self, public_vpn): + """Sets the public_vpn of this VpnResultMethods. + + Request IP address is owned and used by a public VPN service provider. # noqa: E501 + + :param public_vpn: The public_vpn of this VpnResultMethods. # noqa: E501 + :type: bool + """ + + self._public_vpn = public_vpn + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(VpnResultMethods, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, VpnResultMethods): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, VpnResultMethods): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/webhook_signal_response_emulator.py b/fingerprint_pro_server_api_sdk/models/webhook_signal_response_emulator.py new file mode 100644 index 00000000..b39d9ec0 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/webhook_signal_response_emulator.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class WebhookSignalResponseEmulator(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """WebhookSignalResponseEmulator - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this WebhookSignalResponseEmulator. # noqa: E501 + + Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected Available only for events from Android client. The field will not be present for a browser or iOS event. # noqa: E501 + + :return: The result of this WebhookSignalResponseEmulator. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this WebhookSignalResponseEmulator. + + Android specific emulator detection. There are 2 values: • `true` - Emulated environment detected (e.g. launch inside of AVD) • `false` - No signs of emulated environment detected Available only for events from Android client. The field will not be present for a browser or iOS event. # noqa: E501 + + :param result: The result of this WebhookSignalResponseEmulator. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(WebhookSignalResponseEmulator, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, WebhookSignalResponseEmulator): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, WebhookSignalResponseEmulator): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/webhook_signal_response_proxy.py b/fingerprint_pro_server_api_sdk/models/webhook_signal_response_proxy.py new file mode 100644 index 00000000..3ad22b88 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/webhook_signal_response_proxy.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class WebhookSignalResponseProxy(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """WebhookSignalResponseProxy - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this WebhookSignalResponseProxy. # noqa: E501 + + `true` if the request IP address is used by a public proxy provider, `false` otherwise. # noqa: E501 + + :return: The result of this WebhookSignalResponseProxy. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this WebhookSignalResponseProxy. + + `true` if the request IP address is used by a public proxy provider, `false` otherwise. # noqa: E501 + + :param result: The result of this WebhookSignalResponseProxy. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(WebhookSignalResponseProxy, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, WebhookSignalResponseProxy): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, WebhookSignalResponseProxy): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/webhook_signal_response_root_apps.py b/fingerprint_pro_server_api_sdk/models/webhook_signal_response_root_apps.py new file mode 100644 index 00000000..6d17e72c --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/webhook_signal_response_root_apps.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class WebhookSignalResponseRootApps(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """WebhookSignalResponseRootApps - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this WebhookSignalResponseRootApps. # noqa: E501 + + Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected Available only for events from Android client. The field will not be present for a browser or iOS event. # noqa: E501 + + :return: The result of this WebhookSignalResponseRootApps. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this WebhookSignalResponseRootApps. + + Android specific root management apps detection. There are 2 values: • `true` - Root Management Apps detected (e.g. Magisk) • `false` - No Root Management Apps detected Available only for events from Android client. The field will not be present for a browser or iOS event. # noqa: E501 + + :param result: The result of this WebhookSignalResponseRootApps. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(WebhookSignalResponseRootApps, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, WebhookSignalResponseRootApps): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, WebhookSignalResponseRootApps): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/webhook_signal_response_tor.py b/fingerprint_pro_server_api_sdk/models/webhook_signal_response_tor.py new file mode 100644 index 00000000..2fa80c68 --- /dev/null +++ b/fingerprint_pro_server_api_sdk/models/webhook_signal_response_tor.py @@ -0,0 +1,115 @@ +# coding: utf-8 + +""" + Fingerprint Pro Server API + + Fingerprint Pro Server API allows you to get information about visitors and about individual events in a server environment. This API can be used for data exports, decision-making, and data analysis scenarios. # noqa: E501 + + OpenAPI spec version: 3 + Contact: support@fingerprint.com + Generated by: https://github.com/swagger-api/swagger-codegen.git +""" + +import pprint +import re # noqa: F401 + +import six + +class WebhookSignalResponseTor(object): + """NOTE: This class is auto generated by the swagger code generator program. + + Do not edit the class manually. + """ + """ + Attributes: + swagger_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + swagger_types = { + 'result': 'bool' + } + + attribute_map = { + 'result': 'result' + } + + def __init__(self, result=None): # noqa: E501 + """WebhookSignalResponseTor - a model defined in Swagger""" # noqa: E501 + self._result = None + self.discriminator = None + if result is not None: + self.result = result + + @property + def result(self): + """Gets the result of this WebhookSignalResponseTor. # noqa: E501 + + `true` if the request IP address is a known tor exit node, `false` otherwise. # noqa: E501 + + :return: The result of this WebhookSignalResponseTor. # noqa: E501 + :rtype: bool + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this WebhookSignalResponseTor. + + `true` if the request IP address is a known tor exit node, `false` otherwise. # noqa: E501 + + :param result: The result of this WebhookSignalResponseTor. # noqa: E501 + :type: bool + """ + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.swagger_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list(map( + lambda x: x.to_dict() if hasattr(x, "to_dict") else x, + value + )) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict(map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") else item, + value.items() + )) + else: + result[attr] = value + if issubclass(WebhookSignalResponseTor, dict): + for key, value in self.items(): + result[key] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, WebhookSignalResponseTor): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, WebhookSignalResponseTor): + return True + + return self.to_dict() != other.to_dict() diff --git a/fingerprint_pro_server_api_sdk/models/webhook_visit.py b/fingerprint_pro_server_api_sdk/models/webhook_visit.py index f62089fb..785fde44 100644 --- a/fingerprint_pro_server_api_sdk/models/webhook_visit.py +++ b/fingerprint_pro_server_api_sdk/models/webhook_visit.py @@ -30,9 +30,19 @@ class WebhookVisit(object): swagger_types = { 'visitor_id': 'str', 'client_referrer': 'str', + 'user_agent': 'str', + 'bot': 'BotdDetectionResult', + 'ip_info': 'IpInfoResult', + 'incognito': 'bool', + 'root_apps': 'WebhookSignalResponseRootApps', + 'emulator': 'WebhookSignalResponseEmulator', + 'ip_blocklist': 'IpBlockListResult', + 'tor': 'WebhookSignalResponseTor', + 'vpn': 'VpnResult', + 'proxy': 'WebhookSignalResponseProxy', + 'tampering': 'TamperingResult', 'request_id': 'str', 'browser_details': 'BrowserDetails', - 'incognito': 'bool', 'ip': 'str', 'ip_location': 'IPLocation', 'timestamp': 'int', @@ -49,9 +59,19 @@ class WebhookVisit(object): attribute_map = { 'visitor_id': 'visitorId', 'client_referrer': 'clientReferrer', + 'user_agent': 'userAgent', + 'bot': 'bot', + 'ip_info': 'ipInfo', + 'incognito': 'incognito', + 'root_apps': 'rootApps', + 'emulator': 'emulator', + 'ip_blocklist': 'ipBlocklist', + 'tor': 'tor', + 'vpn': 'vpn', + 'proxy': 'proxy', + 'tampering': 'tampering', 'request_id': 'requestId', 'browser_details': 'browserDetails', - 'incognito': 'incognito', 'ip': 'ip', 'ip_location': 'ipLocation', 'timestamp': 'timestamp', @@ -65,13 +85,23 @@ class WebhookVisit(object): 'last_seen_at': 'lastSeenAt' } - def __init__(self, visitor_id=None, client_referrer=None, request_id=None, browser_details=None, incognito=None, ip=None, ip_location=None, timestamp=None, time=None, url=None, tag=None, linked_id=None, confidence=None, visitor_found=None, first_seen_at=None, last_seen_at=None): # noqa: E501 + def __init__(self, visitor_id=None, client_referrer=None, user_agent=None, bot=None, ip_info=None, incognito=None, root_apps=None, emulator=None, ip_blocklist=None, tor=None, vpn=None, proxy=None, tampering=None, request_id=None, browser_details=None, ip=None, ip_location=None, timestamp=None, time=None, url=None, tag=None, linked_id=None, confidence=None, visitor_found=None, first_seen_at=None, last_seen_at=None): # noqa: E501 """WebhookVisit - a model defined in Swagger""" # noqa: E501 self._visitor_id = None self._client_referrer = None + self._user_agent = None + self._bot = None + self._ip_info = None + self._incognito = None + self._root_apps = None + self._emulator = None + self._ip_blocklist = None + self._tor = None + self._vpn = None + self._proxy = None + self._tampering = None self._request_id = None self._browser_details = None - self._incognito = None self._ip = None self._ip_location = None self._timestamp = None @@ -87,9 +117,29 @@ def __init__(self, visitor_id=None, client_referrer=None, request_id=None, brows self.visitor_id = visitor_id if client_referrer is not None: self.client_referrer = client_referrer + if user_agent is not None: + self.user_agent = user_agent + if bot is not None: + self.bot = bot + if ip_info is not None: + self.ip_info = ip_info + self.incognito = incognito + if root_apps is not None: + self.root_apps = root_apps + if emulator is not None: + self.emulator = emulator + if ip_blocklist is not None: + self.ip_blocklist = ip_blocklist + if tor is not None: + self.tor = tor + if vpn is not None: + self.vpn = vpn + if proxy is not None: + self.proxy = proxy + if tampering is not None: + self.tampering = tampering self.request_id = request_id self.browser_details = browser_details - self.incognito = incognito self.ip = ip self.ip_location = ip_location self.timestamp = timestamp @@ -148,6 +198,241 @@ def client_referrer(self, client_referrer): self._client_referrer = client_referrer + @property + def user_agent(self): + """Gets the user_agent of this WebhookVisit. # noqa: E501 + + + :return: The user_agent of this WebhookVisit. # noqa: E501 + :rtype: str + """ + return self._user_agent + + @user_agent.setter + def user_agent(self, user_agent): + """Sets the user_agent of this WebhookVisit. + + + :param user_agent: The user_agent of this WebhookVisit. # noqa: E501 + :type: str + """ + + self._user_agent = user_agent + + @property + def bot(self): + """Gets the bot of this WebhookVisit. # noqa: E501 + + + :return: The bot of this WebhookVisit. # noqa: E501 + :rtype: BotdDetectionResult + """ + return self._bot + + @bot.setter + def bot(self, bot): + """Sets the bot of this WebhookVisit. + + + :param bot: The bot of this WebhookVisit. # noqa: E501 + :type: BotdDetectionResult + """ + + self._bot = bot + + @property + def ip_info(self): + """Gets the ip_info of this WebhookVisit. # noqa: E501 + + + :return: The ip_info of this WebhookVisit. # noqa: E501 + :rtype: IpInfoResult + """ + return self._ip_info + + @ip_info.setter + def ip_info(self, ip_info): + """Sets the ip_info of this WebhookVisit. + + + :param ip_info: The ip_info of this WebhookVisit. # noqa: E501 + :type: IpInfoResult + """ + + self._ip_info = ip_info + + @property + def incognito(self): + """Gets the incognito of this WebhookVisit. # noqa: E501 + + Flag if user used incognito session. # noqa: E501 + + :return: The incognito of this WebhookVisit. # noqa: E501 + :rtype: bool + """ + return self._incognito + + @incognito.setter + def incognito(self, incognito): + """Sets the incognito of this WebhookVisit. + + Flag if user used incognito session. # noqa: E501 + + :param incognito: The incognito of this WebhookVisit. # noqa: E501 + :type: bool + """ + if incognito is None: + raise ValueError("Invalid value for `incognito`, must not be `None`") # noqa: E501 + + self._incognito = incognito + + @property + def root_apps(self): + """Gets the root_apps of this WebhookVisit. # noqa: E501 + + + :return: The root_apps of this WebhookVisit. # noqa: E501 + :rtype: WebhookSignalResponseRootApps + """ + return self._root_apps + + @root_apps.setter + def root_apps(self, root_apps): + """Sets the root_apps of this WebhookVisit. + + + :param root_apps: The root_apps of this WebhookVisit. # noqa: E501 + :type: WebhookSignalResponseRootApps + """ + + self._root_apps = root_apps + + @property + def emulator(self): + """Gets the emulator of this WebhookVisit. # noqa: E501 + + + :return: The emulator of this WebhookVisit. # noqa: E501 + :rtype: WebhookSignalResponseEmulator + """ + return self._emulator + + @emulator.setter + def emulator(self, emulator): + """Sets the emulator of this WebhookVisit. + + + :param emulator: The emulator of this WebhookVisit. # noqa: E501 + :type: WebhookSignalResponseEmulator + """ + + self._emulator = emulator + + @property + def ip_blocklist(self): + """Gets the ip_blocklist of this WebhookVisit. # noqa: E501 + + + :return: The ip_blocklist of this WebhookVisit. # noqa: E501 + :rtype: IpBlockListResult + """ + return self._ip_blocklist + + @ip_blocklist.setter + def ip_blocklist(self, ip_blocklist): + """Sets the ip_blocklist of this WebhookVisit. + + + :param ip_blocklist: The ip_blocklist of this WebhookVisit. # noqa: E501 + :type: IpBlockListResult + """ + + self._ip_blocklist = ip_blocklist + + @property + def tor(self): + """Gets the tor of this WebhookVisit. # noqa: E501 + + + :return: The tor of this WebhookVisit. # noqa: E501 + :rtype: WebhookSignalResponseTor + """ + return self._tor + + @tor.setter + def tor(self, tor): + """Sets the tor of this WebhookVisit. + + + :param tor: The tor of this WebhookVisit. # noqa: E501 + :type: WebhookSignalResponseTor + """ + + self._tor = tor + + @property + def vpn(self): + """Gets the vpn of this WebhookVisit. # noqa: E501 + + + :return: The vpn of this WebhookVisit. # noqa: E501 + :rtype: VpnResult + """ + return self._vpn + + @vpn.setter + def vpn(self, vpn): + """Sets the vpn of this WebhookVisit. + + + :param vpn: The vpn of this WebhookVisit. # noqa: E501 + :type: VpnResult + """ + + self._vpn = vpn + + @property + def proxy(self): + """Gets the proxy of this WebhookVisit. # noqa: E501 + + + :return: The proxy of this WebhookVisit. # noqa: E501 + :rtype: WebhookSignalResponseProxy + """ + return self._proxy + + @proxy.setter + def proxy(self, proxy): + """Sets the proxy of this WebhookVisit. + + + :param proxy: The proxy of this WebhookVisit. # noqa: E501 + :type: WebhookSignalResponseProxy + """ + + self._proxy = proxy + + @property + def tampering(self): + """Gets the tampering of this WebhookVisit. # noqa: E501 + + + :return: The tampering of this WebhookVisit. # noqa: E501 + :rtype: TamperingResult + """ + return self._tampering + + @tampering.setter + def tampering(self, tampering): + """Sets the tampering of this WebhookVisit. + + + :param tampering: The tampering of this WebhookVisit. # noqa: E501 + :type: TamperingResult + """ + + self._tampering = tampering + @property def request_id(self): """Gets the request_id of this WebhookVisit. # noqa: E501 @@ -196,31 +481,6 @@ def browser_details(self, browser_details): self._browser_details = browser_details - @property - def incognito(self): - """Gets the incognito of this WebhookVisit. # noqa: E501 - - Flag if user used incognito session. # noqa: E501 - - :return: The incognito of this WebhookVisit. # noqa: E501 - :rtype: bool - """ - return self._incognito - - @incognito.setter - def incognito(self, incognito): - """Sets the incognito of this WebhookVisit. - - Flag if user used incognito session. # noqa: E501 - - :param incognito: The incognito of this WebhookVisit. # noqa: E501 - :type: bool - """ - if incognito is None: - raise ValueError("Invalid value for `incognito`, must not be `None`") # noqa: E501 - - self._incognito = incognito - @property def ip(self): """Gets the ip of this WebhookVisit. # noqa: E501 diff --git a/res/fingerprint-server-api.yaml b/res/fingerprint-server-api.yaml index 1a49d990..4873ffbb 100644 --- a/res/fingerprint-server-api.yaml +++ b/res/fingerprint-server-api.yaml @@ -102,10 +102,111 @@ paths: botd: data: bot: - result: notDetected + result: bad + type: selenium url: https://www.example.com/login ip: 61.127.217.15 time: '2019-05-21T16:40:13Z' + ipInfo: + data: + v4: + address: 94.142.239.124 + geolocation: + accuracyRadius: 20 + latitude: 50.05 + longitude: 14.4 + postalCode: 150 00 + timezone: Europe/Prague + city: + name: Prague + country: + code: CZ + name: Czechia + continent: + code: EU + name: Europe + subdivisions: + - isoCode: '10' + name: Hlavni mesto Praha + incognito: + data: + result: false + rootApps: + data: + result: false + emulator: + data: + result: false + ipBlocklist: + data: + result: false + details: + emailSpam: false + attackSource: false + tor: + data: + result: false + vpn: + data: + result: false + methods: + timezoneMismatch: false + publicVPN: false + proxy: + data: + result: false + tampering: + data: + result: false + anomalyScore: 0 + allErrorsResponse: + summary: Example response with all failed signals + value: + products: + identification: + error: + code: Failed + message: failed + botd: + error: + code: Failed + message: internal server error + ipInfo: + error: + code: Failed + message: internal server error + incognito: + error: + code: Failed + message: internal server error + rootApps: + error: + code: Failed + message: internal server error + emulator: + error: + code: Failed + message: internal server error + ipBlocklist: + error: + code: Failed + message: internal server error + tor: + error: + code: Failed + message: internal server error + vpn: + error: + code: Failed + message: internal server error + proxy: + error: + code: Failed + message: internal server error + tampering: + error: + code: Failed + message: internal server error withBotdError: summary: Example error response with BotD error value: @@ -3036,6 +3137,9 @@ paths: Fake path to describe webhook format. More information about webhooks can be found in the [documentation](https://dev.fingerprint.com/docs/webhooks) + responses: + default: + description: Dummy for the schema callbacks: webhook: webhook: @@ -3048,7 +3152,6 @@ paths: content: application/json: schema: - type: object $ref: '#/components/schemas/WebhookVisit' example: value: @@ -3100,6 +3203,56 @@ paths: lastSeenAt: global: '2022-03-16T11:28:34.023Z' subscription: null + bot: + result: bad + type: selenium + userAgent: >- + (Macintosh; Intel Mac OS X 10_14_3) + Chrome/73.0.3683.86 + ipInfo: + v4: + address: 94.142.239.124 + geolocation: + accuracyRadius: 20 + latitude: 50.05 + longitude: 14.4 + postalCode: 150 00 + timezone: Europe/Prague + city: + name: Prague + country: + code: CZ + name: Czechia + continent: + code: EU + name: Europe + subdivisions: + - isoCode: '10' + name: Hlavni mesto Praha + rootApps: + result: false + emulator: + result: false + ipBlocklist: + result: false + details: + emailSpam: false + attackSource: false + tor: + result: false + vpn: + result: false + methods: + timezoneMismatch: false + publicVPN: false + proxy: + result: false + tampering: + result: false + anomalyScore: 0 + responses: + default: + description: The server doesn't validate the answer. components: securitySchemes: ApiKeyHeader: @@ -3175,14 +3328,8 @@ components: type: boolean firstSeenAt: $ref: '#/components/schemas/SeenAt' - example: - global: '2022-05-05T18:28:54.535Z' - subscription: '2022-06-09T22:58:05.576Z' lastSeenAt: $ref: '#/components/schemas/SeenAt' - example: - global: '2022-06-09T22:58:35.795Z' - subscription: null additionalProperties: false required: - browserDetails @@ -3296,17 +3443,82 @@ components: properties: visitorId: type: string + example: 3HNey93AkBW6CRbxV6xP clientReferrer: type: string + example: https://google.com?search=banking+services + userAgent: + type: string + example: >- + Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 + bot: + $ref: '#/components/schemas/BotdDetectionResult' + ipInfo: + $ref: '#/components/schemas/IpInfoResult' + incognito: + description: Flag if user used incognito session. + type: boolean + rootApps: + title: WebhookSignalResponseRootApps + type: object + properties: + result: + type: boolean + description: > + Android specific root management apps detection. There are 2 + values: • `true` - Root Management Apps detected (e.g. Magisk) • + `false` - No Root Management Apps detected + + Available only for events from Android client. The field will + not be present for a browser or iOS event. + example: false + emulator: + title: WebhookSignalResponseEmulator + type: object + properties: + result: + type: boolean + description: > + Android specific emulator detection. There are 2 values: • + `true` - Emulated environment detected (e.g. launch inside of + AVD) • `false` - No signs of emulated environment detected + + Available only for events from Android client. The field will + not be present for a browser or iOS event. + example: false + ipBlocklist: + $ref: '#/components/schemas/IpBlockListResult' + tor: + title: WebhookSignalResponseTor + type: object + properties: + result: + type: boolean + description: > + `true` if the request IP address is a known tor exit node, + `false` otherwise. + example: false + vpn: + $ref: '#/components/schemas/VpnResult' + proxy: + title: WebhookSignalResponseProxy + type: object + properties: + result: + type: boolean + description: > + `true` if the request IP address is used by a public proxy + provider, `false` otherwise. + example: false + tampering: + $ref: '#/components/schemas/TamperingResult' requestId: description: Unique identifier of the user's identification request. type: string example: 1654815516083.OX6kx8 browserDetails: $ref: '#/components/schemas/BrowserDetails' - incognito: - description: Flag if user used incognito session. - type: boolean ip: type: string format: ipv4 @@ -3346,14 +3558,8 @@ components: type: boolean firstSeenAt: $ref: '#/components/schemas/SeenAt' - example: - global: '2022-05-05T18:28:54.535Z' - subscription: '2022-06-09T22:58:05.576Z' lastSeenAt: $ref: '#/components/schemas/SeenAt' - example: - global: '2022-06-09T22:58:35.795Z' - subscription: null additionalProperties: false required: - visitorId @@ -3420,14 +3626,8 @@ components: type: boolean firstSeenAt: $ref: '#/components/schemas/SeenAt' - example: - global: '2022-05-05T18:28:54.535Z' - subscription: '2022-06-09T22:58:05.576Z' lastSeenAt: $ref: '#/components/schemas/SeenAt' - example: - global: '2022-06-09T22:58:35.795Z' - subscription: null required: - browserDetails - confidence @@ -3503,14 +3703,19 @@ components: type: string nullable: true format: date-time + example: '2022-05-05T18:28:54.535Z' subscription: type: string nullable: true format: date-time + example: '2022-06-09T22:58:05.576Z' required: - global - subscription title: SeenAt + example: + global: '2022-05-05T18:28:54.535Z' + subscription: null IPLocation: type: object additionalProperties: false @@ -3548,14 +3753,8 @@ components: example: Prague country: $ref: '#/components/schemas/Location' - example: - code: US - name: United States continent: $ref: '#/components/schemas/Location' - example: - code: NA - name: North America subdivisions: type: array items: @@ -3664,14 +3863,8 @@ components: type: boolean firstSeenAt: $ref: '#/components/schemas/SeenAt' - example: - global: '2022-05-05T18:28:54.535Z' - subscription: '2022-06-09T22:58:05.576Z' lastSeenAt: $ref: '#/components/schemas/SeenAt' - example: - global: '2022-06-09T22:58:35.795Z' - subscription: null visitorId: type: string additionalProperties: false @@ -3699,7 +3892,123 @@ components: data: $ref: '#/components/schemas/BotdResult' error: - $ref: '#/components/schemas/BotdError' + $ref: '#/components/schemas/ProductError' + ipInfo: + title: SignalResponseIpInfo + type: object + properties: + data: + $ref: '#/components/schemas/IpInfoResult' + error: + $ref: '#/components/schemas/ProductError' + incognito: + title: SignalResponseIncognito + type: object + properties: + data: + type: object + properties: + result: + type: boolean + description: > + `true` if we detected incognito mode used in the browser, + `false` otherwise. + example: false + error: + $ref: '#/components/schemas/ProductError' + rootApps: + title: SignalResponseRootApps + type: object + properties: + data: + type: object + properties: + result: + type: boolean + description: > + Android specific root management apps detection. There are 2 + values: • `true` - Root Management Apps detected (e.g. + Magisk) • `false` - No Root Management Apps detected + + Available only for events from Android client. The field + will not be present for a browser or iOS event. + example: false + error: + $ref: '#/components/schemas/ProductError' + emulator: + title: SignalResponseEmulator + type: object + properties: + data: + type: object + properties: + result: + type: boolean + description: > + Android specific emulator detection. There are 2 values: • + `true` - Emulated environment detected (e.g. launch inside + of AVD) • `false` - No signs of emulated environment + detected + + Available only for events from Android client. The field + will not be present for a browser or iOS event. + example: false + error: + $ref: '#/components/schemas/ProductError' + ipBlocklist: + title: SignalResponseIpBlocklist + type: object + properties: + data: + $ref: '#/components/schemas/IpBlockListResult' + error: + $ref: '#/components/schemas/ProductError' + tor: + title: SignalResponseTor + type: object + properties: + data: + type: object + properties: + result: + type: boolean + description: > + `true` if the request IP address is a known tor exit node, + `false` otherwise. + example: false + error: + $ref: '#/components/schemas/ProductError' + vpn: + title: SignalResponseVpn + type: object + properties: + data: + $ref: '#/components/schemas/VpnResult' + error: + $ref: '#/components/schemas/ProductError' + proxy: + title: SignalResponseProxy + type: object + properties: + data: + type: object + properties: + result: + type: boolean + description: > + `true` if the request IP address is used by a public proxy + provider, `false` otherwise. + example: false + error: + $ref: '#/components/schemas/ProductError' + tampering: + title: SignalResponseTampering + type: object + properties: + data: + $ref: '#/components/schemas/TamperingResult' + error: + $ref: '#/components/schemas/ProductError' EventResponse: description: >- Contains event from activated products - Fingerprint Pro or Bot @@ -3752,10 +4061,16 @@ components: type: string format: uri-reference example: https://example.com/login + userAgent: + type: string + example: >- + Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 + (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 + requestId: + type: string + example: 1681392853693.lRiBBD bot: $ref: '#/components/schemas/BotdDetectionResult' - example: - result: notDetected required: - bot - url @@ -3777,11 +4092,103 @@ components: - notDetected - good - bad + example: bad + type: + type: string + example: selenium required: - result - BotdError: + IpInfoResult: type: object + description: >- + Details about the request IP address. Has separate fields for v4 and v6 + IP address versions. additionalProperties: false + properties: + v4: + type: object + additionalProperties: false + properties: + address: + type: string + format: ipv4 + example: 94.142.239.124 + geolocation: + $ref: '#/components/schemas/IPLocation' + v6: + type: object + additionalProperties: false + properties: + address: + type: string + format: ipv6 + example: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 + geolocation: + $ref: '#/components/schemas/IPLocation' + IpBlockListResult: + type: object + properties: + result: + type: boolean + description: > + `true` if request IP address is part of any database that we use to + search for known malicious actors, `false` otherwise. + example: false + details: + type: object + properties: + emailSpam: + type: boolean + description: IP address was part of a known email spam attack (SMTP). + example: false + attackSource: + type: boolean + description: IP address was part of a known network attack (SSH/HTTPS). + example: false + VpnResult: + type: object + properties: + result: + type: boolean + description: >- + VPN or other anonymising service has been used when sending the + request. + example: false + methods: + type: object + properties: + timezoneMismatch: + type: boolean + description: >- + User's browser timezone doesn't match the timezone from which + the request was originally made. + example: false + publicVPN: + type: boolean + description: >- + Request IP address is owned and used by a public VPN service + provider. + example: false + TamperingResult: + type: object + properties: + result: + type: boolean + description: >- + Flag indicating whether browser tampering was detected according to + our internal thresholds. + example: false + anomalyScore: + type: number + description: >- + Confidence score (`0.0 - 1.0`) for the tampering detection. Values + above `0.5` suggest that we're reasonably sure there was a tampering + attempt. Values below `0.5` are genuine browsers. + example: 0 + minimum: 0 + maximum: 1 + ProductError: + type: object properties: code: type: string diff --git a/sync.sh b/sync.sh index 705d150f..c0726612 100755 --- a/sync.sh +++ b/sync.sh @@ -9,6 +9,8 @@ examplesList=( 'visits_too_many_requests_error.json' 'webhook.json' 'get_event.json' + 'get_event_all_errors.json' + 'get_event_extra_fields.json' 'get_event_403_error.json' 'get_event_404_error.json' 'get_event_botd_failed_error.json' diff --git a/test/mocks/get_event.json b/test/mocks/get_event.json index 4e1eccd6..924545c3 100644 --- a/test/mocks/get_event.json +++ b/test/mocks/get_event.json @@ -60,12 +60,93 @@ "botd": { "data": { "bot": { - "result": "notDetected" + "result": "bad", + "type": "selenium" }, "url": "https://www.example.com/login", "ip": "61.127.217.15", "time": "2019-05-21T16:40:13Z" } + }, + "ipInfo": { + "data": { + "v4": { + "address": "94.142.239.124", + "geolocation": { + "accuracyRadius": 20, + "latitude": 50.05, + "longitude": 14.4, + "postalCode": "150 00", + "timezone": "Europe/Prague", + "city": { + "name": "Prague" + }, + "country": { + "code": "CZ", + "name": "Czechia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "10", + "name": "Hlavni mesto Praha" + } + ] + } + } + } + }, + "incognito": { + "data": { + "result": false + } + }, + "rootApps": { + "data": { + "result": false + } + }, + "emulator": { + "data": { + "result": false + } + }, + "ipBlocklist": { + "data": { + "result": false, + "details": { + "emailSpam": false, + "attackSource": false + } + } + }, + "tor": { + "data": { + "result": false + } + }, + "vpn": { + "data": { + "result": false, + "methods": { + "timezoneMismatch": false, + "publicVPN": false + } + } + }, + "proxy": { + "data": { + "result": false + } + }, + "tampering": { + "data": { + "result": false, + "anomalyScore": 0 + } } } } diff --git a/test/mocks/get_event_all_errors.json b/test/mocks/get_event_all_errors.json new file mode 100644 index 00000000..89663915 --- /dev/null +++ b/test/mocks/get_event_all_errors.json @@ -0,0 +1,70 @@ +{ + "products": { + "identification": { + "error": { + "code": "Failed", + "message": "failed" + } + }, + "botd": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "ipInfo": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "incognito": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "rootApps": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "emulator": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "ipBlocklist": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "tor": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "vpn": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "proxy": { + "error": { + "code": "Failed", + "message": "internal server error" + } + }, + "tampering": { + "error": { + "code": "Failed", + "message": "internal server error" + } + } + } +} diff --git a/test/mocks/get_event_extra_fields.json b/test/mocks/get_event_extra_fields.json new file mode 100644 index 00000000..03e50c01 --- /dev/null +++ b/test/mocks/get_event_extra_fields.json @@ -0,0 +1,86 @@ +{ + "products": { + "identification": { + "data": { + "visitorId": "Ibk1527CUFmcnjLwIs4A9", + "requestId": "0KSh65EnVoB85JBmloQK", + "incognito": true, + "linkedId": "somelinkedId", + "time": "2019-05-21T16:40:13Z", + "timestamp": 1582299576512, + "url": "https://www.example.com/login", + "ip": "61.127.217.15", + "ipLocation": { + "accuracyRadius": 10, + "latitude": 49.982, + "longitude": 36.2566, + "postalCode": "61202", + "timezone": "Europe/Dusseldorf", + "city": { + "name": "Dusseldorf" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "country": { + "code": "DE", + "name": "Germany" + }, + "subdivisions": [ + { + "isoCode": "63", + "name": "North Rhine-Westphalia" + } + ] + }, + "browserDetails": { + "browserName": "Chrome", + "browserMajorVersion": "74", + "browserFullVersion": "74.0.3729", + "os": "Windows", + "osVersion": "7", + "device": "Other", + "userAgent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...." + }, + "confidence": { + "score": 0.97 + }, + "visitorFound": true, + "firstSeenAt": { + "global": "2022-03-16T11:26:45.362Z", + "subscription": "2022-03-16T11:31:01.101Z" + }, + "lastSeenAt": { + "global": "2022-03-16T11:28:34.023Z", + "subscription": null + } + } + }, + "botd": { + "data": { + "bot": { + "result": "notDetected" + }, + "url": "https://www.example.com/login", + "ip": "61.127.217.15", + "time": "2019-05-21T16:40:13Z" + } + }, + "product3": { + "data": { + "result": false + } + }, + "product4": { + "data": { + "result": true, + "details": { + "detail1": true, + "detail2": "detail description", + "detail3": 42 + } + } + } + } +} diff --git a/test/mocks/webhook.json b/test/mocks/webhook.json index ddc2c58f..e5103a11 100644 --- a/test/mocks/webhook.json +++ b/test/mocks/webhook.json @@ -56,5 +56,69 @@ "lastSeenAt": { "global": "2022-03-16T11:28:34.023Z", "subscription": null + }, + "bot": { + "result": "bad", + "type": "selenium" + }, + "userAgent": "(Macintosh; Intel Mac OS X 10_14_3) Chrome/73.0.3683.86", + "ipInfo": { + "v4": { + "address": "94.142.239.124", + "geolocation": { + "accuracyRadius": 20, + "latitude": 50.05, + "longitude": 14.4, + "postalCode": "150 00", + "timezone": "Europe/Prague", + "city": { + "name": "Prague" + }, + "country": { + "code": "CZ", + "name": "Czechia" + }, + "continent": { + "code": "EU", + "name": "Europe" + }, + "subdivisions": [ + { + "isoCode": "10", + "name": "Hlavni mesto Praha" + } + ] + } + } + }, + "rootApps": { + "result": false + }, + "emulator": { + "result": false + }, + "ipBlocklist": { + "result": false, + "details": { + "emailSpam": false, + "attackSource": false + } + }, + "tor": { + "result": false + }, + "vpn": { + "result": false, + "methods": { + "timezoneMismatch": false, + "publicVPN": false + } + }, + "proxy": { + "result": false + }, + "tampering": { + "result": false, + "anomalyScore": 0 } } diff --git a/test/test_fingerprint_api.py b/test/test_fingerprint_api.py index 86c61909..906085df 100644 --- a/test/test_fingerprint_api.py +++ b/test/test_fingerprint_api.py @@ -113,12 +113,20 @@ def test_get_visits_correct_data(self): self.api.api_client.rest_client.pool_manager = mock_pool mock_file1 = 'visits_limit_1.json' mock_file2 = 'visits_limit_500.json' + mock_file3 = 'visits_limit_500.json' + mock_file4 = 'visits_limit_500.json' mock_pool.expect_request('GET', TestFingerprintApi.get_get_visits_method_path(visitor_id=mock_file1), fields=[self.integration_info], headers=self.request_headers, preload_content=True, timeout=None) mock_pool.expect_request('GET', TestFingerprintApi.get_get_visits_method_path(visitor_id=mock_file2), fields=[self.integration_info], headers=self.request_headers, preload_content=True, timeout=None) + mock_pool.expect_request('GET', TestFingerprintApi.get_get_visits_method_path(visitor_id=mock_file3), + fields=[self.integration_info], headers=self.request_headers, + preload_content=True, timeout=None) + mock_pool.expect_request('GET', TestFingerprintApi.get_get_visits_method_path(visitor_id=mock_file4), + fields=[self.integration_info], headers=self.request_headers, + preload_content=True, timeout=None) self.api.get_visits(mock_file1) self.api.get_visits(mock_file2)