content: /*
   * Adyen Payment API
   *
   * The version of the OpenAPI document: 68
   *
   *
   * 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.payment;
  
  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.*;
  
  /** AdditionalDataLevel23 */
  @JsonPropertyOrder({
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_CUSTOMER_REFERENCE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_COUNTRY_CODE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_POSTAL_CODE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_STATE_PROVINCE_CODE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_DUTY_AMOUNT,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_FREIGHT_AMOUNT,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_COMMODITY_CODE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_DESCRIPTION,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_DISCOUNT_AMOUNT,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_PRODUCT_CODE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_QUANTITY,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_TOTAL_AMOUNT,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_UNIT_OF_MEASURE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_UNIT_PRICE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_ORDER_DATE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_SHIP_FROM_POSTAL_CODE,
    AdditionalDataLevel23.JSON_PROPERTY_ENHANCED_SCHEME_DATA_TOTAL_TAX_AMOUNT
  })
  public class AdditionalDataLevel23 {
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_CUSTOMER_REFERENCE =
        "enhancedSchemeData.customerReference";
    private String enhancedSchemeDataCustomerReference;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_COUNTRY_CODE =
        "enhancedSchemeData.destinationCountryCode";
    private String enhancedSchemeDataDestinationCountryCode;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_POSTAL_CODE =
        "enhancedSchemeData.destinationPostalCode";
    private String enhancedSchemeDataDestinationPostalCode;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_STATE_PROVINCE_CODE =
        "enhancedSchemeData.destinationStateProvinceCode";
    private String enhancedSchemeDataDestinationStateProvinceCode;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_DUTY_AMOUNT =
        "enhancedSchemeData.dutyAmount";
    private String enhancedSchemeDataDutyAmount;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_FREIGHT_AMOUNT =
        "enhancedSchemeData.freightAmount";
    private String enhancedSchemeDataFreightAmount;
  
    public static final String
        JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_COMMODITY_CODE =
            "enhancedSchemeData.itemDetailLine[itemNr].commodityCode";
    private String enhancedSchemeDataItemDetailLineItemNrCommodityCode;
  
    public static final String
        JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_DESCRIPTION =
            "enhancedSchemeData.itemDetailLine[itemNr].description";
    private String enhancedSchemeDataItemDetailLineItemNrDescription;
  
    public static final String
        JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_DISCOUNT_AMOUNT =
            "enhancedSchemeData.itemDetailLine[itemNr].discountAmount";
    private String enhancedSchemeDataItemDetailLineItemNrDiscountAmount;
  
    public static final String
        JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_PRODUCT_CODE =
            "enhancedSchemeData.itemDetailLine[itemNr].productCode";
    private String enhancedSchemeDataItemDetailLineItemNrProductCode;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_QUANTITY =
        "enhancedSchemeData.itemDetailLine[itemNr].quantity";
    private String enhancedSchemeDataItemDetailLineItemNrQuantity;
  
    public static final String
        JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_TOTAL_AMOUNT =
            "enhancedSchemeData.itemDetailLine[itemNr].totalAmount";
    private String enhancedSchemeDataItemDetailLineItemNrTotalAmount;
  
    public static final String
        JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_UNIT_OF_MEASURE =
            "enhancedSchemeData.itemDetailLine[itemNr].unitOfMeasure";
    private String enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure;
  
    public static final String
        JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_UNIT_PRICE =
            "enhancedSchemeData.itemDetailLine[itemNr].unitPrice";
    private String enhancedSchemeDataItemDetailLineItemNrUnitPrice;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_ORDER_DATE =
        "enhancedSchemeData.orderDate";
    private String enhancedSchemeDataOrderDate;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_SHIP_FROM_POSTAL_CODE =
        "enhancedSchemeData.shipFromPostalCode";
    private String enhancedSchemeDataShipFromPostalCode;
  
    public static final String JSON_PROPERTY_ENHANCED_SCHEME_DATA_TOTAL_TAX_AMOUNT =
        "enhancedSchemeData.totalTaxAmount";
    private String enhancedSchemeDataTotalTaxAmount;
  
    public AdditionalDataLevel23() {}
  
    /**
     * The reference number to identify the customer and their order. * Encoding: ASCII * Max length:
     * 25 characters * Must not start with a space or be all spaces. * Must not be all zeros.
     *
     * @param enhancedSchemeDataCustomerReference The reference number to identify the customer and
     *     their order. * Encoding: ASCII * Max length: 25 characters * Must not start with a space or
     *     be all spaces. * Must not be all zeros.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataCustomerReference(
        String enhancedSchemeDataCustomerReference) {
      this.enhancedSchemeDataCustomerReference = enhancedSchemeDataCustomerReference;
      return this;
    }
  
    /**
     * The reference number to identify the customer and their order. * Encoding: ASCII * Max length:
     * 25 characters * Must not start with a space or be all spaces. * Must not be all zeros.
     *
     * @return enhancedSchemeDataCustomerReference The reference number to identify the customer and
     *     their order. * Encoding: ASCII * Max length: 25 characters * Must not start with a space or
     *     be all spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_CUSTOMER_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataCustomerReference() {
      return enhancedSchemeDataCustomerReference;
    }
  
    /**
     * The reference number to identify the customer and their order. * Encoding: ASCII * Max length:
     * 25 characters * Must not start with a space or be all spaces. * Must not be all zeros.
     *
     * @param enhancedSchemeDataCustomerReference The reference number to identify the customer and
     *     their order. * Encoding: ASCII * Max length: 25 characters * Must not start with a space or
     *     be all spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_CUSTOMER_REFERENCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataCustomerReference(String enhancedSchemeDataCustomerReference) {
      this.enhancedSchemeDataCustomerReference = enhancedSchemeDataCustomerReference;
    }
  
    /**
     * The three-letter [ISO 3166-1 alpha-3 country
     * code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for the destination address. *
     * Encoding: ASCII * Fixed length: 3 characters
     *
     * @param enhancedSchemeDataDestinationCountryCode The three-letter [ISO 3166-1 alpha-3 country
     *     code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for the destination address. *
     *     Encoding: ASCII * Fixed length: 3 characters
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataDestinationCountryCode(
        String enhancedSchemeDataDestinationCountryCode) {
      this.enhancedSchemeDataDestinationCountryCode = enhancedSchemeDataDestinationCountryCode;
      return this;
    }
  
    /**
     * The three-letter [ISO 3166-1 alpha-3 country
     * code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for the destination address. *
     * Encoding: ASCII * Fixed length: 3 characters
     *
     * @return enhancedSchemeDataDestinationCountryCode The three-letter [ISO 3166-1 alpha-3 country
     *     code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for the destination address. *
     *     Encoding: ASCII * Fixed length: 3 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_COUNTRY_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataDestinationCountryCode() {
      return enhancedSchemeDataDestinationCountryCode;
    }
  
    /**
     * The three-letter [ISO 3166-1 alpha-3 country
     * code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for the destination address. *
     * Encoding: ASCII * Fixed length: 3 characters
     *
     * @param enhancedSchemeDataDestinationCountryCode The three-letter [ISO 3166-1 alpha-3 country
     *     code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) for the destination address. *
     *     Encoding: ASCII * Fixed length: 3 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_COUNTRY_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataDestinationCountryCode(
        String enhancedSchemeDataDestinationCountryCode) {
      this.enhancedSchemeDataDestinationCountryCode = enhancedSchemeDataDestinationCountryCode;
    }
  
    /**
     * The postal code of the destination address. * Encoding: ASCII * Max length: 10 characters *
     * Must not start with a space. * For the US, it must be in five or nine digits format. For
     * example, 10001 or 10001-0000. * For Canada, it must be in 6 digits format. For example, M4B
     * 1G5.
     *
     * @param enhancedSchemeDataDestinationPostalCode The postal code of the destination address. *
     *     Encoding: ASCII * Max length: 10 characters * Must not start with a space. * For the US, it
     *     must be in five or nine digits format. For example, 10001 or 10001-0000. * For Canada, it
     *     must be in 6 digits format. For example, M4B 1G5.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataDestinationPostalCode(
        String enhancedSchemeDataDestinationPostalCode) {
      this.enhancedSchemeDataDestinationPostalCode = enhancedSchemeDataDestinationPostalCode;
      return this;
    }
  
    /**
     * The postal code of the destination address. * Encoding: ASCII * Max length: 10 characters *
     * Must not start with a space. * For the US, it must be in five or nine digits format. For
     * example, 10001 or 10001-0000. * For Canada, it must be in 6 digits format. For example, M4B
     * 1G5.
     *
     * @return enhancedSchemeDataDestinationPostalCode The postal code of the destination address. *
     *     Encoding: ASCII * Max length: 10 characters * Must not start with a space. * For the US, it
     *     must be in five or nine digits format. For example, 10001 or 10001-0000. * For Canada, it
     *     must be in 6 digits format. For example, M4B 1G5.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_POSTAL_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataDestinationPostalCode() {
      return enhancedSchemeDataDestinationPostalCode;
    }
  
    /**
     * The postal code of the destination address. * Encoding: ASCII * Max length: 10 characters *
     * Must not start with a space. * For the US, it must be in five or nine digits format. For
     * example, 10001 or 10001-0000. * For Canada, it must be in 6 digits format. For example, M4B
     * 1G5.
     *
     * @param enhancedSchemeDataDestinationPostalCode The postal code of the destination address. *
     *     Encoding: ASCII * Max length: 10 characters * Must not start with a space. * For the US, it
     *     must be in five or nine digits format. For example, 10001 or 10001-0000. * For Canada, it
     *     must be in 6 digits format. For example, M4B 1G5.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_POSTAL_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataDestinationPostalCode(
        String enhancedSchemeDataDestinationPostalCode) {
      this.enhancedSchemeDataDestinationPostalCode = enhancedSchemeDataDestinationPostalCode;
    }
  
    /**
     * The state or province code of the destination address. * Encoding: ASCII * Max length: 3
     * characters * Must not start with a space.
     *
     * @param enhancedSchemeDataDestinationStateProvinceCode The state or province code of the
     *     destination address. * Encoding: ASCII * Max length: 3 characters * Must not start with a
     *     space.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataDestinationStateProvinceCode(
        String enhancedSchemeDataDestinationStateProvinceCode) {
      this.enhancedSchemeDataDestinationStateProvinceCode =
          enhancedSchemeDataDestinationStateProvinceCode;
      return this;
    }
  
    /**
     * The state or province code of the destination address. * Encoding: ASCII * Max length: 3
     * characters * Must not start with a space.
     *
     * @return enhancedSchemeDataDestinationStateProvinceCode The state or province code of the
     *     destination address. * Encoding: ASCII * Max length: 3 characters * Must not start with a
     *     space.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_STATE_PROVINCE_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataDestinationStateProvinceCode() {
      return enhancedSchemeDataDestinationStateProvinceCode;
    }
  
    /**
     * The state or province code of the destination address. * Encoding: ASCII * Max length: 3
     * characters * Must not start with a space.
     *
     * @param enhancedSchemeDataDestinationStateProvinceCode The state or province code of the
     *     destination address. * Encoding: ASCII * Max length: 3 characters * Must not start with a
     *     space.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_DESTINATION_STATE_PROVINCE_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataDestinationStateProvinceCode(
        String enhancedSchemeDataDestinationStateProvinceCode) {
      this.enhancedSchemeDataDestinationStateProvinceCode =
          enhancedSchemeDataDestinationStateProvinceCode;
    }
  
    /**
     * The duty tax amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @param enhancedSchemeDataDutyAmount The duty tax amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataDutyAmount(String enhancedSchemeDataDutyAmount) {
      this.enhancedSchemeDataDutyAmount = enhancedSchemeDataDutyAmount;
      return this;
    }
  
    /**
     * The duty tax amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @return enhancedSchemeDataDutyAmount The duty tax amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_DUTY_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataDutyAmount() {
      return enhancedSchemeDataDutyAmount;
    }
  
    /**
     * The duty tax amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @param enhancedSchemeDataDutyAmount The duty tax amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_DUTY_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataDutyAmount(String enhancedSchemeDataDutyAmount) {
      this.enhancedSchemeDataDutyAmount = enhancedSchemeDataDutyAmount;
    }
  
    /**
     * The shipping amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @param enhancedSchemeDataFreightAmount The shipping amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataFreightAmount(
        String enhancedSchemeDataFreightAmount) {
      this.enhancedSchemeDataFreightAmount = enhancedSchemeDataFreightAmount;
      return this;
    }
  
    /**
     * The shipping amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @return enhancedSchemeDataFreightAmount The shipping amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_FREIGHT_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataFreightAmount() {
      return enhancedSchemeDataFreightAmount;
    }
  
    /**
     * The shipping amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @param enhancedSchemeDataFreightAmount The shipping amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_FREIGHT_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataFreightAmount(String enhancedSchemeDataFreightAmount) {
      this.enhancedSchemeDataFreightAmount = enhancedSchemeDataFreightAmount;
    }
  
    /**
     * The code that identifies the item in a standardized commodity coding scheme. There are
     * different commodity coding schemes: * [UNSPSC commodity codes](https://www.unspsc.org/) * [HS
     * commodity codes](https://www.wcoomd.org/en/topics/nomenclature/overview.aspx) * [NAICS
     * commodity codes](https://www.census.gov/naics/) * [NAPCS commodity
     * codes](https://www.census.gov/naics/napcs/) * Encoding: ASCII * Max length: 12 characters *
     * Must not start with a space or be all spaces. * Must not be all zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrCommodityCode The code that identifies the item in
     *     a standardized commodity coding scheme. There are different commodity coding schemes: *
     *     [UNSPSC commodity codes](https://www.unspsc.org/) * [HS commodity
     *     codes](https://www.wcoomd.org/en/topics/nomenclature/overview.aspx) * [NAICS commodity
     *     codes](https://www.census.gov/naics/) * [NAPCS commodity
     *     codes](https://www.census.gov/naics/napcs/) * Encoding: ASCII * Max length: 12 characters *
     *     Must not start with a space or be all spaces. * Must not be all zeros.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataItemDetailLineItemNrCommodityCode(
        String enhancedSchemeDataItemDetailLineItemNrCommodityCode) {
      this.enhancedSchemeDataItemDetailLineItemNrCommodityCode =
          enhancedSchemeDataItemDetailLineItemNrCommodityCode;
      return this;
    }
  
    /**
     * The code that identifies the item in a standardized commodity coding scheme. There are
     * different commodity coding schemes: * [UNSPSC commodity codes](https://www.unspsc.org/) * [HS
     * commodity codes](https://www.wcoomd.org/en/topics/nomenclature/overview.aspx) * [NAICS
     * commodity codes](https://www.census.gov/naics/) * [NAPCS commodity
     * codes](https://www.census.gov/naics/napcs/) * Encoding: ASCII * Max length: 12 characters *
     * Must not start with a space or be all spaces. * Must not be all zeros.
     *
     * @return enhancedSchemeDataItemDetailLineItemNrCommodityCode The code that identifies the item
     *     in a standardized commodity coding scheme. There are different commodity coding schemes: *
     *     [UNSPSC commodity codes](https://www.unspsc.org/) * [HS commodity
     *     codes](https://www.wcoomd.org/en/topics/nomenclature/overview.aspx) * [NAICS commodity
     *     codes](https://www.census.gov/naics/) * [NAPCS commodity
     *     codes](https://www.census.gov/naics/napcs/) * Encoding: ASCII * Max length: 12 characters *
     *     Must not start with a space or be all spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_COMMODITY_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataItemDetailLineItemNrCommodityCode() {
      return enhancedSchemeDataItemDetailLineItemNrCommodityCode;
    }
  
    /**
     * The code that identifies the item in a standardized commodity coding scheme. There are
     * different commodity coding schemes: * [UNSPSC commodity codes](https://www.unspsc.org/) * [HS
     * commodity codes](https://www.wcoomd.org/en/topics/nomenclature/overview.aspx) * [NAICS
     * commodity codes](https://www.census.gov/naics/) * [NAPCS commodity
     * codes](https://www.census.gov/naics/napcs/) * Encoding: ASCII * Max length: 12 characters *
     * Must not start with a space or be all spaces. * Must not be all zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrCommodityCode The code that identifies the item in
     *     a standardized commodity coding scheme. There are different commodity coding schemes: *
     *     [UNSPSC commodity codes](https://www.unspsc.org/) * [HS commodity
     *     codes](https://www.wcoomd.org/en/topics/nomenclature/overview.aspx) * [NAICS commodity
     *     codes](https://www.census.gov/naics/) * [NAPCS commodity
     *     codes](https://www.census.gov/naics/napcs/) * Encoding: ASCII * Max length: 12 characters *
     *     Must not start with a space or be all spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_COMMODITY_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataItemDetailLineItemNrCommodityCode(
        String enhancedSchemeDataItemDetailLineItemNrCommodityCode) {
      this.enhancedSchemeDataItemDetailLineItemNrCommodityCode =
          enhancedSchemeDataItemDetailLineItemNrCommodityCode;
    }
  
    /**
     * A description of the item, that provides details about the purchase. For Visa transactions with
     * level 3 ESD, the description must not be the same or very similar to your merchant name, or,
     * consist only of common words like \&quot;product\&quot;, or \&quot;service\&quot;. * Encoding:
     * ASCII * Max length: 26 characters * Must not be a single character. * Must not be blank. * Must
     * not be all special characters. * Must not be blank. * Must not start with a space or be all
     * spaces. * Must not be all zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrDescription A description of the item, that
     *     provides details about the purchase. For Visa transactions with level 3 ESD, the
     *     description must not be the same or very similar to your merchant name, or, consist only of
     *     common words like \&quot;product\&quot;, or \&quot;service\&quot;. * Encoding: ASCII * Max
     *     length: 26 characters * Must not be a single character. * Must not be blank. * Must not be
     *     all special characters. * Must not be blank. * Must not start with a space or be all
     *     spaces. * Must not be all zeros.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataItemDetailLineItemNrDescription(
        String enhancedSchemeDataItemDetailLineItemNrDescription) {
      this.enhancedSchemeDataItemDetailLineItemNrDescription =
          enhancedSchemeDataItemDetailLineItemNrDescription;
      return this;
    }
  
    /**
     * A description of the item, that provides details about the purchase. For Visa transactions with
     * level 3 ESD, the description must not be the same or very similar to your merchant name, or,
     * consist only of common words like \&quot;product\&quot;, or \&quot;service\&quot;. * Encoding:
     * ASCII * Max length: 26 characters * Must not be a single character. * Must not be blank. * Must
     * not be all special characters. * Must not be blank. * Must not start with a space or be all
     * spaces. * Must not be all zeros.
     *
     * @return enhancedSchemeDataItemDetailLineItemNrDescription A description of the item, that
     *     provides details about the purchase. For Visa transactions with level 3 ESD, the
     *     description must not be the same or very similar to your merchant name, or, consist only of
     *     common words like \&quot;product\&quot;, or \&quot;service\&quot;. * Encoding: ASCII * Max
     *     length: 26 characters * Must not be a single character. * Must not be blank. * Must not be
     *     all special characters. * Must not be blank. * Must not start with a space or be all
     *     spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_DESCRIPTION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataItemDetailLineItemNrDescription() {
      return enhancedSchemeDataItemDetailLineItemNrDescription;
    }
  
    /**
     * A description of the item, that provides details about the purchase. For Visa transactions with
     * level 3 ESD, the description must not be the same or very similar to your merchant name, or,
     * consist only of common words like \&quot;product\&quot;, or \&quot;service\&quot;. * Encoding:
     * ASCII * Max length: 26 characters * Must not be a single character. * Must not be blank. * Must
     * not be all special characters. * Must not be blank. * Must not start with a space or be all
     * spaces. * Must not be all zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrDescription A description of the item, that
     *     provides details about the purchase. For Visa transactions with level 3 ESD, the
     *     description must not be the same or very similar to your merchant name, or, consist only of
     *     common words like \&quot;product\&quot;, or \&quot;service\&quot;. * Encoding: ASCII * Max
     *     length: 26 characters * Must not be a single character. * Must not be blank. * Must not be
     *     all special characters. * Must not be blank. * Must not start with a space or be all
     *     spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_DESCRIPTION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataItemDetailLineItemNrDescription(
        String enhancedSchemeDataItemDetailLineItemNrDescription) {
      this.enhancedSchemeDataItemDetailLineItemNrDescription =
          enhancedSchemeDataItemDetailLineItemNrDescription;
    }
  
    /**
     * The discount amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @param enhancedSchemeDataItemDetailLineItemNrDiscountAmount The discount amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataItemDetailLineItemNrDiscountAmount(
        String enhancedSchemeDataItemDetailLineItemNrDiscountAmount) {
      this.enhancedSchemeDataItemDetailLineItemNrDiscountAmount =
          enhancedSchemeDataItemDetailLineItemNrDiscountAmount;
      return this;
    }
  
    /**
     * The discount amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @return enhancedSchemeDataItemDetailLineItemNrDiscountAmount The discount amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_DISCOUNT_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataItemDetailLineItemNrDiscountAmount() {
      return enhancedSchemeDataItemDetailLineItemNrDiscountAmount;
    }
  
    /**
     * The discount amount, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000 means
     * USD 20.00. * Encoding: Numeric * Max length: 12 characters
     *
     * @param enhancedSchemeDataItemDetailLineItemNrDiscountAmount The discount amount, in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_DISCOUNT_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataItemDetailLineItemNrDiscountAmount(
        String enhancedSchemeDataItemDetailLineItemNrDiscountAmount) {
      this.enhancedSchemeDataItemDetailLineItemNrDiscountAmount =
          enhancedSchemeDataItemDetailLineItemNrDiscountAmount;
    }
  
    /**
     * The product code. Must be a unique product code associated with the item or service. This can
     * be your unique code for the item, or the manufacturer&#39;s product code. * Encoding: ASCII. *
     * Max length: 12 characters * Must not start with a space or be all spaces. * Must not be all
     * zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrProductCode The product code. Must be a unique
     *     product code associated with the item or service. This can be your unique code for the
     *     item, or the manufacturer&#39;s product code. * Encoding: ASCII. * Max length: 12
     *     characters * Must not start with a space or be all spaces. * Must not be all zeros.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataItemDetailLineItemNrProductCode(
        String enhancedSchemeDataItemDetailLineItemNrProductCode) {
      this.enhancedSchemeDataItemDetailLineItemNrProductCode =
          enhancedSchemeDataItemDetailLineItemNrProductCode;
      return this;
    }
  
    /**
     * The product code. Must be a unique product code associated with the item or service. This can
     * be your unique code for the item, or the manufacturer&#39;s product code. * Encoding: ASCII. *
     * Max length: 12 characters * Must not start with a space or be all spaces. * Must not be all
     * zeros.
     *
     * @return enhancedSchemeDataItemDetailLineItemNrProductCode The product code. Must be a unique
     *     product code associated with the item or service. This can be your unique code for the
     *     item, or the manufacturer&#39;s product code. * Encoding: ASCII. * Max length: 12
     *     characters * Must not start with a space or be all spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_PRODUCT_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataItemDetailLineItemNrProductCode() {
      return enhancedSchemeDataItemDetailLineItemNrProductCode;
    }
  
    /**
     * The product code. Must be a unique product code associated with the item or service. This can
     * be your unique code for the item, or the manufacturer&#39;s product code. * Encoding: ASCII. *
     * Max length: 12 characters * Must not start with a space or be all spaces. * Must not be all
     * zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrProductCode The product code. Must be a unique
     *     product code associated with the item or service. This can be your unique code for the
     *     item, or the manufacturer&#39;s product code. * Encoding: ASCII. * Max length: 12
     *     characters * Must not start with a space or be all spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_PRODUCT_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataItemDetailLineItemNrProductCode(
        String enhancedSchemeDataItemDetailLineItemNrProductCode) {
      this.enhancedSchemeDataItemDetailLineItemNrProductCode =
          enhancedSchemeDataItemDetailLineItemNrProductCode;
    }
  
    /**
     * The number of items. Must be an integer greater than zero. * Encoding: Numeric * Max length: 12
     * characters * Must not start with a space or be all spaces.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrQuantity The number of items. Must be an integer
     *     greater than zero. * Encoding: Numeric * Max length: 12 characters * Must not start with a
     *     space or be all spaces.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataItemDetailLineItemNrQuantity(
        String enhancedSchemeDataItemDetailLineItemNrQuantity) {
      this.enhancedSchemeDataItemDetailLineItemNrQuantity =
          enhancedSchemeDataItemDetailLineItemNrQuantity;
      return this;
    }
  
    /**
     * The number of items. Must be an integer greater than zero. * Encoding: Numeric * Max length: 12
     * characters * Must not start with a space or be all spaces.
     *
     * @return enhancedSchemeDataItemDetailLineItemNrQuantity The number of items. Must be an integer
     *     greater than zero. * Encoding: Numeric * Max length: 12 characters * Must not start with a
     *     space or be all spaces.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_QUANTITY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataItemDetailLineItemNrQuantity() {
      return enhancedSchemeDataItemDetailLineItemNrQuantity;
    }
  
    /**
     * The number of items. Must be an integer greater than zero. * Encoding: Numeric * Max length: 12
     * characters * Must not start with a space or be all spaces.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrQuantity The number of items. Must be an integer
     *     greater than zero. * Encoding: Numeric * Max length: 12 characters * Must not start with a
     *     space or be all spaces.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_QUANTITY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataItemDetailLineItemNrQuantity(
        String enhancedSchemeDataItemDetailLineItemNrQuantity) {
      this.enhancedSchemeDataItemDetailLineItemNrQuantity =
          enhancedSchemeDataItemDetailLineItemNrQuantity;
    }
  
    /**
     * The total amount for the line item, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). See [Amount requirements
     * for level 2/3
     * ESD](https://docs.adyen.com//payment-methods/cards/enhanced-scheme-data/l2-l3#amount-requirements)
     * to learn more about how to calculate the line item total. * For example, 2000 means USD 20.00.
     * * Max length: 12 characters * Must not start with a space or be all spaces. * Must not be all
     * zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrTotalAmount The total amount for the line item, in
     *     [minor units](https://docs.adyen.com/development-resources/currency-codes). See [Amount
     *     requirements for level 2/3
     *     ESD](https://docs.adyen.com//payment-methods/cards/enhanced-scheme-data/l2-l3#amount-requirements)
     *     to learn more about how to calculate the line item total. * For example, 2000 means USD
     *     20.00. * Max length: 12 characters * Must not start with a space or be all spaces. * Must
     *     not be all zeros.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataItemDetailLineItemNrTotalAmount(
        String enhancedSchemeDataItemDetailLineItemNrTotalAmount) {
      this.enhancedSchemeDataItemDetailLineItemNrTotalAmount =
          enhancedSchemeDataItemDetailLineItemNrTotalAmount;
      return this;
    }
  
    /**
     * The total amount for the line item, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). See [Amount requirements
     * for level 2/3
     * ESD](https://docs.adyen.com//payment-methods/cards/enhanced-scheme-data/l2-l3#amount-requirements)
     * to learn more about how to calculate the line item total. * For example, 2000 means USD 20.00.
     * * Max length: 12 characters * Must not start with a space or be all spaces. * Must not be all
     * zeros.
     *
     * @return enhancedSchemeDataItemDetailLineItemNrTotalAmount The total amount for the line item,
     *     in [minor units](https://docs.adyen.com/development-resources/currency-codes). See [Amount
     *     requirements for level 2/3
     *     ESD](https://docs.adyen.com//payment-methods/cards/enhanced-scheme-data/l2-l3#amount-requirements)
     *     to learn more about how to calculate the line item total. * For example, 2000 means USD
     *     20.00. * Max length: 12 characters * Must not start with a space or be all spaces. * Must
     *     not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_TOTAL_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataItemDetailLineItemNrTotalAmount() {
      return enhancedSchemeDataItemDetailLineItemNrTotalAmount;
    }
  
    /**
     * The total amount for the line item, in [minor
     * units](https://docs.adyen.com/development-resources/currency-codes). See [Amount requirements
     * for level 2/3
     * ESD](https://docs.adyen.com//payment-methods/cards/enhanced-scheme-data/l2-l3#amount-requirements)
     * to learn more about how to calculate the line item total. * For example, 2000 means USD 20.00.
     * * Max length: 12 characters * Must not start with a space or be all spaces. * Must not be all
     * zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrTotalAmount The total amount for the line item, in
     *     [minor units](https://docs.adyen.com/development-resources/currency-codes). See [Amount
     *     requirements for level 2/3
     *     ESD](https://docs.adyen.com//payment-methods/cards/enhanced-scheme-data/l2-l3#amount-requirements)
     *     to learn more about how to calculate the line item total. * For example, 2000 means USD
     *     20.00. * Max length: 12 characters * Must not start with a space or be all spaces. * Must
     *     not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_TOTAL_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataItemDetailLineItemNrTotalAmount(
        String enhancedSchemeDataItemDetailLineItemNrTotalAmount) {
      this.enhancedSchemeDataItemDetailLineItemNrTotalAmount =
          enhancedSchemeDataItemDetailLineItemNrTotalAmount;
    }
  
    /**
     * The unit of measurement for an item. * Encoding: ASCII * Max length: 3 characters * Must not
     * start with a space or be all spaces. * Must not be all zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure The unit of measurement for an item.
     *     * Encoding: ASCII * Max length: 3 characters * Must not start with a space or be all
     *     spaces. * Must not be all zeros.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure(
        String enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure) {
      this.enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure =
          enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure;
      return this;
    }
  
    /**
     * The unit of measurement for an item. * Encoding: ASCII * Max length: 3 characters * Must not
     * start with a space or be all spaces. * Must not be all zeros.
     *
     * @return enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure The unit of measurement for an
     *     item. * Encoding: ASCII * Max length: 3 characters * Must not start with a space or be all
     *     spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_UNIT_OF_MEASURE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataItemDetailLineItemNrUnitOfMeasure() {
      return enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure;
    }
  
    /**
     * The unit of measurement for an item. * Encoding: ASCII * Max length: 3 characters * Must not
     * start with a space or be all spaces. * Must not be all zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure The unit of measurement for an item.
     *     * Encoding: ASCII * Max length: 3 characters * Must not start with a space or be all
     *     spaces. * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_UNIT_OF_MEASURE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataItemDetailLineItemNrUnitOfMeasure(
        String enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure) {
      this.enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure =
          enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure;
    }
  
    /**
     * The unit price in [minor units](https://docs.adyen.com/development-resources/currency-codes). *
     * For example, 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * Must not
     * be all zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrUnitPrice The unit price in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters * Must not be all zeros.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataItemDetailLineItemNrUnitPrice(
        String enhancedSchemeDataItemDetailLineItemNrUnitPrice) {
      this.enhancedSchemeDataItemDetailLineItemNrUnitPrice =
          enhancedSchemeDataItemDetailLineItemNrUnitPrice;
      return this;
    }
  
    /**
     * The unit price in [minor units](https://docs.adyen.com/development-resources/currency-codes). *
     * For example, 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * Must not
     * be all zeros.
     *
     * @return enhancedSchemeDataItemDetailLineItemNrUnitPrice The unit price in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_UNIT_PRICE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataItemDetailLineItemNrUnitPrice() {
      return enhancedSchemeDataItemDetailLineItemNrUnitPrice;
    }
  
    /**
     * The unit price in [minor units](https://docs.adyen.com/development-resources/currency-codes). *
     * For example, 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * Must not
     * be all zeros.
     *
     * @param enhancedSchemeDataItemDetailLineItemNrUnitPrice The unit price in [minor
     *     units](https://docs.adyen.com/development-resources/currency-codes). * For example, 2000
     *     means USD 20.00. * Encoding: Numeric * Max length: 12 characters * Must not be all zeros.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ITEM_DETAIL_LINE_ITEM_NR_UNIT_PRICE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataItemDetailLineItemNrUnitPrice(
        String enhancedSchemeDataItemDetailLineItemNrUnitPrice) {
      this.enhancedSchemeDataItemDetailLineItemNrUnitPrice =
          enhancedSchemeDataItemDetailLineItemNrUnitPrice;
    }
  
    /**
     * The order date. * Format: &#x60;ddMMyy&#x60; * Encoding: ASCII * Max length: 6 characters
     *
     * @param enhancedSchemeDataOrderDate The order date. * Format: &#x60;ddMMyy&#x60; * Encoding:
     *     ASCII * Max length: 6 characters
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataOrderDate(String enhancedSchemeDataOrderDate) {
      this.enhancedSchemeDataOrderDate = enhancedSchemeDataOrderDate;
      return this;
    }
  
    /**
     * The order date. * Format: &#x60;ddMMyy&#x60; * Encoding: ASCII * Max length: 6 characters
     *
     * @return enhancedSchemeDataOrderDate The order date. * Format: &#x60;ddMMyy&#x60; * Encoding:
     *     ASCII * Max length: 6 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ORDER_DATE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataOrderDate() {
      return enhancedSchemeDataOrderDate;
    }
  
    /**
     * The order date. * Format: &#x60;ddMMyy&#x60; * Encoding: ASCII * Max length: 6 characters
     *
     * @param enhancedSchemeDataOrderDate The order date. * Format: &#x60;ddMMyy&#x60; * Encoding:
     *     ASCII * Max length: 6 characters
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_ORDER_DATE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataOrderDate(String enhancedSchemeDataOrderDate) {
      this.enhancedSchemeDataOrderDate = enhancedSchemeDataOrderDate;
    }
  
    /**
     * The postal code of the address where the item is shipped from. * Encoding: ASCII * Max length:
     * 10 characters * Must not start with a space or be all spaces. * Must not be all zeros.For the
     * US, it must be in five or nine digits format. For example, 10001 or 10001-0000. * For Canada,
     * it must be in 6 digits format. For example, M4B 1G5.
     *
     * @param enhancedSchemeDataShipFromPostalCode The postal code of the address where the item is
     *     shipped from. * Encoding: ASCII * Max length: 10 characters * Must not start with a space
     *     or be all spaces. * Must not be all zeros.For the US, it must be in five or nine digits
     *     format. For example, 10001 or 10001-0000. * For Canada, it must be in 6 digits format. For
     *     example, M4B 1G5.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataShipFromPostalCode(
        String enhancedSchemeDataShipFromPostalCode) {
      this.enhancedSchemeDataShipFromPostalCode = enhancedSchemeDataShipFromPostalCode;
      return this;
    }
  
    /**
     * The postal code of the address where the item is shipped from. * Encoding: ASCII * Max length:
     * 10 characters * Must not start with a space or be all spaces. * Must not be all zeros.For the
     * US, it must be in five or nine digits format. For example, 10001 or 10001-0000. * For Canada,
     * it must be in 6 digits format. For example, M4B 1G5.
     *
     * @return enhancedSchemeDataShipFromPostalCode The postal code of the address where the item is
     *     shipped from. * Encoding: ASCII * Max length: 10 characters * Must not start with a space
     *     or be all spaces. * Must not be all zeros.For the US, it must be in five or nine digits
     *     format. For example, 10001 or 10001-0000. * For Canada, it must be in 6 digits format. For
     *     example, M4B 1G5.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_SHIP_FROM_POSTAL_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataShipFromPostalCode() {
      return enhancedSchemeDataShipFromPostalCode;
    }
  
    /**
     * The postal code of the address where the item is shipped from. * Encoding: ASCII * Max length:
     * 10 characters * Must not start with a space or be all spaces. * Must not be all zeros.For the
     * US, it must be in five or nine digits format. For example, 10001 or 10001-0000. * For Canada,
     * it must be in 6 digits format. For example, M4B 1G5.
     *
     * @param enhancedSchemeDataShipFromPostalCode The postal code of the address where the item is
     *     shipped from. * Encoding: ASCII * Max length: 10 characters * Must not start with a space
     *     or be all spaces. * Must not be all zeros.For the US, it must be in five or nine digits
     *     format. For example, 10001 or 10001-0000. * For Canada, it must be in 6 digits format. For
     *     example, M4B 1G5.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_SHIP_FROM_POSTAL_CODE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataShipFromPostalCode(String enhancedSchemeDataShipFromPostalCode) {
      this.enhancedSchemeDataShipFromPostalCode = enhancedSchemeDataShipFromPostalCode;
    }
  
    /**
     * The amount of state or provincial [tax included in the total transaction
     * amount](https://docs.adyen.com/payment-methods/cards/enhanced-scheme-data/l2-l3#requirements-to-send-level-2-3-esd),
     * in [minor units](https://docs.adyen.com/development-resources/currency-codes). * For example,
     * 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * For L2 data: must not
     * be all zeroes. * For L3 data: can be zero.
     *
     * @param enhancedSchemeDataTotalTaxAmount The amount of state or provincial [tax included in the
     *     total transaction
     *     amount](https://docs.adyen.com/payment-methods/cards/enhanced-scheme-data/l2-l3#requirements-to-send-level-2-3-esd),
     *     in [minor units](https://docs.adyen.com/development-resources/currency-codes). * For
     *     example, 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * For L2
     *     data: must not be all zeroes. * For L3 data: can be zero.
     * @return the current {@code AdditionalDataLevel23} instance, allowing for method chaining
     */
    public AdditionalDataLevel23 enhancedSchemeDataTotalTaxAmount(
        String enhancedSchemeDataTotalTaxAmount) {
      this.enhancedSchemeDataTotalTaxAmount = enhancedSchemeDataTotalTaxAmount;
      return this;
    }
  
    /**
     * The amount of state or provincial [tax included in the total transaction
     * amount](https://docs.adyen.com/payment-methods/cards/enhanced-scheme-data/l2-l3#requirements-to-send-level-2-3-esd),
     * in [minor units](https://docs.adyen.com/development-resources/currency-codes). * For example,
     * 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * For L2 data: must not
     * be all zeroes. * For L3 data: can be zero.
     *
     * @return enhancedSchemeDataTotalTaxAmount The amount of state or provincial [tax included in the
     *     total transaction
     *     amount](https://docs.adyen.com/payment-methods/cards/enhanced-scheme-data/l2-l3#requirements-to-send-level-2-3-esd),
     *     in [minor units](https://docs.adyen.com/development-resources/currency-codes). * For
     *     example, 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * For L2
     *     data: must not be all zeroes. * For L3 data: can be zero.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_TOTAL_TAX_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getEnhancedSchemeDataTotalTaxAmount() {
      return enhancedSchemeDataTotalTaxAmount;
    }
  
    /**
     * The amount of state or provincial [tax included in the total transaction
     * amount](https://docs.adyen.com/payment-methods/cards/enhanced-scheme-data/l2-l3#requirements-to-send-level-2-3-esd),
     * in [minor units](https://docs.adyen.com/development-resources/currency-codes). * For example,
     * 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * For L2 data: must not
     * be all zeroes. * For L3 data: can be zero.
     *
     * @param enhancedSchemeDataTotalTaxAmount The amount of state or provincial [tax included in the
     *     total transaction
     *     amount](https://docs.adyen.com/payment-methods/cards/enhanced-scheme-data/l2-l3#requirements-to-send-level-2-3-esd),
     *     in [minor units](https://docs.adyen.com/development-resources/currency-codes). * For
     *     example, 2000 means USD 20.00. * Encoding: Numeric * Max length: 12 characters * For L2
     *     data: must not be all zeroes. * For L3 data: can be zero.
     */
    @JsonProperty(JSON_PROPERTY_ENHANCED_SCHEME_DATA_TOTAL_TAX_AMOUNT)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setEnhancedSchemeDataTotalTaxAmount(String enhancedSchemeDataTotalTaxAmount) {
      this.enhancedSchemeDataTotalTaxAmount = enhancedSchemeDataTotalTaxAmount;
    }
  
    /** Return true if this AdditionalDataLevel23 object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      AdditionalDataLevel23 additionalDataLevel23 = (AdditionalDataLevel23) o;
      return Objects.equals(
              this.enhancedSchemeDataCustomerReference,
              additionalDataLevel23.enhancedSchemeDataCustomerReference)
          && Objects.equals(
              this.enhancedSchemeDataDestinationCountryCode,
              additionalDataLevel23.enhancedSchemeDataDestinationCountryCode)
          && Objects.equals(
              this.enhancedSchemeDataDestinationPostalCode,
              additionalDataLevel23.enhancedSchemeDataDestinationPostalCode)
          && Objects.equals(
              this.enhancedSchemeDataDestinationStateProvinceCode,
              additionalDataLevel23.enhancedSchemeDataDestinationStateProvinceCode)
          && Objects.equals(
              this.enhancedSchemeDataDutyAmount, additionalDataLevel23.enhancedSchemeDataDutyAmount)
          && Objects.equals(
              this.enhancedSchemeDataFreightAmount,
              additionalDataLevel23.enhancedSchemeDataFreightAmount)
          && Objects.equals(
              this.enhancedSchemeDataItemDetailLineItemNrCommodityCode,
              additionalDataLevel23.enhancedSchemeDataItemDetailLineItemNrCommodityCode)
          && Objects.equals(
              this.enhancedSchemeDataItemDetailLineItemNrDescription,
              additionalDataLevel23.enhancedSchemeDataItemDetailLineItemNrDescription)
          && Objects.equals(
              this.enhancedSchemeDataItemDetailLineItemNrDiscountAmount,
              additionalDataLevel23.enhancedSchemeDataItemDetailLineItemNrDiscountAmount)
          && Objects.equals(
              this.enhancedSchemeDataItemDetailLineItemNrProductCode,
              additionalDataLevel23.enhancedSchemeDataItemDetailLineItemNrProductCode)
          && Objects.equals(
              this.enhancedSchemeDataItemDetailLineItemNrQuantity,
              additionalDataLevel23.enhancedSchemeDataItemDetailLineItemNrQuantity)
          && Objects.equals(
              this.enhancedSchemeDataItemDetailLineItemNrTotalAmount,
              additionalDataLevel23.enhancedSchemeDataItemDetailLineItemNrTotalAmount)
          && Objects.equals(
              this.enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure,
              additionalDataLevel23.enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure)
          && Objects.equals(
              this.enhancedSchemeDataItemDetailLineItemNrUnitPrice,
              additionalDataLevel23.enhancedSchemeDataItemDetailLineItemNrUnitPrice)
          && Objects.equals(
              this.enhancedSchemeDataOrderDate, additionalDataLevel23.enhancedSchemeDataOrderDate)
          && Objects.equals(
              this.enhancedSchemeDataShipFromPostalCode,
              additionalDataLevel23.enhancedSchemeDataShipFromPostalCode)
          && Objects.equals(
              this.enhancedSchemeDataTotalTaxAmount,
              additionalDataLevel23.enhancedSchemeDataTotalTaxAmount);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(
          enhancedSchemeDataCustomerReference,
          enhancedSchemeDataDestinationCountryCode,
          enhancedSchemeDataDestinationPostalCode,
          enhancedSchemeDataDestinationStateProvinceCode,
          enhancedSchemeDataDutyAmount,
          enhancedSchemeDataFreightAmount,
          enhancedSchemeDataItemDetailLineItemNrCommodityCode,
          enhancedSchemeDataItemDetailLineItemNrDescription,
          enhancedSchemeDataItemDetailLineItemNrDiscountAmount,
          enhancedSchemeDataItemDetailLineItemNrProductCode,
          enhancedSchemeDataItemDetailLineItemNrQuantity,
          enhancedSchemeDataItemDetailLineItemNrTotalAmount,
          enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure,
          enhancedSchemeDataItemDetailLineItemNrUnitPrice,
          enhancedSchemeDataOrderDate,
          enhancedSchemeDataShipFromPostalCode,
          enhancedSchemeDataTotalTaxAmount);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class AdditionalDataLevel23 {\n");
      sb.append("    enhancedSchemeDataCustomerReference: ")
          .append(toIndentedString(enhancedSchemeDataCustomerReference))
          .append("\n");
      sb.append("    enhancedSchemeDataDestinationCountryCode: ")
          .append(toIndentedString(enhancedSchemeDataDestinationCountryCode))
          .append("\n");
      sb.append("    enhancedSchemeDataDestinationPostalCode: ")
          .append(toIndentedString(enhancedSchemeDataDestinationPostalCode))
          .append("\n");
      sb.append("    enhancedSchemeDataDestinationStateProvinceCode: ")
          .append(toIndentedString(enhancedSchemeDataDestinationStateProvinceCode))
          .append("\n");
      sb.append("    enhancedSchemeDataDutyAmount: ")
          .append(toIndentedString(enhancedSchemeDataDutyAmount))
          .append("\n");
      sb.append("    enhancedSchemeDataFreightAmount: ")
          .append(toIndentedString(enhancedSchemeDataFreightAmount))
          .append("\n");
      sb.append("    enhancedSchemeDataItemDetailLineItemNrCommodityCode: ")
          .append(toIndentedString(enhancedSchemeDataItemDetailLineItemNrCommodityCode))
          .append("\n");
      sb.append("    enhancedSchemeDataItemDetailLineItemNrDescription: ")
          .append(toIndentedString(enhancedSchemeDataItemDetailLineItemNrDescription))
          .append("\n");
      sb.append("    enhancedSchemeDataItemDetailLineItemNrDiscountAmount: ")
          .append(toIndentedString(enhancedSchemeDataItemDetailLineItemNrDiscountAmount))
          .append("\n");
      sb.append("    enhancedSchemeDataItemDetailLineItemNrProductCode: ")
          .append(toIndentedString(enhancedSchemeDataItemDetailLineItemNrProductCode))
          .append("\n");
      sb.append("    enhancedSchemeDataItemDetailLineItemNrQuantity: ")
          .append(toIndentedString(enhancedSchemeDataItemDetailLineItemNrQuantity))
          .append("\n");
      sb.append("    enhancedSchemeDataItemDetailLineItemNrTotalAmount: ")
          .append(toIndentedString(enhancedSchemeDataItemDetailLineItemNrTotalAmount))
          .append("\n");
      sb.append("    enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure: ")
          .append(toIndentedString(enhancedSchemeDataItemDetailLineItemNrUnitOfMeasure))
          .append("\n");
      sb.append("    enhancedSchemeDataItemDetailLineItemNrUnitPrice: ")
          .append(toIndentedString(enhancedSchemeDataItemDetailLineItemNrUnitPrice))
          .append("\n");
      sb.append("    enhancedSchemeDataOrderDate: ")
          .append(toIndentedString(enhancedSchemeDataOrderDate))
          .append("\n");
      sb.append("    enhancedSchemeDataShipFromPostalCode: ")
          .append(toIndentedString(enhancedSchemeDataShipFromPostalCode))
          .append("\n");
      sb.append("    enhancedSchemeDataTotalTaxAmount: ")
          .append(toIndentedString(enhancedSchemeDataTotalTaxAmount))
          .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 AdditionalDataLevel23 given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of AdditionalDataLevel23
     * @throws JsonProcessingException if the JSON string is invalid with respect to
     *     AdditionalDataLevel23
     */
    public static AdditionalDataLevel23 fromJson(String jsonString) throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, AdditionalDataLevel23.class);
    }
  
    /**
     * Convert an instance of AdditionalDataLevel23 to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  