content: /*
   * Open Banking API
   *
   * The version of the OpenAPI document: 1
   *
   *
   * 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.openbanking;
  
  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.*;
  
  /** AccountVerificationRoutesRequest */
  @JsonPropertyOrder({
    AccountVerificationRoutesRequest.JSON_PROPERTY_COUNTRY,
    AccountVerificationRoutesRequest.JSON_PROPERTY_LOCALE,
    AccountVerificationRoutesRequest.JSON_PROPERTY_REDIRECT_URL,
    AccountVerificationRoutesRequest.JSON_PROPERTY_STATE
  })
  public class AccountVerificationRoutesRequest {
    public static final String JSON_PROPERTY_COUNTRY = "country";
    private AccountVerificationCountry country;
  
    public static final String JSON_PROPERTY_LOCALE = "locale";
    private String locale;
  
    public static final String JSON_PROPERTY_REDIRECT_URL = "redirectUrl";
    private String redirectUrl;
  
    public static final String JSON_PROPERTY_STATE = "state";
    private String state;
  
    public AccountVerificationRoutesRequest() {}
  
    /**
     * country
     *
     * @param country
     * @return the current {@code AccountVerificationRoutesRequest} instance, allowing for method
     *     chaining
     */
    public AccountVerificationRoutesRequest country(AccountVerificationCountry country) {
      this.country = country;
      return this;
    }
  
    /**
     * Get country
     *
     * @return country
     */
    @JsonProperty(JSON_PROPERTY_COUNTRY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public AccountVerificationCountry getCountry() {
      return country;
    }
  
    /**
     * country
     *
     * @param country
     */
    @JsonProperty(JSON_PROPERTY_COUNTRY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCountry(AccountVerificationCountry country) {
      this.country = country;
    }
  
    /**
     * The language to use in the open banking flow UI, specified by a combination of a two-letter
     * [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) language code and an
     * [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. This
     * information is used to configure the open banking flow with the same language for a consistent
     * user experience. Default value: **en-US**
     *
     * @param locale The language to use in the open banking flow UI, specified by a combination of a
     *     two-letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes)
     *     language code and an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
     *     country code. This information is used to configure the open banking flow with the same
     *     language for a consistent user experience. Default value: **en-US**
     * @return the current {@code AccountVerificationRoutesRequest} instance, allowing for method
     *     chaining
     */
    public AccountVerificationRoutesRequest locale(String locale) {
      this.locale = locale;
      return this;
    }
  
    /**
     * The language to use in the open banking flow UI, specified by a combination of a two-letter
     * [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) language code and an
     * [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. This
     * information is used to configure the open banking flow with the same language for a consistent
     * user experience. Default value: **en-US**
     *
     * @return locale The language to use in the open banking flow UI, specified by a combination of a
     *     two-letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes)
     *     language code and an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
     *     country code. This information is used to configure the open banking flow with the same
     *     language for a consistent user experience. Default value: **en-US**
     */
    @JsonProperty(JSON_PROPERTY_LOCALE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getLocale() {
      return locale;
    }
  
    /**
     * The language to use in the open banking flow UI, specified by a combination of a two-letter
     * [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) language code and an
     * [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code. This
     * information is used to configure the open banking flow with the same language for a consistent
     * user experience. Default value: **en-US**
     *
     * @param locale The language to use in the open banking flow UI, specified by a combination of a
     *     two-letter [ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes)
     *     language code and an [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
     *     country code. This information is used to configure the open banking flow with the same
     *     language for a consistent user experience. Default value: **en-US**
     */
    @JsonProperty(JSON_PROPERTY_LOCALE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setLocale(String locale) {
      this.locale = locale;
    }
  
    /**
     * The URL where Adyen redirects the third-party individual after they complete the open banking
     * flow.
     *
     * @param redirectUrl The URL where Adyen redirects the third-party individual after they complete
     *     the open banking flow.
     * @return the current {@code AccountVerificationRoutesRequest} instance, allowing for method
     *     chaining
     */
    public AccountVerificationRoutesRequest redirectUrl(String redirectUrl) {
      this.redirectUrl = redirectUrl;
      return this;
    }
  
    /**
     * The URL where Adyen redirects the third-party individual after they complete the open banking
     * flow.
     *
     * @return redirectUrl The URL where Adyen redirects the third-party individual after they
     *     complete the open banking flow.
     */
    @JsonProperty(JSON_PROPERTY_REDIRECT_URL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getRedirectUrl() {
      return redirectUrl;
    }
  
    /**
     * The URL where Adyen redirects the third-party individual after they complete the open banking
     * flow.
     *
     * @param redirectUrl The URL where Adyen redirects the third-party individual after they complete
     *     the open banking flow.
     */
    @JsonProperty(JSON_PROPERTY_REDIRECT_URL)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRedirectUrl(String redirectUrl) {
      this.redirectUrl = redirectUrl;
    }
  
    /**
     * A value that helps you identify the request in callback handling. You can generate this value
     * on a per-session basis to protect the callback against Cross-Site Request Forgery (CSRF)
     * attacks. This value must be composed of characters that can be successfully URL-encoded.
     *
     * @param state A value that helps you identify the request in callback handling. You can generate
     *     this value on a per-session basis to protect the callback against Cross-Site Request
     *     Forgery (CSRF) attacks. This value must be composed of characters that can be successfully
     *     URL-encoded.
     * @return the current {@code AccountVerificationRoutesRequest} instance, allowing for method
     *     chaining
     */
    public AccountVerificationRoutesRequest state(String state) {
      this.state = state;
      return this;
    }
  
    /**
     * A value that helps you identify the request in callback handling. You can generate this value
     * on a per-session basis to protect the callback against Cross-Site Request Forgery (CSRF)
     * attacks. This value must be composed of characters that can be successfully URL-encoded.
     *
     * @return state A value that helps you identify the request in callback handling. You can
     *     generate this value on a per-session basis to protect the callback against Cross-Site
     *     Request Forgery (CSRF) attacks. This value must be composed of characters that can be
     *     successfully URL-encoded.
     */
    @JsonProperty(JSON_PROPERTY_STATE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getState() {
      return state;
    }
  
    /**
     * A value that helps you identify the request in callback handling. You can generate this value
     * on a per-session basis to protect the callback against Cross-Site Request Forgery (CSRF)
     * attacks. This value must be composed of characters that can be successfully URL-encoded.
     *
     * @param state A value that helps you identify the request in callback handling. You can generate
     *     this value on a per-session basis to protect the callback against Cross-Site Request
     *     Forgery (CSRF) attacks. This value must be composed of characters that can be successfully
     *     URL-encoded.
     */
    @JsonProperty(JSON_PROPERTY_STATE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setState(String state) {
      this.state = state;
    }
  
    /** Return true if this AccountVerificationRoutesRequest object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      AccountVerificationRoutesRequest accountVerificationRoutesRequest =
          (AccountVerificationRoutesRequest) o;
      return Objects.equals(this.country, accountVerificationRoutesRequest.country)
          && Objects.equals(this.locale, accountVerificationRoutesRequest.locale)
          && Objects.equals(this.redirectUrl, accountVerificationRoutesRequest.redirectUrl)
          && Objects.equals(this.state, accountVerificationRoutesRequest.state);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(country, locale, redirectUrl, state);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class AccountVerificationRoutesRequest {\n");
      sb.append("    country: ").append(toIndentedString(country)).append("\n");
      sb.append("    locale: ").append(toIndentedString(locale)).append("\n");
      sb.append("    redirectUrl: ").append(toIndentedString(redirectUrl)).append("\n");
      sb.append("    state: ").append(toIndentedString(state)).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 AccountVerificationRoutesRequest given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of AccountVerificationRoutesRequest
     * @throws JsonProcessingException if the JSON string is invalid with respect to
     *     AccountVerificationRoutesRequest
     */
    public static AccountVerificationRoutesRequest fromJson(String jsonString)
        throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, AccountVerificationRoutesRequest.class);
    }
  
    /**
     * Convert an instance of AccountVerificationRoutesRequest to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  