content: /*
   * Account API
   * This API is used for the classic integration. If you are just starting your implementation, refer to our [new integration guide](https://docs.adyen.com/marketplaces-and-platforms) instead.  The Account API provides endpoints for managing account-related entities on your platform. These related entities include account holders, accounts, bank accounts, shareholders, and verification-related documents. The management operations include actions such as creation, retrieval, updating, and deletion of them.  For more information, refer to our [documentation](https://docs.adyen.com/marketplaces-and-platforms/classic). ## Authentication Your Adyen contact will provide your API credential and an API key. To connect to the API, add an `X-API-Key` header with the API key as the value, for example:   ``` curl -H \"Content-Type: application/json\" \\ -H \"X-API-Key: YOUR_API_KEY\" \\ ... ```  Alternatively, you can use the username and password to connect to the API using basic authentication. For example:  ``` curl -U \"ws@MarketPlace.YOUR_PLATFORM_ACCOUNT\":\"YOUR_WS_PASSWORD\" \\ -H \"Content-Type: application/json\" \\ ... ``` When going live, you need to generate new web service user credentials to access the [live endpoints](https://docs.adyen.com/development-resources/live-endpoints).  ## Versioning The Account API supports [versioning](https://docs.adyen.com/development-resources/versioning) using a version suffix in the endpoint URL. This suffix has the following format: \"vXX\", where XX is the version number.  For example: ``` https://cal-test.adyen.com/cal/services/Account/v6/createAccountHolder ```
   *
   * The version of the OpenAPI document: 6
   *
   *
   * 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.marketpayaccount;
  
  import com.fasterxml.jackson.annotation.JsonCreator;
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.annotation.JsonValue;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import io.swagger.annotations.ApiModelProperty;
  import java.time.OffsetDateTime;
  import java.util.ArrayList;
  import java.util.List;
  import java.util.Objects;
  
  /** GetAccountHolderResponse */
  @JsonPropertyOrder({
    GetAccountHolderResponse.JSON_PROPERTY_ACCOUNT_HOLDER_CODE,
    GetAccountHolderResponse.JSON_PROPERTY_ACCOUNT_HOLDER_DETAILS,
    GetAccountHolderResponse.JSON_PROPERTY_ACCOUNT_HOLDER_STATUS,
    GetAccountHolderResponse.JSON_PROPERTY_ACCOUNTS,
    GetAccountHolderResponse.JSON_PROPERTY_DESCRIPTION,
    GetAccountHolderResponse.JSON_PROPERTY_INVALID_FIELDS,
    GetAccountHolderResponse.JSON_PROPERTY_LEGAL_ENTITY,
    GetAccountHolderResponse.JSON_PROPERTY_MIGRATION_DATA,
    GetAccountHolderResponse.JSON_PROPERTY_PRIMARY_CURRENCY,
    GetAccountHolderResponse.JSON_PROPERTY_PSP_REFERENCE,
    GetAccountHolderResponse.JSON_PROPERTY_RESULT_CODE,
    GetAccountHolderResponse.JSON_PROPERTY_SYSTEM_UP_TO_DATE_TIME,
    GetAccountHolderResponse.JSON_PROPERTY_VERIFICATION,
    GetAccountHolderResponse.JSON_PROPERTY_VERIFICATION_PROFILE
  })
  public class GetAccountHolderResponse {
    public static final String JSON_PROPERTY_ACCOUNT_HOLDER_CODE = "accountHolderCode";
    private String accountHolderCode;
  
    public static final String JSON_PROPERTY_ACCOUNT_HOLDER_DETAILS = "accountHolderDetails";
    private AccountHolderDetails accountHolderDetails;
  
    public static final String JSON_PROPERTY_ACCOUNT_HOLDER_STATUS = "accountHolderStatus";
    private AccountHolderStatus accountHolderStatus;
  
    public static final String JSON_PROPERTY_ACCOUNTS = "accounts";
    private List<Account> accounts = null;
  
    public static final String JSON_PROPERTY_DESCRIPTION = "description";
    private String description;
  
    public static final String JSON_PROPERTY_INVALID_FIELDS = "invalidFields";
    private List<ErrorFieldType> invalidFields = null;
  
    /** The legal entity of the account holder. */
    public enum LegalEntityEnum {
      BUSINESS("Business"),
  
      INDIVIDUAL("Individual"),
  
      NONPROFIT("NonProfit"),
  
      PARTNERSHIP("Partnership"),
  
      PUBLICCOMPANY("PublicCompany");
  
      private String value;
  
      LegalEntityEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static LegalEntityEnum fromValue(String value) {
        for (LegalEntityEnum b : LegalEntityEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        throw new IllegalArgumentException("Unexpected value '" + value + "'");
      }
    }
  
    public static final String JSON_PROPERTY_LEGAL_ENTITY = "legalEntity";
    private LegalEntityEnum legalEntity;
  
    public static final String JSON_PROPERTY_MIGRATION_DATA = "migrationData";
    private MigrationData migrationData;
  
    public static final String JSON_PROPERTY_PRIMARY_CURRENCY = "primaryCurrency";
    private String primaryCurrency;
  
    public static final String JSON_PROPERTY_PSP_REFERENCE = "pspReference";
    private String pspReference;
  
    public static final String JSON_PROPERTY_RESULT_CODE = "resultCode";
    private String resultCode;
  
    public static final String JSON_PROPERTY_SYSTEM_UP_TO_DATE_TIME = "systemUpToDateTime";
    private OffsetDateTime systemUpToDateTime;
  
    public static final String JSON_PROPERTY_VERIFICATION = "verification";
    private KYCVerificationResult verification;
  
    public static final String JSON_PROPERTY_VERIFICATION_PROFILE = "verificationProfile";
    private String verificationProfile;
  
    public GetAccountHolderResponse() {}
  
    public GetAccountHolderResponse accountHolderCode(String accountHolderCode) {
      this.accountHolderCode = accountHolderCode;
      return this;
    }
  
    /**
     * The code of the account holder.
     *
     * @return accountHolderCode
     */
    @ApiModelProperty(value = "The code of the account holder.")
    @JsonProperty(JSON_PROPERTY_ACCOUNT_HOLDER_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getAccountHolderCode() {
      return accountHolderCode;
    }
  
    @JsonProperty(JSON_PROPERTY_ACCOUNT_HOLDER_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAccountHolderCode(String accountHolderCode) {
      this.accountHolderCode = accountHolderCode;
    }
  
    public GetAccountHolderResponse accountHolderDetails(AccountHolderDetails accountHolderDetails) {
      this.accountHolderDetails = accountHolderDetails;
      return this;
    }
  
    /**
     * Get accountHolderDetails
     *
     * @return accountHolderDetails
     */
    @ApiModelProperty(value = "")
    @JsonProperty(JSON_PROPERTY_ACCOUNT_HOLDER_DETAILS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public AccountHolderDetails getAccountHolderDetails() {
      return accountHolderDetails;
    }
  
    @JsonProperty(JSON_PROPERTY_ACCOUNT_HOLDER_DETAILS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAccountHolderDetails(AccountHolderDetails accountHolderDetails) {
      this.accountHolderDetails = accountHolderDetails;
    }
  
    public GetAccountHolderResponse accountHolderStatus(AccountHolderStatus accountHolderStatus) {
      this.accountHolderStatus = accountHolderStatus;
      return this;
    }
  
    /**
     * Get accountHolderStatus
     *
     * @return accountHolderStatus
     */
    @ApiModelProperty(value = "")
    @JsonProperty(JSON_PROPERTY_ACCOUNT_HOLDER_STATUS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public AccountHolderStatus getAccountHolderStatus() {
      return accountHolderStatus;
    }
  
    @JsonProperty(JSON_PROPERTY_ACCOUNT_HOLDER_STATUS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAccountHolderStatus(AccountHolderStatus accountHolderStatus) {
      this.accountHolderStatus = accountHolderStatus;
    }
  
    public GetAccountHolderResponse accounts(List<Account> accounts) {
      this.accounts = accounts;
      return this;
    }
  
    public GetAccountHolderResponse addAccountsItem(Account accountsItem) {
      if (this.accounts == null) {
        this.accounts = new ArrayList<>();
      }
      this.accounts.add(accountsItem);
      return this;
    }
  
    /**
     * A list of the accounts under the account holder.
     *
     * @return accounts
     */
    @ApiModelProperty(value = "A list of the accounts under the account holder.")
    @JsonProperty(JSON_PROPERTY_ACCOUNTS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public List<Account> getAccounts() {
      return accounts;
    }
  
    @JsonProperty(JSON_PROPERTY_ACCOUNTS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAccounts(List<Account> accounts) {
      this.accounts = accounts;
    }
  
    public GetAccountHolderResponse description(String description) {
      this.description = description;
      return this;
    }
  
    /**
     * The description of the account holder.
     *
     * @return description
     */
    @ApiModelProperty(value = "The description of the account holder.")
    @JsonProperty(JSON_PROPERTY_DESCRIPTION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getDescription() {
      return description;
    }
  
    @JsonProperty(JSON_PROPERTY_DESCRIPTION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setDescription(String description) {
      this.description = description;
    }
  
    public GetAccountHolderResponse invalidFields(List<ErrorFieldType> invalidFields) {
      this.invalidFields = invalidFields;
      return this;
    }
  
    public GetAccountHolderResponse addInvalidFieldsItem(ErrorFieldType invalidFieldsItem) {
      if (this.invalidFields == null) {
        this.invalidFields = new ArrayList<>();
      }
      this.invalidFields.add(invalidFieldsItem);
      return this;
    }
  
    /**
     * Contains field validation errors that would prevent requests from being processed.
     *
     * @return invalidFields
     */
    @ApiModelProperty(
        value = "Contains field validation errors that would prevent requests from being processed.")
    @JsonProperty(JSON_PROPERTY_INVALID_FIELDS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public List<ErrorFieldType> getInvalidFields() {
      return invalidFields;
    }
  
    @JsonProperty(JSON_PROPERTY_INVALID_FIELDS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setInvalidFields(List<ErrorFieldType> invalidFields) {
      this.invalidFields = invalidFields;
    }
  
    public GetAccountHolderResponse legalEntity(LegalEntityEnum legalEntity) {
      this.legalEntity = legalEntity;
      return this;
    }
  
    /**
     * The legal entity of the account holder.
     *
     * @return legalEntity
     */
    @ApiModelProperty(value = "The legal entity of the account holder.")
    @JsonProperty(JSON_PROPERTY_LEGAL_ENTITY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public LegalEntityEnum getLegalEntity() {
      return legalEntity;
    }
  
    @JsonProperty(JSON_PROPERTY_LEGAL_ENTITY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setLegalEntity(LegalEntityEnum legalEntity) {
      this.legalEntity = legalEntity;
    }
  
    public GetAccountHolderResponse migrationData(MigrationData migrationData) {
      this.migrationData = migrationData;
      return this;
    }
  
    /**
     * Get migrationData
     *
     * @return migrationData
     */
    @ApiModelProperty(value = "")
    @JsonProperty(JSON_PROPERTY_MIGRATION_DATA)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public MigrationData getMigrationData() {
      return migrationData;
    }
  
    @JsonProperty(JSON_PROPERTY_MIGRATION_DATA)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setMigrationData(MigrationData migrationData) {
      this.migrationData = migrationData;
    }
  
    public GetAccountHolderResponse primaryCurrency(String primaryCurrency) {
      this.primaryCurrency = primaryCurrency;
      return this;
    }
  
    /**
     * The three-character [ISO currency
     * code](https://docs.adyen.com/development-resources/currency-codes), with which the prospective
     * account holder primarily deals.
     *
     * @return primaryCurrency
     */
    @ApiModelProperty(
        value =
            "The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes), with which the prospective account holder primarily deals.")
    @JsonProperty(JSON_PROPERTY_PRIMARY_CURRENCY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getPrimaryCurrency() {
      return primaryCurrency;
    }
  
    @JsonProperty(JSON_PROPERTY_PRIMARY_CURRENCY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setPrimaryCurrency(String primaryCurrency) {
      this.primaryCurrency = primaryCurrency;
    }
  
    public GetAccountHolderResponse pspReference(String pspReference) {
      this.pspReference = pspReference;
      return this;
    }
  
    /**
     * The reference of a request. Can be used to uniquely identify the request.
     *
     * @return pspReference
     */
    @ApiModelProperty(
        value = "The reference of a request. Can be used to uniquely identify the request.")
    @JsonProperty(JSON_PROPERTY_PSP_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getPspReference() {
      return pspReference;
    }
  
    @JsonProperty(JSON_PROPERTY_PSP_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setPspReference(String pspReference) {
      this.pspReference = pspReference;
    }
  
    public GetAccountHolderResponse resultCode(String resultCode) {
      this.resultCode = resultCode;
      return this;
    }
  
    /**
     * The result code.
     *
     * @return resultCode
     */
    @ApiModelProperty(value = "The result code.")
    @JsonProperty(JSON_PROPERTY_RESULT_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getResultCode() {
      return resultCode;
    }
  
    @JsonProperty(JSON_PROPERTY_RESULT_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setResultCode(String resultCode) {
      this.resultCode = resultCode;
    }
  
    public GetAccountHolderResponse systemUpToDateTime(OffsetDateTime systemUpToDateTime) {
      this.systemUpToDateTime = systemUpToDateTime;
      return this;
    }
  
    /**
     * The time that shows how up to date is the information in the response.
     *
     * @return systemUpToDateTime
     */
    @ApiModelProperty(
        value = "The time that shows how up to date is the information in the response.")
    @JsonProperty(JSON_PROPERTY_SYSTEM_UP_TO_DATE_TIME)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public OffsetDateTime getSystemUpToDateTime() {
      return systemUpToDateTime;
    }
  
    @JsonProperty(JSON_PROPERTY_SYSTEM_UP_TO_DATE_TIME)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setSystemUpToDateTime(OffsetDateTime systemUpToDateTime) {
      this.systemUpToDateTime = systemUpToDateTime;
    }
  
    public GetAccountHolderResponse verification(KYCVerificationResult verification) {
      this.verification = verification;
      return this;
    }
  
    /**
     * Get verification
     *
     * @return verification
     */
    @ApiModelProperty(value = "")
    @JsonProperty(JSON_PROPERTY_VERIFICATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public KYCVerificationResult getVerification() {
      return verification;
    }
  
    @JsonProperty(JSON_PROPERTY_VERIFICATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setVerification(KYCVerificationResult verification) {
      this.verification = verification;
    }
  
    public GetAccountHolderResponse verificationProfile(String verificationProfile) {
      this.verificationProfile = verificationProfile;
      return this;
    }
  
    /**
     * The identifier of the profile that applies to this entity.
     *
     * @return verificationProfile
     */
    @ApiModelProperty(value = "The identifier of the profile that applies to this entity.")
    @JsonProperty(JSON_PROPERTY_VERIFICATION_PROFILE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getVerificationProfile() {
      return verificationProfile;
    }
  
    @JsonProperty(JSON_PROPERTY_VERIFICATION_PROFILE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setVerificationProfile(String verificationProfile) {
      this.verificationProfile = verificationProfile;
    }
  
    /** Return true if this GetAccountHolderResponse object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      GetAccountHolderResponse getAccountHolderResponse = (GetAccountHolderResponse) o;
      return Objects.equals(this.accountHolderCode, getAccountHolderResponse.accountHolderCode)
          && Objects.equals(this.accountHolderDetails, getAccountHolderResponse.accountHolderDetails)
          && Objects.equals(this.accountHolderStatus, getAccountHolderResponse.accountHolderStatus)
          && Objects.equals(this.accounts, getAccountHolderResponse.accounts)
          && Objects.equals(this.description, getAccountHolderResponse.description)
          && Objects.equals(this.invalidFields, getAccountHolderResponse.invalidFields)
          && Objects.equals(this.legalEntity, getAccountHolderResponse.legalEntity)
          && Objects.equals(this.migrationData, getAccountHolderResponse.migrationData)
          && Objects.equals(this.primaryCurrency, getAccountHolderResponse.primaryCurrency)
          && Objects.equals(this.pspReference, getAccountHolderResponse.pspReference)
          && Objects.equals(this.resultCode, getAccountHolderResponse.resultCode)
          && Objects.equals(this.systemUpToDateTime, getAccountHolderResponse.systemUpToDateTime)
          && Objects.equals(this.verification, getAccountHolderResponse.verification)
          && Objects.equals(this.verificationProfile, getAccountHolderResponse.verificationProfile);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(
          accountHolderCode,
          accountHolderDetails,
          accountHolderStatus,
          accounts,
          description,
          invalidFields,
          legalEntity,
          migrationData,
          primaryCurrency,
          pspReference,
          resultCode,
          systemUpToDateTime,
          verification,
          verificationProfile);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class GetAccountHolderResponse {\n");
      sb.append("    accountHolderCode: ").append(toIndentedString(accountHolderCode)).append("\n");
      sb.append("    accountHolderDetails: ")
          .append(toIndentedString(accountHolderDetails))
          .append("\n");
      sb.append("    accountHolderStatus: ")
          .append(toIndentedString(accountHolderStatus))
          .append("\n");
      sb.append("    accounts: ").append(toIndentedString(accounts)).append("\n");
      sb.append("    description: ").append(toIndentedString(description)).append("\n");
      sb.append("    invalidFields: ").append(toIndentedString(invalidFields)).append("\n");
      sb.append("    legalEntity: ").append(toIndentedString(legalEntity)).append("\n");
      sb.append("    migrationData: ").append(toIndentedString(migrationData)).append("\n");
      sb.append("    primaryCurrency: ").append(toIndentedString(primaryCurrency)).append("\n");
      sb.append("    pspReference: ").append(toIndentedString(pspReference)).append("\n");
      sb.append("    resultCode: ").append(toIndentedString(resultCode)).append("\n");
      sb.append("    systemUpToDateTime: ").append(toIndentedString(systemUpToDateTime)).append("\n");
      sb.append("    verification: ").append(toIndentedString(verification)).append("\n");
      sb.append("    verificationProfile: ")
          .append(toIndentedString(verificationProfile))
          .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 GetAccountHolderResponse given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of GetAccountHolderResponse
     * @throws JsonProcessingException if the JSON string is invalid with respect to
     *     GetAccountHolderResponse
     */
    public static GetAccountHolderResponse fromJson(String jsonString)
        throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, GetAccountHolderResponse.class);
    }
  
    /**
     * Convert an instance of GetAccountHolderResponse to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  