content: /*
   * Classic Platforms - Notifications
   *
   * 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.marketpaywebhooks;
  
  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 io.swagger.annotations.ApiModelProperty;
  import java.util.Objects;
  
  /** PayoutMethod */
  @JsonPropertyOrder({
    PayoutMethod.JSON_PROPERTY_MERCHANT_ACCOUNT,
    PayoutMethod.JSON_PROPERTY_PAYOUT_METHOD_CODE,
    PayoutMethod.JSON_PROPERTY_PAYOUT_METHOD_REFERENCE,
    PayoutMethod.JSON_PROPERTY_RECURRING_DETAIL_REFERENCE,
    PayoutMethod.JSON_PROPERTY_SHOPPER_REFERENCE
  })
  public class PayoutMethod {
    public static final String JSON_PROPERTY_MERCHANT_ACCOUNT = "merchantAccount";
    private String merchantAccount;
  
    public static final String JSON_PROPERTY_PAYOUT_METHOD_CODE = "payoutMethodCode";
    private String payoutMethodCode;
  
    public static final String JSON_PROPERTY_PAYOUT_METHOD_REFERENCE = "payoutMethodReference";
    private String payoutMethodReference;
  
    public static final String JSON_PROPERTY_RECURRING_DETAIL_REFERENCE = "recurringDetailReference";
    private String recurringDetailReference;
  
    public static final String JSON_PROPERTY_SHOPPER_REFERENCE = "shopperReference";
    private String shopperReference;
  
    public PayoutMethod() {}
  
    public PayoutMethod merchantAccount(String merchantAccount) {
      this.merchantAccount = merchantAccount;
      return this;
    }
  
    /**
     * The
     * [&#x60;merchantAccount&#x60;](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/post/payments__reqParam_merchantAccount)
     * you used in the &#x60;/payments&#x60; request when you [saved the account holder&#39;s card
     * details](https://docs.adyen.com/marketplaces-and-platforms/classic/payouts/manual-payout/payout-to-cards#check-and-store).
     *
     * @return merchantAccount
     */
    @ApiModelProperty(
        required = true,
        value =
            "The [`merchantAccount`](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/post/payments__reqParam_merchantAccount) you used in the `/payments` request when you [saved the account holder's card details](https://docs.adyen.com/marketplaces-and-platforms/classic/payouts/manual-payout/payout-to-cards#check-and-store).")
    @JsonProperty(JSON_PROPERTY_MERCHANT_ACCOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getMerchantAccount() {
      return merchantAccount;
    }
  
    @JsonProperty(JSON_PROPERTY_MERCHANT_ACCOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setMerchantAccount(String merchantAccount) {
      this.merchantAccount = merchantAccount;
    }
  
    public PayoutMethod payoutMethodCode(String payoutMethodCode) {
      this.payoutMethodCode = payoutMethodCode;
      return this;
    }
  
    /**
     * Adyen-generated unique alphanumeric identifier (UUID) for the payout method, returned in the
     * response when you create a payout method. Required when updating an existing payout method in
     * an &#x60;/updateAccountHolder&#x60; request.
     *
     * @return payoutMethodCode
     */
    @ApiModelProperty(
        value =
            "Adyen-generated unique alphanumeric identifier (UUID) for the payout method, returned in the response when you create a payout method. Required when updating an existing payout method in an `/updateAccountHolder` request.")
    @JsonProperty(JSON_PROPERTY_PAYOUT_METHOD_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getPayoutMethodCode() {
      return payoutMethodCode;
    }
  
    @JsonProperty(JSON_PROPERTY_PAYOUT_METHOD_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setPayoutMethodCode(String payoutMethodCode) {
      this.payoutMethodCode = payoutMethodCode;
    }
  
    public PayoutMethod payoutMethodReference(String payoutMethodReference) {
      this.payoutMethodReference = payoutMethodReference;
      return this;
    }
  
    /**
     * Your reference for the payout method.
     *
     * @return payoutMethodReference
     */
    @ApiModelProperty(value = "Your reference for the payout method.")
    @JsonProperty(JSON_PROPERTY_PAYOUT_METHOD_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getPayoutMethodReference() {
      return payoutMethodReference;
    }
  
    @JsonProperty(JSON_PROPERTY_PAYOUT_METHOD_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setPayoutMethodReference(String payoutMethodReference) {
      this.payoutMethodReference = payoutMethodReference;
    }
  
    public PayoutMethod recurringDetailReference(String recurringDetailReference) {
      this.recurringDetailReference = recurringDetailReference;
      return this;
    }
  
    /**
     * The
     * [&#x60;recurringDetailReference&#x60;](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/post/payments__resParam_additionalData-ResponseAdditionalDataCommon-recurring-recurringDetailReference)
     * returned in the &#x60;/payments&#x60; response when you [saved the account holder&#39;s card
     * details](https://docs.adyen.com/marketplaces-and-platforms/classic/payouts/manual-payout/payout-to-cards#check-and-store).
     *
     * @return recurringDetailReference
     */
    @ApiModelProperty(
        required = true,
        value =
            "The [`recurringDetailReference`](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/post/payments__resParam_additionalData-ResponseAdditionalDataCommon-recurring-recurringDetailReference)  returned in the `/payments` response when you [saved the account holder's card details](https://docs.adyen.com/marketplaces-and-platforms/classic/payouts/manual-payout/payout-to-cards#check-and-store).")
    @JsonProperty(JSON_PROPERTY_RECURRING_DETAIL_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getRecurringDetailReference() {
      return recurringDetailReference;
    }
  
    @JsonProperty(JSON_PROPERTY_RECURRING_DETAIL_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRecurringDetailReference(String recurringDetailReference) {
      this.recurringDetailReference = recurringDetailReference;
    }
  
    public PayoutMethod shopperReference(String shopperReference) {
      this.shopperReference = shopperReference;
      return this;
    }
  
    /**
     * The
     * [&#x60;shopperReference&#x60;](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/post/payments__reqParam_shopperReference)
     * you sent in the &#x60;/payments&#x60; request when you [saved the account holder&#39;s card
     * details](https://docs.adyen.com/marketplaces-and-platforms/classic/payouts/manual-payout/payout-to-cards#check-and-store).
     *
     * @return shopperReference
     */
    @ApiModelProperty(
        required = true,
        value =
            "The [`shopperReference`](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/post/payments__reqParam_shopperReference) you sent in the `/payments` request when you [saved the account holder's card details](https://docs.adyen.com/marketplaces-and-platforms/classic/payouts/manual-payout/payout-to-cards#check-and-store).")
    @JsonProperty(JSON_PROPERTY_SHOPPER_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getShopperReference() {
      return shopperReference;
    }
  
    @JsonProperty(JSON_PROPERTY_SHOPPER_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setShopperReference(String shopperReference) {
      this.shopperReference = shopperReference;
    }
  
    /** Return true if this PayoutMethod object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      PayoutMethod payoutMethod = (PayoutMethod) o;
      return Objects.equals(this.merchantAccount, payoutMethod.merchantAccount)
          && Objects.equals(this.payoutMethodCode, payoutMethod.payoutMethodCode)
          && Objects.equals(this.payoutMethodReference, payoutMethod.payoutMethodReference)
          && Objects.equals(this.recurringDetailReference, payoutMethod.recurringDetailReference)
          && Objects.equals(this.shopperReference, payoutMethod.shopperReference);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(
          merchantAccount,
          payoutMethodCode,
          payoutMethodReference,
          recurringDetailReference,
          shopperReference);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class PayoutMethod {\n");
      sb.append("    merchantAccount: ").append(toIndentedString(merchantAccount)).append("\n");
      sb.append("    payoutMethodCode: ").append(toIndentedString(payoutMethodCode)).append("\n");
      sb.append("    payoutMethodReference: ")
          .append(toIndentedString(payoutMethodReference))
          .append("\n");
      sb.append("    recurringDetailReference: ")
          .append(toIndentedString(recurringDetailReference))
          .append("\n");
      sb.append("    shopperReference: ").append(toIndentedString(shopperReference)).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 PayoutMethod given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of PayoutMethod
     * @throws JsonProcessingException if the JSON string is invalid with respect to PayoutMethod
     */
    public static PayoutMethod fromJson(String jsonString) throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, PayoutMethod.class);
    }
  
    /**
     * Convert an instance of PayoutMethod to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  