# coding: utf-8

"""
    Robust Intelligence REST API

    API methods for Robust Intelligence. Users must authenticate using the `X-Firewall-Api-Key` for all the firewall methods and `rime-api-key` for all other methods.  # noqa: E501

    OpenAPI spec version: 1.0
    Contact: dev@robustintelligence.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class GenerativetestingGenerativeTestingResult(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 = {
        'id': 'RimeUUID',
        'job_id': 'RimeUUID',
        'attack_technique': 'str',
        'attack_objective': 'RimeAttackObjective',
        'objective_sub_category': 'GenerativetestingObjectiveSubCategory',
        'failing_examples': 'list[GenerativeTestingResultExample]',
        'severity': 'LibgenerativeSeverity',
        'owasp_standards': 'list[GenerativetestingGenerativeTestingResultStandardInfo]',
        'nist_standards': 'list[GenerativetestingGenerativeTestingResultStandardInfo]',
        'mitre_standards': 'list[GenerativetestingGenerativeTestingResultStandardInfo]',
        'attacks_attempted': 'int',
        'threat': 'GenerativetestingThreat'
    }

    attribute_map = {
        'id': 'id',
        'job_id': 'jobId',
        'attack_technique': 'attackTechnique',
        'attack_objective': 'attackObjective',
        'objective_sub_category': 'objectiveSubCategory',
        'failing_examples': 'failingExamples',
        'severity': 'severity',
        'owasp_standards': 'owaspStandards',
        'nist_standards': 'nistStandards',
        'mitre_standards': 'mitreStandards',
        'attacks_attempted': 'attacksAttempted',
        'threat': 'threat'
    }

    def __init__(self, id=None, job_id=None, attack_technique=None, attack_objective=None, objective_sub_category=None, failing_examples=None, severity=None, owasp_standards=None, nist_standards=None, mitre_standards=None, attacks_attempted=None, threat=None):  # noqa: E501
        """GenerativetestingGenerativeTestingResult - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._job_id = None
        self._attack_technique = None
        self._attack_objective = None
        self._objective_sub_category = None
        self._failing_examples = None
        self._severity = None
        self._owasp_standards = None
        self._nist_standards = None
        self._mitre_standards = None
        self._attacks_attempted = None
        self._threat = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if job_id is not None:
            self.job_id = job_id
        if attack_technique is not None:
            self.attack_technique = attack_technique
        if attack_objective is not None:
            self.attack_objective = attack_objective
        if objective_sub_category is not None:
            self.objective_sub_category = objective_sub_category
        if failing_examples is not None:
            self.failing_examples = failing_examples
        if severity is not None:
            self.severity = severity
        if owasp_standards is not None:
            self.owasp_standards = owasp_standards
        if nist_standards is not None:
            self.nist_standards = nist_standards
        if mitre_standards is not None:
            self.mitre_standards = mitre_standards
        if attacks_attempted is not None:
            self.attacks_attempted = attacks_attempted
        if threat is not None:
            self.threat = threat

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


        :return: The id of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: RimeUUID
        """
        return self._id

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


        :param id: The id of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: RimeUUID
        """

        self._id = id

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


        :return: The job_id of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: RimeUUID
        """
        return self._job_id

    @job_id.setter
    def job_id(self, job_id):
        """Sets the job_id of this GenerativetestingGenerativeTestingResult.


        :param job_id: The job_id of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: RimeUUID
        """

        self._job_id = job_id

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

        The attack technique used in the prompt. This is a string because the types of attacks changes frequently over time depending on our threat intelligence.  # noqa: E501

        :return: The attack_technique of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: str
        """
        return self._attack_technique

    @attack_technique.setter
    def attack_technique(self, attack_technique):
        """Sets the attack_technique of this GenerativetestingGenerativeTestingResult.

        The attack technique used in the prompt. This is a string because the types of attacks changes frequently over time depending on our threat intelligence.  # noqa: E501

        :param attack_technique: The attack_technique of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: str
        """

        self._attack_technique = attack_technique

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


        :return: The attack_objective of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: RimeAttackObjective
        """
        return self._attack_objective

    @attack_objective.setter
    def attack_objective(self, attack_objective):
        """Sets the attack_objective of this GenerativetestingGenerativeTestingResult.


        :param attack_objective: The attack_objective of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: RimeAttackObjective
        """

        self._attack_objective = attack_objective

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


        :return: The objective_sub_category of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: GenerativetestingObjectiveSubCategory
        """
        return self._objective_sub_category

    @objective_sub_category.setter
    def objective_sub_category(self, objective_sub_category):
        """Sets the objective_sub_category of this GenerativetestingGenerativeTestingResult.


        :param objective_sub_category: The objective_sub_category of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: GenerativetestingObjectiveSubCategory
        """

        self._objective_sub_category = objective_sub_category

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

        List of failing examples to demonstrate failures in this category.  # noqa: E501

        :return: The failing_examples of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: list[GenerativeTestingResultExample]
        """
        return self._failing_examples

    @failing_examples.setter
    def failing_examples(self, failing_examples):
        """Sets the failing_examples of this GenerativetestingGenerativeTestingResult.

        List of failing examples to demonstrate failures in this category.  # noqa: E501

        :param failing_examples: The failing_examples of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: list[GenerativeTestingResultExample]
        """

        self._failing_examples = failing_examples

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


        :return: The severity of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: LibgenerativeSeverity
        """
        return self._severity

    @severity.setter
    def severity(self, severity):
        """Sets the severity of this GenerativetestingGenerativeTestingResult.


        :param severity: The severity of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: LibgenerativeSeverity
        """

        self._severity = severity

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

        Containers describing the various AI risk standards associated with this batch of attack examples.  # noqa: E501

        :return: The owasp_standards of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: list[GenerativetestingGenerativeTestingResultStandardInfo]
        """
        return self._owasp_standards

    @owasp_standards.setter
    def owasp_standards(self, owasp_standards):
        """Sets the owasp_standards of this GenerativetestingGenerativeTestingResult.

        Containers describing the various AI risk standards associated with this batch of attack examples.  # noqa: E501

        :param owasp_standards: The owasp_standards of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: list[GenerativetestingGenerativeTestingResultStandardInfo]
        """

        self._owasp_standards = owasp_standards

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


        :return: The nist_standards of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: list[GenerativetestingGenerativeTestingResultStandardInfo]
        """
        return self._nist_standards

    @nist_standards.setter
    def nist_standards(self, nist_standards):
        """Sets the nist_standards of this GenerativetestingGenerativeTestingResult.


        :param nist_standards: The nist_standards of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: list[GenerativetestingGenerativeTestingResultStandardInfo]
        """

        self._nist_standards = nist_standards

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


        :return: The mitre_standards of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: list[GenerativetestingGenerativeTestingResultStandardInfo]
        """
        return self._mitre_standards

    @mitre_standards.setter
    def mitre_standards(self, mitre_standards):
        """Sets the mitre_standards of this GenerativetestingGenerativeTestingResult.


        :param mitre_standards: The mitre_standards of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: list[GenerativetestingGenerativeTestingResultStandardInfo]
        """

        self._mitre_standards = mitre_standards

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

        The number of attacks prompts attempted for these results.  # noqa: E501

        :return: The attacks_attempted of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: int
        """
        return self._attacks_attempted

    @attacks_attempted.setter
    def attacks_attempted(self, attacks_attempted):
        """Sets the attacks_attempted of this GenerativetestingGenerativeTestingResult.

        The number of attacks prompts attempted for these results.  # noqa: E501

        :param attacks_attempted: The attacks_attempted of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: int
        """

        self._attacks_attempted = attacks_attempted

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


        :return: The threat of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :rtype: GenerativetestingThreat
        """
        return self._threat

    @threat.setter
    def threat(self, threat):
        """Sets the threat of this GenerativetestingGenerativeTestingResult.


        :param threat: The threat of this GenerativetestingGenerativeTestingResult.  # noqa: E501
        :type: GenerativetestingThreat
        """

        self._threat = threat

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

        return self.__dict__ == other.__dict__

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