# coding: utf-8

"""
    Emby Server REST API (BETA)
"""

import pprint
import re  # noqa: F401

import six

class UserNotificationInfo(object):
    """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 = {
        'notifier_key': 'str',
        'setup_module_url': 'str',
        'service_name': 'str',
        'plugin_id': 'str',
        'friendly_name': 'str',
        'id': 'str',
        'enabled': 'bool',
        'user_ids': 'list[str]',
        'device_ids': 'list[str]',
        'library_ids': 'list[str]',
        'event_ids': 'list[str]',
        'user_id': 'str',
        'is_self_notification': 'bool',
        'group_items': 'bool',
        'options': 'dict(str, str)'
    }

    attribute_map = {
        'notifier_key': 'NotifierKey',
        'setup_module_url': 'SetupModuleUrl',
        'service_name': 'ServiceName',
        'plugin_id': 'PluginId',
        'friendly_name': 'FriendlyName',
        'id': 'Id',
        'enabled': 'Enabled',
        'user_ids': 'UserIds',
        'device_ids': 'DeviceIds',
        'library_ids': 'LibraryIds',
        'event_ids': 'EventIds',
        'user_id': 'UserId',
        'is_self_notification': 'IsSelfNotification',
        'group_items': 'GroupItems',
        'options': 'Options'
    }

    def __init__(self, notifier_key=None, setup_module_url=None, service_name=None, plugin_id=None, friendly_name=None, id=None, enabled=None, user_ids=None, device_ids=None, library_ids=None, event_ids=None, user_id=None, is_self_notification=None, group_items=None, options=None):  # noqa: E501
        """UserNotificationInfo - a model defined in Swagger"""  # noqa: E501
        self._notifier_key = None
        self._setup_module_url = None
        self._service_name = None
        self._plugin_id = None
        self._friendly_name = None
        self._id = None
        self._enabled = None
        self._user_ids = None
        self._device_ids = None
        self._library_ids = None
        self._event_ids = None
        self._user_id = None
        self._is_self_notification = None
        self._group_items = None
        self._options = None
        self.discriminator = None
        if notifier_key is not None:
            self.notifier_key = notifier_key
        if setup_module_url is not None:
            self.setup_module_url = setup_module_url
        if service_name is not None:
            self.service_name = service_name
        if plugin_id is not None:
            self.plugin_id = plugin_id
        if friendly_name is not None:
            self.friendly_name = friendly_name
        if id is not None:
            self.id = id
        if enabled is not None:
            self.enabled = enabled
        if user_ids is not None:
            self.user_ids = user_ids
        if device_ids is not None:
            self.device_ids = device_ids
        if library_ids is not None:
            self.library_ids = library_ids
        if event_ids is not None:
            self.event_ids = event_ids
        if user_id is not None:
            self.user_id = user_id
        if is_self_notification is not None:
            self.is_self_notification = is_self_notification
        if group_items is not None:
            self.group_items = group_items
        if options is not None:
            self.options = options

    @property
    def notifier_key(self):
        """Gets the notifier_key of this UserNotificationInfo.  # noqa: E501


        :return: The notifier_key of this UserNotificationInfo.  # noqa: E501
        :rtype: str
        """
        return self._notifier_key

    @notifier_key.setter
    def notifier_key(self, notifier_key):
        """Sets the notifier_key of this UserNotificationInfo.


        :param notifier_key: The notifier_key of this UserNotificationInfo.  # noqa: E501
        :type: str
        """

        self._notifier_key = notifier_key

    @property
    def setup_module_url(self):
        """Gets the setup_module_url of this UserNotificationInfo.  # noqa: E501


        :return: The setup_module_url of this UserNotificationInfo.  # noqa: E501
        :rtype: str
        """
        return self._setup_module_url

    @setup_module_url.setter
    def setup_module_url(self, setup_module_url):
        """Sets the setup_module_url of this UserNotificationInfo.


        :param setup_module_url: The setup_module_url of this UserNotificationInfo.  # noqa: E501
        :type: str
        """

        self._setup_module_url = setup_module_url

    @property
    def service_name(self):
        """Gets the service_name of this UserNotificationInfo.  # noqa: E501


        :return: The service_name of this UserNotificationInfo.  # noqa: E501
        :rtype: str
        """
        return self._service_name

    @service_name.setter
    def service_name(self, service_name):
        """Sets the service_name of this UserNotificationInfo.


        :param service_name: The service_name of this UserNotificationInfo.  # noqa: E501
        :type: str
        """

        self._service_name = service_name

    @property
    def plugin_id(self):
        """Gets the plugin_id of this UserNotificationInfo.  # noqa: E501


        :return: The plugin_id of this UserNotificationInfo.  # noqa: E501
        :rtype: str
        """
        return self._plugin_id

    @plugin_id.setter
    def plugin_id(self, plugin_id):
        """Sets the plugin_id of this UserNotificationInfo.


        :param plugin_id: The plugin_id of this UserNotificationInfo.  # noqa: E501
        :type: str
        """

        self._plugin_id = plugin_id

    @property
    def friendly_name(self):
        """Gets the friendly_name of this UserNotificationInfo.  # noqa: E501


        :return: The friendly_name of this UserNotificationInfo.  # noqa: E501
        :rtype: str
        """
        return self._friendly_name

    @friendly_name.setter
    def friendly_name(self, friendly_name):
        """Sets the friendly_name of this UserNotificationInfo.


        :param friendly_name: The friendly_name of this UserNotificationInfo.  # noqa: E501
        :type: str
        """

        self._friendly_name = friendly_name

    @property
    def id(self):
        """Gets the id of this UserNotificationInfo.  # noqa: E501


        :return: The id of this UserNotificationInfo.  # noqa: E501
        :rtype: str
        """
        return self._id

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


        :param id: The id of this UserNotificationInfo.  # noqa: E501
        :type: str
        """

        self._id = id

    @property
    def enabled(self):
        """Gets the enabled of this UserNotificationInfo.  # noqa: E501


        :return: The enabled of this UserNotificationInfo.  # noqa: E501
        :rtype: bool
        """
        return self._enabled

    @enabled.setter
    def enabled(self, enabled):
        """Sets the enabled of this UserNotificationInfo.


        :param enabled: The enabled of this UserNotificationInfo.  # noqa: E501
        :type: bool
        """

        self._enabled = enabled

    @property
    def user_ids(self):
        """Gets the user_ids of this UserNotificationInfo.  # noqa: E501

        Limit events based on user ids, for admin notifications  # noqa: E501

        :return: The user_ids of this UserNotificationInfo.  # noqa: E501
        :rtype: list[str]
        """
        return self._user_ids

    @user_ids.setter
    def user_ids(self, user_ids):
        """Sets the user_ids of this UserNotificationInfo.

        Limit events based on user ids, for admin notifications  # noqa: E501

        :param user_ids: The user_ids of this UserNotificationInfo.  # noqa: E501
        :type: list[str]
        """

        self._user_ids = user_ids

    @property
    def device_ids(self):
        """Gets the device_ids of this UserNotificationInfo.  # noqa: E501


        :return: The device_ids of this UserNotificationInfo.  # noqa: E501
        :rtype: list[str]
        """
        return self._device_ids

    @device_ids.setter
    def device_ids(self, device_ids):
        """Sets the device_ids of this UserNotificationInfo.


        :param device_ids: The device_ids of this UserNotificationInfo.  # noqa: E501
        :type: list[str]
        """

        self._device_ids = device_ids

    @property
    def library_ids(self):
        """Gets the library_ids of this UserNotificationInfo.  # noqa: E501


        :return: The library_ids of this UserNotificationInfo.  # noqa: E501
        :rtype: list[str]
        """
        return self._library_ids

    @library_ids.setter
    def library_ids(self, library_ids):
        """Sets the library_ids of this UserNotificationInfo.


        :param library_ids: The library_ids of this UserNotificationInfo.  # noqa: E501
        :type: list[str]
        """

        self._library_ids = library_ids

    @property
    def event_ids(self):
        """Gets the event_ids of this UserNotificationInfo.  # noqa: E501


        :return: The event_ids of this UserNotificationInfo.  # noqa: E501
        :rtype: list[str]
        """
        return self._event_ids

    @event_ids.setter
    def event_ids(self, event_ids):
        """Sets the event_ids of this UserNotificationInfo.


        :param event_ids: The event_ids of this UserNotificationInfo.  # noqa: E501
        :type: list[str]
        """

        self._event_ids = event_ids

    @property
    def user_id(self):
        """Gets the user_id of this UserNotificationInfo.  # noqa: E501

        Notification intended for a specific user  # noqa: E501

        :return: The user_id of this UserNotificationInfo.  # noqa: E501
        :rtype: str
        """
        return self._user_id

    @user_id.setter
    def user_id(self, user_id):
        """Sets the user_id of this UserNotificationInfo.

        Notification intended for a specific user  # noqa: E501

        :param user_id: The user_id of this UserNotificationInfo.  # noqa: E501
        :type: str
        """

        self._user_id = user_id

    @property
    def is_self_notification(self):
        """Gets the is_self_notification of this UserNotificationInfo.  # noqa: E501


        :return: The is_self_notification of this UserNotificationInfo.  # noqa: E501
        :rtype: bool
        """
        return self._is_self_notification

    @is_self_notification.setter
    def is_self_notification(self, is_self_notification):
        """Sets the is_self_notification of this UserNotificationInfo.


        :param is_self_notification: The is_self_notification of this UserNotificationInfo.  # noqa: E501
        :type: bool
        """

        self._is_self_notification = is_self_notification

    @property
    def group_items(self):
        """Gets the group_items of this UserNotificationInfo.  # noqa: E501


        :return: The group_items of this UserNotificationInfo.  # noqa: E501
        :rtype: bool
        """
        return self._group_items

    @group_items.setter
    def group_items(self, group_items):
        """Sets the group_items of this UserNotificationInfo.


        :param group_items: The group_items of this UserNotificationInfo.  # noqa: E501
        :type: bool
        """

        self._group_items = group_items

    @property
    def options(self):
        """Gets the options of this UserNotificationInfo.  # noqa: E501

        This is for webhooks since this will cause xml serialization to fail  # noqa: E501

        :return: The options of this UserNotificationInfo.  # noqa: E501
        :rtype: dict(str, str)
        """
        return self._options

    @options.setter
    def options(self, options):
        """Sets the options of this UserNotificationInfo.

        This is for webhooks since this will cause xml serialization to fail  # noqa: E501

        :param options: The options of this UserNotificationInfo.  # noqa: E501
        :type: dict(str, str)
        """

        self._options = options

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(UserNotificationInfo, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, UserNotificationInfo):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
