Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
55.33% covered (warning)
55.33%
161 / 291
58.99% covered (warning)
58.99%
82 / 139
CRAP
0.00% covered (danger)
0.00%
0 / 1
Event
55.33% covered (warning)
55.33%
161 / 291
58.99% covered (warning)
58.99%
82 / 139
2561.94
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
59 / 59
100.00% covered (success)
100.00%
1 / 1
1
 __toString
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 openAPITypes
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 openAPIFormats
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isNullable
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 isNullableSetToNull
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 attributeMap
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setters
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getters
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getModelName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 listInvalidProperties
66.67% covered (warning)
66.67%
12 / 18
0.00% covered (danger)
0.00%
0 / 1
23.33
 valid
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getEventId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setEventId
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getTimestamp
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTimestamp
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getIncrementalIdentificationStatus
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setIncrementalIdentificationStatus
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getLinkedId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLinkedId
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 getEnvironmentId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setEnvironmentId
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getSuspect
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setSuspect
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getSdk
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setSdk
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getReplayed
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setReplayed
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getIdentification
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setIdentification
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getSupplementaryIdHighRecall
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setSupplementaryIdHighRecall
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getTags
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTags
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getUrl
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setUrl
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getBundleId
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBundleId
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getPackageName
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setPackageName
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getIpAddress
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setIpAddress
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getUserAgent
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setUserAgent
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getClientReferrer
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setClientReferrer
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getBrowserDetails
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBrowserDetails
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getProximity
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setProximity
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getBot
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBot
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getBotType
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBotType
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getBotInfo
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setBotInfo
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getClonedApp
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setClonedApp
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getDeveloperTools
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setDeveloperTools
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getEmulator
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setEmulator
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getFactoryResetTimestamp
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFactoryResetTimestamp
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getFrida
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFrida
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getIpBlocklist
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setIpBlocklist
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getIpInfo
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setIpInfo
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getProxy
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setProxy
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getProxyConfidence
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setProxyConfidence
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getProxyDetails
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setProxyDetails
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getProxyMlScore
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setProxyMlScore
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
12
 getIncognito
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setIncognito
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getJailbroken
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setJailbroken
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getLocationSpoofing
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLocationSpoofing
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getMitmAttack
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setMitmAttack
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getPrivacySettings
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setPrivacySettings
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getRootApps
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setRootApps
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getRuleAction
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setRuleAction
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getSimulator
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setSimulator
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getSuspectScore
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setSuspectScore
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getTampering
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTampering
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getTamperingConfidence
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTamperingConfidence
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getTamperingMlScore
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTamperingMlScore
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
12
 getTamperingDetails
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setTamperingDetails
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getVelocity
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVelocity
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getVirtualMachine
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVirtualMachine
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getVirtualMachineMlScore
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVirtualMachineMlScore
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
12
 getVpn
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVpn
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getVpnConfidence
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVpnConfidence
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getVpnOriginTimezone
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVpnOriginTimezone
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getVpnOriginCountry
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVpnOriginCountry
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getVpnMethods
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setVpnMethods
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getHighActivityDevice
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setHighActivityDevice
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getRareDevice
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setRareDevice
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getRareDevicePercentileBucket
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setRareDevicePercentileBucket
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getRawDeviceAttributes
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setRawDeviceAttributes
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getLabels
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setLabels
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 offsetExists
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 offsetGet
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 offsetSet
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
2
 offsetUnset
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 jsonSerialize
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 toHeaderValue
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 openAPINullables
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getOpenAPINullablesSetToNull
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setOpenAPINullablesSetToNull
n/a
0 / 0
n/a
0 / 0
1
 setIfExists
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
4
1<?php
2
3/**
4 * Event.
5 *
6 * @category Class
7 *
8 * @author   Fingerprint
9 *
10 * @see      https://fingerprint.com
11 */
12
13/**
14 * Server API.
15 *
16 * Fingerprint Server API allows you to get, search, and update Events in a server environment. It can be used for data exports, decision-making, and data analysis scenarios. Server API is intended for server-side usage, it's not intended to be used from the client side, whether it's a browser or a mobile device.
17 *
18 * The version of the OpenAPI document: 4
19 * Contact: support@fingerprint.com
20 * Generated by: https://openapi-generator.tech
21 * Generator version: 7.21.0
22 */
23
24/**
25 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
26 * https://openapi-generator.tech
27 * Do not edit the class manually.
28 */
29
30namespace Fingerprint\ServerSdk\Model;
31
32use Fingerprint\ServerSdk\ObjectSerializer;
33
34/**
35 * Contains results from Fingerprint Identification and all active Smart Signals.
36 *
37 * @category Class
38 *
39 * @description Contains results from Fingerprint Identification and all active Smart Signals.
40 *
41 * @author   Fingerprint
42 *
43 * @see      https://fingerprint.com
44 *
45 * @implements \ArrayAccess<string, mixed>
46 *
47 * @noinspection GrazieInspection
48 * @noinspection RedundantSuppression
49 */
50class Event implements ModelInterface, \ArrayAccess, \JsonSerializable
51{
52    public const DISCRIMINATOR = null;
53
54    /**
55     * The original name of the model.
56     *
57     */
58    protected static string $openAPIModelName = 'Event';
59
60    /**
61     * Array of property to type mappings. Used for (de)serialization.
62     *
63     * @var string[]
64     */
65    protected static array $openAPITypes = [
66        'event_id' => 'string',
67        'timestamp' => 'int',
68        'incremental_identification_status' => '\Fingerprint\ServerSdk\Model\IncrementalIdentificationStatus',
69        'linked_id' => 'string',
70        'environment_id' => 'string',
71        'suspect' => 'bool',
72        'sdk' => '\Fingerprint\ServerSdk\Model\SDK',
73        'replayed' => 'bool',
74        'identification' => '\Fingerprint\ServerSdk\Model\Identification',
75        'supplementary_id_high_recall' => '\Fingerprint\ServerSdk\Model\SupplementaryIDHighRecall',
76        'tags' => 'array<string,mixed>',
77        'url' => 'string',
78        'bundle_id' => 'string',
79        'package_name' => 'string',
80        'ip_address' => 'string',
81        'user_agent' => 'string',
82        'client_referrer' => 'string',
83        'browser_details' => '\Fingerprint\ServerSdk\Model\BrowserDetails',
84        'proximity' => '\Fingerprint\ServerSdk\Model\Proximity',
85        'bot' => '\Fingerprint\ServerSdk\Model\BotResult',
86        'bot_type' => 'string',
87        'bot_info' => '\Fingerprint\ServerSdk\Model\BotInfo',
88        'cloned_app' => 'bool',
89        'developer_tools' => 'bool',
90        'emulator' => 'bool',
91        'factory_reset_timestamp' => 'int',
92        'frida' => 'bool',
93        'ip_blocklist' => '\Fingerprint\ServerSdk\Model\IPBlockList',
94        'ip_info' => '\Fingerprint\ServerSdk\Model\IPInfo',
95        'proxy' => 'bool',
96        'proxy_confidence' => '\Fingerprint\ServerSdk\Model\ProxyConfidence',
97        'proxy_details' => '\Fingerprint\ServerSdk\Model\ProxyDetails',
98        'proxy_ml_score' => 'float',
99        'incognito' => 'bool',
100        'jailbroken' => 'bool',
101        'location_spoofing' => 'bool',
102        'mitm_attack' => 'bool',
103        'privacy_settings' => 'bool',
104        'root_apps' => 'bool',
105        'rule_action' => '\Fingerprint\ServerSdk\Model\EventRuleAction',
106        'simulator' => 'bool',
107        'suspect_score' => 'int',
108        'tampering' => 'bool',
109        'tampering_confidence' => '\Fingerprint\ServerSdk\Model\TamperingConfidence',
110        'tampering_ml_score' => 'float',
111        'tampering_details' => '\Fingerprint\ServerSdk\Model\TamperingDetails',
112        'velocity' => '\Fingerprint\ServerSdk\Model\Velocity',
113        'virtual_machine' => 'bool',
114        'virtual_machine_ml_score' => 'float',
115        'vpn' => 'bool',
116        'vpn_confidence' => '\Fingerprint\ServerSdk\Model\VpnConfidence',
117        'vpn_origin_timezone' => 'string',
118        'vpn_origin_country' => 'string',
119        'vpn_methods' => '\Fingerprint\ServerSdk\Model\VpnMethods',
120        'high_activity_device' => 'bool',
121        'rare_device' => 'bool',
122        'rare_device_percentile_bucket' => '\Fingerprint\ServerSdk\Model\RareDevicePercentileBucket',
123        'raw_device_attributes' => '\Fingerprint\ServerSdk\Model\RawDeviceAttributes',
124        'labels' => '\Fingerprint\ServerSdk\Model\LabelsInner[]',
125    ];
126
127    /**
128     * Array of property to format mappings. Used for (de)serialization.
129     *
130     * @var string[]
131     *
132     * @phpstan-var array<string, string|null>
133     *
134     * @psalm-var array<string, string|null>
135     */
136    protected static array $openAPIFormats = [
137        'event_id' => null,
138        'timestamp' => 'int64',
139        'incremental_identification_status' => null,
140        'linked_id' => null,
141        'environment_id' => null,
142        'suspect' => null,
143        'sdk' => null,
144        'replayed' => null,
145        'identification' => null,
146        'supplementary_id_high_recall' => null,
147        'tags' => null,
148        'url' => null,
149        'bundle_id' => null,
150        'package_name' => null,
151        'ip_address' => null,
152        'user_agent' => null,
153        'client_referrer' => null,
154        'browser_details' => null,
155        'proximity' => null,
156        'bot' => null,
157        'bot_type' => null,
158        'bot_info' => null,
159        'cloned_app' => null,
160        'developer_tools' => null,
161        'emulator' => null,
162        'factory_reset_timestamp' => 'int64',
163        'frida' => null,
164        'ip_blocklist' => null,
165        'ip_info' => null,
166        'proxy' => null,
167        'proxy_confidence' => null,
168        'proxy_details' => null,
169        'proxy_ml_score' => 'double',
170        'incognito' => null,
171        'jailbroken' => null,
172        'location_spoofing' => null,
173        'mitm_attack' => null,
174        'privacy_settings' => null,
175        'root_apps' => null,
176        'rule_action' => null,
177        'simulator' => null,
178        'suspect_score' => null,
179        'tampering' => null,
180        'tampering_confidence' => null,
181        'tampering_ml_score' => 'double',
182        'tampering_details' => null,
183        'velocity' => null,
184        'virtual_machine' => null,
185        'virtual_machine_ml_score' => 'double',
186        'vpn' => null,
187        'vpn_confidence' => null,
188        'vpn_origin_timezone' => null,
189        'vpn_origin_country' => null,
190        'vpn_methods' => null,
191        'high_activity_device' => null,
192        'rare_device' => null,
193        'rare_device_percentile_bucket' => null,
194        'raw_device_attributes' => null,
195        'labels' => null,
196    ];
197
198    /**
199     * Array of nullable properties. Used for (de)serialization.
200     *
201     * @var bool[]
202     */
203    protected static array $openAPINullables = [
204        'event_id' => false,
205        'timestamp' => false,
206        'incremental_identification_status' => false,
207        'linked_id' => false,
208        'environment_id' => false,
209        'suspect' => false,
210        'sdk' => false,
211        'replayed' => false,
212        'identification' => false,
213        'supplementary_id_high_recall' => false,
214        'tags' => false,
215        'url' => false,
216        'bundle_id' => false,
217        'package_name' => false,
218        'ip_address' => false,
219        'user_agent' => false,
220        'client_referrer' => false,
221        'browser_details' => false,
222        'proximity' => false,
223        'bot' => false,
224        'bot_type' => false,
225        'bot_info' => false,
226        'cloned_app' => false,
227        'developer_tools' => false,
228        'emulator' => false,
229        'factory_reset_timestamp' => false,
230        'frida' => false,
231        'ip_blocklist' => false,
232        'ip_info' => false,
233        'proxy' => false,
234        'proxy_confidence' => false,
235        'proxy_details' => false,
236        'proxy_ml_score' => false,
237        'incognito' => false,
238        'jailbroken' => false,
239        'location_spoofing' => false,
240        'mitm_attack' => false,
241        'privacy_settings' => false,
242        'root_apps' => false,
243        'rule_action' => false,
244        'simulator' => false,
245        'suspect_score' => false,
246        'tampering' => false,
247        'tampering_confidence' => false,
248        'tampering_ml_score' => false,
249        'tampering_details' => false,
250        'velocity' => false,
251        'virtual_machine' => false,
252        'virtual_machine_ml_score' => false,
253        'vpn' => false,
254        'vpn_confidence' => false,
255        'vpn_origin_timezone' => false,
256        'vpn_origin_country' => false,
257        'vpn_methods' => false,
258        'high_activity_device' => false,
259        'rare_device' => false,
260        'rare_device_percentile_bucket' => false,
261        'raw_device_attributes' => false,
262        'labels' => false,
263    ];
264
265    /**
266     * If a nullable field gets set to null, insert it here.
267     *
268     * @var bool[]
269     */
270    protected array $openAPINullablesSetToNull = [];
271
272    /**
273     * Array of attributes where the key is the local name,
274     * and the value is the original name.
275     *
276     * @var string[]
277     */
278    protected static array $attributeMap = [
279        'event_id' => 'event_id',
280        'timestamp' => 'timestamp',
281        'incremental_identification_status' => 'incremental_identification_status',
282        'linked_id' => 'linked_id',
283        'environment_id' => 'environment_id',
284        'suspect' => 'suspect',
285        'sdk' => 'sdk',
286        'replayed' => 'replayed',
287        'identification' => 'identification',
288        'supplementary_id_high_recall' => 'supplementary_id_high_recall',
289        'tags' => 'tags',
290        'url' => 'url',
291        'bundle_id' => 'bundle_id',
292        'package_name' => 'package_name',
293        'ip_address' => 'ip_address',
294        'user_agent' => 'user_agent',
295        'client_referrer' => 'client_referrer',
296        'browser_details' => 'browser_details',
297        'proximity' => 'proximity',
298        'bot' => 'bot',
299        'bot_type' => 'bot_type',
300        'bot_info' => 'bot_info',
301        'cloned_app' => 'cloned_app',
302        'developer_tools' => 'developer_tools',
303        'emulator' => 'emulator',
304        'factory_reset_timestamp' => 'factory_reset_timestamp',
305        'frida' => 'frida',
306        'ip_blocklist' => 'ip_blocklist',
307        'ip_info' => 'ip_info',
308        'proxy' => 'proxy',
309        'proxy_confidence' => 'proxy_confidence',
310        'proxy_details' => 'proxy_details',
311        'proxy_ml_score' => 'proxy_ml_score',
312        'incognito' => 'incognito',
313        'jailbroken' => 'jailbroken',
314        'location_spoofing' => 'location_spoofing',
315        'mitm_attack' => 'mitm_attack',
316        'privacy_settings' => 'privacy_settings',
317        'root_apps' => 'root_apps',
318        'rule_action' => 'rule_action',
319        'simulator' => 'simulator',
320        'suspect_score' => 'suspect_score',
321        'tampering' => 'tampering',
322        'tampering_confidence' => 'tampering_confidence',
323        'tampering_ml_score' => 'tampering_ml_score',
324        'tampering_details' => 'tampering_details',
325        'velocity' => 'velocity',
326        'virtual_machine' => 'virtual_machine',
327        'virtual_machine_ml_score' => 'virtual_machine_ml_score',
328        'vpn' => 'vpn',
329        'vpn_confidence' => 'vpn_confidence',
330        'vpn_origin_timezone' => 'vpn_origin_timezone',
331        'vpn_origin_country' => 'vpn_origin_country',
332        'vpn_methods' => 'vpn_methods',
333        'high_activity_device' => 'high_activity_device',
334        'rare_device' => 'rare_device',
335        'rare_device_percentile_bucket' => 'rare_device_percentile_bucket',
336        'raw_device_attributes' => 'raw_device_attributes',
337        'labels' => 'labels',
338    ];
339
340    /**
341     * Array of attributes to setter functions (for deserialization of responses).
342     *
343     * @var string[]
344     */
345    protected static array $setters = [
346        'event_id' => 'setEventId',
347        'timestamp' => 'setTimestamp',
348        'incremental_identification_status' => 'setIncrementalIdentificationStatus',
349        'linked_id' => 'setLinkedId',
350        'environment_id' => 'setEnvironmentId',
351        'suspect' => 'setSuspect',
352        'sdk' => 'setSdk',
353        'replayed' => 'setReplayed',
354        'identification' => 'setIdentification',
355        'supplementary_id_high_recall' => 'setSupplementaryIdHighRecall',
356        'tags' => 'setTags',
357        'url' => 'setUrl',
358        'bundle_id' => 'setBundleId',
359        'package_name' => 'setPackageName',
360        'ip_address' => 'setIpAddress',
361        'user_agent' => 'setUserAgent',
362        'client_referrer' => 'setClientReferrer',
363        'browser_details' => 'setBrowserDetails',
364        'proximity' => 'setProximity',
365        'bot' => 'setBot',
366        'bot_type' => 'setBotType',
367        'bot_info' => 'setBotInfo',
368        'cloned_app' => 'setClonedApp',
369        'developer_tools' => 'setDeveloperTools',
370        'emulator' => 'setEmulator',
371        'factory_reset_timestamp' => 'setFactoryResetTimestamp',
372        'frida' => 'setFrida',
373        'ip_blocklist' => 'setIpBlocklist',
374        'ip_info' => 'setIpInfo',
375        'proxy' => 'setProxy',
376        'proxy_confidence' => 'setProxyConfidence',
377        'proxy_details' => 'setProxyDetails',
378        'proxy_ml_score' => 'setProxyMlScore',
379        'incognito' => 'setIncognito',
380        'jailbroken' => 'setJailbroken',
381        'location_spoofing' => 'setLocationSpoofing',
382        'mitm_attack' => 'setMitmAttack',
383        'privacy_settings' => 'setPrivacySettings',
384        'root_apps' => 'setRootApps',
385        'rule_action' => 'setRuleAction',
386        'simulator' => 'setSimulator',
387        'suspect_score' => 'setSuspectScore',
388        'tampering' => 'setTampering',
389        'tampering_confidence' => 'setTamperingConfidence',
390        'tampering_ml_score' => 'setTamperingMlScore',
391        'tampering_details' => 'setTamperingDetails',
392        'velocity' => 'setVelocity',
393        'virtual_machine' => 'setVirtualMachine',
394        'virtual_machine_ml_score' => 'setVirtualMachineMlScore',
395        'vpn' => 'setVpn',
396        'vpn_confidence' => 'setVpnConfidence',
397        'vpn_origin_timezone' => 'setVpnOriginTimezone',
398        'vpn_origin_country' => 'setVpnOriginCountry',
399        'vpn_methods' => 'setVpnMethods',
400        'high_activity_device' => 'setHighActivityDevice',
401        'rare_device' => 'setRareDevice',
402        'rare_device_percentile_bucket' => 'setRareDevicePercentileBucket',
403        'raw_device_attributes' => 'setRawDeviceAttributes',
404        'labels' => 'setLabels',
405    ];
406
407    /**
408     * Array of attributes to getter functions (for serialization of requests).
409     *
410     * @var string[]
411     */
412    protected static array $getters = [
413        'event_id' => 'getEventId',
414        'timestamp' => 'getTimestamp',
415        'incremental_identification_status' => 'getIncrementalIdentificationStatus',
416        'linked_id' => 'getLinkedId',
417        'environment_id' => 'getEnvironmentId',
418        'suspect' => 'getSuspect',
419        'sdk' => 'getSdk',
420        'replayed' => 'getReplayed',
421        'identification' => 'getIdentification',
422        'supplementary_id_high_recall' => 'getSupplementaryIdHighRecall',
423        'tags' => 'getTags',
424        'url' => 'getUrl',
425        'bundle_id' => 'getBundleId',
426        'package_name' => 'getPackageName',
427        'ip_address' => 'getIpAddress',
428        'user_agent' => 'getUserAgent',
429        'client_referrer' => 'getClientReferrer',
430        'browser_details' => 'getBrowserDetails',
431        'proximity' => 'getProximity',
432        'bot' => 'getBot',
433        'bot_type' => 'getBotType',
434        'bot_info' => 'getBotInfo',
435        'cloned_app' => 'getClonedApp',
436        'developer_tools' => 'getDeveloperTools',
437        'emulator' => 'getEmulator',
438        'factory_reset_timestamp' => 'getFactoryResetTimestamp',
439        'frida' => 'getFrida',
440        'ip_blocklist' => 'getIpBlocklist',
441        'ip_info' => 'getIpInfo',
442        'proxy' => 'getProxy',
443        'proxy_confidence' => 'getProxyConfidence',
444        'proxy_details' => 'getProxyDetails',
445        'proxy_ml_score' => 'getProxyMlScore',
446        'incognito' => 'getIncognito',
447        'jailbroken' => 'getJailbroken',
448        'location_spoofing' => 'getLocationSpoofing',
449        'mitm_attack' => 'getMitmAttack',
450        'privacy_settings' => 'getPrivacySettings',
451        'root_apps' => 'getRootApps',
452        'rule_action' => 'getRuleAction',
453        'simulator' => 'getSimulator',
454        'suspect_score' => 'getSuspectScore',
455        'tampering' => 'getTampering',
456        'tampering_confidence' => 'getTamperingConfidence',
457        'tampering_ml_score' => 'getTamperingMlScore',
458        'tampering_details' => 'getTamperingDetails',
459        'velocity' => 'getVelocity',
460        'virtual_machine' => 'getVirtualMachine',
461        'virtual_machine_ml_score' => 'getVirtualMachineMlScore',
462        'vpn' => 'getVpn',
463        'vpn_confidence' => 'getVpnConfidence',
464        'vpn_origin_timezone' => 'getVpnOriginTimezone',
465        'vpn_origin_country' => 'getVpnOriginCountry',
466        'vpn_methods' => 'getVpnMethods',
467        'high_activity_device' => 'getHighActivityDevice',
468        'rare_device' => 'getRareDevice',
469        'rare_device_percentile_bucket' => 'getRareDevicePercentileBucket',
470        'raw_device_attributes' => 'getRawDeviceAttributes',
471        'labels' => 'getLabels',
472    ];
473
474    /**
475     * Associative array for storing property values.
476     */
477    protected array $container = [];
478
479    /**
480     * Constructor.
481     *
482     * @param array|null $data Associated array of property values
483     *                         initializing the model
484     *
485     * @noinspection DuplicatedCode
486     */
487    public function __construct(?array $data = null)
488    {
489        $this->setIfExists('event_id', $data ?? [], null);
490        $this->setIfExists('timestamp', $data ?? [], null);
491        $this->setIfExists('incremental_identification_status', $data ?? [], null);
492        $this->setIfExists('linked_id', $data ?? [], null);
493        $this->setIfExists('environment_id', $data ?? [], null);
494        $this->setIfExists('suspect', $data ?? [], null);
495        $this->setIfExists('sdk', $data ?? [], null);
496        $this->setIfExists('replayed', $data ?? [], null);
497        $this->setIfExists('identification', $data ?? [], null);
498        $this->setIfExists('supplementary_id_high_recall', $data ?? [], null);
499        $this->setIfExists('tags', $data ?? [], null);
500        $this->setIfExists('url', $data ?? [], null);
501        $this->setIfExists('bundle_id', $data ?? [], null);
502        $this->setIfExists('package_name', $data ?? [], null);
503        $this->setIfExists('ip_address', $data ?? [], null);
504        $this->setIfExists('user_agent', $data ?? [], null);
505        $this->setIfExists('client_referrer', $data ?? [], null);
506        $this->setIfExists('browser_details', $data ?? [], null);
507        $this->setIfExists('proximity', $data ?? [], null);
508        $this->setIfExists('bot', $data ?? [], null);
509        $this->setIfExists('bot_type', $data ?? [], null);
510        $this->setIfExists('bot_info', $data ?? [], null);
511        $this->setIfExists('cloned_app', $data ?? [], null);
512        $this->setIfExists('developer_tools', $data ?? [], null);
513        $this->setIfExists('emulator', $data ?? [], null);
514        $this->setIfExists('factory_reset_timestamp', $data ?? [], null);
515        $this->setIfExists('frida', $data ?? [], null);
516        $this->setIfExists('ip_blocklist', $data ?? [], null);
517        $this->setIfExists('ip_info', $data ?? [], null);
518        $this->setIfExists('proxy', $data ?? [], null);
519        $this->setIfExists('proxy_confidence', $data ?? [], null);
520        $this->setIfExists('proxy_details', $data ?? [], null);
521        $this->setIfExists('proxy_ml_score', $data ?? [], null);
522        $this->setIfExists('incognito', $data ?? [], null);
523        $this->setIfExists('jailbroken', $data ?? [], null);
524        $this->setIfExists('location_spoofing', $data ?? [], null);
525        $this->setIfExists('mitm_attack', $data ?? [], null);
526        $this->setIfExists('privacy_settings', $data ?? [], null);
527        $this->setIfExists('root_apps', $data ?? [], null);
528        $this->setIfExists('rule_action', $data ?? [], null);
529        $this->setIfExists('simulator', $data ?? [], null);
530        $this->setIfExists('suspect_score', $data ?? [], null);
531        $this->setIfExists('tampering', $data ?? [], null);
532        $this->setIfExists('tampering_confidence', $data ?? [], null);
533        $this->setIfExists('tampering_ml_score', $data ?? [], null);
534        $this->setIfExists('tampering_details', $data ?? [], null);
535        $this->setIfExists('velocity', $data ?? [], null);
536        $this->setIfExists('virtual_machine', $data ?? [], null);
537        $this->setIfExists('virtual_machine_ml_score', $data ?? [], null);
538        $this->setIfExists('vpn', $data ?? [], null);
539        $this->setIfExists('vpn_confidence', $data ?? [], null);
540        $this->setIfExists('vpn_origin_timezone', $data ?? [], null);
541        $this->setIfExists('vpn_origin_country', $data ?? [], null);
542        $this->setIfExists('vpn_methods', $data ?? [], null);
543        $this->setIfExists('high_activity_device', $data ?? [], null);
544        $this->setIfExists('rare_device', $data ?? [], null);
545        $this->setIfExists('rare_device_percentile_bucket', $data ?? [], null);
546        $this->setIfExists('raw_device_attributes', $data ?? [], null);
547        $this->setIfExists('labels', $data ?? [], null);
548    }
549
550    /**
551     * Gets the string presentation of the object.
552     *
553     */
554    public function __toString(): string
555    {
556        return json_encode(
557            ObjectSerializer::sanitizeForSerialization($this),
558            JSON_PRETTY_PRINT
559        );
560    }
561
562    /**
563     * Array of property to type mappings. Used for (de)serialization.
564     *
565     */
566    public static function openAPITypes(): array
567    {
568        return self::$openAPITypes;
569    }
570
571    /**
572     * Array of property to format mappings. Used for (de)serialization.
573     */
574    public static function openAPIFormats(): array
575    {
576        return self::$openAPIFormats;
577    }
578
579    /**
580     * Checks if a property is nullable.
581     *
582     */
583    public static function isNullable(string $property): bool
584    {
585        return self::openAPINullables()[$property] ?? false;
586    }
587
588    /**
589     * Checks if a nullable property is set to null.
590     *
591     */
592    public function isNullableSetToNull(string $property): bool
593    {
594        return in_array($property, $this->getOpenAPINullablesSetToNull(), true);
595    }
596
597    /**
598     * Array of attributes where the key is the local name,
599     * and the value is the original name.
600     *
601     */
602    public static function attributeMap(): array
603    {
604        return self::$attributeMap;
605    }
606
607    /**
608     * Array of attributes to setter functions (for deserialization of responses).
609     *
610     */
611    public static function setters(): array
612    {
613        return self::$setters;
614    }
615
616    /**
617     * Array of attributes to getter functions (for serialization of requests).
618     *
619     */
620    public static function getters(): array
621    {
622        return self::$getters;
623    }
624
625    /**
626     * The original name of the model.
627     *
628     */
629    public function getModelName(): string
630    {
631        return self::$openAPIModelName;
632    }
633
634    /**
635     * Show all the invalid properties with reasons.
636     *
637     * @return array invalid properties with reasons
638     */
639    public function listInvalidProperties(): array
640    {
641        $invalidProperties = [];
642
643        if (null === $this->container['event_id']) {
644            $invalidProperties[] = "'event_id' can't be null";
645        }
646        if (null === $this->container['timestamp']) {
647            $invalidProperties[] = "'timestamp' can't be null";
648        }
649        if (!is_null($this->container['proxy_ml_score']) && ($this->container['proxy_ml_score'] > 1)) {
650            $invalidProperties[] = "invalid value for 'proxy_ml_score', must be smaller than or equal to 1.";
651        }
652
653        if (!is_null($this->container['proxy_ml_score']) && ($this->container['proxy_ml_score'] < 0)) {
654            $invalidProperties[] = "invalid value for 'proxy_ml_score', must be bigger than or equal to 0.";
655        }
656
657        if (!is_null($this->container['tampering_ml_score']) && ($this->container['tampering_ml_score'] > 1)) {
658            $invalidProperties[] = "invalid value for 'tampering_ml_score', must be smaller than or equal to 1.";
659        }
660
661        if (!is_null($this->container['tampering_ml_score']) && ($this->container['tampering_ml_score'] < 0)) {
662            $invalidProperties[] = "invalid value for 'tampering_ml_score', must be bigger than or equal to 0.";
663        }
664
665        if (!is_null($this->container['virtual_machine_ml_score']) && ($this->container['virtual_machine_ml_score'] > 1)) {
666            $invalidProperties[] = "invalid value for 'virtual_machine_ml_score', must be smaller than or equal to 1.";
667        }
668
669        if (!is_null($this->container['virtual_machine_ml_score']) && ($this->container['virtual_machine_ml_score'] < 0)) {
670            $invalidProperties[] = "invalid value for 'virtual_machine_ml_score', must be bigger than or equal to 0.";
671        }
672
673        return $invalidProperties;
674    }
675
676    /**
677     * Validate all the properties in the model
678     * return true if all passed.
679     *
680     * @return bool True if all properties are valid
681     */
682    public function valid(): bool
683    {
684        return 0 === count($this->listInvalidProperties());
685    }
686
687    /**
688     * Gets event_id.
689     *
690     */
691    public function getEventId(): ?string
692    {
693        return $this->container['event_id'];
694    }
695
696    /**
697     * Sets event_id.
698     *
699     * @param string $event_id Unique identifier of the user's request. The first portion of the event_id is a unix epoch milliseconds timestamp For example: `1758130560902.8tRtrH`
700     *
701     */
702    public function setEventId(string $event_id): self
703    {
704        $this->container['event_id'] = $event_id;
705
706        return $this;
707    }
708
709    /**
710     * Gets timestamp.
711     *
712     */
713    public function getTimestamp(): ?int
714    {
715        return $this->container['timestamp'];
716    }
717
718    /**
719     * Sets timestamp.
720     *
721     * @param int $timestamp timestamp of the event with millisecond precision in Unix time
722     *
723     */
724    public function setTimestamp(int $timestamp): self
725    {
726        $this->container['timestamp'] = $timestamp;
727
728        return $this;
729    }
730
731    /**
732     * Gets incremental_identification_status.
733     *
734     */
735    public function getIncrementalIdentificationStatus(): ?IncrementalIdentificationStatus
736    {
737        return $this->container['incremental_identification_status'];
738    }
739
740    /**
741     * Sets incremental_identification_status.
742     *
743     * @param IncrementalIdentificationStatus $incremental_identification_status incremental_identification_status
744     *
745     */
746    public function setIncrementalIdentificationStatus(IncrementalIdentificationStatus $incremental_identification_status): self
747    {
748        $this->container['incremental_identification_status'] = $incremental_identification_status;
749
750        return $this;
751    }
752
753    /**
754     * Gets linked_id.
755     *
756     */
757    public function getLinkedId(): ?string
758    {
759        return $this->container['linked_id'];
760    }
761
762    /**
763     * Sets linked_id.
764     *
765     * @param string $linked_id a customer-provided id that was sent with the request
766     *
767     */
768    public function setLinkedId(string $linked_id): self
769    {
770        $this->container['linked_id'] = $linked_id;
771
772        return $this;
773    }
774
775    /**
776     * Gets environment_id.
777     *
778     */
779    public function getEnvironmentId(): ?string
780    {
781        return $this->container['environment_id'];
782    }
783
784    /**
785     * Sets environment_id.
786     *
787     * @param string $environment_id Environment Id of the event. For example: `ae_47abaca3db2c7c43`
788     *
789     */
790    public function setEnvironmentId(string $environment_id): self
791    {
792        $this->container['environment_id'] = $environment_id;
793
794        return $this;
795    }
796
797    /**
798     * Gets suspect.
799     *
800     */
801    public function getSuspect(): ?bool
802    {
803        return $this->container['suspect'];
804    }
805
806    /**
807     * Sets suspect.
808     *
809     * @param bool $suspect Field is `true` if you have previously set the `suspect` flag for this event using the [Server API Update event endpoint](https://docs.fingerprint.com/reference/server-api-v4-update-event).
810     *
811     */
812    public function setSuspect(bool $suspect): self
813    {
814        $this->container['suspect'] = $suspect;
815
816        return $this;
817    }
818
819    /**
820     * Gets sdk.
821     *
822     */
823    public function getSdk(): ?SDK
824    {
825        return $this->container['sdk'];
826    }
827
828    /**
829     * Sets sdk.
830     *
831     * @param SDK $sdk sdk
832     *
833     */
834    public function setSdk(SDK $sdk): self
835    {
836        $this->container['sdk'] = $sdk;
837
838        return $this;
839    }
840
841    /**
842     * Gets replayed.
843     *
844     */
845    public function getReplayed(): ?bool
846    {
847        return $this->container['replayed'];
848    }
849
850    /**
851     * Sets replayed.
852     *
853     * @param bool $replayed `true` if we determined that this payload was replayed, `false` otherwise
854     *
855     */
856    public function setReplayed(bool $replayed): self
857    {
858        $this->container['replayed'] = $replayed;
859
860        return $this;
861    }
862
863    /**
864     * Gets identification.
865     *
866     */
867    public function getIdentification(): ?Identification
868    {
869        return $this->container['identification'];
870    }
871
872    /**
873     * Sets identification.
874     *
875     * @param Identification $identification identification
876     *
877     */
878    public function setIdentification(Identification $identification): self
879    {
880        $this->container['identification'] = $identification;
881
882        return $this;
883    }
884
885    /**
886     * Gets supplementary_id_high_recall.
887     *
888     */
889    public function getSupplementaryIdHighRecall(): ?SupplementaryIDHighRecall
890    {
891        return $this->container['supplementary_id_high_recall'];
892    }
893
894    /**
895     * Sets supplementary_id_high_recall.
896     *
897     * @param SupplementaryIDHighRecall $supplementary_id_high_recall supplementary_id_high_recall
898     *
899     */
900    public function setSupplementaryIdHighRecall(SupplementaryIDHighRecall $supplementary_id_high_recall): self
901    {
902        $this->container['supplementary_id_high_recall'] = $supplementary_id_high_recall;
903
904        return $this;
905    }
906
907    /**
908     * Gets tags.
909     *
910     * @return array<string,mixed>|null
911     */
912    public function getTags(): ?array
913    {
914        return $this->container['tags'];
915    }
916
917    /**
918     * Sets tags.
919     *
920     * @param array<string,mixed> $tags a customer-provided value or an object that was sent with the identification request or updated later
921     *
922     */
923    public function setTags(array $tags): self
924    {
925        $this->container['tags'] = $tags;
926
927        return $this;
928    }
929
930    /**
931     * Gets url.
932     *
933     */
934    public function getUrl(): ?string
935    {
936        return $this->container['url'];
937    }
938
939    /**
940     * Sets url.
941     *
942     * @param string $url Page URL from which the request was sent. For example `https://example.com/`
943     *
944     */
945    public function setUrl(string $url): self
946    {
947        $this->container['url'] = $url;
948
949        return $this;
950    }
951
952    /**
953     * Gets bundle_id.
954     *
955     */
956    public function getBundleId(): ?string
957    {
958        return $this->container['bundle_id'];
959    }
960
961    /**
962     * Sets bundle_id.
963     *
964     * @param string $bundle_id Bundle Id of the iOS application integrated with the Fingerprint SDK for the event. For example: `com.foo.app`
965     *
966     */
967    public function setBundleId(string $bundle_id): self
968    {
969        $this->container['bundle_id'] = $bundle_id;
970
971        return $this;
972    }
973
974    /**
975     * Gets package_name.
976     *
977     */
978    public function getPackageName(): ?string
979    {
980        return $this->container['package_name'];
981    }
982
983    /**
984     * Sets package_name.
985     *
986     * @param string $package_name Package name of the Android application integrated with the Fingerprint SDK for the event. For example: `com.foo.app`
987     *
988     */
989    public function setPackageName(string $package_name): self
990    {
991        $this->container['package_name'] = $package_name;
992
993        return $this;
994    }
995
996    /**
997     * Gets ip_address.
998     *
999     */
1000    public function getIpAddress(): ?string
1001    {
1002        return $this->container['ip_address'];
1003    }
1004
1005    /**
1006     * Sets ip_address.
1007     *
1008     * @param string $ip_address IP address of the requesting browser or bot
1009     *
1010     */
1011    public function setIpAddress(string $ip_address): self
1012    {
1013        $this->container['ip_address'] = $ip_address;
1014
1015        return $this;
1016    }
1017
1018    /**
1019     * Gets user_agent.
1020     *
1021     */
1022    public function getUserAgent(): ?string
1023    {
1024        return $this->container['user_agent'];
1025    }
1026
1027    /**
1028     * Sets user_agent.
1029     *
1030     * @param string $user_agent User Agent of the client, for example: `Mozilla/5.0 (Windows NT 6.1; Win64; x64) ....`
1031     *
1032     */
1033    public function setUserAgent(string $user_agent): self
1034    {
1035        $this->container['user_agent'] = $user_agent;
1036
1037        return $this;
1038    }
1039
1040    /**
1041     * Gets client_referrer.
1042     *
1043     */
1044    public function getClientReferrer(): ?string
1045    {
1046        return $this->container['client_referrer'];
1047    }
1048
1049    /**
1050     * Sets client_referrer.
1051     *
1052     * @param string $client_referrer Client Referrer field corresponds to the `document.referrer` field gathered during an identification request. The value is an empty string if the user navigated to the page directly (not through a link, but, for example, by using a bookmark) For example: `https://example.com/blog/my-article`
1053     *
1054     */
1055    public function setClientReferrer(string $client_referrer): self
1056    {
1057        $this->container['client_referrer'] = $client_referrer;
1058
1059        return $this;
1060    }
1061
1062    /**
1063     * Gets browser_details.
1064     *
1065     */
1066    public function getBrowserDetails(): ?BrowserDetails
1067    {
1068        return $this->container['browser_details'];
1069    }
1070
1071    /**
1072     * Sets browser_details.
1073     *
1074     * @param BrowserDetails $browser_details browser_details
1075     *
1076     */
1077    public function setBrowserDetails(BrowserDetails $browser_details): self
1078    {
1079        $this->container['browser_details'] = $browser_details;
1080
1081        return $this;
1082    }
1083
1084    /**
1085     * Gets proximity.
1086     *
1087     */
1088    public function getProximity(): ?Proximity
1089    {
1090        return $this->container['proximity'];
1091    }
1092
1093    /**
1094     * Sets proximity.
1095     *
1096     * @param Proximity $proximity proximity
1097     *
1098     */
1099    public function setProximity(Proximity $proximity): self
1100    {
1101        $this->container['proximity'] = $proximity;
1102
1103        return $this;
1104    }
1105
1106    /**
1107     * Gets bot.
1108     *
1109     */
1110    public function getBot(): ?BotResult
1111    {
1112        return $this->container['bot'];
1113    }
1114
1115    /**
1116     * Sets bot.
1117     *
1118     * @param BotResult $bot bot
1119     *
1120     */
1121    public function setBot(BotResult $bot): self
1122    {
1123        $this->container['bot'] = $bot;
1124
1125        return $this;
1126    }
1127
1128    /**
1129     * Gets bot_type.
1130     *
1131     */
1132    public function getBotType(): ?string
1133    {
1134        return $this->container['bot_type'];
1135    }
1136
1137    /**
1138     * Sets bot_type.
1139     *
1140     * @param string $bot_type additional classification of the bot type if detected
1141     *
1142     */
1143    public function setBotType(string $bot_type): self
1144    {
1145        $this->container['bot_type'] = $bot_type;
1146
1147        return $this;
1148    }
1149
1150    /**
1151     * Gets bot_info.
1152     *
1153     */
1154    public function getBotInfo(): ?BotInfo
1155    {
1156        return $this->container['bot_info'];
1157    }
1158
1159    /**
1160     * Sets bot_info.
1161     *
1162     * @param BotInfo $bot_info bot_info
1163     *
1164     */
1165    public function setBotInfo(BotInfo $bot_info): self
1166    {
1167        $this->container['bot_info'] = $bot_info;
1168
1169        return $this;
1170    }
1171
1172    /**
1173     * Gets cloned_app.
1174     *
1175     */
1176    public function getClonedApp(): ?bool
1177    {
1178        return $this->container['cloned_app'];
1179    }
1180
1181    /**
1182     * Sets cloned_app.
1183     *
1184     * @param bool $cloned_app Android specific cloned application detection. There are 2 values:  * `true` - Presence of app cloners work detected (e.g. fully cloned application found or launch of it inside of a not main working profile detected). * `false` - No signs of cloned application detected or the client is not Android.
1185     *
1186     */
1187    public function setClonedApp(bool $cloned_app): self
1188    {
1189        $this->container['cloned_app'] = $cloned_app;
1190
1191        return $this;
1192    }
1193
1194    /**
1195     * Gets developer_tools.
1196     *
1197     */
1198    public function getDeveloperTools(): ?bool
1199    {
1200        return $this->container['developer_tools'];
1201    }
1202
1203    /**
1204     * Sets developer_tools.
1205     *
1206     * @param bool $developer_tools `true` if the browser has DevTools open (Chrome, Firefox) or the Android/iOS device has Developer Tools enabled, `false` otherwise
1207     *
1208     */
1209    public function setDeveloperTools(bool $developer_tools): self
1210    {
1211        $this->container['developer_tools'] = $developer_tools;
1212
1213        return $this;
1214    }
1215
1216    /**
1217     * Gets emulator.
1218     *
1219     */
1220    public function getEmulator(): ?bool
1221    {
1222        return $this->container['emulator'];
1223    }
1224
1225    /**
1226     * Sets emulator.
1227     *
1228     * @param bool $emulator 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 or the client is not Android.
1229     *
1230     */
1231    public function setEmulator(bool $emulator): self
1232    {
1233        $this->container['emulator'] = $emulator;
1234
1235        return $this;
1236    }
1237
1238    /**
1239     * Gets factory_reset_timestamp.
1240     *
1241     */
1242    public function getFactoryResetTimestamp(): ?int
1243    {
1244        return $this->container['factory_reset_timestamp'];
1245    }
1246
1247    /**
1248     * Sets factory_reset_timestamp.
1249     *
1250     * @param int $factory_reset_timestamp The time of the most recent factory reset that happened on the **mobile device** is expressed as Unix epoch time. When a factory reset cannot be detected on the mobile device or when the request is initiated from a browser,  this field will correspond to the *epoch* time (i.e 1 Jan 1970 UTC) as a value of 0. See [Factory Reset Detection](https://docs.fingerprint.com/docs/smart-signals-reference#factory-reset-detection) to learn more about this Smart Signal.
1251     *
1252     */
1253    public function setFactoryResetTimestamp(int $factory_reset_timestamp): self
1254    {
1255        $this->container['factory_reset_timestamp'] = $factory_reset_timestamp;
1256
1257        return $this;
1258    }
1259
1260    /**
1261     * Gets frida.
1262     *
1263     */
1264    public function getFrida(): ?bool
1265    {
1266        return $this->container['frida'];
1267    }
1268
1269    /**
1270     * Sets frida.
1271     *
1272     * @param bool $frida [Frida](https://frida.re/docs/) detection for Android and iOS devices. There are 2 values: * `true` - Frida detected * `false` - No signs of Frida or the client is not a mobile device.
1273     *
1274     */
1275    public function setFrida(bool $frida): self
1276    {
1277        $this->container['frida'] = $frida;
1278
1279        return $this;
1280    }
1281
1282    /**
1283     * Gets ip_blocklist.
1284     *
1285     */
1286    public function getIpBlocklist(): ?IPBlockList
1287    {
1288        return $this->container['ip_blocklist'];
1289    }
1290
1291    /**
1292     * Sets ip_blocklist.
1293     *
1294     * @param IPBlockList $ip_blocklist ip_blocklist
1295     *
1296     */
1297    public function setIpBlocklist(IPBlockList $ip_blocklist): self
1298    {
1299        $this->container['ip_blocklist'] = $ip_blocklist;
1300
1301        return $this;
1302    }
1303
1304    /**
1305     * Gets ip_info.
1306     *
1307     */
1308    public function getIpInfo(): ?IPInfo
1309    {
1310        return $this->container['ip_info'];
1311    }
1312
1313    /**
1314     * Sets ip_info.
1315     *
1316     * @param IPInfo $ip_info ip_info
1317     *
1318     */
1319    public function setIpInfo(IPInfo $ip_info): self
1320    {
1321        $this->container['ip_info'] = $ip_info;
1322
1323        return $this;
1324    }
1325
1326    /**
1327     * Gets proxy.
1328     *
1329     */
1330    public function getProxy(): ?bool
1331    {
1332        return $this->container['proxy'];
1333    }
1334
1335    /**
1336     * Sets proxy.
1337     *
1338     * @param bool $proxy IP address was used by a public proxy provider or belonged to a known recent residential proxy
1339     *
1340     */
1341    public function setProxy(bool $proxy): self
1342    {
1343        $this->container['proxy'] = $proxy;
1344
1345        return $this;
1346    }
1347
1348    /**
1349     * Gets proxy_confidence.
1350     *
1351     */
1352    public function getProxyConfidence(): ?ProxyConfidence
1353    {
1354        return $this->container['proxy_confidence'];
1355    }
1356
1357    /**
1358     * Sets proxy_confidence.
1359     *
1360     * @param ProxyConfidence $proxy_confidence proxy_confidence
1361     *
1362     */
1363    public function setProxyConfidence(ProxyConfidence $proxy_confidence): self
1364    {
1365        $this->container['proxy_confidence'] = $proxy_confidence;
1366
1367        return $this;
1368    }
1369
1370    /**
1371     * Gets proxy_details.
1372     *
1373     */
1374    public function getProxyDetails(): ?ProxyDetails
1375    {
1376        return $this->container['proxy_details'];
1377    }
1378
1379    /**
1380     * Sets proxy_details.
1381     *
1382     * @param ProxyDetails $proxy_details proxy_details
1383     *
1384     */
1385    public function setProxyDetails(ProxyDetails $proxy_details): self
1386    {
1387        $this->container['proxy_details'] = $proxy_details;
1388
1389        return $this;
1390    }
1391
1392    /**
1393     * Gets proxy_ml_score.
1394     *
1395     */
1396    public function getProxyMlScore(): ?float
1397    {
1398        return $this->container['proxy_ml_score'];
1399    }
1400
1401    /**
1402     * Sets proxy_ml_score.
1403     *
1404     * @param float $proxy_ml_score Machine learning–based proxy 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 `proxy` detection result. This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/).
1405     *
1406     */
1407    public function setProxyMlScore(float $proxy_ml_score): self
1408    {
1409        if ($proxy_ml_score > 1) {
1410            throw new \InvalidArgumentException('invalid value for $proxy_ml_score when calling Event., must be smaller than or equal to 1.');
1411        }
1412        if ($proxy_ml_score < 0) {
1413            throw new \InvalidArgumentException('invalid value for $proxy_ml_score when calling Event., must be bigger than or equal to 0.');
1414        }
1415
1416        $this->container['proxy_ml_score'] = $proxy_ml_score;
1417
1418        return $this;
1419    }
1420
1421    /**
1422     * Gets incognito.
1423     *
1424     */
1425    public function getIncognito(): ?bool
1426    {
1427        return $this->container['incognito'];
1428    }
1429
1430    /**
1431     * Sets incognito.
1432     *
1433     * @param bool $incognito `true` if we detected incognito mode used in the browser, `false` otherwise
1434     *
1435     */
1436    public function setIncognito(bool $incognito): self
1437    {
1438        $this->container['incognito'] = $incognito;
1439
1440        return $this;
1441    }
1442
1443    /**
1444     * Gets jailbroken.
1445     *
1446     */
1447    public function getJailbroken(): ?bool
1448    {
1449        return $this->container['jailbroken'];
1450    }
1451
1452    /**
1453     * Sets jailbroken.
1454     *
1455     * @param bool $jailbroken iOS specific jailbreak detection. There are 2 values:  * `true` - Jailbreak detected. * `false` - No signs of jailbreak or the client is not iOS.
1456     *
1457     */
1458    public function setJailbroken(bool $jailbroken): self
1459    {
1460        $this->container['jailbroken'] = $jailbroken;
1461
1462        return $this;
1463    }
1464
1465    /**
1466     * Gets location_spoofing.
1467     *
1468     */
1469    public function getLocationSpoofing(): ?bool
1470    {
1471        return $this->container['location_spoofing'];
1472    }
1473
1474    /**
1475     * Sets location_spoofing.
1476     *
1477     * @param bool $location_spoofing flag indicating whether the request came from a mobile device with location spoofing enabled
1478     *
1479     */
1480    public function setLocationSpoofing(bool $location_spoofing): self
1481    {
1482        $this->container['location_spoofing'] = $location_spoofing;
1483
1484        return $this;
1485    }
1486
1487    /**
1488     * Gets mitm_attack.
1489     *
1490     */
1491    public function getMitmAttack(): ?bool
1492    {
1493        return $this->container['mitm_attack'];
1494    }
1495
1496    /**
1497     * Sets mitm_attack.
1498     *
1499     * @param bool $mitm_attack * `true` - When requests made from your users' mobile devices to Fingerprint servers have been intercepted and potentially modified.  * `false` - Otherwise or when the request originated from a browser. See [MitM Attack Detection](https://docs.fingerprint.com/docs/smart-signals-reference#mitm-attack-detection) to learn more about this Smart Signal.
1500     *
1501     */
1502    public function setMitmAttack(bool $mitm_attack): self
1503    {
1504        $this->container['mitm_attack'] = $mitm_attack;
1505
1506        return $this;
1507    }
1508
1509    /**
1510     * Gets privacy_settings.
1511     *
1512     */
1513    public function getPrivacySettings(): ?bool
1514    {
1515        return $this->container['privacy_settings'];
1516    }
1517
1518    /**
1519     * Sets privacy_settings.
1520     *
1521     * @param bool $privacy_settings `true` if the request is from a privacy aware browser (e.g. Tor) or from a browser in which fingerprinting is blocked. Otherwise `false`.
1522     *
1523     */
1524    public function setPrivacySettings(bool $privacy_settings): self
1525    {
1526        $this->container['privacy_settings'] = $privacy_settings;
1527
1528        return $this;
1529    }
1530
1531    /**
1532     * Gets root_apps.
1533     *
1534     */
1535    public function getRootApps(): ?bool
1536    {
1537        return $this->container['root_apps'];
1538    }
1539
1540    /**
1541     * Sets root_apps.
1542     *
1543     * @param bool $root_apps Android specific root management apps detection. There are 2 values:  * `true` - Root Management Apps detected (e.g. Magisk). * `false` - No Root Management Apps detected or the client isn't Android.
1544     *
1545     */
1546    public function setRootApps(bool $root_apps): self
1547    {
1548        $this->container['root_apps'] = $root_apps;
1549
1550        return $this;
1551    }
1552
1553    /**
1554     * Gets rule_action.
1555     *
1556     */
1557    public function getRuleAction(): ?EventRuleAction
1558    {
1559        return $this->container['rule_action'];
1560    }
1561
1562    /**
1563     * Sets rule_action.
1564     *
1565     * @param EventRuleAction $rule_action rule_action
1566     *
1567     */
1568    public function setRuleAction(EventRuleAction $rule_action): self
1569    {
1570        $this->container['rule_action'] = $rule_action;
1571
1572        return $this;
1573    }
1574
1575    /**
1576     * Gets simulator.
1577     *
1578     */
1579    public function getSimulator(): ?bool
1580    {
1581        return $this->container['simulator'];
1582    }
1583
1584    /**
1585     * Sets simulator.
1586     *
1587     * @param bool $simulator iOS specific simulator detection. There are 2 values: * `true` - Simulator environment detected. * `false` - No signs of simulator or the client is not iOS.
1588     *
1589     */
1590    public function setSimulator(bool $simulator): self
1591    {
1592        $this->container['simulator'] = $simulator;
1593
1594        return $this;
1595    }
1596
1597    /**
1598     * Gets suspect_score.
1599     *
1600     */
1601    public function getSuspectScore(): ?int
1602    {
1603        return $this->container['suspect_score'];
1604    }
1605
1606    /**
1607     * Sets suspect_score.
1608     *
1609     * @param int $suspect_score Suspect Score is an easy way to integrate Smart Signals into your fraud protection work flow.  It is a weighted representation of all Smart Signals present in the payload that helps identify suspicious activity. The value range is [0; S] where S is sum of all Smart Signals weights.  See more details here: https://docs.fingerprint.com/docs/suspect-score
1610     *
1611     */
1612    public function setSuspectScore(int $suspect_score): self
1613    {
1614        $this->container['suspect_score'] = $suspect_score;
1615
1616        return $this;
1617    }
1618
1619    /**
1620     * Gets tampering.
1621     *
1622     */
1623    public function getTampering(): ?bool
1624    {
1625        return $this->container['tampering'];
1626    }
1627
1628    /**
1629     * Sets tampering.
1630     *
1631     * @param bool $tampering The field can be used as a standalone flag for tampering detection. Alternatively, the more granular fields documented below can be used for workflows that require more context. * `true` if tampering is detected through an anomalous browser signature, anti-detect browser detection, or other tampering-related methods * `false` if none of the tampering checks return a positive result
1632     *
1633     */
1634    public function setTampering(bool $tampering): self
1635    {
1636        $this->container['tampering'] = $tampering;
1637
1638        return $this;
1639    }
1640
1641    /**
1642     * Gets tampering_confidence.
1643     *
1644     */
1645    public function getTamperingConfidence(): ?TamperingConfidence
1646    {
1647        return $this->container['tampering_confidence'];
1648    }
1649
1650    /**
1651     * Sets tampering_confidence.
1652     *
1653     * @param TamperingConfidence $tampering_confidence tampering_confidence
1654     *
1655     */
1656    public function setTamperingConfidence(TamperingConfidence $tampering_confidence): self
1657    {
1658        $this->container['tampering_confidence'] = $tampering_confidence;
1659
1660        return $this;
1661    }
1662
1663    /**
1664     * Gets tampering_ml_score.
1665     *
1666     */
1667    public function getTamperingMlScore(): ?float
1668    {
1669        return $this->container['tampering_ml_score'];
1670    }
1671
1672    /**
1673     * Sets tampering_ml_score.
1674     *
1675     * @param float $tampering_ml_score The output of this model is captured as tampering_ml_score, a number indicating how likely an event is coming from an anti detect browser. Values close to 1 signify higher confidence and we consider anything above the threshold of 0.8 to be actionable (the result and anti_detect_browser fields conveniently captures that fact)
1676     *
1677     */
1678    public function setTamperingMlScore(float $tampering_ml_score): self
1679    {
1680        if ($tampering_ml_score > 1) {
1681            throw new \InvalidArgumentException('invalid value for $tampering_ml_score when calling Event., must be smaller than or equal to 1.');
1682        }
1683        if ($tampering_ml_score < 0) {
1684            throw new \InvalidArgumentException('invalid value for $tampering_ml_score when calling Event., must be bigger than or equal to 0.');
1685        }
1686
1687        $this->container['tampering_ml_score'] = $tampering_ml_score;
1688
1689        return $this;
1690    }
1691
1692    /**
1693     * Gets tampering_details.
1694     *
1695     */
1696    public function getTamperingDetails(): ?TamperingDetails
1697    {
1698        return $this->container['tampering_details'];
1699    }
1700
1701    /**
1702     * Sets tampering_details.
1703     *
1704     * @param TamperingDetails $tampering_details tampering_details
1705     *
1706     */
1707    public function setTamperingDetails(TamperingDetails $tampering_details): self
1708    {
1709        $this->container['tampering_details'] = $tampering_details;
1710
1711        return $this;
1712    }
1713
1714    /**
1715     * Gets velocity.
1716     *
1717     */
1718    public function getVelocity(): ?Velocity
1719    {
1720        return $this->container['velocity'];
1721    }
1722
1723    /**
1724     * Sets velocity.
1725     *
1726     * @param Velocity $velocity velocity
1727     *
1728     */
1729    public function setVelocity(Velocity $velocity): self
1730    {
1731        $this->container['velocity'] = $velocity;
1732
1733        return $this;
1734    }
1735
1736    /**
1737     * Gets virtual_machine.
1738     *
1739     */
1740    public function getVirtualMachine(): ?bool
1741    {
1742        return $this->container['virtual_machine'];
1743    }
1744
1745    /**
1746     * Sets virtual_machine.
1747     *
1748     * @param bool $virtual_machine `true` if the request came from a browser running inside a virtual machine (e.g. VMWare), `false` otherwise.
1749     *
1750     */
1751    public function setVirtualMachine(bool $virtual_machine): self
1752    {
1753        $this->container['virtual_machine'] = $virtual_machine;
1754
1755        return $this;
1756    }
1757
1758    /**
1759     * Gets virtual_machine_ml_score.
1760     *
1761     */
1762    public function getVirtualMachineMlScore(): ?float
1763    {
1764        return $this->container['virtual_machine_ml_score'];
1765    }
1766
1767    /**
1768     * Sets virtual_machine_ml_score.
1769     *
1770     * @param float $virtual_machine_ml_score Machine learning–based virtual machine score, represented as a floating-point value between 0 and 1 (inclusive), with up to three decimal places of precision. A higher score means a higher confidence in the positive `virtual_machine` detection result. This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/).
1771     *
1772     */
1773    public function setVirtualMachineMlScore(float $virtual_machine_ml_score): self
1774    {
1775        if ($virtual_machine_ml_score > 1) {
1776            throw new \InvalidArgumentException('invalid value for $virtual_machine_ml_score when calling Event., must be smaller than or equal to 1.');
1777        }
1778        if ($virtual_machine_ml_score < 0) {
1779            throw new \InvalidArgumentException('invalid value for $virtual_machine_ml_score when calling Event., must be bigger than or equal to 0.');
1780        }
1781
1782        $this->container['virtual_machine_ml_score'] = $virtual_machine_ml_score;
1783
1784        return $this;
1785    }
1786
1787    /**
1788     * Gets vpn.
1789     *
1790     */
1791    public function getVpn(): ?bool
1792    {
1793        return $this->container['vpn'];
1794    }
1795
1796    /**
1797     * Sets vpn.
1798     *
1799     * @param bool $vpn VPN or other anonymizing service has been used when sending the request
1800     *
1801     */
1802    public function setVpn(bool $vpn): self
1803    {
1804        $this->container['vpn'] = $vpn;
1805
1806        return $this;
1807    }
1808
1809    /**
1810     * Gets vpn_confidence.
1811     *
1812     */
1813    public function getVpnConfidence(): ?VpnConfidence
1814    {
1815        return $this->container['vpn_confidence'];
1816    }
1817
1818    /**
1819     * Sets vpn_confidence.
1820     *
1821     * @param VpnConfidence $vpn_confidence vpn_confidence
1822     *
1823     */
1824    public function setVpnConfidence(VpnConfidence $vpn_confidence): self
1825    {
1826        $this->container['vpn_confidence'] = $vpn_confidence;
1827
1828        return $this;
1829    }
1830
1831    /**
1832     * Gets vpn_origin_timezone.
1833     *
1834     */
1835    public function getVpnOriginTimezone(): ?string
1836    {
1837        return $this->container['vpn_origin_timezone'];
1838    }
1839
1840    /**
1841     * Sets vpn_origin_timezone.
1842     *
1843     * @param string $vpn_origin_timezone local timezone which is used in timezone_mismatch method
1844     *
1845     */
1846    public function setVpnOriginTimezone(string $vpn_origin_timezone): self
1847    {
1848        $this->container['vpn_origin_timezone'] = $vpn_origin_timezone;
1849
1850        return $this;
1851    }
1852
1853    /**
1854     * Gets vpn_origin_country.
1855     *
1856     */
1857    public function getVpnOriginCountry(): ?string
1858    {
1859        return $this->container['vpn_origin_country'];
1860    }
1861
1862    /**
1863     * Sets vpn_origin_country.
1864     *
1865     * @param string $vpn_origin_country Country of the request (only for Android SDK version >= 2.4.0, ISO 3166 format or unknown).
1866     *
1867     */
1868    public function setVpnOriginCountry(string $vpn_origin_country): self
1869    {
1870        $this->container['vpn_origin_country'] = $vpn_origin_country;
1871
1872        return $this;
1873    }
1874
1875    /**
1876     * Gets vpn_methods.
1877     *
1878     */
1879    public function getVpnMethods(): ?VpnMethods
1880    {
1881        return $this->container['vpn_methods'];
1882    }
1883
1884    /**
1885     * Sets vpn_methods.
1886     *
1887     * @param VpnMethods $vpn_methods vpn_methods
1888     *
1889     */
1890    public function setVpnMethods(VpnMethods $vpn_methods): self
1891    {
1892        $this->container['vpn_methods'] = $vpn_methods;
1893
1894        return $this;
1895    }
1896
1897    /**
1898     * Gets high_activity_device.
1899     *
1900     */
1901    public function getHighActivityDevice(): ?bool
1902    {
1903        return $this->container['high_activity_device'];
1904    }
1905
1906    /**
1907     * Sets high_activity_device.
1908     *
1909     * @param bool $high_activity_device flag indicating if the request came from a high-activity visitor
1910     *
1911     */
1912    public function setHighActivityDevice(bool $high_activity_device): self
1913    {
1914        $this->container['high_activity_device'] = $high_activity_device;
1915
1916        return $this;
1917    }
1918
1919    /**
1920     * Gets rare_device.
1921     *
1922     */
1923    public function getRareDevice(): ?bool
1924    {
1925        return $this->container['rare_device'];
1926    }
1927
1928    /**
1929     * Sets rare_device.
1930     *
1931     * @param bool $rare_device `true` if the device is considered rare based on its combination of hardware and software attributes.  A device is classified as rare if it falls within the top 99.9 percentile (lowest-frequency segment) of observed traffic,  or if its configuration has not been previously seen (`not_seen`). > This Smart Signal is currently in beta and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/).
1932     *
1933     */
1934    public function setRareDevice(bool $rare_device): self
1935    {
1936        $this->container['rare_device'] = $rare_device;
1937
1938        return $this;
1939    }
1940
1941    /**
1942     * Gets rare_device_percentile_bucket.
1943     *
1944     */
1945    public function getRareDevicePercentileBucket(): ?RareDevicePercentileBucket
1946    {
1947        return $this->container['rare_device_percentile_bucket'];
1948    }
1949
1950    /**
1951     * Sets rare_device_percentile_bucket.
1952     *
1953     * @param RareDevicePercentileBucket $rare_device_percentile_bucket rare_device_percentile_bucket
1954     *
1955     */
1956    public function setRareDevicePercentileBucket(RareDevicePercentileBucket $rare_device_percentile_bucket): self
1957    {
1958        $this->container['rare_device_percentile_bucket'] = $rare_device_percentile_bucket;
1959
1960        return $this;
1961    }
1962
1963    /**
1964     * Gets raw_device_attributes.
1965     *
1966     */
1967    public function getRawDeviceAttributes(): ?RawDeviceAttributes
1968    {
1969        return $this->container['raw_device_attributes'];
1970    }
1971
1972    /**
1973     * Sets raw_device_attributes.
1974     *
1975     * @param RawDeviceAttributes $raw_device_attributes raw_device_attributes
1976     *
1977     */
1978    public function setRawDeviceAttributes(RawDeviceAttributes $raw_device_attributes): self
1979    {
1980        $this->container['raw_device_attributes'] = $raw_device_attributes;
1981
1982        return $this;
1983    }
1984
1985    /**
1986     * Gets labels.
1987     *
1988     * @return LabelsInner[]|null
1989     */
1990    public function getLabels(): ?array
1991    {
1992        return $this->container['labels'];
1993    }
1994
1995    /**
1996     * Sets labels.
1997     *
1998     * @param LabelsInner[] $labels Each label returns a prediction (true or false) for a specific use case (label field) based on a machine learning score. The machine learning score is determined by a model trained on customer data for that use case. This field is in the beta phase and only available to select customers. If you are interested, please [contact our support team](https://fingerprint.com/support/).
1999     *
2000     */
2001    public function setLabels(array $labels): self
2002    {
2003        $this->container['labels'] = $labels;
2004
2005        return $this;
2006    }
2007
2008    /**
2009     * Returns true if offset exists. False otherwise.
2010     *
2011     * @param int|string $offset Offset
2012     *
2013     */
2014    public function offsetExists(mixed $offset): bool
2015    {
2016        return isset($this->container[$offset]);
2017    }
2018
2019    /**
2020     * Gets offset.
2021     *
2022     * @param int|string $offset Offset
2023     *
2024     * @return mixed|null
2025     */
2026    #[\ReturnTypeWillChange]
2027    public function offsetGet(mixed $offset): mixed
2028    {
2029        return $this->container[$offset] ?? null;
2030    }
2031
2032    /**
2033     * Sets value based on offset.
2034     *
2035     * @param int|null $offset Offset
2036     * @param mixed    $value  Value to be set
2037     *
2038     */
2039    public function offsetSet(mixed $offset, mixed $value): void
2040    {
2041        if (is_null($offset)) {
2042            $this->container[] = $value;
2043        } else {
2044            $this->container[$offset] = $value;
2045        }
2046    }
2047
2048    /**
2049     * Unsets offset.
2050     *
2051     * @param int|string $offset Offset
2052     *
2053     */
2054    public function offsetUnset(mixed $offset): void
2055    {
2056        unset($this->container[$offset]);
2057    }
2058
2059    /**
2060     * Serializes the object to a value that can be serialized natively by json_encode().
2061     *
2062     * @see https://www.php.net/manual/en/jsonserializable.jsonserialize.php
2063     *
2064     * @return mixed returns data which can be serialized by json_encode(), which is a value
2065     *               of any type other than a resource
2066     */
2067    #[\ReturnTypeWillChange]
2068    public function jsonSerialize(): mixed
2069    {
2070        return ObjectSerializer::sanitizeForSerialization($this);
2071    }
2072
2073    /**
2074     * Gets a header-safe presentation of the object.
2075     *
2076     */
2077    public function toHeaderValue(): string
2078    {
2079        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
2080    }
2081
2082    /**
2083     * Array of nullable properties.
2084     */
2085    protected static function openAPINullables(): array
2086    {
2087        return self::$openAPINullables;
2088    }
2089
2090    /**
2091     * Array of nullable field names deliberately set to null.
2092     *
2093     * @return bool[]
2094     */
2095    private function getOpenAPINullablesSetToNull(): array
2096    {
2097        return $this->openAPINullablesSetToNull;
2098    }
2099
2100    /**
2101     * Setter - Array of nullable field names deliberately set to null.
2102     *
2103     * @param bool[] $openAPINullablesSetToNull
2104     *
2105     * @codeCoverageIgnore
2106     */
2107    private function setOpenAPINullablesSetToNull(array $openAPINullablesSetToNull): void
2108    {
2109        $this->openAPINullablesSetToNull = $openAPINullablesSetToNull;
2110    }
2111
2112    /**
2113     * Sets $this->container[$variableName] to the given data or to the given default Value; if $variableName
2114     * is nullable and its value is set to null in the $fields array, then mark it as "set to null" in the
2115     * $this->openAPINullablesSetToNull array.
2116     *
2117     * @noinspection PhpSameParameterValueInspection
2118     */
2119    private function setIfExists(string $variableName, array $fields, mixed $defaultValue): void
2120    {
2121        if (self::isNullable($variableName) && array_key_exists($variableName, $fields) && is_null($fields[$variableName])) {
2122            $this->openAPINullablesSetToNull[] = $variableName; // @codeCoverageIgnore
2123        }
2124
2125        $this->container[$variableName] = $fields[$variableName] ?? $defaultValue;
2126    }
2127}