# 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


class WebhookProximity(BaseModel):
    """
    Proximity ID represents a fixed geographical zone in a discrete global grid within which the device is observed. 

    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 = {
        'id': 'str',
        'precision_radius': 'int',
        'confidence': 'float'
    }

    nullable_map = {
        'id': False,
        'precision_radius': False,
        'confidence': False
    }

    attribute_map = {
        'id': 'id',
        'precision_radius': 'precisionRadius',
        'confidence': 'confidence'
    }

    def __init__(self, id=None, precision_radius=None, confidence=None):  # noqa: E501
        """WebhookProximity - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._precision_radius = None
        self._confidence = None
        self.discriminator = None
        self.id = id
        self.precision_radius = precision_radius
        self.confidence = confidence

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

        A stable privacy-preserving identifier for a given proximity zone.   # noqa: E501

        :return: The id of this WebhookProximity.  # noqa: E501
        """
        return self._id

    @id.setter
    def id(self, id: str):
        """Sets the id of this WebhookProximity.

        A stable privacy-preserving identifier for a given proximity zone.   # noqa: E501

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

        self._id = id

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

        The radius of the proximity zone’s precision level, in meters.   # noqa: E501

        :return: The precision_radius of this WebhookProximity.  # noqa: E501
        """
        return self._precision_radius

    @precision_radius.setter
    def precision_radius(self, precision_radius: int):
        """Sets the precision_radius of this WebhookProximity.

        The radius of the proximity zone’s precision level, in meters.   # noqa: E501

        :param precision_radius: The precision_radius of this WebhookProximity.  # noqa: E501
        """
        if precision_radius is None:
            raise ValueError("Invalid value for `precision_radius`, must not be `None`")  # noqa: E501
        allowed_values = [10, 25, 65, 175, 450, 1200, 3300, 8500, 22500]  # noqa: E501
        if (precision_radius not in allowed_values):
            raise ValueError(
                "Invalid value for `precision_radius` ({0}), must be one of {1}"  # noqa: E501
                .format(precision_radius, allowed_values)
            )

        self._precision_radius = precision_radius

    @property
    def confidence(self) -> float:
        """Gets the confidence of this WebhookProximity.  # noqa: E501

        A value between `0` and `1` representing the likelihood that the true device location lies within the mapped proximity zone.   * Scores closer to `1` indicate high confidence that the location is inside the mapped proximity zone.   * Scores closer to `0` indicate lower confidence, suggesting the true location may fall in an adjacent zone.   # noqa: E501

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

    @confidence.setter
    def confidence(self, confidence: float):
        """Sets the confidence of this WebhookProximity.

        A value between `0` and `1` representing the likelihood that the true device location lies within the mapped proximity zone.   * Scores closer to `1` indicate high confidence that the location is inside the mapped proximity zone.   * Scores closer to `0` indicate lower confidence, suggesting the true location may fall in an adjacent zone.   # noqa: E501

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

        self._confidence = confidence

