content: /*
   * Configuration webhooks
   *
   * The version of the OpenAPI document: 2
   *
   *
   * 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.configurationwebhooks;
  
  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 java.time.OffsetDateTime;
  import java.util.*;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.List;
  import java.util.logging.Logger;
  
  /** VerificationDeadline */
  @JsonPropertyOrder({
    VerificationDeadline.JSON_PROPERTY_CAPABILITIES,
    VerificationDeadline.JSON_PROPERTY_ENTITY_IDS,
    VerificationDeadline.JSON_PROPERTY_EXPIRES_AT
  })
  public class VerificationDeadline {
    /** Gets or Sets capabilities */
    public enum CapabilitiesEnum {
      ACCEPTEXTERNALFUNDING(String.valueOf("acceptExternalFunding")),
  
      ACCEPTPSPFUNDING(String.valueOf("acceptPspFunding")),
  
      ACCEPTTRANSACTIONINRESTRICTEDCOUNTRIES(
          String.valueOf("acceptTransactionInRestrictedCountries")),
  
      ACCEPTTRANSACTIONINRESTRICTEDCOUNTRIESCOMMERCIAL(
          String.valueOf("acceptTransactionInRestrictedCountriesCommercial")),
  
      ACCEPTTRANSACTIONINRESTRICTEDCOUNTRIESCONSUMER(
          String.valueOf("acceptTransactionInRestrictedCountriesConsumer")),
  
      ACCEPTTRANSACTIONINRESTRICTEDINDUSTRIES(
          String.valueOf("acceptTransactionInRestrictedIndustries")),
  
      ACCEPTTRANSACTIONINRESTRICTEDINDUSTRIESCOMMERCIAL(
          String.valueOf("acceptTransactionInRestrictedIndustriesCommercial")),
  
      ACCEPTTRANSACTIONINRESTRICTEDINDUSTRIESCONSUMER(
          String.valueOf("acceptTransactionInRestrictedIndustriesConsumer")),
  
      ACQUIRING(String.valueOf("acquiring")),
  
      ATMWITHDRAWAL(String.valueOf("atmWithdrawal")),
  
      ATMWITHDRAWALCOMMERCIAL(String.valueOf("atmWithdrawalCommercial")),
  
      ATMWITHDRAWALCONSUMER(String.valueOf("atmWithdrawalConsumer")),
  
      ATMWITHDRAWALINRESTRICTEDCOUNTRIES(String.valueOf("atmWithdrawalInRestrictedCountries")),
  
      ATMWITHDRAWALINRESTRICTEDCOUNTRIESCOMMERCIAL(
          String.valueOf("atmWithdrawalInRestrictedCountriesCommercial")),
  
      ATMWITHDRAWALINRESTRICTEDCOUNTRIESCONSUMER(
          String.valueOf("atmWithdrawalInRestrictedCountriesConsumer")),
  
      AUTHORISEDPAYMENTINSTRUMENTUSER(String.valueOf("authorisedPaymentInstrumentUser")),
  
      GETGRANTOFFERS(String.valueOf("getGrantOffers")),
  
      ISSUEBANKACCOUNT(String.valueOf("issueBankAccount")),
  
      ISSUECARD(String.valueOf("issueCard")),
  
      ISSUECARDCOMMERCIAL(String.valueOf("issueCardCommercial")),
  
      ISSUECARDCONSUMER(String.valueOf("issueCardConsumer")),
  
      ISSUECHARGECARD(String.valueOf("issueChargeCard")),
  
      ISSUECHARGECARDCOMMERCIAL(String.valueOf("issueChargeCardCommercial")),
  
      ISSUECREDITLIMIT(String.valueOf("issueCreditLimit")),
  
      LOCALACCEPTANCE(String.valueOf("localAcceptance")),
  
      PAYOUT(String.valueOf("payout")),
  
      PAYOUTTOTRANSFERINSTRUMENT(String.valueOf("payoutToTransferInstrument")),
  
      PROCESSING(String.valueOf("processing")),
  
      RECEIVEFROMBALANCEACCOUNT(String.valueOf("receiveFromBalanceAccount")),
  
      RECEIVEFROMPLATFORMPAYMENTS(String.valueOf("receiveFromPlatformPayments")),
  
      RECEIVEFROMTHIRDPARTY(String.valueOf("receiveFromThirdParty")),
  
      RECEIVEFROMTRANSFERINSTRUMENT(String.valueOf("receiveFromTransferInstrument")),
  
      RECEIVEGRANTS(String.valueOf("receiveGrants")),
  
      RECEIVEPAYMENTS(String.valueOf("receivePayments")),
  
      SENDTOBALANCEACCOUNT(String.valueOf("sendToBalanceAccount")),
  
      SENDTOTHIRDPARTY(String.valueOf("sendToThirdParty")),
  
      SENDTOTRANSFERINSTRUMENT(String.valueOf("sendToTransferInstrument")),
  
      THIRDPARTYFUNDING(String.valueOf("thirdPartyFunding")),
  
      USECARD(String.valueOf("useCard")),
  
      USECARDCOMMERCIAL(String.valueOf("useCardCommercial")),
  
      USECARDCONSUMER(String.valueOf("useCardConsumer")),
  
      USECARDINRESTRICTEDCOUNTRIES(String.valueOf("useCardInRestrictedCountries")),
  
      USECARDINRESTRICTEDCOUNTRIESCOMMERCIAL(
          String.valueOf("useCardInRestrictedCountriesCommercial")),
  
      USECARDINRESTRICTEDCOUNTRIESCONSUMER(String.valueOf("useCardInRestrictedCountriesConsumer")),
  
      USECARDINRESTRICTEDINDUSTRIES(String.valueOf("useCardInRestrictedIndustries")),
  
      USECARDINRESTRICTEDINDUSTRIESCOMMERCIAL(
          String.valueOf("useCardInRestrictedIndustriesCommercial")),
  
      USECARDINRESTRICTEDINDUSTRIESCONSUMER(String.valueOf("useCardInRestrictedIndustriesConsumer")),
  
      USECHARGECARD(String.valueOf("useChargeCard")),
  
      USECHARGECARDCOMMERCIAL(String.valueOf("useChargeCardCommercial")),
  
      WITHDRAWFROMATM(String.valueOf("withdrawFromAtm")),
  
      WITHDRAWFROMATMCOMMERCIAL(String.valueOf("withdrawFromAtmCommercial")),
  
      WITHDRAWFROMATMCONSUMER(String.valueOf("withdrawFromAtmConsumer")),
  
      WITHDRAWFROMATMINRESTRICTEDCOUNTRIES(String.valueOf("withdrawFromAtmInRestrictedCountries")),
  
      WITHDRAWFROMATMINRESTRICTEDCOUNTRIESCOMMERCIAL(
          String.valueOf("withdrawFromAtmInRestrictedCountriesCommercial")),
  
      WITHDRAWFROMATMINRESTRICTEDCOUNTRIESCONSUMER(
          String.valueOf("withdrawFromAtmInRestrictedCountriesConsumer"));
  
      private static final Logger LOG = Logger.getLogger(CapabilitiesEnum.class.getName());
  
      private String value;
  
      CapabilitiesEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static CapabilitiesEnum fromValue(String value) {
        for (CapabilitiesEnum b : CapabilitiesEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "CapabilitiesEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(CapabilitiesEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_CAPABILITIES = "capabilities";
    private List<CapabilitiesEnum> capabilities;
  
    public static final String JSON_PROPERTY_ENTITY_IDS = "entityIds";
    private List<String> entityIds;
  
    public static final String JSON_PROPERTY_EXPIRES_AT = "expiresAt";
    private OffsetDateTime expiresAt;
  
    public VerificationDeadline() {}
  
    /**
     * The names of the capabilities to be disallowed.
     *
     * @param capabilities The names of the capabilities to be disallowed.
     * @return the current {@code VerificationDeadline} instance, allowing for method chaining
     */
    public VerificationDeadline capabilities(List<CapabilitiesEnum> capabilities) {
      this.capabilities = capabilities;
      return this;
    }
  
    public VerificationDeadline addCapabilitiesItem(CapabilitiesEnum capabilitiesItem) {
      if (this.capabilities == null) {
        this.capabilities = new ArrayList<>();
      }
      this.capabilities.add(capabilitiesItem);
      return this;
    }
  
    /**
     * The names of the capabilities to be disallowed.
     *
     * @return capabilities The names of the capabilities to be disallowed.
     */
    @JsonProperty(JSON_PROPERTY_CAPABILITIES)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public List<CapabilitiesEnum> getCapabilities() {
      return capabilities;
    }
  
    /**
     * The names of the capabilities to be disallowed.
     *
     * @param capabilities The names of the capabilities to be disallowed.
     */
    @JsonProperty(JSON_PROPERTY_CAPABILITIES)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCapabilities(List<CapabilitiesEnum> capabilities) {
      this.capabilities = capabilities;
    }
  
    /**
     * The unique identifiers of the bank account(s) that the deadline applies to
     *
     * @param entityIds The unique identifiers of the bank account(s) that the deadline applies to
     * @return the current {@code VerificationDeadline} instance, allowing for method chaining
     */
    public VerificationDeadline entityIds(List<String> entityIds) {
      this.entityIds = entityIds;
      return this;
    }
  
    public VerificationDeadline addEntityIdsItem(String entityIdsItem) {
      if (this.entityIds == null) {
        this.entityIds = new ArrayList<>();
      }
      this.entityIds.add(entityIdsItem);
      return this;
    }
  
    /**
     * The unique identifiers of the bank account(s) that the deadline applies to
     *
     * @return entityIds The unique identifiers of the bank account(s) that the deadline applies to
     */
    @JsonProperty(JSON_PROPERTY_ENTITY_IDS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public List<String> getEntityIds() {
      return entityIds;
    }
  
    /**
     * The unique identifiers of the bank account(s) that the deadline applies to
     *
     * @param entityIds The unique identifiers of the bank account(s) that the deadline applies to
     */
    @JsonProperty(JSON_PROPERTY_ENTITY_IDS)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEntityIds(List<String> entityIds) {
      this.entityIds = entityIds;
    }
  
    /**
     * The date that verification is due by before capabilities are disallowed.
     *
     * @param expiresAt The date that verification is due by before capabilities are disallowed.
     * @return the current {@code VerificationDeadline} instance, allowing for method chaining
     */
    public VerificationDeadline expiresAt(OffsetDateTime expiresAt) {
      this.expiresAt = expiresAt;
      return this;
    }
  
    /**
     * The date that verification is due by before capabilities are disallowed.
     *
     * @return expiresAt The date that verification is due by before capabilities are disallowed.
     */
    @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public OffsetDateTime getExpiresAt() {
      return expiresAt;
    }
  
    /**
     * The date that verification is due by before capabilities are disallowed.
     *
     * @param expiresAt The date that verification is due by before capabilities are disallowed.
     */
    @JsonProperty(JSON_PROPERTY_EXPIRES_AT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setExpiresAt(OffsetDateTime expiresAt) {
      this.expiresAt = expiresAt;
    }
  
    /** Return true if this VerificationDeadline object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      VerificationDeadline verificationDeadline = (VerificationDeadline) o;
      return Objects.equals(this.capabilities, verificationDeadline.capabilities)
          && Objects.equals(this.entityIds, verificationDeadline.entityIds)
          && Objects.equals(this.expiresAt, verificationDeadline.expiresAt);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(capabilities, entityIds, expiresAt);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class VerificationDeadline {\n");
      sb.append("    capabilities: ").append(toIndentedString(capabilities)).append("\n");
      sb.append("    entityIds: ").append(toIndentedString(entityIds)).append("\n");
      sb.append("    expiresAt: ").append(toIndentedString(expiresAt)).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 VerificationDeadline given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of VerificationDeadline
     * @throws JsonProcessingException if the JSON string is invalid with respect to
     *     VerificationDeadline
     */
    public static VerificationDeadline fromJson(String jsonString) throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, VerificationDeadline.class);
    }
  
    /**
     * Convert an instance of VerificationDeadline to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  