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