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