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