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