from datetime import date, datetime  # noqa: F401
from typing import List, Dict  # noqa: F401

from capif_security import util
from capif_security.models.base_model import Model


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

    Do not edit the class manually.
    """

    def __init__(self, param=None, reason=None):  # noqa: E501
        """InvalidParam1 - a model defined in OpenAPI

        :param param: The param of this InvalidParam1.  # noqa: E501
        :type param: str
        :param reason: The reason of this InvalidParam1.  # noqa: E501
        :type reason: str
        """
        self.openapi_types = {
            'param': str,
            'reason': str
        }

        self.attribute_map = {
            'param': 'param',
            'reason': 'reason'
        }

        self._param = param
        self._reason = reason

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

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

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

        If the invalid parameter is an attribute in a JSON body, this IE shall contain the  attribute's name and shall be encoded as a JSON Pointer. If the invalid parameter is  an HTTP header, this IE shall be formatted as the concatenation of the string \"header \"  plus the name of such header. If the invalid parameter is a query parameter, this IE  shall be formatted as the concatenation of the string \"query \" plus the name of such  query parameter. If the invalid parameter is a variable part in the path of a resource  URI, this IE shall contain the name of the variable, including the symbols \"{\" and \"}\"  used in OpenAPI specification as the notation to represent variable path segments.   # noqa: E501

        :return: The param of this InvalidParam1.
        :rtype: str
        """
        return self._param

    @param.setter
    def param(self, param: str):
        """Sets the param of this InvalidParam1.

        If the invalid parameter is an attribute in a JSON body, this IE shall contain the  attribute's name and shall be encoded as a JSON Pointer. If the invalid parameter is  an HTTP header, this IE shall be formatted as the concatenation of the string \"header \"  plus the name of such header. If the invalid parameter is a query parameter, this IE  shall be formatted as the concatenation of the string \"query \" plus the name of such  query parameter. If the invalid parameter is a variable part in the path of a resource  URI, this IE shall contain the name of the variable, including the symbols \"{\" and \"}\"  used in OpenAPI specification as the notation to represent variable path segments.   # noqa: E501

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

        self._param = param

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

        A human-readable reason, e.g. \"must be a positive integer\". In cases involving failed  operations in a PATCH request, the reason string should identify the operation that  failed using the operation's array index to assist in correlation of the invalid  parameter with the failed operation, e.g.\" Replacement value invalid for attribute  (failed operation index= 4)\"   # noqa: E501

        :return: The reason of this InvalidParam1.
        :rtype: str
        """
        return self._reason

    @reason.setter
    def reason(self, reason: str):
        """Sets the reason of this InvalidParam1.

        A human-readable reason, e.g. \"must be a positive integer\". In cases involving failed  operations in a PATCH request, the reason string should identify the operation that  failed using the operation's array index to assist in correlation of the invalid  parameter with the failed operation, e.g.\" Replacement value invalid for attribute  (failed operation index= 4)\"   # noqa: E501

        :param reason: The reason of this InvalidParam1.
        :type reason: str
        """

        self._reason = reason
