/*
 * The Plaid API
 * The Plaid REST API. Please see https://plaid.com/docs/api for more details.
 *
 * The version of the OpenAPI document: 2020-09-14_1.680.0
 * 
 *
 * 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.plaid.client.model;

import java.util.Objects;
import java.util.Arrays;
import com.google.gson.TypeAdapter;
import com.google.gson.annotations.JsonAdapter;
import com.google.gson.annotations.SerializedName;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.plaid.client.model.PartnerEndCustomerCRAUseCases;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;

/**
 * A map of permissible purposes to their corresponding use cases.
 */
@ApiModel(description = "A map of permissible purposes to their corresponding use cases.")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-12-11T18:58:39.328614Z[Etc/UTC]")
public class PartnerEndCustomerCRAPurposes {
  public static final String SERIALIZED_NAME_W_R_I_T_T_E_N_I_N_S_T_R_U_C_T_I_O_N = "WRITTEN_INSTRUCTION";
  @SerializedName(SERIALIZED_NAME_W_R_I_T_T_E_N_I_N_S_T_R_U_C_T_I_O_N)
  private PartnerEndCustomerCRAUseCases WRITTEN_INSTRUCTION;

  public static final String SERIALIZED_NAME_E_X_T_E_N_S_I_O_N_O_F_C_R_E_D_I_T_O_R_A_C_C_O_U_N_T_R_E_V_I_E_W = "EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW";
  @SerializedName(SERIALIZED_NAME_E_X_T_E_N_S_I_O_N_O_F_C_R_E_D_I_T_O_R_A_C_C_O_U_N_T_R_E_V_I_E_W)
  private PartnerEndCustomerCRAUseCases EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW;

  public static final String SERIALIZED_NAME_E_M_P_L_O_Y_M_E_N_T = "EMPLOYMENT";
  @SerializedName(SERIALIZED_NAME_E_M_P_L_O_Y_M_E_N_T)
  private PartnerEndCustomerCRAUseCases EMPLOYMENT;

  public static final String SERIALIZED_NAME_I_N_S_U_R_A_N_C_E_U_N_D_E_R_W_R_I_T_I_N_G = "INSURANCE_UNDERWRITING";
  @SerializedName(SERIALIZED_NAME_I_N_S_U_R_A_N_C_E_U_N_D_E_R_W_R_I_T_I_N_G)
  private PartnerEndCustomerCRAUseCases INSURANCE_UNDERWRITING;

  public static final String SERIALIZED_NAME_L_I_C_E_N_S_E_E_L_I_G_I_B_I_L_I_T_Y = "LICENSE_ELIGIBILITY";
  @SerializedName(SERIALIZED_NAME_L_I_C_E_N_S_E_E_L_I_G_I_B_I_L_I_T_Y)
  private PartnerEndCustomerCRAUseCases LICENSE_ELIGIBILITY;

  public static final String SERIALIZED_NAME_R_I_S_K_A_S_S_E_S_S_M_E_N_T = "RISK_ASSESSMENT";
  @SerializedName(SERIALIZED_NAME_R_I_S_K_A_S_S_E_S_S_M_E_N_T)
  private PartnerEndCustomerCRAUseCases RISK_ASSESSMENT;

  public static final String SERIALIZED_NAME_B_U_S_I_N_E_S_S_N_E_E_D_T_R_A_N_S_A_C_T_I_O_N = "BUSINESS_NEED_TRANSACTION";
  @SerializedName(SERIALIZED_NAME_B_U_S_I_N_E_S_S_N_E_E_D_T_R_A_N_S_A_C_T_I_O_N)
  private PartnerEndCustomerCRAUseCases BUSINESS_NEED_TRANSACTION;

  public static final String SERIALIZED_NAME_B_U_S_I_N_E_S_S_N_E_E_D_A_C_C_O_U_N_T_R_E_V_I_E_W = "BUSINESS_NEED_ACCOUNT_REVIEW";
  @SerializedName(SERIALIZED_NAME_B_U_S_I_N_E_S_S_N_E_E_D_A_C_C_O_U_N_T_R_E_V_I_E_W)
  private PartnerEndCustomerCRAUseCases BUSINESS_NEED_ACCOUNT_REVIEW;


  public PartnerEndCustomerCRAPurposes WRITTEN_INSTRUCTION(PartnerEndCustomerCRAUseCases WRITTEN_INSTRUCTION) {
    
    this.WRITTEN_INSTRUCTION = WRITTEN_INSTRUCTION;
    return this;
  }

   /**
   * Get WRITTEN_INSTRUCTION
   * @return WRITTEN_INSTRUCTION
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public PartnerEndCustomerCRAUseCases getWRITTENINSTRUCTION() {
    return WRITTEN_INSTRUCTION;
  }


  public void setWRITTENINSTRUCTION(PartnerEndCustomerCRAUseCases WRITTEN_INSTRUCTION) {
    this.WRITTEN_INSTRUCTION = WRITTEN_INSTRUCTION;
  }


  public PartnerEndCustomerCRAPurposes EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW(PartnerEndCustomerCRAUseCases EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW) {
    
    this.EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW = EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW;
    return this;
  }

   /**
   * Get EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW
   * @return EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public PartnerEndCustomerCRAUseCases getEXTENSIONOFCREDITORACCOUNTREVIEW() {
    return EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW;
  }


  public void setEXTENSIONOFCREDITORACCOUNTREVIEW(PartnerEndCustomerCRAUseCases EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW) {
    this.EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW = EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW;
  }


  public PartnerEndCustomerCRAPurposes EMPLOYMENT(PartnerEndCustomerCRAUseCases EMPLOYMENT) {
    
    this.EMPLOYMENT = EMPLOYMENT;
    return this;
  }

   /**
   * Get EMPLOYMENT
   * @return EMPLOYMENT
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public PartnerEndCustomerCRAUseCases getEMPLOYMENT() {
    return EMPLOYMENT;
  }


  public void setEMPLOYMENT(PartnerEndCustomerCRAUseCases EMPLOYMENT) {
    this.EMPLOYMENT = EMPLOYMENT;
  }


  public PartnerEndCustomerCRAPurposes INSURANCE_UNDERWRITING(PartnerEndCustomerCRAUseCases INSURANCE_UNDERWRITING) {
    
    this.INSURANCE_UNDERWRITING = INSURANCE_UNDERWRITING;
    return this;
  }

   /**
   * Get INSURANCE_UNDERWRITING
   * @return INSURANCE_UNDERWRITING
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public PartnerEndCustomerCRAUseCases getINSURANCEUNDERWRITING() {
    return INSURANCE_UNDERWRITING;
  }


  public void setINSURANCEUNDERWRITING(PartnerEndCustomerCRAUseCases INSURANCE_UNDERWRITING) {
    this.INSURANCE_UNDERWRITING = INSURANCE_UNDERWRITING;
  }


  public PartnerEndCustomerCRAPurposes LICENSE_ELIGIBILITY(PartnerEndCustomerCRAUseCases LICENSE_ELIGIBILITY) {
    
    this.LICENSE_ELIGIBILITY = LICENSE_ELIGIBILITY;
    return this;
  }

   /**
   * Get LICENSE_ELIGIBILITY
   * @return LICENSE_ELIGIBILITY
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public PartnerEndCustomerCRAUseCases getLICENSEELIGIBILITY() {
    return LICENSE_ELIGIBILITY;
  }


  public void setLICENSEELIGIBILITY(PartnerEndCustomerCRAUseCases LICENSE_ELIGIBILITY) {
    this.LICENSE_ELIGIBILITY = LICENSE_ELIGIBILITY;
  }


  public PartnerEndCustomerCRAPurposes RISK_ASSESSMENT(PartnerEndCustomerCRAUseCases RISK_ASSESSMENT) {
    
    this.RISK_ASSESSMENT = RISK_ASSESSMENT;
    return this;
  }

   /**
   * Get RISK_ASSESSMENT
   * @return RISK_ASSESSMENT
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public PartnerEndCustomerCRAUseCases getRISKASSESSMENT() {
    return RISK_ASSESSMENT;
  }


  public void setRISKASSESSMENT(PartnerEndCustomerCRAUseCases RISK_ASSESSMENT) {
    this.RISK_ASSESSMENT = RISK_ASSESSMENT;
  }


  public PartnerEndCustomerCRAPurposes BUSINESS_NEED_TRANSACTION(PartnerEndCustomerCRAUseCases BUSINESS_NEED_TRANSACTION) {
    
    this.BUSINESS_NEED_TRANSACTION = BUSINESS_NEED_TRANSACTION;
    return this;
  }

   /**
   * Get BUSINESS_NEED_TRANSACTION
   * @return BUSINESS_NEED_TRANSACTION
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public PartnerEndCustomerCRAUseCases getBUSINESSNEEDTRANSACTION() {
    return BUSINESS_NEED_TRANSACTION;
  }


  public void setBUSINESSNEEDTRANSACTION(PartnerEndCustomerCRAUseCases BUSINESS_NEED_TRANSACTION) {
    this.BUSINESS_NEED_TRANSACTION = BUSINESS_NEED_TRANSACTION;
  }


  public PartnerEndCustomerCRAPurposes BUSINESS_NEED_ACCOUNT_REVIEW(PartnerEndCustomerCRAUseCases BUSINESS_NEED_ACCOUNT_REVIEW) {
    
    this.BUSINESS_NEED_ACCOUNT_REVIEW = BUSINESS_NEED_ACCOUNT_REVIEW;
    return this;
  }

   /**
   * Get BUSINESS_NEED_ACCOUNT_REVIEW
   * @return BUSINESS_NEED_ACCOUNT_REVIEW
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "")

  public PartnerEndCustomerCRAUseCases getBUSINESSNEEDACCOUNTREVIEW() {
    return BUSINESS_NEED_ACCOUNT_REVIEW;
  }


  public void setBUSINESSNEEDACCOUNTREVIEW(PartnerEndCustomerCRAUseCases BUSINESS_NEED_ACCOUNT_REVIEW) {
    this.BUSINESS_NEED_ACCOUNT_REVIEW = BUSINESS_NEED_ACCOUNT_REVIEW;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    PartnerEndCustomerCRAPurposes partnerEndCustomerCRAPurposes = (PartnerEndCustomerCRAPurposes) o;
    return Objects.equals(this.WRITTEN_INSTRUCTION, partnerEndCustomerCRAPurposes.WRITTEN_INSTRUCTION) &&
        Objects.equals(this.EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW, partnerEndCustomerCRAPurposes.EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW) &&
        Objects.equals(this.EMPLOYMENT, partnerEndCustomerCRAPurposes.EMPLOYMENT) &&
        Objects.equals(this.INSURANCE_UNDERWRITING, partnerEndCustomerCRAPurposes.INSURANCE_UNDERWRITING) &&
        Objects.equals(this.LICENSE_ELIGIBILITY, partnerEndCustomerCRAPurposes.LICENSE_ELIGIBILITY) &&
        Objects.equals(this.RISK_ASSESSMENT, partnerEndCustomerCRAPurposes.RISK_ASSESSMENT) &&
        Objects.equals(this.BUSINESS_NEED_TRANSACTION, partnerEndCustomerCRAPurposes.BUSINESS_NEED_TRANSACTION) &&
        Objects.equals(this.BUSINESS_NEED_ACCOUNT_REVIEW, partnerEndCustomerCRAPurposes.BUSINESS_NEED_ACCOUNT_REVIEW);
  }

  @Override
  public int hashCode() {
    return Objects.hash(WRITTEN_INSTRUCTION, EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW, EMPLOYMENT, INSURANCE_UNDERWRITING, LICENSE_ELIGIBILITY, RISK_ASSESSMENT, BUSINESS_NEED_TRANSACTION, BUSINESS_NEED_ACCOUNT_REVIEW);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class PartnerEndCustomerCRAPurposes {\n");
    sb.append("    WRITTEN_INSTRUCTION: ").append(toIndentedString(WRITTEN_INSTRUCTION)).append("\n");
    sb.append("    EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW: ").append(toIndentedString(EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW)).append("\n");
    sb.append("    EMPLOYMENT: ").append(toIndentedString(EMPLOYMENT)).append("\n");
    sb.append("    INSURANCE_UNDERWRITING: ").append(toIndentedString(INSURANCE_UNDERWRITING)).append("\n");
    sb.append("    LICENSE_ELIGIBILITY: ").append(toIndentedString(LICENSE_ELIGIBILITY)).append("\n");
    sb.append("    RISK_ASSESSMENT: ").append(toIndentedString(RISK_ASSESSMENT)).append("\n");
    sb.append("    BUSINESS_NEED_TRANSACTION: ").append(toIndentedString(BUSINESS_NEED_TRANSACTION)).append("\n");
    sb.append("    BUSINESS_NEED_ACCOUNT_REVIEW: ").append(toIndentedString(BUSINESS_NEED_ACCOUNT_REVIEW)).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    ");
  }

}

