content: /*
   * Disputes API
   *
   * The version of the OpenAPI document: 30
   *
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  package com.adyen.model.disputes;
  
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import java.util.*;
  
  /** DefenseDocumentType */
  @JsonPropertyOrder({
    DefenseDocumentType.JSON_PROPERTY_AVAILABLE,
    DefenseDocumentType.JSON_PROPERTY_DEFENSE_DOCUMENT_TYPE_CODE,
    DefenseDocumentType.JSON_PROPERTY_REQUIREMENT_LEVEL
  })
  public class DefenseDocumentType {
    public static final String JSON_PROPERTY_AVAILABLE = "available";
    private Boolean available;
  
    public static final String JSON_PROPERTY_DEFENSE_DOCUMENT_TYPE_CODE = "defenseDocumentTypeCode";
    private String defenseDocumentTypeCode;
  
    public static final String JSON_PROPERTY_REQUIREMENT_LEVEL = "requirementLevel";
    private String requirementLevel;
  
    public DefenseDocumentType() {}
  
    /**
     * When **true**, you&#39;ve successfully uploaded this type of defense document. When **false**,
     * you haven&#39;t uploaded this defense document type.
     *
     * @param available When **true**, you&#39;ve successfully uploaded this type of defense document.
     *     When **false**, you haven&#39;t uploaded this defense document type.
     * @return the current {@code DefenseDocumentType} instance, allowing for method chaining
     */
    public DefenseDocumentType available(Boolean available) {
      this.available = available;
      return this;
    }
  
    /**
     * When **true**, you&#39;ve successfully uploaded this type of defense document. When **false**,
     * you haven&#39;t uploaded this defense document type.
     *
     * @return available When **true**, you&#39;ve successfully uploaded this type of defense
     *     document. When **false**, you haven&#39;t uploaded this defense document type.
     */
    @JsonProperty(JSON_PROPERTY_AVAILABLE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Boolean getAvailable() {
      return available;
    }
  
    /**
     * When **true**, you&#39;ve successfully uploaded this type of defense document. When **false**,
     * you haven&#39;t uploaded this defense document type.
     *
     * @param available When **true**, you&#39;ve successfully uploaded this type of defense document.
     *     When **false**, you haven&#39;t uploaded this defense document type.
     */
    @JsonProperty(JSON_PROPERTY_AVAILABLE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAvailable(Boolean available) {
      this.available = available;
    }
  
    /**
     * The document type code of the defense document.
     *
     * @param defenseDocumentTypeCode The document type code of the defense document.
     * @return the current {@code DefenseDocumentType} instance, allowing for method chaining
     */
    public DefenseDocumentType defenseDocumentTypeCode(String defenseDocumentTypeCode) {
      this.defenseDocumentTypeCode = defenseDocumentTypeCode;
      return this;
    }
  
    /**
     * The document type code of the defense document.
     *
     * @return defenseDocumentTypeCode The document type code of the defense document.
     */
    @JsonProperty(JSON_PROPERTY_DEFENSE_DOCUMENT_TYPE_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getDefenseDocumentTypeCode() {
      return defenseDocumentTypeCode;
    }
  
    /**
     * The document type code of the defense document.
     *
     * @param defenseDocumentTypeCode The document type code of the defense document.
     */
    @JsonProperty(JSON_PROPERTY_DEFENSE_DOCUMENT_TYPE_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDefenseDocumentTypeCode(String defenseDocumentTypeCode) {
      this.defenseDocumentTypeCode = defenseDocumentTypeCode;
    }
  
    /**
     * Indicates to what extent the defense document is required in the defense process. Possible
     * values: * **Required**: You must supply the document. * **OneOrMore**: You must supply at least
     * one of the documents with this label. * **Optional**: You can choose to supply the document. *
     * **AlternativeRequired**: You must supply a generic defense document. To enable this
     * functionality, contact our Support Team. When enabled, you can supply a generic defense
     * document for all schemes.
     *
     * @param requirementLevel Indicates to what extent the defense document is required in the
     *     defense process. Possible values: * **Required**: You must supply the document. *
     *     **OneOrMore**: You must supply at least one of the documents with this label. *
     *     **Optional**: You can choose to supply the document. * **AlternativeRequired**: You must
     *     supply a generic defense document. To enable this functionality, contact our Support Team.
     *     When enabled, you can supply a generic defense document for all schemes.
     * @return the current {@code DefenseDocumentType} instance, allowing for method chaining
     */
    public DefenseDocumentType requirementLevel(String requirementLevel) {
      this.requirementLevel = requirementLevel;
      return this;
    }
  
    /**
     * Indicates to what extent the defense document is required in the defense process. Possible
     * values: * **Required**: You must supply the document. * **OneOrMore**: You must supply at least
     * one of the documents with this label. * **Optional**: You can choose to supply the document. *
     * **AlternativeRequired**: You must supply a generic defense document. To enable this
     * functionality, contact our Support Team. When enabled, you can supply a generic defense
     * document for all schemes.
     *
     * @return requirementLevel Indicates to what extent the defense document is required in the
     *     defense process. Possible values: * **Required**: You must supply the document. *
     *     **OneOrMore**: You must supply at least one of the documents with this label. *
     *     **Optional**: You can choose to supply the document. * **AlternativeRequired**: You must
     *     supply a generic defense document. To enable this functionality, contact our Support Team.
     *     When enabled, you can supply a generic defense document for all schemes.
     */
    @JsonProperty(JSON_PROPERTY_REQUIREMENT_LEVEL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getRequirementLevel() {
      return requirementLevel;
    }
  
    /**
     * Indicates to what extent the defense document is required in the defense process. Possible
     * values: * **Required**: You must supply the document. * **OneOrMore**: You must supply at least
     * one of the documents with this label. * **Optional**: You can choose to supply the document. *
     * **AlternativeRequired**: You must supply a generic defense document. To enable this
     * functionality, contact our Support Team. When enabled, you can supply a generic defense
     * document for all schemes.
     *
     * @param requirementLevel Indicates to what extent the defense document is required in the
     *     defense process. Possible values: * **Required**: You must supply the document. *
     *     **OneOrMore**: You must supply at least one of the documents with this label. *
     *     **Optional**: You can choose to supply the document. * **AlternativeRequired**: You must
     *     supply a generic defense document. To enable this functionality, contact our Support Team.
     *     When enabled, you can supply a generic defense document for all schemes.
     */
    @JsonProperty(JSON_PROPERTY_REQUIREMENT_LEVEL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRequirementLevel(String requirementLevel) {
      this.requirementLevel = requirementLevel;
    }
  
    /** Return true if this DefenseDocumentType object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      DefenseDocumentType defenseDocumentType = (DefenseDocumentType) o;
      return Objects.equals(this.available, defenseDocumentType.available)
          && Objects.equals(this.defenseDocumentTypeCode, defenseDocumentType.defenseDocumentTypeCode)
          && Objects.equals(this.requirementLevel, defenseDocumentType.requirementLevel);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(available, defenseDocumentTypeCode, requirementLevel);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class DefenseDocumentType {\n");
      sb.append("    available: ").append(toIndentedString(available)).append("\n");
      sb.append("    defenseDocumentTypeCode: ")
          .append(toIndentedString(defenseDocumentTypeCode))
          .append("\n");
      sb.append("    requirementLevel: ").append(toIndentedString(requirementLevel)).append("\n");
      sb.append("}");
      return sb.toString();
    }
  
    /**
     * Convert the given object to string with each line indented by 4 spaces (except the first line).
     */
    private String toIndentedString(Object o) {
      if (o == null) {
        return "null";
      }
      return o.toString().replace("\n", "\n    ");
    }
  
    /**
     * Create an instance of DefenseDocumentType given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of DefenseDocumentType
     * @throws JsonProcessingException if the JSON string is invalid with respect to
     *     DefenseDocumentType
     */
    public static DefenseDocumentType fromJson(String jsonString) throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, DefenseDocumentType.class);
    }
  
    /**
     * Convert an instance of DefenseDocumentType to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  