# coding: utf-8

"""
    herd

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    OpenAPI spec version: 0.178.0-SNAPSHOT
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class BusinessObjectFormatUpdateRequest(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'description': 'str',
        'document_schema': 'str',
        'document_schema_url': 'str',
        'attributes': 'list[Attribute]',
        'schema': 'Schema'
    }

    attribute_map = {
        'description': 'description',
        'document_schema': 'documentSchema',
        'document_schema_url': 'documentSchemaUrl',
        'attributes': 'attributes',
        'schema': 'schema'
    }

    def __init__(self, description=None, document_schema=None, document_schema_url=None, attributes=None, schema=None):  # noqa: E501
        """BusinessObjectFormatUpdateRequest - a model defined in OpenAPI"""  # noqa: E501

        self._description = None
        self._document_schema = None
        self._document_schema_url = None
        self._attributes = None
        self._schema = None
        self.discriminator = None

        if description is not None:
            self.description = description
        if document_schema is not None:
            self.document_schema = document_schema
        if document_schema_url is not None:
            self.document_schema_url = document_schema_url
        if attributes is not None:
            self.attributes = attributes
        if schema is not None:
            self.schema = schema

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

        Description of the Business Object Format  # noqa: E501

        :return: The description of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :rtype: str
        """
        return self._description

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

        Description of the Business Object Format  # noqa: E501

        :param description: The description of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :type: str
        """

        self._description = description

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

        The schema for document-style business object data registered with Herd. The schema allows the publisher to perform                   self-service validation of incoming data when registering business object data. It also allows the consumers to perform self-service                   downstream actions like hydrating objects when consuming business object data. The documentSchema is optional. Currently any documentSchema is                   accepted. Its content is not validated                  # noqa: E501

        :return: The document_schema of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :rtype: str
        """
        return self._document_schema

    @document_schema.setter
    def document_schema(self, document_schema):
        """Sets the document_schema of this BusinessObjectFormatUpdateRequest.

        The schema for document-style business object data registered with Herd. The schema allows the publisher to perform                   self-service validation of incoming data when registering business object data. It also allows the consumers to perform self-service                   downstream actions like hydrating objects when consuming business object data. The documentSchema is optional. Currently any documentSchema is                   accepted. Its content is not validated                  # noqa: E501

        :param document_schema: The document_schema of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :type: str
        """

        self._document_schema = document_schema

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

        An optional URL of the documentSchema to an externally hosted XSD or JSON. Herd will not access this URL,                   it will simply store and retrieve the URL and teams can then access the URL                  # noqa: E501

        :return: The document_schema_url of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :rtype: str
        """
        return self._document_schema_url

    @document_schema_url.setter
    def document_schema_url(self, document_schema_url):
        """Sets the document_schema_url of this BusinessObjectFormatUpdateRequest.

        An optional URL of the documentSchema to an externally hosted XSD or JSON. Herd will not access this URL,                   it will simply store and retrieve the URL and teams can then access the URL                  # noqa: E501

        :param document_schema_url: The document_schema_url of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :type: str
        """

        self._document_schema_url = document_schema_url

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

        Custom user-defined metadata associated with this Business Object Format. \"name\" is the attribute name (i.e. the key) and                   \"value\" is the attribute value                  # noqa: E501

        :return: The attributes of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :rtype: list[Attribute]
        """
        return self._attributes

    @attributes.setter
    def attributes(self, attributes):
        """Sets the attributes of this BusinessObjectFormatUpdateRequest.

        Custom user-defined metadata associated with this Business Object Format. \"name\" is the attribute name (i.e. the key) and                   \"value\" is the attribute value                  # noqa: E501

        :param attributes: The attributes of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :type: list[Attribute]
        """

        self._attributes = attributes

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


        :return: The schema of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :rtype: Schema
        """
        return self._schema

    @schema.setter
    def schema(self, schema):
        """Sets the schema of this BusinessObjectFormatUpdateRequest.


        :param schema: The schema of this BusinessObjectFormatUpdateRequest.  # noqa: E501
        :type: Schema
        """

        self._schema = schema

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

        for attr, _ in six.iteritems(self.openapi_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

        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, BusinessObjectFormatUpdateRequest):
            return False

        return self.__dict__ == other.__dict__

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