/*
 * 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.AccountVerificationInsights;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;

/**
 * AuthVerifyResponse defines the response schema for &#x60;/auth/verify&#x60;
 */
@ApiModel(description = "AuthVerifyResponse defines the response schema for `/auth/verify`")
@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2025-12-11T18:58:39.328614Z[Etc/UTC]")
public class AuthVerifyResponse {
  public static final String SERIALIZED_NAME_REQUEST_ID = "request_id";
  @SerializedName(SERIALIZED_NAME_REQUEST_ID)
  private String requestId;

  public static final String SERIALIZED_NAME_ITEM_ID = "item_id";
  @SerializedName(SERIALIZED_NAME_ITEM_ID)
  private String itemId;

  public static final String SERIALIZED_NAME_VERIFICATION_STATUS = "verification_status";
  @SerializedName(SERIALIZED_NAME_VERIFICATION_STATUS)
  private String verificationStatus;

  public static final String SERIALIZED_NAME_VERIFICATION_INSIGHTS = "verification_insights";
  @SerializedName(SERIALIZED_NAME_VERIFICATION_INSIGHTS)
  private AccountVerificationInsights verificationInsights;


  public AuthVerifyResponse requestId(String requestId) {
    
    this.requestId = requestId;
    return this;
  }

   /**
   * A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
   * @return requestId
  **/
  @ApiModelProperty(required = true, value = "A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.")

  public String getRequestId() {
    return requestId;
  }


  public void setRequestId(String requestId) {
    this.requestId = requestId;
  }


  public AuthVerifyResponse itemId(String itemId) {
    
    this.itemId = itemId;
    return this;
  }

   /**
   * The &#x60;item_id&#x60; value of the Item created for verification. If numbers data provided is invalid, an item may not be created.
   * @return itemId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "The `item_id` value of the Item created for verification. If numbers data provided is invalid, an item may not be created.")

  public String getItemId() {
    return itemId;
  }


  public void setItemId(String itemId) {
    this.itemId = itemId;
  }


  public AuthVerifyResponse verificationStatus(String verificationStatus) {
    
    this.verificationStatus = verificationStatus;
    return this;
  }

   /**
   * Indicates the Item&#39;s database verification status. Possible values are:  &#x60;database_insights_fail&#x60;: The Item&#39;s numbers have been verified using Plaid&#39;s data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth.  &#x60;database_insights_pass&#x60;: The Item&#39;s numbers have been verified using Plaid&#39;s data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth.  &#x60;database_insights_pass_with_caution&#x60;: The Item&#39;s numbers have been verified using Plaid&#39;s data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth. 
   * @return verificationStatus
  **/
  @ApiModelProperty(required = true, value = "Indicates the Item's database verification status. Possible values are:  `database_insights_fail`: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth.  `database_insights_pass`: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth.  `database_insights_pass_with_caution`: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth. ")

  public String getVerificationStatus() {
    return verificationStatus;
  }


  public void setVerificationStatus(String verificationStatus) {
    this.verificationStatus = verificationStatus;
  }


  public AuthVerifyResponse verificationInsights(AccountVerificationInsights verificationInsights) {
    
    this.verificationInsights = verificationInsights;
    return this;
  }

   /**
   * Get verificationInsights
   * @return verificationInsights
  **/
  @ApiModelProperty(required = true, value = "")

  public AccountVerificationInsights getVerificationInsights() {
    return verificationInsights;
  }


  public void setVerificationInsights(AccountVerificationInsights verificationInsights) {
    this.verificationInsights = verificationInsights;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    AuthVerifyResponse authVerifyResponse = (AuthVerifyResponse) o;
    return Objects.equals(this.requestId, authVerifyResponse.requestId) &&
        Objects.equals(this.itemId, authVerifyResponse.itemId) &&
        Objects.equals(this.verificationStatus, authVerifyResponse.verificationStatus) &&
        Objects.equals(this.verificationInsights, authVerifyResponse.verificationInsights);
  }

  @Override
  public int hashCode() {
    return Objects.hash(requestId, itemId, verificationStatus, verificationInsights);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class AuthVerifyResponse {\n");
    sb.append("    requestId: ").append(toIndentedString(requestId)).append("\n");
    sb.append("    itemId: ").append(toIndentedString(itemId)).append("\n");
    sb.append("    verificationStatus: ").append(toIndentedString(verificationStatus)).append("\n");
    sb.append("    verificationInsights: ").append(toIndentedString(verificationInsights)).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    ");
  }

}

