All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.trippay.sdk.payment.model.Account Maven / Gradle / Ivy

There is a newer version: 30.5.10
Show newest version
/*
 * Wink Payment API
 * A programmatic way to create bookings, receive payment and disburse funds globally.  ## APIs Not every integrator needs every APIs. For that reason, we have separated APIs into context.  - [Affiliate](/affiliate): All APIs related to selling travel inventory as an affiliate. - [Analytics](/analytics): All APIs related to tracking metrics across a wide variety of data source segments including, more entertaining, leaderboard metrics. - [Booking](/booking): All APIs related to creating platform bookings. - [Channel Manager](/channel-manager): All APIs related to channel managers who want to integrate with our platform. - [Extranet](/extranet): All APIs related to managing travel inventory and suppliers. - [Inventory](/inventory): All APIs related to retrieve known travel inventory as it was found using the Lookup API.. - [Lookup](/lookup): All APIs related to locating inventory by region, locale and property flags. - [Reference](/reference): All APIs related to retrieving platform-supported taxonomies. - [TripPay](/payment): All APIs related to TripPay account management, booking, mapping and integration features.  ## SDKs We are actively working on supporting the most used languages out there. If you don't see your language here, reach out to us with a request to officially add your language. In the meantime, if you want to roll your own SDK, you can do so by downloading the OpenAPI spec and using one of the many available OpenAPI generators available: [https://openapi-generator.tech/docs/generators](https://openapi-generator.tech/docs/generators).  - Java SDK [https://github.com/wink-travel/trip-pay-sdk-java](https://github.com/wink-travel/trip-pay-sdk-java)  # Usage These features are made available to you via a [REST API](https://en.wikipedia.org/wiki/Representational_state_transfer). This API is language agnostic. We will link to SDKs for the most popular programming languages on this page as they become available.  ## Versioning We chose to version our endpoints in a way that we hope affects your integration with us the least. You request the version of our API you wish to work with via the `Wink-Version` header. When it's time for you to upgrade, you only have to change the version number to get access to our updated endpoints.  ## Release history - Follow updates on Github: https://github.com/wink-travel/wink-sdk-java/blob/master/CHANGELOG.md 
 *
 * The version of the OpenAPI document: 30.3.1
 * Contact: [email protected]
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package io.trippay.sdk.payment.model;

import java.util.Objects;
import java.util.Arrays;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonValue;
import io.trippay.sdk.payment.model.AccountStatusEntry;
import io.trippay.sdk.payment.model.Acquirer;
import io.trippay.sdk.payment.model.Address;
import io.trippay.sdk.payment.model.BankAccount;
import io.trippay.sdk.payment.model.Contact;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.annotation.JsonTypeName;
import jakarta.validation.constraints.*;
import jakarta.validation.Valid;
import org.hibernate.validator.constraints.*;

/**
 * Account holds KYC, bank account and contact information of an affiliate, supplier, payment or any type of entity that is to be a beneficiary of funds through the payment.
 */
@JsonPropertyOrder({
  Account.JSON_PROPERTY_ID,
  Account.JSON_PROPERTY_CREATED_DATE,
  Account.JSON_PROPERTY_LAST_UPDATE,
  Account.JSON_PROPERTY_VERSION,
  Account.JSON_PROPERTY_TYPE,
  Account.JSON_PROPERTY_OWNER_TYPE,
  Account.JSON_PROPERTY_ACCOUNT_OWNER_IDENTIFIER,
  Account.JSON_PROPERTY_NAME,
  Account.JSON_PROPERTY_LEGAL_NAME,
  Account.JSON_PROPERTY_USER_IDENTIFIER,
  Account.JSON_PROPERTY_OWNER,
  Account.JSON_PROPERTY_ACCOUNT_EMAIL,
  Account.JSON_PROPERTY_ACCOUNT_PHONE_NUMBER,
  Account.JSON_PROPERTY_DESCRIPTION,
  Account.JSON_PROPERTY_URL,
  Account.JSON_PROPERTY_STATUS,
  Account.JSON_PROPERTY_CURRENCY_CODE,
  Account.JSON_PROPERTY_ADDRESS,
  Account.JSON_PROPERTY_ACQUIRERS,
  Account.JSON_PROPERTY_BANK_ACCOUNTS,
  Account.JSON_PROPERTY_OWNER_TYPE_IDENTIFIER,
  Account.JSON_PROPERTY_DOB,
  Account.JSON_PROPERTY_TASKS,
  Account.JSON_PROPERTY_PREFERRED_DISBURSEMENT_TYPE
})
@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", date = "2024-08-12T10:13:49.239999511+07:00[Asia/Bangkok]")
public class Account {
  public static final String JSON_PROPERTY_ID = "id";
  private String id;

  public static final String JSON_PROPERTY_CREATED_DATE = "createdDate";
  private java.time.LocalDateTime createdDate;

  public static final String JSON_PROPERTY_LAST_UPDATE = "lastUpdate";
  private java.time.LocalDateTime lastUpdate;

  public static final String JSON_PROPERTY_VERSION = "version";
  private Long version;

  /**
   * Type of account tells us what the account is capable of.
   */
  public enum TypeEnum {
    MERCHANT("MERCHANT"),
    
    AFFILIATE("AFFILIATE"),
    
    AGENT("AGENT"),
    
    FACILITATOR("FACILITATOR"),
    
    RATE_PROVIDER("RATE_PROVIDER"),
    
    TRIP_PAY("TRIP_PAY");

    private String value;

    TypeEnum(String value) {
      this.value = value;
    }

    @JsonValue
    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    @JsonCreator
    public static TypeEnum fromValue(String value) {
      for (TypeEnum b : TypeEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }
  }

  public static final String JSON_PROPERTY_TYPE = "type";
  private TypeEnum type;

  /**
   * Type of account owner tells us whether ths account is managed by a company or an individual.
   */
  public enum OwnerTypeEnum {
    COMPANY("COMPANY"),
    
    INDIVIDUAL("INDIVIDUAL");

    private String value;

    OwnerTypeEnum(String value) {
      this.value = value;
    }

    @JsonValue
    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    @JsonCreator
    public static OwnerTypeEnum fromValue(String value) {
      for (OwnerTypeEnum b : OwnerTypeEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }
  }

  public static final String JSON_PROPERTY_OWNER_TYPE = "ownerType";
  private OwnerTypeEnum ownerType;

  public static final String JSON_PROPERTY_ACCOUNT_OWNER_IDENTIFIER = "accountOwnerIdentifier";
  private String accountOwnerIdentifier;

  public static final String JSON_PROPERTY_NAME = "name";
  private String name;

  public static final String JSON_PROPERTY_LEGAL_NAME = "legalName";
  private String legalName;

  public static final String JSON_PROPERTY_USER_IDENTIFIER = "userIdentifier";
  private String userIdentifier;

  public static final String JSON_PROPERTY_OWNER = "owner";
  private Contact owner;

  public static final String JSON_PROPERTY_ACCOUNT_EMAIL = "accountEmail";
  private String accountEmail;

  public static final String JSON_PROPERTY_ACCOUNT_PHONE_NUMBER = "accountPhoneNumber";
  private String accountPhoneNumber;

  public static final String JSON_PROPERTY_DESCRIPTION = "description";
  private String description;

  public static final String JSON_PROPERTY_URL = "url";
  private String url;

  /**
   * Account status shows if it's approved
   */
  public enum StatusEnum {
    REGISTERED("REGISTERED"),
    
    REVIEW("REVIEW"),
    
    APPROVED("APPROVED"),
    
    DEACTIVATED("DEACTIVATED"),
    
    REJECTED("REJECTED");

    private String value;

    StatusEnum(String value) {
      this.value = value;
    }

    @JsonValue
    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    @JsonCreator
    public static StatusEnum fromValue(String value) {
      for (StatusEnum b : StatusEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }
  }

  public static final String JSON_PROPERTY_STATUS = "status";
  private StatusEnum status = StatusEnum.REGISTERED;

  public static final String JSON_PROPERTY_CURRENCY_CODE = "currencyCode";
  private String currencyCode;

  public static final String JSON_PROPERTY_ADDRESS = "address";
  private Address address;

  public static final String JSON_PROPERTY_ACQUIRERS = "acquirers";
  private List acquirers;

  public static final String JSON_PROPERTY_BANK_ACCOUNTS = "bankAccounts";
  private List bankAccounts;

  public static final String JSON_PROPERTY_OWNER_TYPE_IDENTIFIER = "ownerTypeIdentifier";
  private String ownerTypeIdentifier;

  public static final String JSON_PROPERTY_DOB = "dob";
  private LocalDate dob;

  public static final String JSON_PROPERTY_TASKS = "tasks";
  private List tasks;

  /**
   * The preferred method which the account holder wishes to be paid. This will play a role if we choose to automate the payout flow.
   */
  public enum PreferredDisbursementTypeEnum {
    VIRTUAL_CREDIT_CARD("VIRTUAL_CREDIT_CARD"),
    
    BANK_TRANSFER("BANK_TRANSFER");

    private String value;

    PreferredDisbursementTypeEnum(String value) {
      this.value = value;
    }

    @JsonValue
    public String getValue() {
      return value;
    }

    @Override
    public String toString() {
      return String.valueOf(value);
    }

    @JsonCreator
    public static PreferredDisbursementTypeEnum fromValue(String value) {
      for (PreferredDisbursementTypeEnum b : PreferredDisbursementTypeEnum.values()) {
        if (b.value.equals(value)) {
          return b;
        }
      }
      throw new IllegalArgumentException("Unexpected value '" + value + "'");
    }
  }

  public static final String JSON_PROPERTY_PREFERRED_DISBURSEMENT_TYPE = "preferredDisbursementType";
  private PreferredDisbursementTypeEnum preferredDisbursementType = PreferredDisbursementTypeEnum.BANK_TRANSFER;

  public Account() {
  }

  public Account id(String id) {
    
    this.id = id;
    return this;
  }

   /**
   * Document UUID
   * @return id
  **/
  @jakarta.annotation.Nullable

  @JsonProperty(JSON_PROPERTY_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getId() {
    return id;
  }


  @JsonProperty(JSON_PROPERTY_ID)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setId(String id) {
    this.id = id;
  }


  public Account createdDate(java.time.LocalDateTime createdDate) {
    
    this.createdDate = createdDate;
    return this;
  }

   /**
   * Datetime this record was first created
   * @return createdDate
  **/
  @jakarta.annotation.Nullable
  @Valid

  @JsonProperty(JSON_PROPERTY_CREATED_DATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public java.time.LocalDateTime getCreatedDate() {
    return createdDate;
  }


  @JsonProperty(JSON_PROPERTY_CREATED_DATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setCreatedDate(java.time.LocalDateTime createdDate) {
    this.createdDate = createdDate;
  }


  public Account lastUpdate(java.time.LocalDateTime lastUpdate) {
    
    this.lastUpdate = lastUpdate;
    return this;
  }

   /**
   * Datetime this record was last updated
   * @return lastUpdate
  **/
  @jakarta.annotation.Nullable
  @Valid

  @JsonProperty(JSON_PROPERTY_LAST_UPDATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public java.time.LocalDateTime getLastUpdate() {
    return lastUpdate;
  }


  @JsonProperty(JSON_PROPERTY_LAST_UPDATE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setLastUpdate(java.time.LocalDateTime lastUpdate) {
    this.lastUpdate = lastUpdate;
  }


  public Account version(Long version) {
    
    this.version = version;
    return this;
  }

   /**
   * Version property that shows how many times this document has been persisted. Document will not persist if the version property is less than current version property in the system. Result in an optimistic locking exception.
   * @return version
  **/
  @jakarta.annotation.Nullable

  @JsonProperty(JSON_PROPERTY_VERSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public Long getVersion() {
    return version;
  }


  @JsonProperty(JSON_PROPERTY_VERSION)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setVersion(Long version) {
    this.version = version;
  }


  public Account type(TypeEnum type) {
    
    this.type = type;
    return this;
  }

   /**
   * Type of account tells us what the account is capable of.
   * @return type
  **/
  @jakarta.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_TYPE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public TypeEnum getType() {
    return type;
  }


  @JsonProperty(JSON_PROPERTY_TYPE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setType(TypeEnum type) {
    this.type = type;
  }


  public Account ownerType(OwnerTypeEnum ownerType) {
    
    this.ownerType = ownerType;
    return this;
  }

   /**
   * Type of account owner tells us whether ths account is managed by a company or an individual.
   * @return ownerType
  **/
  @jakarta.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_OWNER_TYPE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public OwnerTypeEnum getOwnerType() {
    return ownerType;
  }


  @JsonProperty(JSON_PROPERTY_OWNER_TYPE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setOwnerType(OwnerTypeEnum ownerType) {
    this.ownerType = ownerType;
  }


  public Account accountOwnerIdentifier(String accountOwnerIdentifier) {
    
    this.accountOwnerIdentifier = accountOwnerIdentifier;
    return this;
  }

   /**
   * The entity that created this account.
   * @return accountOwnerIdentifier
  **/
  @jakarta.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_ACCOUNT_OWNER_IDENTIFIER)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getAccountOwnerIdentifier() {
    return accountOwnerIdentifier;
  }


  @JsonProperty(JSON_PROPERTY_ACCOUNT_OWNER_IDENTIFIER)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setAccountOwnerIdentifier(String accountOwnerIdentifier) {
    this.accountOwnerIdentifier = accountOwnerIdentifier;
  }


  public Account name(String name) {
    
    this.name = name;
    return this;
  }

   /**
   * Name of company / full name of person
   * @return name
  **/
  @jakarta.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_NAME)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getName() {
    return name;
  }


  @JsonProperty(JSON_PROPERTY_NAME)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setName(String name) {
    this.name = name;
  }


  public Account legalName(String legalName) {
    
    this.legalName = legalName;
    return this;
  }

   /**
   * Legal name of entity if other than name
   * @return legalName
  **/
  @jakarta.annotation.Nullable

  @JsonProperty(JSON_PROPERTY_LEGAL_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getLegalName() {
    return legalName;
  }


  @JsonProperty(JSON_PROPERTY_LEGAL_NAME)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setLegalName(String legalName) {
    this.legalName = legalName;
  }


  public Account userIdentifier(String userIdentifier) {
    
    this.userIdentifier = userIdentifier;
    return this;
  }

   /**
   * The authenticated user that owns this account.
   * @return userIdentifier
  **/
  @jakarta.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_USER_IDENTIFIER)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getUserIdentifier() {
    return userIdentifier;
  }


  @JsonProperty(JSON_PROPERTY_USER_IDENTIFIER)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setUserIdentifier(String userIdentifier) {
    this.userIdentifier = userIdentifier;
  }


  public Account owner(Contact owner) {
    
    this.owner = owner;
    return this;
  }

   /**
   * Get owner
   * @return owner
  **/
  @jakarta.annotation.Nonnull
  @NotNull
  @Valid

  @JsonProperty(JSON_PROPERTY_OWNER)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public Contact getOwner() {
    return owner;
  }


  @JsonProperty(JSON_PROPERTY_OWNER)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setOwner(Contact owner) {
    this.owner = owner;
  }


  public Account accountEmail(String accountEmail) {
    
    this.accountEmail = accountEmail;
    return this;
  }

   /**
   * Account email is where we will send KYC documents and other account specific mailings
   * @return accountEmail
  **/
  @jakarta.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_ACCOUNT_EMAIL)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getAccountEmail() {
    return accountEmail;
  }


  @JsonProperty(JSON_PROPERTY_ACCOUNT_EMAIL)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setAccountEmail(String accountEmail) {
    this.accountEmail = accountEmail;
  }


  public Account accountPhoneNumber(String accountPhoneNumber) {
    
    this.accountPhoneNumber = accountPhoneNumber;
    return this;
  }

   /**
   * Account phone number is mostly used for KYC purchases
   * @return accountPhoneNumber
  **/
  @jakarta.annotation.Nullable

  @JsonProperty(JSON_PROPERTY_ACCOUNT_PHONE_NUMBER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getAccountPhoneNumber() {
    return accountPhoneNumber;
  }


  @JsonProperty(JSON_PROPERTY_ACCOUNT_PHONE_NUMBER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setAccountPhoneNumber(String accountPhoneNumber) {
    this.accountPhoneNumber = accountPhoneNumber;
  }


  public Account description(String description) {
    
    this.description = description;
    return this;
  }

   /**
   * Short company / person description.
   * @return description
  **/
  @jakarta.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_DESCRIPTION)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getDescription() {
    return description;
  }


  @JsonProperty(JSON_PROPERTY_DESCRIPTION)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setDescription(String description) {
    this.description = description;
  }


  public Account url(String url) {
    
    this.url = url;
    return this;
  }

   /**
   * Company website. If private person with no personal website, link to main social network account.
   * @return url
  **/
  @jakarta.annotation.Nonnull
  @NotNull

  @JsonProperty(JSON_PROPERTY_URL)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getUrl() {
    return url;
  }


  @JsonProperty(JSON_PROPERTY_URL)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setUrl(String url) {
    this.url = url;
  }


  public Account status(StatusEnum status) {
    
    this.status = status;
    return this;
  }

   /**
   * Account status shows if it's approved
   * @return status
  **/
  @jakarta.annotation.Nullable

  @JsonProperty(JSON_PROPERTY_STATUS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public StatusEnum getStatus() {
    return status;
  }


  @JsonProperty(JSON_PROPERTY_STATUS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setStatus(StatusEnum status) {
    this.status = status;
  }


  public Account currencyCode(String currencyCode) {
    
    this.currencyCode = currencyCode;
    return this;
  }

   /**
   * Account's main currency.
   * @return currencyCode
  **/
  @jakarta.annotation.Nonnull
  @NotNull
 @Size(min=3,max=3)
  @JsonProperty(JSON_PROPERTY_CURRENCY_CODE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public String getCurrencyCode() {
    return currencyCode;
  }


  @JsonProperty(JSON_PROPERTY_CURRENCY_CODE)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setCurrencyCode(String currencyCode) {
    this.currencyCode = currencyCode;
  }


  public Account address(Address address) {
    
    this.address = address;
    return this;
  }

   /**
   * Get address
   * @return address
  **/
  @jakarta.annotation.Nonnull
  @NotNull
  @Valid

  @JsonProperty(JSON_PROPERTY_ADDRESS)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)

  public Address getAddress() {
    return address;
  }


  @JsonProperty(JSON_PROPERTY_ADDRESS)
  @JsonInclude(value = JsonInclude.Include.ALWAYS)
  public void setAddress(Address address) {
    this.address = address;
  }


  public Account acquirers(List acquirers) {
    
    this.acquirers = acquirers;
    return this;
  }

  public Account addAcquirersItem(Acquirer acquirersItem) {
    if (this.acquirers == null) {
      this.acquirers = new ArrayList<>();
    }
    this.acquirers.add(acquirersItem);
    return this;
  }

   /**
   * Get acquirers
   * @return acquirers
  **/
  @jakarta.annotation.Nullable
  @Valid

  @JsonProperty(JSON_PROPERTY_ACQUIRERS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public List getAcquirers() {
    return acquirers;
  }


  @JsonProperty(JSON_PROPERTY_ACQUIRERS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setAcquirers(List acquirers) {
    this.acquirers = acquirers;
  }


  public Account bankAccounts(List bankAccounts) {
    
    this.bankAccounts = bankAccounts;
    return this;
  }

  public Account addBankAccountsItem(BankAccount bankAccountsItem) {
    if (this.bankAccounts == null) {
      this.bankAccounts = new ArrayList<>();
    }
    this.bankAccounts.add(bankAccountsItem);
    return this;
  }

   /**
   * Get bankAccounts
   * @return bankAccounts
  **/
  @jakarta.annotation.Nullable
  @Valid

  @JsonProperty(JSON_PROPERTY_BANK_ACCOUNTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public List getBankAccounts() {
    return bankAccounts;
  }


  @JsonProperty(JSON_PROPERTY_BANK_ACCOUNTS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setBankAccounts(List bankAccounts) {
    this.bankAccounts = bankAccounts;
  }


  public Account ownerTypeIdentifier(String ownerTypeIdentifier) {
    
    this.ownerTypeIdentifier = ownerTypeIdentifier;
    return this;
  }

   /**
   * This is the tax identification number (TIN) for individuals and entity identification number (EIN) for companies.
   * @return ownerTypeIdentifier
  **/
  @jakarta.annotation.Nullable

  @JsonProperty(JSON_PROPERTY_OWNER_TYPE_IDENTIFIER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public String getOwnerTypeIdentifier() {
    return ownerTypeIdentifier;
  }


  @JsonProperty(JSON_PROPERTY_OWNER_TYPE_IDENTIFIER)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setOwnerTypeIdentifier(String ownerTypeIdentifier) {
    this.ownerTypeIdentifier = ownerTypeIdentifier;
  }


  public Account dob(LocalDate dob) {
    
    this.dob = dob;
    return this;
  }

   /**
   * This is the individual's date of birth.
   * @return dob
  **/
  @jakarta.annotation.Nullable
  @Valid

  @JsonProperty(JSON_PROPERTY_DOB)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public LocalDate getDob() {
    return dob;
  }


  @JsonProperty(JSON_PROPERTY_DOB)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setDob(LocalDate dob) {
    this.dob = dob;
  }


  public Account tasks(List tasks) {
    
    this.tasks = tasks;
    return this;
  }

  public Account addTasksItem(AccountStatusEntry tasksItem) {
    if (this.tasks == null) {
      this.tasks = new ArrayList<>();
    }
    this.tasks.add(tasksItem);
    return this;
  }

   /**
   * Get tasks
   * @return tasks
  **/
  @jakarta.annotation.Nullable
  @Valid

  @JsonProperty(JSON_PROPERTY_TASKS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public List getTasks() {
    return tasks;
  }


  @JsonProperty(JSON_PROPERTY_TASKS)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setTasks(List tasks) {
    this.tasks = tasks;
  }


  public Account preferredDisbursementType(PreferredDisbursementTypeEnum preferredDisbursementType) {
    
    this.preferredDisbursementType = preferredDisbursementType;
    return this;
  }

   /**
   * The preferred method which the account holder wishes to be paid. This will play a role if we choose to automate the payout flow.
   * @return preferredDisbursementType
  **/
  @jakarta.annotation.Nullable

  @JsonProperty(JSON_PROPERTY_PREFERRED_DISBURSEMENT_TYPE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)

  public PreferredDisbursementTypeEnum getPreferredDisbursementType() {
    return preferredDisbursementType;
  }


  @JsonProperty(JSON_PROPERTY_PREFERRED_DISBURSEMENT_TYPE)
  @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
  public void setPreferredDisbursementType(PreferredDisbursementTypeEnum preferredDisbursementType) {
    this.preferredDisbursementType = preferredDisbursementType;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    Account account = (Account) o;
    return Objects.equals(this.id, account.id) &&
        Objects.equals(this.createdDate, account.createdDate) &&
        Objects.equals(this.lastUpdate, account.lastUpdate) &&
        Objects.equals(this.version, account.version) &&
        Objects.equals(this.type, account.type) &&
        Objects.equals(this.ownerType, account.ownerType) &&
        Objects.equals(this.accountOwnerIdentifier, account.accountOwnerIdentifier) &&
        Objects.equals(this.name, account.name) &&
        Objects.equals(this.legalName, account.legalName) &&
        Objects.equals(this.userIdentifier, account.userIdentifier) &&
        Objects.equals(this.owner, account.owner) &&
        Objects.equals(this.accountEmail, account.accountEmail) &&
        Objects.equals(this.accountPhoneNumber, account.accountPhoneNumber) &&
        Objects.equals(this.description, account.description) &&
        Objects.equals(this.url, account.url) &&
        Objects.equals(this.status, account.status) &&
        Objects.equals(this.currencyCode, account.currencyCode) &&
        Objects.equals(this.address, account.address) &&
        Objects.equals(this.acquirers, account.acquirers) &&
        Objects.equals(this.bankAccounts, account.bankAccounts) &&
        Objects.equals(this.ownerTypeIdentifier, account.ownerTypeIdentifier) &&
        Objects.equals(this.dob, account.dob) &&
        Objects.equals(this.tasks, account.tasks) &&
        Objects.equals(this.preferredDisbursementType, account.preferredDisbursementType);
  }

  @Override
  public int hashCode() {
    return Objects.hash(id, createdDate, lastUpdate, version, type, ownerType, accountOwnerIdentifier, name, legalName, userIdentifier, owner, accountEmail, accountPhoneNumber, description, url, status, currencyCode, address, acquirers, bankAccounts, ownerTypeIdentifier, dob, tasks, preferredDisbursementType);
  }

  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class Account {\n");
    sb.append("    id: ").append(toIndentedString(id)).append("\n");
    sb.append("    createdDate: ").append(toIndentedString(createdDate)).append("\n");
    sb.append("    lastUpdate: ").append(toIndentedString(lastUpdate)).append("\n");
    sb.append("    version: ").append(toIndentedString(version)).append("\n");
    sb.append("    type: ").append(toIndentedString(type)).append("\n");
    sb.append("    ownerType: ").append(toIndentedString(ownerType)).append("\n");
    sb.append("    accountOwnerIdentifier: ").append(toIndentedString(accountOwnerIdentifier)).append("\n");
    sb.append("    name: ").append(toIndentedString(name)).append("\n");
    sb.append("    legalName: ").append(toIndentedString(legalName)).append("\n");
    sb.append("    userIdentifier: ").append(toIndentedString(userIdentifier)).append("\n");
    sb.append("    owner: ").append(toIndentedString(owner)).append("\n");
    sb.append("    accountEmail: ").append(toIndentedString(accountEmail)).append("\n");
    sb.append("    accountPhoneNumber: ").append(toIndentedString(accountPhoneNumber)).append("\n");
    sb.append("    description: ").append(toIndentedString(description)).append("\n");
    sb.append("    url: ").append(toIndentedString(url)).append("\n");
    sb.append("    status: ").append(toIndentedString(status)).append("\n");
    sb.append("    currencyCode: ").append(toIndentedString(currencyCode)).append("\n");
    sb.append("    address: ").append(toIndentedString(address)).append("\n");
    sb.append("    acquirers: ").append(toIndentedString(acquirers)).append("\n");
    sb.append("    bankAccounts: ").append(toIndentedString(bankAccounts)).append("\n");
    sb.append("    ownerTypeIdentifier: ").append(toIndentedString(ownerTypeIdentifier)).append("\n");
    sb.append("    dob: ").append(toIndentedString(dob)).append("\n");
    sb.append("    tasks: ").append(toIndentedString(tasks)).append("\n");
    sb.append("    preferredDisbursementType: ").append(toIndentedString(preferredDisbursementType)).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    ");
  }

}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy