/*
 * 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.EwaScore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.IOException;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;

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

  public static final String SERIALIZED_NAME_EWA_REPORT_ID = "ewa_report_id";
  @SerializedName(SERIALIZED_NAME_EWA_REPORT_ID)
  private String ewaReportId;

  public static final String SERIALIZED_NAME_GENERATION_TIME = "generation_time";
  @SerializedName(SERIALIZED_NAME_GENERATION_TIME)
  private OffsetDateTime generationTime;

  public static final String SERIALIZED_NAME_EWA_SCORES = "ewa_scores";
  @SerializedName(SERIALIZED_NAME_EWA_SCORES)
  private List<EwaScore> ewaScores = null;


  public BetaEwaReportV1GetResponse 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
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(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 BetaEwaReportV1GetResponse ewaReportId(String ewaReportId) {
    
    this.ewaReportId = ewaReportId;
    return this;
  }

   /**
   * Unique identifier for the generated EWA score group.
   * @return ewaReportId
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "Unique identifier for the generated EWA score group.")

  public String getEwaReportId() {
    return ewaReportId;
  }


  public void setEwaReportId(String ewaReportId) {
    this.ewaReportId = ewaReportId;
  }


  public BetaEwaReportV1GetResponse generationTime(OffsetDateTime generationTime) {
    
    this.generationTime = generationTime;
    return this;
  }

   /**
   * The date and time when &#x60;ewa_scores&#x60; was generated, in ISO 8601 format (e.g. \&quot;2018-04-12T03:32:11Z\&quot;).
   * @return generationTime
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "The date and time when `ewa_scores` was generated, in ISO 8601 format (e.g. \"2018-04-12T03:32:11Z\").")

  public OffsetDateTime getGenerationTime() {
    return generationTime;
  }


  public void setGenerationTime(OffsetDateTime generationTime) {
    this.generationTime = generationTime;
  }


  public BetaEwaReportV1GetResponse ewaScores(List<EwaScore> ewaScores) {
    
    this.ewaScores = ewaScores;
    return this;
  }

  public BetaEwaReportV1GetResponse addEwaScoresItem(EwaScore ewaScoresItem) {
    if (this.ewaScores == null) {
      this.ewaScores = new ArrayList<>();
    }
    this.ewaScores.add(ewaScoresItem);
    return this;
  }

   /**
   * A list of earned wage access (EWA) scoring entries that map potential advance amounts to repayment likelihood scores. The predefined advance amount ranges are &#x60;[0, 25]&#x60;, &#x60;[25, 50]&#x60;, &#x60;[50, 100]&#x60;, &#x60;[100, 200]&#x60;, &#x60;[200, 300]&#x60;, &#x60;[300, 400]&#x60;, and &#x60;[400, 500]&#x60;.
   * @return ewaScores
  **/
  @javax.annotation.Nullable
  @ApiModelProperty(value = "A list of earned wage access (EWA) scoring entries that map potential advance amounts to repayment likelihood scores. The predefined advance amount ranges are `[0, 25]`, `[25, 50]`, `[50, 100]`, `[100, 200]`, `[200, 300]`, `[300, 400]`, and `[400, 500]`.")

  public List<EwaScore> getEwaScores() {
    return ewaScores;
  }


  public void setEwaScores(List<EwaScore> ewaScores) {
    this.ewaScores = ewaScores;
  }


  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    BetaEwaReportV1GetResponse betaEwaReportV1GetResponse = (BetaEwaReportV1GetResponse) o;
    return Objects.equals(this.requestId, betaEwaReportV1GetResponse.requestId) &&
        Objects.equals(this.ewaReportId, betaEwaReportV1GetResponse.ewaReportId) &&
        Objects.equals(this.generationTime, betaEwaReportV1GetResponse.generationTime) &&
        Objects.equals(this.ewaScores, betaEwaReportV1GetResponse.ewaScores);
  }

  @Override
  public int hashCode() {
    return Objects.hash(requestId, ewaReportId, generationTime, ewaScores);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class BetaEwaReportV1GetResponse {\n");
    sb.append("    requestId: ").append(toIndentedString(requestId)).append("\n");
    sb.append("    ewaReportId: ").append(toIndentedString(ewaReportId)).append("\n");
    sb.append("    generationTime: ").append(toIndentedString(generationTime)).append("\n");
    sb.append("    ewaScores: ").append(toIndentedString(ewaScores)).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    ");
  }

}

