# coding: utf-8

"""
    external/v1/auth_service.proto

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: version not set
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git

    NOTE
    ----
    standard swagger-codegen-cli for this python client has been modified
    by custom templates. The purpose of these templates is to include
    typing information in the API and Model code. Please refer to the
    main grid repository for more info
"""

import pprint
import re  # noqa: F401

from typing import TYPE_CHECKING

import six

if TYPE_CHECKING:
    from datetime import datetime
    from lightning_cloud.openapi.models import *

class V1LitPage(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 = {
        'children': 'list[V1LitPage]',
        'content': 'str',
        'created_at': 'datetime',
        'creator_id': 'str',
        'id': 'str',
        'order': 'int',
        'parent_id': 'str',
        'resource_id': 'str',
        'resource_type': 'str',
        'type': 'V1LitPageType',
        'updated_at': 'datetime'
    }

    attribute_map = {
        'children': 'children',
        'content': 'content',
        'created_at': 'createdAt',
        'creator_id': 'creatorId',
        'id': 'id',
        'order': 'order',
        'parent_id': 'parentId',
        'resource_id': 'resourceId',
        'resource_type': 'resourceType',
        'type': 'type',
        'updated_at': 'updatedAt'
    }

    def __init__(self, children: 'list[V1LitPage]' =None, content: 'str' =None, created_at: 'datetime' =None, creator_id: 'str' =None, id: 'str' =None, order: 'int' =None, parent_id: 'str' =None, resource_id: 'str' =None, resource_type: 'str' =None, type: 'V1LitPageType' =None, updated_at: 'datetime' =None):  # noqa: E501
        """V1LitPage - a model defined in Swagger"""  # noqa: E501
        self._children = None
        self._content = None
        self._created_at = None
        self._creator_id = None
        self._id = None
        self._order = None
        self._parent_id = None
        self._resource_id = None
        self._resource_type = None
        self._type = None
        self._updated_at = None
        self.discriminator = None
        if children is not None:
            self.children = children
        if content is not None:
            self.content = content
        if created_at is not None:
            self.created_at = created_at
        if creator_id is not None:
            self.creator_id = creator_id
        if id is not None:
            self.id = id
        if order is not None:
            self.order = order
        if parent_id is not None:
            self.parent_id = parent_id
        if resource_id is not None:
            self.resource_id = resource_id
        if resource_type is not None:
            self.resource_type = resource_type
        if type is not None:
            self.type = type
        if updated_at is not None:
            self.updated_at = updated_at

    @property
    def children(self) -> 'list[V1LitPage]':
        """Gets the children of this V1LitPage.  # noqa: E501


        :return: The children of this V1LitPage.  # noqa: E501
        :rtype: list[V1LitPage]
        """
        return self._children

    @children.setter
    def children(self, children: 'list[V1LitPage]'):
        """Sets the children of this V1LitPage.


        :param children: The children of this V1LitPage.  # noqa: E501
        :type: list[V1LitPage]
        """

        self._children = children

    @property
    def content(self) -> 'str':
        """Gets the content of this V1LitPage.  # noqa: E501


        :return: The content of this V1LitPage.  # noqa: E501
        :rtype: str
        """
        return self._content

    @content.setter
    def content(self, content: 'str'):
        """Sets the content of this V1LitPage.


        :param content: The content of this V1LitPage.  # noqa: E501
        :type: str
        """

        self._content = content

    @property
    def created_at(self) -> 'datetime':
        """Gets the created_at of this V1LitPage.  # noqa: E501


        :return: The created_at of this V1LitPage.  # noqa: E501
        :rtype: datetime
        """
        return self._created_at

    @created_at.setter
    def created_at(self, created_at: 'datetime'):
        """Sets the created_at of this V1LitPage.


        :param created_at: The created_at of this V1LitPage.  # noqa: E501
        :type: datetime
        """

        self._created_at = created_at

    @property
    def creator_id(self) -> 'str':
        """Gets the creator_id of this V1LitPage.  # noqa: E501


        :return: The creator_id of this V1LitPage.  # noqa: E501
        :rtype: str
        """
        return self._creator_id

    @creator_id.setter
    def creator_id(self, creator_id: 'str'):
        """Sets the creator_id of this V1LitPage.


        :param creator_id: The creator_id of this V1LitPage.  # noqa: E501
        :type: str
        """

        self._creator_id = creator_id

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


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

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


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

        self._id = id

    @property
    def order(self) -> 'int':
        """Gets the order of this V1LitPage.  # noqa: E501


        :return: The order of this V1LitPage.  # noqa: E501
        :rtype: int
        """
        return self._order

    @order.setter
    def order(self, order: 'int'):
        """Sets the order of this V1LitPage.


        :param order: The order of this V1LitPage.  # noqa: E501
        :type: int
        """

        self._order = order

    @property
    def parent_id(self) -> 'str':
        """Gets the parent_id of this V1LitPage.  # noqa: E501


        :return: The parent_id of this V1LitPage.  # noqa: E501
        :rtype: str
        """
        return self._parent_id

    @parent_id.setter
    def parent_id(self, parent_id: 'str'):
        """Sets the parent_id of this V1LitPage.


        :param parent_id: The parent_id of this V1LitPage.  # noqa: E501
        :type: str
        """

        self._parent_id = parent_id

    @property
    def resource_id(self) -> 'str':
        """Gets the resource_id of this V1LitPage.  # noqa: E501


        :return: The resource_id of this V1LitPage.  # noqa: E501
        :rtype: str
        """
        return self._resource_id

    @resource_id.setter
    def resource_id(self, resource_id: 'str'):
        """Sets the resource_id of this V1LitPage.


        :param resource_id: The resource_id of this V1LitPage.  # noqa: E501
        :type: str
        """

        self._resource_id = resource_id

    @property
    def resource_type(self) -> 'str':
        """Gets the resource_type of this V1LitPage.  # noqa: E501


        :return: The resource_type of this V1LitPage.  # noqa: E501
        :rtype: str
        """
        return self._resource_type

    @resource_type.setter
    def resource_type(self, resource_type: 'str'):
        """Sets the resource_type of this V1LitPage.


        :param resource_type: The resource_type of this V1LitPage.  # noqa: E501
        :type: str
        """

        self._resource_type = resource_type

    @property
    def type(self) -> 'V1LitPageType':
        """Gets the type of this V1LitPage.  # noqa: E501


        :return: The type of this V1LitPage.  # noqa: E501
        :rtype: V1LitPageType
        """
        return self._type

    @type.setter
    def type(self, type: 'V1LitPageType'):
        """Sets the type of this V1LitPage.


        :param type: The type of this V1LitPage.  # noqa: E501
        :type: V1LitPageType
        """

        self._type = type

    @property
    def updated_at(self) -> 'datetime':
        """Gets the updated_at of this V1LitPage.  # noqa: E501


        :return: The updated_at of this V1LitPage.  # noqa: E501
        :rtype: datetime
        """
        return self._updated_at

    @updated_at.setter
    def updated_at(self, updated_at: 'datetime'):
        """Sets the updated_at of this V1LitPage.


        :param updated_at: The updated_at of this V1LitPage.  # noqa: E501
        :type: datetime
        """

        self._updated_at = updated_at

    def to_dict(self) -> dict:
        """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(V1LitPage, dict):
            for key, value in self.items():
                result[key] = value

        return result

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

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

    def __eq__(self, other: 'V1LitPage') -> bool:
        """Returns true if both objects are equal"""
        if not isinstance(other, V1LitPage):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other: 'V1LitPage') -> bool:
        """Returns true if both objects are not equal"""
        return not self == other
