Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/five-eggs-cheer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"fingerprint-pro-server-api-python-sdk": minor
---

Add `ml_score` field to the `VirtualMachine` signal
5 changes: 5 additions & 0 deletions .changeset/tough-cherries-try.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"fingerprint-pro-server-api-python-sdk": minor
---

Add `confidence` and `ml_score` fields to the `Tampering` signal
2 changes: 1 addition & 1 deletion .github/workflows/functional_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
fail-fast: false
max-parallel: 1
matrix:
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13", "pypy3.9", "pypy3.10" ]
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13", "pypy3.11" ]

steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:

strategy:
matrix:
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13", "pypy3.9", "pypy3.10" ]
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13", "pypy3.11" ]

steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion .schema-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v2.12.0
v3.1.0
2 changes: 2 additions & 0 deletions docs/Tampering.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**result** | **bool** | Indicates if an identification request from a browser or an Android SDK has been tampered with. Not supported in the iOS SDK, is always `false` for iOS requests. * `true` - If the request meets either of the following conditions: * Contains anomalous browser or device attributes that could not have been legitimately produced by the JavaScript agent or the Android SDK (see `anomalyScore`). * Originated from an anti-detect browser like Incognition (see `antiDetectBrowser`). * `false` - If the request is considered genuine or was generated by the iOS SDK. |
**confidence** | **str** | Confidence level of the tampering detection. If a tampering is not detected, confidence is \"high\". If it's detected, can be \"low\", \"medium\", or \"high\". |
**anomaly_score** | **float** | A score that indicates the extent of anomalous data in the request. This field applies to requests originating from **both** browsers and Android SDKs. * Values above `0.5` indicate that the request has been tampered with. * Values below `0.5` indicate that the request is genuine. |
**ml_score** | **float** | A score that indicates the models calculated probability that an event is coming from an anti detect browser. * Values above `0.8` indicate that the request is an anti detect browser based on the ml model * Values below `0.8` indicate that the request is not an anti detect browser based on the ml model |
**anti_detect_browser** | **bool** | Anti-detect browsers try to evade identification by masking or manipulating their fingerprint to imitate legitimate browser configurations. This field does not apply to requests originating from mobile SDKs. * `true` - The browser resembles a known anti-detect browser, for example, Incognition. * `false` - The browser does not resemble an anti-detect browser or the request originates from a mobile SDK. |

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
Expand Down
1 change: 1 addition & 0 deletions docs/VirtualMachine.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**result** | **bool** | `true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. |
**ml_score** | **float** | Machine learning-based virtual machine score, represented as a floating-point value between 0 and 1 (inclusive), with up to three decimal places of precision. A higher score means a higher confidence in the positive `virtual_machine` detection result | [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)

2 changes: 1 addition & 1 deletion docs/WebhookJailbroken.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**result** | **bool** | iOS specific jailbreak detection. There are 2 values: * `true` - Jailbreak detected. * `false` - No signs of jailbreak or the client is not iOS. | [optional]
**result** | **bool** | iOS specific jailbreak detection. There are 2 values: * `true` - Jailbreak detected. * `false` - No signs of jailbreak or the client is not iOS. | [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)

2 changes: 2 additions & 0 deletions docs/WebhookTampering.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**result** | **bool** | Indicates if an identification request from a browser or an Android SDK has been tampered with. Not supported in the iOS SDK, is always `false` for iOS requests. * `true` - If the request meets either of the following conditions: * Contains anomalous browser or device attributes that could not have been legitimately produced by the JavaScript agent or the Android SDK (see `anomalyScore`). * Originated from an anti-detect browser like Incognition (see `antiDetectBrowser`). * `false` - If the request is considered genuine or was generated by the iOS SDK. | [optional]
**confidence** | **str** | Confidence level of the tampering detection. If a tampering is not detected, confidence is \"high\". If it's detected, can be \"low\", \"medium\", or \"high\". | [optional]
**anomaly_score** | **float** | A score that indicates the extent of anomalous data in the request. This field applies to requests originating from **both** browsers and Android SDKs. * Values above `0.5` indicate that the request has been tampered with. * Values below `0.5` indicate that the request is genuine. | [optional]
**ml_score** | **float** | A score that indicates the models calculated probability that an event is coming from an anti detect browser. * Values above `0.8` indicate that the request is an anti detect browser based on the ml model * Values below `0.8` indicate that the request is not an anti detect browser based on the ml model | [optional]
**anti_detect_browser** | **bool** | Anti-detect browsers try to evade identification by masking or manipulating their fingerprint to imitate legitimate browser configurations. This field does not apply to requests originating from mobile SDKs. * `true` - The browser resembles a known anti-detect browser, for example, Incognition. * `false` - The browser does not resemble an anti-detect browser or the request originates from a mobile SDK. | [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)
Expand Down
1 change: 1 addition & 0 deletions docs/WebhookVirtualMachine.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**result** | **bool** | `true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise. | [optional]
**ml_score** | **float** | Machine learning–based virtual machine score, represented as a floating-point value between 0 and 1 (inclusive), with up to three decimal places of precision. A higher score means a higher confidence in the positive `virtual_machine` detection result | [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)

64 changes: 63 additions & 1 deletion fingerprint_pro_server_api_sdk/models/tampering.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,30 +29,40 @@ class Tampering(BaseModel):
"""
swagger_types = {
'result': 'bool',
'confidence': 'str',
'anomaly_score': 'float',
'ml_score': 'float',
'anti_detect_browser': 'bool'
}

nullable_map = {
'result': False,
'confidence': False,
'anomaly_score': False,
'ml_score': False,
'anti_detect_browser': False
}

attribute_map = {
'result': 'result',
'confidence': 'confidence',
'anomaly_score': 'anomalyScore',
'ml_score': 'mlScore',
'anti_detect_browser': 'antiDetectBrowser'
}

def __init__(self, result=None, anomaly_score=None, anti_detect_browser=None): # noqa: E501
def __init__(self, result=None, confidence=None, anomaly_score=None, ml_score=None, anti_detect_browser=None): # noqa: E501
"""Tampering - a model defined in Swagger""" # noqa: E501
self._result = None
self._confidence = None
self._anomaly_score = None
self._ml_score = None
self._anti_detect_browser = None
self.discriminator = None
self.result = result
self.confidence = confidence
self.anomaly_score = anomaly_score
self.ml_score = ml_score
self.anti_detect_browser = anti_detect_browser

@property
Expand All @@ -78,6 +88,35 @@ def result(self, result: bool):

self._result = result

@property
def confidence(self) -> str:
"""Gets the confidence of this Tampering. # noqa: E501

Confidence level of the tampering detection. If a tampering is not detected, confidence is \"high\". If it's detected, can be \"low\", \"medium\", or \"high\". # noqa: E501

:return: The confidence of this Tampering. # noqa: E501
"""
return self._confidence

@confidence.setter
def confidence(self, confidence: str):
"""Sets the confidence of this Tampering.

Confidence level of the tampering detection. If a tampering is not detected, confidence is \"high\". If it's detected, can be \"low\", \"medium\", or \"high\". # noqa: E501

:param confidence: The confidence of this Tampering. # noqa: E501
"""
if confidence is None:
raise ValueError("Invalid value for `confidence`, must not be `None`") # noqa: E501
allowed_values = ["low", "medium", "high"] # noqa: E501
if (confidence not in allowed_values):
raise ValueError(
"Invalid value for `confidence` ({0}), must be one of {1}" # noqa: E501
.format(confidence, allowed_values)
)

self._confidence = confidence

@property
def anomaly_score(self) -> float:
"""Gets the anomaly_score of this Tampering. # noqa: E501
Expand All @@ -101,6 +140,29 @@ def anomaly_score(self, anomaly_score: float):

self._anomaly_score = anomaly_score

@property
def ml_score(self) -> float:
"""Gets the ml_score of this Tampering. # noqa: E501

A score that indicates the models calculated probability that an event is coming from an anti detect browser. * Values above `0.8` indicate that the request is an anti detect browser based on the ml model * Values below `0.8` indicate that the request is not an anti detect browser based on the ml model # noqa: E501

:return: The ml_score of this Tampering. # noqa: E501
"""
return self._ml_score

@ml_score.setter
def ml_score(self, ml_score: float):
"""Sets the ml_score of this Tampering.

A score that indicates the models calculated probability that an event is coming from an anti detect browser. * Values above `0.8` indicate that the request is an anti detect browser based on the ml model * Values below `0.8` indicate that the request is not an anti detect browser based on the ml model # noqa: E501

:param ml_score: The ml_score of this Tampering. # noqa: E501
"""
if ml_score is None:
raise ValueError("Invalid value for `ml_score`, must not be `None`") # noqa: E501

self._ml_score = ml_score

@property
def anti_detect_browser(self) -> bool:
"""Gets the anti_detect_browser of this Tampering. # noqa: E501
Expand Down
35 changes: 31 additions & 4 deletions fingerprint_pro_server_api_sdk/models/virtual_machine.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,28 @@ class VirtualMachine(BaseModel):
and the value is json key in definition.
"""
swagger_types = {
'result': 'bool'
'result': 'bool',
'ml_score': 'float'
}

nullable_map = {
'result': False
'result': False,
'ml_score': False
}

attribute_map = {
'result': 'result'
'result': 'result',
'ml_score': 'mlScore'
}

def __init__(self, result=None): # noqa: E501
def __init__(self, result=None, ml_score=None): # noqa: E501
"""VirtualMachine - a model defined in Swagger""" # noqa: E501
self._result = None
self._ml_score = None
self.discriminator = None
self.result = result
if ml_score is not None:
self.ml_score = ml_score

@property
def result(self) -> bool:
Expand All @@ -68,3 +74,24 @@ def result(self, result: bool):

self._result = result

@property
def ml_score(self) -> Optional[float]:
"""Gets the ml_score of this VirtualMachine. # noqa: E501

Machine learning-based virtual machine score, represented as a floating-point value between 0 and 1 (inclusive), with up to three decimal places of precision. A higher score means a higher confidence in the positive `virtual_machine` detection result # noqa: E501

:return: The ml_score of this VirtualMachine. # noqa: E501
"""
return self._ml_score

@ml_score.setter
def ml_score(self, ml_score: Optional[float]):
"""Sets the ml_score of this VirtualMachine.

Machine learning-based virtual machine score, represented as a floating-point value between 0 and 1 (inclusive), with up to three decimal places of precision. A higher score means a higher confidence in the positive `virtual_machine` detection result # noqa: E501

:param ml_score: The ml_score of this VirtualMachine. # noqa: E501
"""

self._ml_score = ml_score

4 changes: 2 additions & 2 deletions fingerprint_pro_server_api_sdk/models/webhook_jailbroken.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def __init__(self, result=None): # noqa: E501
def result(self) -> Optional[bool]:
"""Gets the result of this WebhookJailbroken. # noqa: E501

iOS specific jailbreak detection. There are 2 values: * `true` - Jailbreak detected. * `false` - No signs of jailbreak or the client is not iOS. # noqa: E501
iOS specific jailbreak detection. There are 2 values: * `true` - Jailbreak detected. * `false` - No signs of jailbreak or the client is not iOS. # noqa: E501

:return: The result of this WebhookJailbroken. # noqa: E501
"""
Expand All @@ -60,7 +60,7 @@ def result(self) -> Optional[bool]:
def result(self, result: Optional[bool]):
"""Sets the result of this WebhookJailbroken.

iOS specific jailbreak detection. There are 2 values: * `true` - Jailbreak detected. * `false` - No signs of jailbreak or the client is not iOS. # noqa: E501
iOS specific jailbreak detection. There are 2 values: * `true` - Jailbreak detected. * `false` - No signs of jailbreak or the client is not iOS. # noqa: E501

:param result: The result of this WebhookJailbroken. # noqa: E501
"""
Expand Down
62 changes: 61 additions & 1 deletion fingerprint_pro_server_api_sdk/models/webhook_tampering.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,32 +29,44 @@ class WebhookTampering(BaseModel):
"""
swagger_types = {
'result': 'bool',
'confidence': 'str',
'anomaly_score': 'float',
'ml_score': 'float',
'anti_detect_browser': 'bool'
}

nullable_map = {
'result': False,
'confidence': False,
'anomaly_score': False,
'ml_score': False,
'anti_detect_browser': False
}

attribute_map = {
'result': 'result',
'confidence': 'confidence',
'anomaly_score': 'anomalyScore',
'ml_score': 'mlScore',
'anti_detect_browser': 'antiDetectBrowser'
}

def __init__(self, result=None, anomaly_score=None, anti_detect_browser=None): # noqa: E501
def __init__(self, result=None, confidence=None, anomaly_score=None, ml_score=None, anti_detect_browser=None): # noqa: E501
"""WebhookTampering - a model defined in Swagger""" # noqa: E501
self._result = None
self._confidence = None
self._anomaly_score = None
self._ml_score = None
self._anti_detect_browser = None
self.discriminator = None
if result is not None:
self.result = result
if confidence is not None:
self.confidence = confidence
if anomaly_score is not None:
self.anomaly_score = anomaly_score
if ml_score is not None:
self.ml_score = ml_score
if anti_detect_browser is not None:
self.anti_detect_browser = anti_detect_browser

Expand All @@ -79,6 +91,33 @@ def result(self, result: Optional[bool]):

self._result = result

@property
def confidence(self) -> Optional[str]:
"""Gets the confidence of this WebhookTampering. # noqa: E501

Confidence level of the tampering detection. If a tampering is not detected, confidence is \"high\". If it's detected, can be \"low\", \"medium\", or \"high\". # noqa: E501

:return: The confidence of this WebhookTampering. # noqa: E501
"""
return self._confidence

@confidence.setter
def confidence(self, confidence: Optional[str]):
"""Sets the confidence of this WebhookTampering.

Confidence level of the tampering detection. If a tampering is not detected, confidence is \"high\". If it's detected, can be \"low\", \"medium\", or \"high\". # noqa: E501

:param confidence: The confidence of this WebhookTampering. # noqa: E501
"""
allowed_values = ["low", "medium", "high"] # noqa: E501
if (confidence not in allowed_values):
raise ValueError(
"Invalid value for `confidence` ({0}), must be one of {1}" # noqa: E501
.format(confidence, allowed_values)
)

self._confidence = confidence

@property
def anomaly_score(self) -> Optional[float]:
"""Gets the anomaly_score of this WebhookTampering. # noqa: E501
Expand All @@ -100,6 +139,27 @@ def anomaly_score(self, anomaly_score: Optional[float]):

self._anomaly_score = anomaly_score

@property
def ml_score(self) -> Optional[float]:
"""Gets the ml_score of this WebhookTampering. # noqa: E501

A score that indicates the models calculated probability that an event is coming from an anti detect browser. * Values above `0.8` indicate that the request is an anti detect browser based on the ml model * Values below `0.8` indicate that the request is not an anti detect browser based on the ml model # noqa: E501

:return: The ml_score of this WebhookTampering. # noqa: E501
"""
return self._ml_score

@ml_score.setter
def ml_score(self, ml_score: Optional[float]):
"""Sets the ml_score of this WebhookTampering.

A score that indicates the models calculated probability that an event is coming from an anti detect browser. * Values above `0.8` indicate that the request is an anti detect browser based on the ml model * Values below `0.8` indicate that the request is not an anti detect browser based on the ml model # noqa: E501

:param ml_score: The ml_score of this WebhookTampering. # noqa: E501
"""

self._ml_score = ml_score

@property
def anti_detect_browser(self) -> Optional[bool]:
"""Gets the anti_detect_browser of this WebhookTampering. # noqa: E501
Expand Down
Loading
Loading