# coding: utf-8

"""
    Fingerprint Server API

    Fingerprint Server API allows you to search, update, and delete identification 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.   # noqa: E501

    OpenAPI spec version: 3
    Contact: support@fingerprint.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import re  # noqa: F401
from typing import Dict, List, Optional  # noqa: F401
from fingerprint_pro_server_api_sdk.base_model import BaseModel
from fingerprint_pro_server_api_sdk.models.tag import Tag
from datetime import datetime
from fingerprint_pro_server_api_sdk.models.deprecated_geolocation import DeprecatedGeolocation
from fingerprint_pro_server_api_sdk.models.identification_confidence import IdentificationConfidence
from fingerprint_pro_server_api_sdk.models.identification_seen_at import IdentificationSeenAt
from fingerprint_pro_server_api_sdk.models.identification_seen_at import IdentificationSeenAt
from fingerprint_pro_server_api_sdk.models.browser_details import BrowserDetails
from fingerprint_pro_server_api_sdk.models.raw_device_attributes import RawDeviceAttributes
from fingerprint_pro_server_api_sdk.models.botd_bot import BotdBot
from fingerprint_pro_server_api_sdk.models.webhook_root_apps import WebhookRootApps
from fingerprint_pro_server_api_sdk.models.webhook_emulator import WebhookEmulator
from fingerprint_pro_server_api_sdk.models.webhook_ip_info import WebhookIPInfo
from fingerprint_pro_server_api_sdk.models.webhook_ip_blocklist import WebhookIPBlocklist
from fingerprint_pro_server_api_sdk.models.webhook_tor import WebhookTor
from fingerprint_pro_server_api_sdk.models.webhook_vpn import WebhookVPN
from fingerprint_pro_server_api_sdk.models.webhook_proxy import WebhookProxy
from fingerprint_pro_server_api_sdk.models.webhook_tampering import WebhookTampering
from fingerprint_pro_server_api_sdk.models.webhook_cloned_app import WebhookClonedApp
from fingerprint_pro_server_api_sdk.models.webhook_factory_reset import WebhookFactoryReset
from fingerprint_pro_server_api_sdk.models.webhook_jailbroken import WebhookJailbroken
from fingerprint_pro_server_api_sdk.models.webhook_frida import WebhookFrida
from fingerprint_pro_server_api_sdk.models.webhook_privacy_settings import WebhookPrivacySettings
from fingerprint_pro_server_api_sdk.models.webhook_virtual_machine import WebhookVirtualMachine
from fingerprint_pro_server_api_sdk.models.webhook_raw_device_attributes import WebhookRawDeviceAttributes
from fingerprint_pro_server_api_sdk.models.webhook_high_activity import WebhookHighActivity
from fingerprint_pro_server_api_sdk.models.webhook_location_spoofing import WebhookLocationSpoofing
from fingerprint_pro_server_api_sdk.models.webhook_suspect_score import WebhookSuspectScore
from fingerprint_pro_server_api_sdk.models.webhook_remote_control import WebhookRemoteControl
from fingerprint_pro_server_api_sdk.models.webhook_velocity import WebhookVelocity
from fingerprint_pro_server_api_sdk.models.webhook_developer_tools import WebhookDeveloperTools
from fingerprint_pro_server_api_sdk.models.webhook_mit_m_attack import WebhookMitMAttack
from fingerprint_pro_server_api_sdk.models.sdk import SDK
from fingerprint_pro_server_api_sdk.models.webhook_supplementary_i_ds import WebhookSupplementaryIDs
from fingerprint_pro_server_api_sdk.models.webhook_proximity import WebhookProximity


class Webhook(BaseModel):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'request_id': 'str',
        'url': 'str',
        'ip': 'str',
        'environment_id': 'str',
        'tag': 'Tag',
        'time': 'datetime',
        'timestamp': 'int',
        'ip_location': 'DeprecatedGeolocation',
        'linked_id': 'str',
        'visitor_id': 'str',
        'visitor_found': 'bool',
        'confidence': 'IdentificationConfidence',
        'first_seen_at': 'IdentificationSeenAt',
        'last_seen_at': 'IdentificationSeenAt',
        'browser_details': 'BrowserDetails',
        'incognito': 'bool',
        'client_referrer': 'str',
        'components': 'RawDeviceAttributes',
        'bot': 'BotdBot',
        'user_agent': 'str',
        'root_apps': 'WebhookRootApps',
        'emulator': 'WebhookEmulator',
        'ip_info': 'WebhookIPInfo',
        'ip_blocklist': 'WebhookIPBlocklist',
        'tor': 'WebhookTor',
        'vpn': 'WebhookVPN',
        'proxy': 'WebhookProxy',
        'tampering': 'WebhookTampering',
        'cloned_app': 'WebhookClonedApp',
        'factory_reset': 'WebhookFactoryReset',
        'jailbroken': 'WebhookJailbroken',
        'frida': 'WebhookFrida',
        'privacy_settings': 'WebhookPrivacySettings',
        'virtual_machine': 'WebhookVirtualMachine',
        'raw_device_attributes': 'WebhookRawDeviceAttributes',
        'high_activity': 'WebhookHighActivity',
        'location_spoofing': 'WebhookLocationSpoofing',
        'suspect_score': 'WebhookSuspectScore',
        'remote_control': 'WebhookRemoteControl',
        'velocity': 'WebhookVelocity',
        'developer_tools': 'WebhookDeveloperTools',
        'mitm_attack': 'WebhookMitMAttack',
        'replayed': 'bool',
        'sdk': 'SDK',
        'supplementary_ids': 'WebhookSupplementaryIDs',
        'proximity': 'WebhookProximity'
    }

    nullable_map = {
        'request_id': False,
        'url': False,
        'ip': False,
        'environment_id': False,
        'tag': False,
        'time': False,
        'timestamp': False,
        'ip_location': False,
        'linked_id': False,
        'visitor_id': False,
        'visitor_found': False,
        'confidence': False,
        'first_seen_at': False,
        'last_seen_at': False,
        'browser_details': False,
        'incognito': False,
        'client_referrer': False,
        'components': False,
        'bot': False,
        'user_agent': False,
        'root_apps': False,
        'emulator': False,
        'ip_info': False,
        'ip_blocklist': False,
        'tor': False,
        'vpn': False,
        'proxy': False,
        'tampering': False,
        'cloned_app': False,
        'factory_reset': False,
        'jailbroken': False,
        'frida': False,
        'privacy_settings': False,
        'virtual_machine': False,
        'raw_device_attributes': False,
        'high_activity': False,
        'location_spoofing': False,
        'suspect_score': False,
        'remote_control': False,
        'velocity': False,
        'developer_tools': False,
        'mitm_attack': False,
        'replayed': False,
        'sdk': False,
        'supplementary_ids': False,
        'proximity': False
    }

    attribute_map = {
        'request_id': 'requestId',
        'url': 'url',
        'ip': 'ip',
        'environment_id': 'environmentId',
        'tag': 'tag',
        'time': 'time',
        'timestamp': 'timestamp',
        'ip_location': 'ipLocation',
        'linked_id': 'linkedId',
        'visitor_id': 'visitorId',
        'visitor_found': 'visitorFound',
        'confidence': 'confidence',
        'first_seen_at': 'firstSeenAt',
        'last_seen_at': 'lastSeenAt',
        'browser_details': 'browserDetails',
        'incognito': 'incognito',
        'client_referrer': 'clientReferrer',
        'components': 'components',
        'bot': 'bot',
        'user_agent': 'userAgent',
        'root_apps': 'rootApps',
        'emulator': 'emulator',
        'ip_info': 'ipInfo',
        'ip_blocklist': 'ipBlocklist',
        'tor': 'tor',
        'vpn': 'vpn',
        'proxy': 'proxy',
        'tampering': 'tampering',
        'cloned_app': 'clonedApp',
        'factory_reset': 'factoryReset',
        'jailbroken': 'jailbroken',
        'frida': 'frida',
        'privacy_settings': 'privacySettings',
        'virtual_machine': 'virtualMachine',
        'raw_device_attributes': 'rawDeviceAttributes',
        'high_activity': 'highActivity',
        'location_spoofing': 'locationSpoofing',
        'suspect_score': 'suspectScore',
        'remote_control': 'remoteControl',
        'velocity': 'velocity',
        'developer_tools': 'developerTools',
        'mitm_attack': 'mitmAttack',
        'replayed': 'replayed',
        'sdk': 'sdk',
        'supplementary_ids': 'supplementaryIds',
        'proximity': 'proximity'
    }

    def __init__(self, request_id=None, url=None, ip=None, environment_id=None, tag=None, time=None, timestamp=None, ip_location=None, linked_id=None, visitor_id=None, visitor_found=None, confidence=None, first_seen_at=None, last_seen_at=None, browser_details=None, incognito=None, client_referrer=None, components=None, bot=None, user_agent=None, root_apps=None, emulator=None, ip_info=None, ip_blocklist=None, tor=None, vpn=None, proxy=None, tampering=None, cloned_app=None, factory_reset=None, jailbroken=None, frida=None, privacy_settings=None, virtual_machine=None, raw_device_attributes=None, high_activity=None, location_spoofing=None, suspect_score=None, remote_control=None, velocity=None, developer_tools=None, mitm_attack=None, replayed=None, sdk=None, supplementary_ids=None, proximity=None):  # noqa: E501
        """Webhook - a model defined in Swagger"""  # noqa: E501
        self._request_id = None
        self._url = None
        self._ip = None
        self._environment_id = None
        self._tag = None
        self._time = None
        self._timestamp = None
        self._ip_location = None
        self._linked_id = None
        self._visitor_id = None
        self._visitor_found = None
        self._confidence = None
        self._first_seen_at = None
        self._last_seen_at = None
        self._browser_details = None
        self._incognito = None
        self._client_referrer = None
        self._components = None
        self._bot = None
        self._user_agent = None
        self._root_apps = None
        self._emulator = None
        self._ip_info = None
        self._ip_blocklist = None
        self._tor = None
        self._vpn = None
        self._proxy = None
        self._tampering = None
        self._cloned_app = None
        self._factory_reset = None
        self._jailbroken = None
        self._frida = None
        self._privacy_settings = None
        self._virtual_machine = None
        self._raw_device_attributes = None
        self._high_activity = None
        self._location_spoofing = None
        self._suspect_score = None
        self._remote_control = None
        self._velocity = None
        self._developer_tools = None
        self._mitm_attack = None
        self._replayed = None
        self._sdk = None
        self._supplementary_ids = None
        self._proximity = None
        self.discriminator = None
        self.request_id = request_id
        self.url = url
        self.ip = ip
        if environment_id is not None:
            self.environment_id = environment_id
        if tag is not None:
            self.tag = tag
        self.time = time
        self.timestamp = timestamp
        if ip_location is not None:
            self.ip_location = ip_location
        if linked_id is not None:
            self.linked_id = linked_id
        if visitor_id is not None:
            self.visitor_id = visitor_id
        if visitor_found is not None:
            self.visitor_found = visitor_found
        if confidence is not None:
            self.confidence = confidence
        if first_seen_at is not None:
            self.first_seen_at = first_seen_at
        if last_seen_at is not None:
            self.last_seen_at = last_seen_at
        if browser_details is not None:
            self.browser_details = browser_details
        if incognito is not None:
            self.incognito = incognito
        if client_referrer is not None:
            self.client_referrer = client_referrer
        if components is not None:
            self.components = components
        if bot is not None:
            self.bot = bot
        if user_agent is not None:
            self.user_agent = user_agent
        if root_apps is not None:
            self.root_apps = root_apps
        if emulator is not None:
            self.emulator = emulator
        if ip_info is not None:
            self.ip_info = ip_info
        if ip_blocklist is not None:
            self.ip_blocklist = ip_blocklist
        if tor is not None:
            self.tor = tor
        if vpn is not None:
            self.vpn = vpn
        if proxy is not None:
            self.proxy = proxy
        if tampering is not None:
            self.tampering = tampering
        if cloned_app is not None:
            self.cloned_app = cloned_app
        if factory_reset is not None:
            self.factory_reset = factory_reset
        if jailbroken is not None:
            self.jailbroken = jailbroken
        if frida is not None:
            self.frida = frida
        if privacy_settings is not None:
            self.privacy_settings = privacy_settings
        if virtual_machine is not None:
            self.virtual_machine = virtual_machine
        if raw_device_attributes is not None:
            self.raw_device_attributes = raw_device_attributes
        if high_activity is not None:
            self.high_activity = high_activity
        if location_spoofing is not None:
            self.location_spoofing = location_spoofing
        if suspect_score is not None:
            self.suspect_score = suspect_score
        if remote_control is not None:
            self.remote_control = remote_control
        if velocity is not None:
            self.velocity = velocity
        if developer_tools is not None:
            self.developer_tools = developer_tools
        if mitm_attack is not None:
            self.mitm_attack = mitm_attack
        if replayed is not None:
            self.replayed = replayed
        self.sdk = sdk
        if supplementary_ids is not None:
            self.supplementary_ids = supplementary_ids
        if proximity is not None:
            self.proximity = proximity

    @property
    def request_id(self) -> str:
        """Gets the request_id of this Webhook.  # noqa: E501

        Unique identifier of the user's request.  # noqa: E501

        :return: The request_id of this Webhook.  # noqa: E501
        """
        return self._request_id

    @request_id.setter
    def request_id(self, request_id: str):
        """Sets the request_id of this Webhook.

        Unique identifier of the user's request.  # noqa: E501

        :param request_id: The request_id of this Webhook.  # noqa: E501
        """
        if request_id is None:
            raise ValueError("Invalid value for `request_id`, must not be `None`")  # noqa: E501

        self._request_id = request_id

    @property
    def url(self) -> str:
        """Gets the url of this Webhook.  # noqa: E501

        Page URL from which the request was sent.  # noqa: E501

        :return: The url of this Webhook.  # noqa: E501
        """
        return self._url

    @url.setter
    def url(self, url: str):
        """Sets the url of this Webhook.

        Page URL from which the request was sent.  # noqa: E501

        :param url: The url of this Webhook.  # noqa: E501
        """
        if url is None:
            raise ValueError("Invalid value for `url`, must not be `None`")  # noqa: E501

        self._url = url

    @property
    def ip(self) -> str:
        """Gets the ip of this Webhook.  # noqa: E501

        IP address of the requesting browser or bot.  # noqa: E501

        :return: The ip of this Webhook.  # noqa: E501
        """
        return self._ip

    @ip.setter
    def ip(self, ip: str):
        """Sets the ip of this Webhook.

        IP address of the requesting browser or bot.  # noqa: E501

        :param ip: The ip of this Webhook.  # noqa: E501
        """
        if ip is None:
            raise ValueError("Invalid value for `ip`, must not be `None`")  # noqa: E501

        self._ip = ip

    @property
    def environment_id(self) -> Optional[str]:
        """Gets the environment_id of this Webhook.  # noqa: E501

        Environment ID of the event.  # noqa: E501

        :return: The environment_id of this Webhook.  # noqa: E501
        """
        return self._environment_id

    @environment_id.setter
    def environment_id(self, environment_id: Optional[str]):
        """Sets the environment_id of this Webhook.

        Environment ID of the event.  # noqa: E501

        :param environment_id: The environment_id of this Webhook.  # noqa: E501
        """

        self._environment_id = environment_id

    @property
    def tag(self) -> Optional[Tag]:
        """Gets the tag of this Webhook.  # noqa: E501


        :return: The tag of this Webhook.  # noqa: E501
        """
        return self._tag

    @tag.setter
    def tag(self, tag: Optional[Tag]):
        """Sets the tag of this Webhook.


        :param tag: The tag of this Webhook.  # noqa: E501
        """

        self._tag = tag

    @property
    def time(self) -> datetime:
        """Gets the time of this Webhook.  # noqa: E501

        Time expressed according to ISO 8601 in UTC format, when the request from the JS agent was made. We recommend to treat requests that are older than 2 minutes as malicious. Otherwise, request replay attacks are possible.  # noqa: E501

        :return: The time of this Webhook.  # noqa: E501
        """
        return self._time

    @time.setter
    def time(self, time: datetime):
        """Sets the time of this Webhook.

        Time expressed according to ISO 8601 in UTC format, when the request from the JS agent was made. We recommend to treat requests that are older than 2 minutes as malicious. Otherwise, request replay attacks are possible.  # noqa: E501

        :param time: The time of this Webhook.  # noqa: E501
        """
        if time is None:
            raise ValueError("Invalid value for `time`, must not be `None`")  # noqa: E501

        self._time = time

    @property
    def timestamp(self) -> int:
        """Gets the timestamp of this Webhook.  # noqa: E501

        Timestamp of the event with millisecond precision in Unix time.  # noqa: E501

        :return: The timestamp of this Webhook.  # noqa: E501
        """
        return self._timestamp

    @timestamp.setter
    def timestamp(self, timestamp: int):
        """Sets the timestamp of this Webhook.

        Timestamp of the event with millisecond precision in Unix time.  # noqa: E501

        :param timestamp: The timestamp of this Webhook.  # noqa: E501
        """
        if timestamp is None:
            raise ValueError("Invalid value for `timestamp`, must not be `None`")  # noqa: E501

        self._timestamp = timestamp

    @property
    def ip_location(self) -> Optional[DeprecatedGeolocation]:
        """Gets the ip_location of this Webhook.  # noqa: E501


        :return: The ip_location of this Webhook.  # noqa: E501
        """
        return self._ip_location

    @ip_location.setter
    def ip_location(self, ip_location: Optional[DeprecatedGeolocation]):
        """Sets the ip_location of this Webhook.


        :param ip_location: The ip_location of this Webhook.  # noqa: E501
        """

        self._ip_location = ip_location

    @property
    def linked_id(self) -> Optional[str]:
        """Gets the linked_id of this Webhook.  # noqa: E501

        A customer-provided id that was sent with the request.  # noqa: E501

        :return: The linked_id of this Webhook.  # noqa: E501
        """
        return self._linked_id

    @linked_id.setter
    def linked_id(self, linked_id: Optional[str]):
        """Sets the linked_id of this Webhook.

        A customer-provided id that was sent with the request.  # noqa: E501

        :param linked_id: The linked_id of this Webhook.  # noqa: E501
        """

        self._linked_id = linked_id

    @property
    def visitor_id(self) -> Optional[str]:
        """Gets the visitor_id of this Webhook.  # noqa: E501

        String of 20 characters that uniquely identifies the visitor's browser or mobile device.  # noqa: E501

        :return: The visitor_id of this Webhook.  # noqa: E501
        """
        return self._visitor_id

    @visitor_id.setter
    def visitor_id(self, visitor_id: Optional[str]):
        """Sets the visitor_id of this Webhook.

        String of 20 characters that uniquely identifies the visitor's browser or mobile device.  # noqa: E501

        :param visitor_id: The visitor_id of this Webhook.  # noqa: E501
        """

        self._visitor_id = visitor_id

    @property
    def visitor_found(self) -> Optional[bool]:
        """Gets the visitor_found of this Webhook.  # noqa: E501

        Attribute represents if a visitor had been identified before.  # noqa: E501

        :return: The visitor_found of this Webhook.  # noqa: E501
        """
        return self._visitor_found

    @visitor_found.setter
    def visitor_found(self, visitor_found: Optional[bool]):
        """Sets the visitor_found of this Webhook.

        Attribute represents if a visitor had been identified before.  # noqa: E501

        :param visitor_found: The visitor_found of this Webhook.  # noqa: E501
        """

        self._visitor_found = visitor_found

    @property
    def confidence(self) -> Optional[IdentificationConfidence]:
        """Gets the confidence of this Webhook.  # noqa: E501


        :return: The confidence of this Webhook.  # noqa: E501
        """
        return self._confidence

    @confidence.setter
    def confidence(self, confidence: Optional[IdentificationConfidence]):
        """Sets the confidence of this Webhook.


        :param confidence: The confidence of this Webhook.  # noqa: E501
        """

        self._confidence = confidence

    @property
    def first_seen_at(self) -> Optional[IdentificationSeenAt]:
        """Gets the first_seen_at of this Webhook.  # noqa: E501


        :return: The first_seen_at of this Webhook.  # noqa: E501
        """
        return self._first_seen_at

    @first_seen_at.setter
    def first_seen_at(self, first_seen_at: Optional[IdentificationSeenAt]):
        """Sets the first_seen_at of this Webhook.


        :param first_seen_at: The first_seen_at of this Webhook.  # noqa: E501
        """

        self._first_seen_at = first_seen_at

    @property
    def last_seen_at(self) -> Optional[IdentificationSeenAt]:
        """Gets the last_seen_at of this Webhook.  # noqa: E501


        :return: The last_seen_at of this Webhook.  # noqa: E501
        """
        return self._last_seen_at

    @last_seen_at.setter
    def last_seen_at(self, last_seen_at: Optional[IdentificationSeenAt]):
        """Sets the last_seen_at of this Webhook.


        :param last_seen_at: The last_seen_at of this Webhook.  # noqa: E501
        """

        self._last_seen_at = last_seen_at

    @property
    def browser_details(self) -> Optional[BrowserDetails]:
        """Gets the browser_details of this Webhook.  # noqa: E501


        :return: The browser_details of this Webhook.  # noqa: E501
        """
        return self._browser_details

    @browser_details.setter
    def browser_details(self, browser_details: Optional[BrowserDetails]):
        """Sets the browser_details of this Webhook.


        :param browser_details: The browser_details of this Webhook.  # noqa: E501
        """

        self._browser_details = browser_details

    @property
    def incognito(self) -> Optional[bool]:
        """Gets the incognito of this Webhook.  # noqa: E501

        Flag if user used incognito session.  # noqa: E501

        :return: The incognito of this Webhook.  # noqa: E501
        """
        return self._incognito

    @incognito.setter
    def incognito(self, incognito: Optional[bool]):
        """Sets the incognito of this Webhook.

        Flag if user used incognito session.  # noqa: E501

        :param incognito: The incognito of this Webhook.  # noqa: E501
        """

        self._incognito = incognito

    @property
    def client_referrer(self) -> Optional[str]:
        """Gets the client_referrer of this Webhook.  # noqa: E501


        :return: The client_referrer of this Webhook.  # noqa: E501
        """
        return self._client_referrer

    @client_referrer.setter
    def client_referrer(self, client_referrer: Optional[str]):
        """Sets the client_referrer of this Webhook.


        :param client_referrer: The client_referrer of this Webhook.  # noqa: E501
        """

        self._client_referrer = client_referrer

    @property
    def components(self) -> Optional[RawDeviceAttributes]:
        """Gets the components of this Webhook.  # noqa: E501


        :return: The components of this Webhook.  # noqa: E501
        """
        return self._components

    @components.setter
    def components(self, components: Optional[RawDeviceAttributes]):
        """Sets the components of this Webhook.


        :param components: The components of this Webhook.  # noqa: E501
        """

        self._components = components

    @property
    def bot(self) -> Optional[BotdBot]:
        """Gets the bot of this Webhook.  # noqa: E501


        :return: The bot of this Webhook.  # noqa: E501
        """
        return self._bot

    @bot.setter
    def bot(self, bot: Optional[BotdBot]):
        """Sets the bot of this Webhook.


        :param bot: The bot of this Webhook.  # noqa: E501
        """

        self._bot = bot

    @property
    def user_agent(self) -> Optional[str]:
        """Gets the user_agent of this Webhook.  # noqa: E501


        :return: The user_agent of this Webhook.  # noqa: E501
        """
        return self._user_agent

    @user_agent.setter
    def user_agent(self, user_agent: Optional[str]):
        """Sets the user_agent of this Webhook.


        :param user_agent: The user_agent of this Webhook.  # noqa: E501
        """

        self._user_agent = user_agent

    @property
    def root_apps(self) -> Optional[WebhookRootApps]:
        """Gets the root_apps of this Webhook.  # noqa: E501


        :return: The root_apps of this Webhook.  # noqa: E501
        """
        return self._root_apps

    @root_apps.setter
    def root_apps(self, root_apps: Optional[WebhookRootApps]):
        """Sets the root_apps of this Webhook.


        :param root_apps: The root_apps of this Webhook.  # noqa: E501
        """

        self._root_apps = root_apps

    @property
    def emulator(self) -> Optional[WebhookEmulator]:
        """Gets the emulator of this Webhook.  # noqa: E501


        :return: The emulator of this Webhook.  # noqa: E501
        """
        return self._emulator

    @emulator.setter
    def emulator(self, emulator: Optional[WebhookEmulator]):
        """Sets the emulator of this Webhook.


        :param emulator: The emulator of this Webhook.  # noqa: E501
        """

        self._emulator = emulator

    @property
    def ip_info(self) -> Optional[WebhookIPInfo]:
        """Gets the ip_info of this Webhook.  # noqa: E501


        :return: The ip_info of this Webhook.  # noqa: E501
        """
        return self._ip_info

    @ip_info.setter
    def ip_info(self, ip_info: Optional[WebhookIPInfo]):
        """Sets the ip_info of this Webhook.


        :param ip_info: The ip_info of this Webhook.  # noqa: E501
        """

        self._ip_info = ip_info

    @property
    def ip_blocklist(self) -> Optional[WebhookIPBlocklist]:
        """Gets the ip_blocklist of this Webhook.  # noqa: E501


        :return: The ip_blocklist of this Webhook.  # noqa: E501
        """
        return self._ip_blocklist

    @ip_blocklist.setter
    def ip_blocklist(self, ip_blocklist: Optional[WebhookIPBlocklist]):
        """Sets the ip_blocklist of this Webhook.


        :param ip_blocklist: The ip_blocklist of this Webhook.  # noqa: E501
        """

        self._ip_blocklist = ip_blocklist

    @property
    def tor(self) -> Optional[WebhookTor]:
        """Gets the tor of this Webhook.  # noqa: E501


        :return: The tor of this Webhook.  # noqa: E501
        """
        return self._tor

    @tor.setter
    def tor(self, tor: Optional[WebhookTor]):
        """Sets the tor of this Webhook.


        :param tor: The tor of this Webhook.  # noqa: E501
        """

        self._tor = tor

    @property
    def vpn(self) -> Optional[WebhookVPN]:
        """Gets the vpn of this Webhook.  # noqa: E501


        :return: The vpn of this Webhook.  # noqa: E501
        """
        return self._vpn

    @vpn.setter
    def vpn(self, vpn: Optional[WebhookVPN]):
        """Sets the vpn of this Webhook.


        :param vpn: The vpn of this Webhook.  # noqa: E501
        """

        self._vpn = vpn

    @property
    def proxy(self) -> Optional[WebhookProxy]:
        """Gets the proxy of this Webhook.  # noqa: E501


        :return: The proxy of this Webhook.  # noqa: E501
        """
        return self._proxy

    @proxy.setter
    def proxy(self, proxy: Optional[WebhookProxy]):
        """Sets the proxy of this Webhook.


        :param proxy: The proxy of this Webhook.  # noqa: E501
        """

        self._proxy = proxy

    @property
    def tampering(self) -> Optional[WebhookTampering]:
        """Gets the tampering of this Webhook.  # noqa: E501


        :return: The tampering of this Webhook.  # noqa: E501
        """
        return self._tampering

    @tampering.setter
    def tampering(self, tampering: Optional[WebhookTampering]):
        """Sets the tampering of this Webhook.


        :param tampering: The tampering of this Webhook.  # noqa: E501
        """

        self._tampering = tampering

    @property
    def cloned_app(self) -> Optional[WebhookClonedApp]:
        """Gets the cloned_app of this Webhook.  # noqa: E501


        :return: The cloned_app of this Webhook.  # noqa: E501
        """
        return self._cloned_app

    @cloned_app.setter
    def cloned_app(self, cloned_app: Optional[WebhookClonedApp]):
        """Sets the cloned_app of this Webhook.


        :param cloned_app: The cloned_app of this Webhook.  # noqa: E501
        """

        self._cloned_app = cloned_app

    @property
    def factory_reset(self) -> Optional[WebhookFactoryReset]:
        """Gets the factory_reset of this Webhook.  # noqa: E501


        :return: The factory_reset of this Webhook.  # noqa: E501
        """
        return self._factory_reset

    @factory_reset.setter
    def factory_reset(self, factory_reset: Optional[WebhookFactoryReset]):
        """Sets the factory_reset of this Webhook.


        :param factory_reset: The factory_reset of this Webhook.  # noqa: E501
        """

        self._factory_reset = factory_reset

    @property
    def jailbroken(self) -> Optional[WebhookJailbroken]:
        """Gets the jailbroken of this Webhook.  # noqa: E501


        :return: The jailbroken of this Webhook.  # noqa: E501
        """
        return self._jailbroken

    @jailbroken.setter
    def jailbroken(self, jailbroken: Optional[WebhookJailbroken]):
        """Sets the jailbroken of this Webhook.


        :param jailbroken: The jailbroken of this Webhook.  # noqa: E501
        """

        self._jailbroken = jailbroken

    @property
    def frida(self) -> Optional[WebhookFrida]:
        """Gets the frida of this Webhook.  # noqa: E501


        :return: The frida of this Webhook.  # noqa: E501
        """
        return self._frida

    @frida.setter
    def frida(self, frida: Optional[WebhookFrida]):
        """Sets the frida of this Webhook.


        :param frida: The frida of this Webhook.  # noqa: E501
        """

        self._frida = frida

    @property
    def privacy_settings(self) -> Optional[WebhookPrivacySettings]:
        """Gets the privacy_settings of this Webhook.  # noqa: E501


        :return: The privacy_settings of this Webhook.  # noqa: E501
        """
        return self._privacy_settings

    @privacy_settings.setter
    def privacy_settings(self, privacy_settings: Optional[WebhookPrivacySettings]):
        """Sets the privacy_settings of this Webhook.


        :param privacy_settings: The privacy_settings of this Webhook.  # noqa: E501
        """

        self._privacy_settings = privacy_settings

    @property
    def virtual_machine(self) -> Optional[WebhookVirtualMachine]:
        """Gets the virtual_machine of this Webhook.  # noqa: E501


        :return: The virtual_machine of this Webhook.  # noqa: E501
        """
        return self._virtual_machine

    @virtual_machine.setter
    def virtual_machine(self, virtual_machine: Optional[WebhookVirtualMachine]):
        """Sets the virtual_machine of this Webhook.


        :param virtual_machine: The virtual_machine of this Webhook.  # noqa: E501
        """

        self._virtual_machine = virtual_machine

    @property
    def raw_device_attributes(self) -> Optional[WebhookRawDeviceAttributes]:
        """Gets the raw_device_attributes of this Webhook.  # noqa: E501


        :return: The raw_device_attributes of this Webhook.  # noqa: E501
        """
        return self._raw_device_attributes

    @raw_device_attributes.setter
    def raw_device_attributes(self, raw_device_attributes: Optional[WebhookRawDeviceAttributes]):
        """Sets the raw_device_attributes of this Webhook.


        :param raw_device_attributes: The raw_device_attributes of this Webhook.  # noqa: E501
        """

        self._raw_device_attributes = raw_device_attributes

    @property
    def high_activity(self) -> Optional[WebhookHighActivity]:
        """Gets the high_activity of this Webhook.  # noqa: E501


        :return: The high_activity of this Webhook.  # noqa: E501
        """
        return self._high_activity

    @high_activity.setter
    def high_activity(self, high_activity: Optional[WebhookHighActivity]):
        """Sets the high_activity of this Webhook.


        :param high_activity: The high_activity of this Webhook.  # noqa: E501
        """

        self._high_activity = high_activity

    @property
    def location_spoofing(self) -> Optional[WebhookLocationSpoofing]:
        """Gets the location_spoofing of this Webhook.  # noqa: E501


        :return: The location_spoofing of this Webhook.  # noqa: E501
        """
        return self._location_spoofing

    @location_spoofing.setter
    def location_spoofing(self, location_spoofing: Optional[WebhookLocationSpoofing]):
        """Sets the location_spoofing of this Webhook.


        :param location_spoofing: The location_spoofing of this Webhook.  # noqa: E501
        """

        self._location_spoofing = location_spoofing

    @property
    def suspect_score(self) -> Optional[WebhookSuspectScore]:
        """Gets the suspect_score of this Webhook.  # noqa: E501


        :return: The suspect_score of this Webhook.  # noqa: E501
        """
        return self._suspect_score

    @suspect_score.setter
    def suspect_score(self, suspect_score: Optional[WebhookSuspectScore]):
        """Sets the suspect_score of this Webhook.


        :param suspect_score: The suspect_score of this Webhook.  # noqa: E501
        """

        self._suspect_score = suspect_score

    @property
    def remote_control(self) -> Optional[WebhookRemoteControl]:
        """Gets the remote_control of this Webhook.  # noqa: E501


        :return: The remote_control of this Webhook.  # noqa: E501
        """
        return self._remote_control

    @remote_control.setter
    def remote_control(self, remote_control: Optional[WebhookRemoteControl]):
        """Sets the remote_control of this Webhook.


        :param remote_control: The remote_control of this Webhook.  # noqa: E501
        """

        self._remote_control = remote_control

    @property
    def velocity(self) -> Optional[WebhookVelocity]:
        """Gets the velocity of this Webhook.  # noqa: E501


        :return: The velocity of this Webhook.  # noqa: E501
        """
        return self._velocity

    @velocity.setter
    def velocity(self, velocity: Optional[WebhookVelocity]):
        """Sets the velocity of this Webhook.


        :param velocity: The velocity of this Webhook.  # noqa: E501
        """

        self._velocity = velocity

    @property
    def developer_tools(self) -> Optional[WebhookDeveloperTools]:
        """Gets the developer_tools of this Webhook.  # noqa: E501


        :return: The developer_tools of this Webhook.  # noqa: E501
        """
        return self._developer_tools

    @developer_tools.setter
    def developer_tools(self, developer_tools: Optional[WebhookDeveloperTools]):
        """Sets the developer_tools of this Webhook.


        :param developer_tools: The developer_tools of this Webhook.  # noqa: E501
        """

        self._developer_tools = developer_tools

    @property
    def mitm_attack(self) -> Optional[WebhookMitMAttack]:
        """Gets the mitm_attack of this Webhook.  # noqa: E501


        :return: The mitm_attack of this Webhook.  # noqa: E501
        """
        return self._mitm_attack

    @mitm_attack.setter
    def mitm_attack(self, mitm_attack: Optional[WebhookMitMAttack]):
        """Sets the mitm_attack of this Webhook.


        :param mitm_attack: The mitm_attack of this Webhook.  # noqa: E501
        """

        self._mitm_attack = mitm_attack

    @property
    def replayed(self) -> Optional[bool]:
        """Gets the replayed of this Webhook.  # noqa: E501

        `true` if we determined that this payload was replayed, `false` otherwise.   # noqa: E501

        :return: The replayed of this Webhook.  # noqa: E501
        """
        return self._replayed

    @replayed.setter
    def replayed(self, replayed: Optional[bool]):
        """Sets the replayed of this Webhook.

        `true` if we determined that this payload was replayed, `false` otherwise.   # noqa: E501

        :param replayed: The replayed of this Webhook.  # noqa: E501
        """

        self._replayed = replayed

    @property
    def sdk(self) -> SDK:
        """Gets the sdk of this Webhook.  # noqa: E501


        :return: The sdk of this Webhook.  # noqa: E501
        """
        return self._sdk

    @sdk.setter
    def sdk(self, sdk: SDK):
        """Sets the sdk of this Webhook.


        :param sdk: The sdk of this Webhook.  # noqa: E501
        """
        if sdk is None:
            raise ValueError("Invalid value for `sdk`, must not be `None`")  # noqa: E501

        self._sdk = sdk

    @property
    def supplementary_ids(self) -> Optional[WebhookSupplementaryIDs]:
        """Gets the supplementary_ids of this Webhook.  # noqa: E501


        :return: The supplementary_ids of this Webhook.  # noqa: E501
        """
        return self._supplementary_ids

    @supplementary_ids.setter
    def supplementary_ids(self, supplementary_ids: Optional[WebhookSupplementaryIDs]):
        """Sets the supplementary_ids of this Webhook.


        :param supplementary_ids: The supplementary_ids of this Webhook.  # noqa: E501
        """

        self._supplementary_ids = supplementary_ids

    @property
    def proximity(self) -> Optional[WebhookProximity]:
        """Gets the proximity of this Webhook.  # noqa: E501


        :return: The proximity of this Webhook.  # noqa: E501
        """
        return self._proximity

    @proximity.setter
    def proximity(self, proximity: Optional[WebhookProximity]):
        """Sets the proximity of this Webhook.


        :param proximity: The proximity of this Webhook.  # noqa: E501
        """

        self._proximity = proximity

