# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from properly_model_python.models.base_model_ import Model
from properly_model_python import util


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

    Do not edit the class manually.
    """

    def __init__(self, id: str=None, url: str=None, title: str=None, description: str=None, thumbnail_url: str=None, thumbnail_hash: str=None, medium_url: str=None, medium_hash: str=None, large_url: str=None, large_hash: str=None):  # noqa: E501
        """Image - a model defined in Swagger

        :param id: The id of this Image.  # noqa: E501
        :type id: str
        :param url: The url of this Image.  # noqa: E501
        :type url: str
        :param title: The title of this Image.  # noqa: E501
        :type title: str
        :param description: The description of this Image.  # noqa: E501
        :type description: str
        :param thumbnail_url: The thumbnail_url of this Image.  # noqa: E501
        :type thumbnail_url: str
        :param thumbnail_hash: The thumbnail_hash of this Image.  # noqa: E501
        :type thumbnail_hash: str
        :param medium_url: The medium_url of this Image.  # noqa: E501
        :type medium_url: str
        :param medium_hash: The medium_hash of this Image.  # noqa: E501
        :type medium_hash: str
        :param large_url: The large_url of this Image.  # noqa: E501
        :type large_url: str
        :param large_hash: The large_hash of this Image.  # noqa: E501
        :type large_hash: str
        """
        self.swagger_types = {
            'id': str,
            'url': str,
            'title': str,
            'description': str,
            'thumbnail_url': str,
            'thumbnail_hash': str,
            'medium_url': str,
            'medium_hash': str,
            'large_url': str,
            'large_hash': str
        }

        self.attribute_map = {
            'id': 'id',
            'url': 'url',
            'title': 'title',
            'description': 'description',
            'thumbnail_url': 'thumbnail_url',
            'thumbnail_hash': 'thumbnail_hash',
            'medium_url': 'medium_url',
            'medium_hash': 'medium_hash',
            'large_url': 'large_url',
            'large_hash': 'large_hash'
        }

        self._id = id
        self._url = url
        self._title = title
        self._description = description
        self._thumbnail_url = thumbnail_url
        self._thumbnail_hash = thumbnail_hash
        self._medium_url = medium_url
        self._medium_hash = medium_hash
        self._large_url = large_url
        self._large_hash = large_hash

    @classmethod
    def from_dict(cls, dikt) -> 'Image':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The Image of this Image.  # noqa: E501
        :rtype: Image
        """
        return util.deserialize_model(dikt, cls)

    @property
    def id(self) -> str:
        """Gets the id of this Image.


        :return: The id of this Image.
        :rtype: str
        """
        return self._id

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


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

        self._id = id

    @property
    def url(self) -> str:
        """Gets the url of this Image.


        :return: The url of this Image.
        :rtype: str
        """
        return self._url

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


        :param url: The url of this Image.
        :type url: str
        """

        self._url = url

    @property
    def title(self) -> str:
        """Gets the title of this Image.


        :return: The title of this Image.
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title: str):
        """Sets the title of this Image.


        :param title: The title of this Image.
        :type title: str
        """

        self._title = title

    @property
    def description(self) -> str:
        """Gets the description of this Image.


        :return: The description of this Image.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description: str):
        """Sets the description of this Image.


        :param description: The description of this Image.
        :type description: str
        """

        self._description = description

    @property
    def thumbnail_url(self) -> str:
        """Gets the thumbnail_url of this Image.


        :return: The thumbnail_url of this Image.
        :rtype: str
        """
        return self._thumbnail_url

    @thumbnail_url.setter
    def thumbnail_url(self, thumbnail_url: str):
        """Sets the thumbnail_url of this Image.


        :param thumbnail_url: The thumbnail_url of this Image.
        :type thumbnail_url: str
        """

        self._thumbnail_url = thumbnail_url

    @property
    def thumbnail_hash(self) -> str:
        """Gets the thumbnail_hash of this Image.


        :return: The thumbnail_hash of this Image.
        :rtype: str
        """
        return self._thumbnail_hash

    @thumbnail_hash.setter
    def thumbnail_hash(self, thumbnail_hash: str):
        """Sets the thumbnail_hash of this Image.


        :param thumbnail_hash: The thumbnail_hash of this Image.
        :type thumbnail_hash: str
        """

        self._thumbnail_hash = thumbnail_hash

    @property
    def medium_url(self) -> str:
        """Gets the medium_url of this Image.


        :return: The medium_url of this Image.
        :rtype: str
        """
        return self._medium_url

    @medium_url.setter
    def medium_url(self, medium_url: str):
        """Sets the medium_url of this Image.


        :param medium_url: The medium_url of this Image.
        :type medium_url: str
        """

        self._medium_url = medium_url

    @property
    def medium_hash(self) -> str:
        """Gets the medium_hash of this Image.


        :return: The medium_hash of this Image.
        :rtype: str
        """
        return self._medium_hash

    @medium_hash.setter
    def medium_hash(self, medium_hash: str):
        """Sets the medium_hash of this Image.


        :param medium_hash: The medium_hash of this Image.
        :type medium_hash: str
        """

        self._medium_hash = medium_hash

    @property
    def large_url(self) -> str:
        """Gets the large_url of this Image.


        :return: The large_url of this Image.
        :rtype: str
        """
        return self._large_url

    @large_url.setter
    def large_url(self, large_url: str):
        """Sets the large_url of this Image.


        :param large_url: The large_url of this Image.
        :type large_url: str
        """

        self._large_url = large_url

    @property
    def large_hash(self) -> str:
        """Gets the large_hash of this Image.


        :return: The large_hash of this Image.
        :rtype: str
        """
        return self._large_hash

    @large_hash.setter
    def large_hash(self, large_hash: str):
        """Sets the large_hash of this Image.


        :param large_hash: The large_hash of this Image.
        :type large_hash: str
        """

        self._large_hash = large_hash
