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

com.stripe.param.issuing.AuthorizationCreateParams Maven / Gradle / Ivy

// File generated from our OpenAPI spec
package com.stripe.param.issuing;

import com.google.gson.annotations.SerializedName;
import com.stripe.net.ApiRequestParams;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.Getter;

@Getter
public class AuthorizationCreateParams extends ApiRequestParams {
  /**
   * The total amount to attempt to authorize. This amount is in the provided currency, or defaults
   * to the card's currency, and in the smallest currency unit.
   */
  @SerializedName("amount")
  Long amount;

  /**
   * Detailed breakdown of amount components. These amounts are denominated in {@code currency} and
   * in the smallest currency unit.
   */
  @SerializedName("amount_details")
  AmountDetails amountDetails;

  /** How the card details were provided. Defaults to online. */
  @SerializedName("authorization_method")
  AuthorizationMethod authorizationMethod;

  /** Required. Card associated with this authorization. */
  @SerializedName("card")
  String card;

  /**
   * The currency of the authorization. If not provided, defaults to the currency of the card.
   * Three-letter ISO currency code,
   * in lowercase. Must be a supported currency.
   */
  @SerializedName("currency")
  String currency;

  /** Specifies which fields in the response should be expanded. */
  @SerializedName("expand")
  List expand;

  /**
   * Map of extra parameters for custom features not available in this client library. The content
   * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
   * key/value pair is serialized as if the key is a root-level field (serialized) name in this
   * param object. Effectively, this map is flattened to its parent instance.
   */
  @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
  Map extraParams;

  /** Fleet-specific information for authorizations using Fleet cards. */
  @SerializedName("fleet")
  Fleet fleet;

  /** Information about fuel that was purchased with this transaction. */
  @SerializedName("fuel")
  Fuel fuel;

  /**
   * If set {@code true}, you may provide amount
   * to control how much to hold for the authorization.
   */
  @SerializedName("is_amount_controllable")
  Boolean isAmountControllable;

  /**
   * The total amount to attempt to authorize. This amount is in the provided merchant currency, and
   * in the smallest currency unit.
   */
  @SerializedName("merchant_amount")
  Long merchantAmount;

  /**
   * The currency of the authorization. If not provided, defaults to the currency of the card.
   * Three-letter ISO currency code,
   * in lowercase. Must be a supported currency.
   */
  @SerializedName("merchant_currency")
  String merchantCurrency;

  /**
   * Details about the seller (grocery store, e-commerce website, etc.) where the card authorization
   * happened.
   */
  @SerializedName("merchant_data")
  MerchantData merchantData;

  /** Details about the authorization, such as identifiers, set by the card network. */
  @SerializedName("network_data")
  NetworkData networkData;

  /**
   * Verifications that Stripe performed on information that the cardholder provided to the
   * merchant.
   */
  @SerializedName("verification_data")
  VerificationData verificationData;

  /**
   * The digital wallet used for this transaction. One of {@code apple_pay}, {@code google_pay}, or
   * {@code samsung_pay}. Will populate as {@code null} when no digital wallet was utilized.
   */
  @SerializedName("wallet")
  Wallet wallet;

  private AuthorizationCreateParams(
      Long amount,
      AmountDetails amountDetails,
      AuthorizationMethod authorizationMethod,
      String card,
      String currency,
      List expand,
      Map extraParams,
      Fleet fleet,
      Fuel fuel,
      Boolean isAmountControllable,
      Long merchantAmount,
      String merchantCurrency,
      MerchantData merchantData,
      NetworkData networkData,
      VerificationData verificationData,
      Wallet wallet) {
    this.amount = amount;
    this.amountDetails = amountDetails;
    this.authorizationMethod = authorizationMethod;
    this.card = card;
    this.currency = currency;
    this.expand = expand;
    this.extraParams = extraParams;
    this.fleet = fleet;
    this.fuel = fuel;
    this.isAmountControllable = isAmountControllable;
    this.merchantAmount = merchantAmount;
    this.merchantCurrency = merchantCurrency;
    this.merchantData = merchantData;
    this.networkData = networkData;
    this.verificationData = verificationData;
    this.wallet = wallet;
  }

  public static Builder builder() {
    return new Builder();
  }

  public static class Builder {
    private Long amount;

    private AmountDetails amountDetails;

    private AuthorizationMethod authorizationMethod;

    private String card;

    private String currency;

    private List expand;

    private Map extraParams;

    private Fleet fleet;

    private Fuel fuel;

    private Boolean isAmountControllable;

    private Long merchantAmount;

    private String merchantCurrency;

    private MerchantData merchantData;

    private NetworkData networkData;

    private VerificationData verificationData;

    private Wallet wallet;

    /** Finalize and obtain parameter instance from this builder. */
    public AuthorizationCreateParams build() {
      return new AuthorizationCreateParams(
          this.amount,
          this.amountDetails,
          this.authorizationMethod,
          this.card,
          this.currency,
          this.expand,
          this.extraParams,
          this.fleet,
          this.fuel,
          this.isAmountControllable,
          this.merchantAmount,
          this.merchantCurrency,
          this.merchantData,
          this.networkData,
          this.verificationData,
          this.wallet);
    }

    /**
     * The total amount to attempt to authorize. This amount is in the provided currency, or
     * defaults to the card's currency, and in the smallest currency unit.
     */
    public Builder setAmount(Long amount) {
      this.amount = amount;
      return this;
    }

    /**
     * Detailed breakdown of amount components. These amounts are denominated in {@code currency}
     * and in the smallest currency
     * unit.
     */
    public Builder setAmountDetails(AuthorizationCreateParams.AmountDetails amountDetails) {
      this.amountDetails = amountDetails;
      return this;
    }

    /** How the card details were provided. Defaults to online. */
    public Builder setAuthorizationMethod(
        AuthorizationCreateParams.AuthorizationMethod authorizationMethod) {
      this.authorizationMethod = authorizationMethod;
      return this;
    }

    /** Required. Card associated with this authorization. */
    public Builder setCard(String card) {
      this.card = card;
      return this;
    }

    /**
     * The currency of the authorization. If not provided, defaults to the currency of the card.
     * Three-letter ISO currency
     * code, in lowercase. Must be a supported
     * currency.
     */
    public Builder setCurrency(String currency) {
      this.currency = currency;
      return this;
    }

    /**
     * Add an element to `expand` list. A list is initialized for the first `add/addAll` call, and
     * subsequent calls adds additional elements to the original list. See {@link
     * AuthorizationCreateParams#expand} for the field documentation.
     */
    public Builder addExpand(String element) {
      if (this.expand == null) {
        this.expand = new ArrayList<>();
      }
      this.expand.add(element);
      return this;
    }

    /**
     * Add all elements to `expand` list. A list is initialized for the first `add/addAll` call, and
     * subsequent calls adds additional elements to the original list. See {@link
     * AuthorizationCreateParams#expand} for the field documentation.
     */
    public Builder addAllExpand(List elements) {
      if (this.expand == null) {
        this.expand = new ArrayList<>();
      }
      this.expand.addAll(elements);
      return this;
    }

    /**
     * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
     * call, and subsequent calls add additional key/value pairs to the original map. See {@link
     * AuthorizationCreateParams#extraParams} for the field documentation.
     */
    public Builder putExtraParam(String key, Object value) {
      if (this.extraParams == null) {
        this.extraParams = new HashMap<>();
      }
      this.extraParams.put(key, value);
      return this;
    }

    /**
     * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
     * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
     * See {@link AuthorizationCreateParams#extraParams} for the field documentation.
     */
    public Builder putAllExtraParam(Map map) {
      if (this.extraParams == null) {
        this.extraParams = new HashMap<>();
      }
      this.extraParams.putAll(map);
      return this;
    }

    /** Fleet-specific information for authorizations using Fleet cards. */
    public Builder setFleet(AuthorizationCreateParams.Fleet fleet) {
      this.fleet = fleet;
      return this;
    }

    /** Information about fuel that was purchased with this transaction. */
    public Builder setFuel(AuthorizationCreateParams.Fuel fuel) {
      this.fuel = fuel;
      return this;
    }

    /**
     * If set {@code true}, you may provide amount
     * to control how much to hold for the authorization.
     */
    public Builder setIsAmountControllable(Boolean isAmountControllable) {
      this.isAmountControllable = isAmountControllable;
      return this;
    }

    /**
     * The total amount to attempt to authorize. This amount is in the provided merchant currency,
     * and in the smallest currency
     * unit.
     */
    public Builder setMerchantAmount(Long merchantAmount) {
      this.merchantAmount = merchantAmount;
      return this;
    }

    /**
     * The currency of the authorization. If not provided, defaults to the currency of the card.
     * Three-letter ISO currency
     * code, in lowercase. Must be a supported
     * currency.
     */
    public Builder setMerchantCurrency(String merchantCurrency) {
      this.merchantCurrency = merchantCurrency;
      return this;
    }

    /**
     * Details about the seller (grocery store, e-commerce website, etc.) where the card
     * authorization happened.
     */
    public Builder setMerchantData(AuthorizationCreateParams.MerchantData merchantData) {
      this.merchantData = merchantData;
      return this;
    }

    /** Details about the authorization, such as identifiers, set by the card network. */
    public Builder setNetworkData(AuthorizationCreateParams.NetworkData networkData) {
      this.networkData = networkData;
      return this;
    }

    /**
     * Verifications that Stripe performed on information that the cardholder provided to the
     * merchant.
     */
    public Builder setVerificationData(
        AuthorizationCreateParams.VerificationData verificationData) {
      this.verificationData = verificationData;
      return this;
    }

    /**
     * The digital wallet used for this transaction. One of {@code apple_pay}, {@code google_pay},
     * or {@code samsung_pay}. Will populate as {@code null} when no digital wallet was utilized.
     */
    public Builder setWallet(AuthorizationCreateParams.Wallet wallet) {
      this.wallet = wallet;
      return this;
    }
  }

  @Getter
  public static class AmountDetails {
    /** The ATM withdrawal fee. */
    @SerializedName("atm_fee")
    Long atmFee;

    /** The amount of cash requested by the cardholder. */
    @SerializedName("cashback_amount")
    Long cashbackAmount;

    /**
     * Map of extra parameters for custom features not available in this client library. The content
     * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
     * key/value pair is serialized as if the key is a root-level field (serialized) name in this
     * param object. Effectively, this map is flattened to its parent instance.
     */
    @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
    Map extraParams;

    private AmountDetails(Long atmFee, Long cashbackAmount, Map extraParams) {
      this.atmFee = atmFee;
      this.cashbackAmount = cashbackAmount;
      this.extraParams = extraParams;
    }

    public static Builder builder() {
      return new Builder();
    }

    public static class Builder {
      private Long atmFee;

      private Long cashbackAmount;

      private Map extraParams;

      /** Finalize and obtain parameter instance from this builder. */
      public AuthorizationCreateParams.AmountDetails build() {
        return new AuthorizationCreateParams.AmountDetails(
            this.atmFee, this.cashbackAmount, this.extraParams);
      }

      /** The ATM withdrawal fee. */
      public Builder setAtmFee(Long atmFee) {
        this.atmFee = atmFee;
        return this;
      }

      /** The amount of cash requested by the cardholder. */
      public Builder setCashbackAmount(Long cashbackAmount) {
        this.cashbackAmount = cashbackAmount;
        return this;
      }

      /**
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
       * AuthorizationCreateParams.AmountDetails#extraParams} for the field documentation.
       */
      public Builder putExtraParam(String key, Object value) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.put(key, value);
        return this;
      }

      /**
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
       * See {@link AuthorizationCreateParams.AmountDetails#extraParams} for the field
       * documentation.
       */
      public Builder putAllExtraParam(Map map) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.putAll(map);
        return this;
      }
    }
  }

  @Getter
  public static class Fleet {
    /**
     * Answers to prompts presented to the cardholder at the point of sale. Prompted fields vary
     * depending on the configuration of your physical fleet cards. Typical points of sale support
     * only numeric entry.
     */
    @SerializedName("cardholder_prompt_data")
    CardholderPromptData cardholderPromptData;

    /**
     * Map of extra parameters for custom features not available in this client library. The content
     * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
     * key/value pair is serialized as if the key is a root-level field (serialized) name in this
     * param object. Effectively, this map is flattened to its parent instance.
     */
    @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
    Map extraParams;

    /**
     * The type of purchase. One of {@code fuel_purchase}, {@code non_fuel_purchase}, or {@code
     * fuel_and_non_fuel_purchase}.
     */
    @SerializedName("purchase_type")
    PurchaseType purchaseType;

    /**
     * More information about the total amount. This information is not guaranteed to be accurate as
     * some merchants may provide unreliable data.
     */
    @SerializedName("reported_breakdown")
    ReportedBreakdown reportedBreakdown;

    /**
     * The type of fuel service. One of {@code non_fuel_transaction}, {@code full_service}, or
     * {@code self_service}.
     */
    @SerializedName("service_type")
    ServiceType serviceType;

    private Fleet(
        CardholderPromptData cardholderPromptData,
        Map extraParams,
        PurchaseType purchaseType,
        ReportedBreakdown reportedBreakdown,
        ServiceType serviceType) {
      this.cardholderPromptData = cardholderPromptData;
      this.extraParams = extraParams;
      this.purchaseType = purchaseType;
      this.reportedBreakdown = reportedBreakdown;
      this.serviceType = serviceType;
    }

    public static Builder builder() {
      return new Builder();
    }

    public static class Builder {
      private CardholderPromptData cardholderPromptData;

      private Map extraParams;

      private PurchaseType purchaseType;

      private ReportedBreakdown reportedBreakdown;

      private ServiceType serviceType;

      /** Finalize and obtain parameter instance from this builder. */
      public AuthorizationCreateParams.Fleet build() {
        return new AuthorizationCreateParams.Fleet(
            this.cardholderPromptData,
            this.extraParams,
            this.purchaseType,
            this.reportedBreakdown,
            this.serviceType);
      }

      /**
       * Answers to prompts presented to the cardholder at the point of sale. Prompted fields vary
       * depending on the configuration of your physical fleet cards. Typical points of sale support
       * only numeric entry.
       */
      public Builder setCardholderPromptData(
          AuthorizationCreateParams.Fleet.CardholderPromptData cardholderPromptData) {
        this.cardholderPromptData = cardholderPromptData;
        return this;
      }

      /**
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
       * AuthorizationCreateParams.Fleet#extraParams} for the field documentation.
       */
      public Builder putExtraParam(String key, Object value) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.put(key, value);
        return this;
      }

      /**
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
       * See {@link AuthorizationCreateParams.Fleet#extraParams} for the field documentation.
       */
      public Builder putAllExtraParam(Map map) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.putAll(map);
        return this;
      }

      /**
       * The type of purchase. One of {@code fuel_purchase}, {@code non_fuel_purchase}, or {@code
       * fuel_and_non_fuel_purchase}.
       */
      public Builder setPurchaseType(AuthorizationCreateParams.Fleet.PurchaseType purchaseType) {
        this.purchaseType = purchaseType;
        return this;
      }

      /**
       * More information about the total amount. This information is not guaranteed to be accurate
       * as some merchants may provide unreliable data.
       */
      public Builder setReportedBreakdown(
          AuthorizationCreateParams.Fleet.ReportedBreakdown reportedBreakdown) {
        this.reportedBreakdown = reportedBreakdown;
        return this;
      }

      /**
       * The type of fuel service. One of {@code non_fuel_transaction}, {@code full_service}, or
       * {@code self_service}.
       */
      public Builder setServiceType(AuthorizationCreateParams.Fleet.ServiceType serviceType) {
        this.serviceType = serviceType;
        return this;
      }
    }

    @Getter
    public static class CardholderPromptData {
      /** Driver ID. */
      @SerializedName("driver_id")
      String driverId;

      /**
       * Map of extra parameters for custom features not available in this client library. The
       * content in this map is not serialized under this field's {@code @SerializedName} value.
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
       * name in this param object. Effectively, this map is flattened to its parent instance.
       */
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
      Map extraParams;

      /** Odometer reading. */
      @SerializedName("odometer")
      Long odometer;

      /**
       * An alphanumeric ID. This field is used when a vehicle ID, driver ID, or generic ID is
       * entered by the cardholder, but the merchant or card network did not specify the prompt
       * type.
       */
      @SerializedName("unspecified_id")
      String unspecifiedId;

      /** User ID. */
      @SerializedName("user_id")
      String userId;

      /** Vehicle number. */
      @SerializedName("vehicle_number")
      String vehicleNumber;

      private CardholderPromptData(
          String driverId,
          Map extraParams,
          Long odometer,
          String unspecifiedId,
          String userId,
          String vehicleNumber) {
        this.driverId = driverId;
        this.extraParams = extraParams;
        this.odometer = odometer;
        this.unspecifiedId = unspecifiedId;
        this.userId = userId;
        this.vehicleNumber = vehicleNumber;
      }

      public static Builder builder() {
        return new Builder();
      }

      public static class Builder {
        private String driverId;

        private Map extraParams;

        private Long odometer;

        private String unspecifiedId;

        private String userId;

        private String vehicleNumber;

        /** Finalize and obtain parameter instance from this builder. */
        public AuthorizationCreateParams.Fleet.CardholderPromptData build() {
          return new AuthorizationCreateParams.Fleet.CardholderPromptData(
              this.driverId,
              this.extraParams,
              this.odometer,
              this.unspecifiedId,
              this.userId,
              this.vehicleNumber);
        }

        /** Driver ID. */
        public Builder setDriverId(String driverId) {
          this.driverId = driverId;
          return this;
        }

        /**
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
         * map. See {@link AuthorizationCreateParams.Fleet.CardholderPromptData#extraParams} for the
         * field documentation.
         */
        public Builder putExtraParam(String key, Object value) {
          if (this.extraParams == null) {
            this.extraParams = new HashMap<>();
          }
          this.extraParams.put(key, value);
          return this;
        }

        /**
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
         * map. See {@link AuthorizationCreateParams.Fleet.CardholderPromptData#extraParams} for the
         * field documentation.
         */
        public Builder putAllExtraParam(Map map) {
          if (this.extraParams == null) {
            this.extraParams = new HashMap<>();
          }
          this.extraParams.putAll(map);
          return this;
        }

        /** Odometer reading. */
        public Builder setOdometer(Long odometer) {
          this.odometer = odometer;
          return this;
        }

        /**
         * An alphanumeric ID. This field is used when a vehicle ID, driver ID, or generic ID is
         * entered by the cardholder, but the merchant or card network did not specify the prompt
         * type.
         */
        public Builder setUnspecifiedId(String unspecifiedId) {
          this.unspecifiedId = unspecifiedId;
          return this;
        }

        /** User ID. */
        public Builder setUserId(String userId) {
          this.userId = userId;
          return this;
        }

        /** Vehicle number. */
        public Builder setVehicleNumber(String vehicleNumber) {
          this.vehicleNumber = vehicleNumber;
          return this;
        }
      }
    }

    @Getter
    public static class ReportedBreakdown {
      /**
       * Map of extra parameters for custom features not available in this client library. The
       * content in this map is not serialized under this field's {@code @SerializedName} value.
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
       * name in this param object. Effectively, this map is flattened to its parent instance.
       */
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
      Map extraParams;

      /** Breakdown of fuel portion of the purchase. */
      @SerializedName("fuel")
      Fuel fuel;

      /** Breakdown of non-fuel portion of the purchase. */
      @SerializedName("non_fuel")
      NonFuel nonFuel;

      /** Information about tax included in this transaction. */
      @SerializedName("tax")
      Tax tax;

      private ReportedBreakdown(
          Map extraParams, Fuel fuel, NonFuel nonFuel, Tax tax) {
        this.extraParams = extraParams;
        this.fuel = fuel;
        this.nonFuel = nonFuel;
        this.tax = tax;
      }

      public static Builder builder() {
        return new Builder();
      }

      public static class Builder {
        private Map extraParams;

        private Fuel fuel;

        private NonFuel nonFuel;

        private Tax tax;

        /** Finalize and obtain parameter instance from this builder. */
        public AuthorizationCreateParams.Fleet.ReportedBreakdown build() {
          return new AuthorizationCreateParams.Fleet.ReportedBreakdown(
              this.extraParams, this.fuel, this.nonFuel, this.tax);
        }

        /**
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
         * map. See {@link AuthorizationCreateParams.Fleet.ReportedBreakdown#extraParams} for the
         * field documentation.
         */
        public Builder putExtraParam(String key, Object value) {
          if (this.extraParams == null) {
            this.extraParams = new HashMap<>();
          }
          this.extraParams.put(key, value);
          return this;
        }

        /**
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
         * map. See {@link AuthorizationCreateParams.Fleet.ReportedBreakdown#extraParams} for the
         * field documentation.
         */
        public Builder putAllExtraParam(Map map) {
          if (this.extraParams == null) {
            this.extraParams = new HashMap<>();
          }
          this.extraParams.putAll(map);
          return this;
        }

        /** Breakdown of fuel portion of the purchase. */
        public Builder setFuel(AuthorizationCreateParams.Fleet.ReportedBreakdown.Fuel fuel) {
          this.fuel = fuel;
          return this;
        }

        /** Breakdown of non-fuel portion of the purchase. */
        public Builder setNonFuel(
            AuthorizationCreateParams.Fleet.ReportedBreakdown.NonFuel nonFuel) {
          this.nonFuel = nonFuel;
          return this;
        }

        /** Information about tax included in this transaction. */
        public Builder setTax(AuthorizationCreateParams.Fleet.ReportedBreakdown.Tax tax) {
          this.tax = tax;
          return this;
        }
      }

      @Getter
      public static class Fuel {
        /**
         * Map of extra parameters for custom features not available in this client library. The
         * content in this map is not serialized under this field's {@code @SerializedName} value.
         * Instead, each key/value pair is serialized as if the key is a root-level field
         * (serialized) name in this param object. Effectively, this map is flattened to its parent
         * instance.
         */
        @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
        Map extraParams;

        /**
         * Gross fuel amount that should equal Fuel Volume multipled by Fuel Unit Cost, inclusive of
         * taxes.
         */
        @SerializedName("gross_amount_decimal")
        BigDecimal grossAmountDecimal;

        private Fuel(Map extraParams, BigDecimal grossAmountDecimal) {
          this.extraParams = extraParams;
          this.grossAmountDecimal = grossAmountDecimal;
        }

        public static Builder builder() {
          return new Builder();
        }

        public static class Builder {
          private Map extraParams;

          private BigDecimal grossAmountDecimal;

          /** Finalize and obtain parameter instance from this builder. */
          public AuthorizationCreateParams.Fleet.ReportedBreakdown.Fuel build() {
            return new AuthorizationCreateParams.Fleet.ReportedBreakdown.Fuel(
                this.extraParams, this.grossAmountDecimal);
          }

          /**
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
           * map. See {@link AuthorizationCreateParams.Fleet.ReportedBreakdown.Fuel#extraParams} for
           * the field documentation.
           */
          public Builder putExtraParam(String key, Object value) {
            if (this.extraParams == null) {
              this.extraParams = new HashMap<>();
            }
            this.extraParams.put(key, value);
            return this;
          }

          /**
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
           * map. See {@link AuthorizationCreateParams.Fleet.ReportedBreakdown.Fuel#extraParams} for
           * the field documentation.
           */
          public Builder putAllExtraParam(Map map) {
            if (this.extraParams == null) {
              this.extraParams = new HashMap<>();
            }
            this.extraParams.putAll(map);
            return this;
          }

          /**
           * Gross fuel amount that should equal Fuel Volume multipled by Fuel Unit Cost, inclusive
           * of taxes.
           */
          public Builder setGrossAmountDecimal(BigDecimal grossAmountDecimal) {
            this.grossAmountDecimal = grossAmountDecimal;
            return this;
          }
        }
      }

      @Getter
      public static class NonFuel {
        /**
         * Map of extra parameters for custom features not available in this client library. The
         * content in this map is not serialized under this field's {@code @SerializedName} value.
         * Instead, each key/value pair is serialized as if the key is a root-level field
         * (serialized) name in this param object. Effectively, this map is flattened to its parent
         * instance.
         */
        @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
        Map extraParams;

        /**
         * Gross non-fuel amount that should equal the sum of the line items, inclusive of taxes.
         */
        @SerializedName("gross_amount_decimal")
        BigDecimal grossAmountDecimal;

        private NonFuel(Map extraParams, BigDecimal grossAmountDecimal) {
          this.extraParams = extraParams;
          this.grossAmountDecimal = grossAmountDecimal;
        }

        public static Builder builder() {
          return new Builder();
        }

        public static class Builder {
          private Map extraParams;

          private BigDecimal grossAmountDecimal;

          /** Finalize and obtain parameter instance from this builder. */
          public AuthorizationCreateParams.Fleet.ReportedBreakdown.NonFuel build() {
            return new AuthorizationCreateParams.Fleet.ReportedBreakdown.NonFuel(
                this.extraParams, this.grossAmountDecimal);
          }

          /**
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
           * map. See {@link AuthorizationCreateParams.Fleet.ReportedBreakdown.NonFuel#extraParams}
           * for the field documentation.
           */
          public Builder putExtraParam(String key, Object value) {
            if (this.extraParams == null) {
              this.extraParams = new HashMap<>();
            }
            this.extraParams.put(key, value);
            return this;
          }

          /**
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
           * map. See {@link AuthorizationCreateParams.Fleet.ReportedBreakdown.NonFuel#extraParams}
           * for the field documentation.
           */
          public Builder putAllExtraParam(Map map) {
            if (this.extraParams == null) {
              this.extraParams = new HashMap<>();
            }
            this.extraParams.putAll(map);
            return this;
          }

          /**
           * Gross non-fuel amount that should equal the sum of the line items, inclusive of taxes.
           */
          public Builder setGrossAmountDecimal(BigDecimal grossAmountDecimal) {
            this.grossAmountDecimal = grossAmountDecimal;
            return this;
          }
        }
      }

      @Getter
      public static class Tax {
        /**
         * Map of extra parameters for custom features not available in this client library. The
         * content in this map is not serialized under this field's {@code @SerializedName} value.
         * Instead, each key/value pair is serialized as if the key is a root-level field
         * (serialized) name in this param object. Effectively, this map is flattened to its parent
         * instance.
         */
        @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
        Map extraParams;

        /**
         * Amount of state or provincial Sales Tax included in the transaction amount. Null if not
         * reported by merchant or not subject to tax.
         */
        @SerializedName("local_amount_decimal")
        BigDecimal localAmountDecimal;

        /**
         * Amount of national Sales Tax or VAT included in the transaction amount. Null if not
         * reported by merchant or not subject to tax.
         */
        @SerializedName("national_amount_decimal")
        BigDecimal nationalAmountDecimal;

        private Tax(
            Map extraParams,
            BigDecimal localAmountDecimal,
            BigDecimal nationalAmountDecimal) {
          this.extraParams = extraParams;
          this.localAmountDecimal = localAmountDecimal;
          this.nationalAmountDecimal = nationalAmountDecimal;
        }

        public static Builder builder() {
          return new Builder();
        }

        public static class Builder {
          private Map extraParams;

          private BigDecimal localAmountDecimal;

          private BigDecimal nationalAmountDecimal;

          /** Finalize and obtain parameter instance from this builder. */
          public AuthorizationCreateParams.Fleet.ReportedBreakdown.Tax build() {
            return new AuthorizationCreateParams.Fleet.ReportedBreakdown.Tax(
                this.extraParams, this.localAmountDecimal, this.nationalAmountDecimal);
          }

          /**
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
           * map. See {@link AuthorizationCreateParams.Fleet.ReportedBreakdown.Tax#extraParams} for
           * the field documentation.
           */
          public Builder putExtraParam(String key, Object value) {
            if (this.extraParams == null) {
              this.extraParams = new HashMap<>();
            }
            this.extraParams.put(key, value);
            return this;
          }

          /**
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
           * map. See {@link AuthorizationCreateParams.Fleet.ReportedBreakdown.Tax#extraParams} for
           * the field documentation.
           */
          public Builder putAllExtraParam(Map map) {
            if (this.extraParams == null) {
              this.extraParams = new HashMap<>();
            }
            this.extraParams.putAll(map);
            return this;
          }

          /**
           * Amount of state or provincial Sales Tax included in the transaction amount. Null if not
           * reported by merchant or not subject to tax.
           */
          public Builder setLocalAmountDecimal(BigDecimal localAmountDecimal) {
            this.localAmountDecimal = localAmountDecimal;
            return this;
          }

          /**
           * Amount of national Sales Tax or VAT included in the transaction amount. Null if not
           * reported by merchant or not subject to tax.
           */
          public Builder setNationalAmountDecimal(BigDecimal nationalAmountDecimal) {
            this.nationalAmountDecimal = nationalAmountDecimal;
            return this;
          }
        }
      }
    }

    public enum PurchaseType implements ApiRequestParams.EnumParam {
      @SerializedName("fuel_and_non_fuel_purchase")
      FUEL_AND_NON_FUEL_PURCHASE("fuel_and_non_fuel_purchase"),

      @SerializedName("fuel_purchase")
      FUEL_PURCHASE("fuel_purchase"),

      @SerializedName("non_fuel_purchase")
      NON_FUEL_PURCHASE("non_fuel_purchase");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

    public enum ServiceType implements ApiRequestParams.EnumParam {
      @SerializedName("full_service")
      FULL_SERVICE("full_service"),

      @SerializedName("non_fuel_transaction")
      NON_FUEL_TRANSACTION("non_fuel_transaction"),

      @SerializedName("self_service")
      SELF_SERVICE("self_service");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

  @Getter
  public static class Fuel {
    /**
     * Map of extra parameters for custom features not available in this client library. The content
     * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
     * key/value pair is serialized as if the key is a root-level field (serialized) name in this
     * param object. Effectively, this map is flattened to its parent instance.
     */
    @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
    Map extraParams;

    /**
     * Conexxus Payment
     * System Product Code identifying the primary fuel product purchased.
     */
    @SerializedName("industry_product_code")
    String industryProductCode;

    /**
     * The quantity of {@code unit}s of fuel that was dispensed, represented as a decimal string
     * with at most 12 decimal places.
     */
    @SerializedName("quantity_decimal")
    BigDecimal quantityDecimal;

    /**
     * The type of fuel that was purchased. One of {@code diesel}, {@code unleaded_plus}, {@code
     * unleaded_regular}, {@code unleaded_super}, or {@code other}.
     */
    @SerializedName("type")
    Type type;

    /**
     * The units for {@code quantity_decimal}. One of {@code charging_minute}, {@code
     * imperial_gallon}, {@code kilogram}, {@code kilowatt_hour}, {@code liter}, {@code pound},
     * {@code us_gallon}, or {@code other}.
     */
    @SerializedName("unit")
    Unit unit;

    /**
     * The cost in cents per each unit of fuel, represented as a decimal string with at most 12
     * decimal places.
     */
    @SerializedName("unit_cost_decimal")
    BigDecimal unitCostDecimal;

    private Fuel(
        Map extraParams,
        String industryProductCode,
        BigDecimal quantityDecimal,
        Type type,
        Unit unit,
        BigDecimal unitCostDecimal) {
      this.extraParams = extraParams;
      this.industryProductCode = industryProductCode;
      this.quantityDecimal = quantityDecimal;
      this.type = type;
      this.unit = unit;
      this.unitCostDecimal = unitCostDecimal;
    }

    public static Builder builder() {
      return new Builder();
    }

    public static class Builder {
      private Map extraParams;

      private String industryProductCode;

      private BigDecimal quantityDecimal;

      private Type type;

      private Unit unit;

      private BigDecimal unitCostDecimal;

      /** Finalize and obtain parameter instance from this builder. */
      public AuthorizationCreateParams.Fuel build() {
        return new AuthorizationCreateParams.Fuel(
            this.extraParams,
            this.industryProductCode,
            this.quantityDecimal,
            this.type,
            this.unit,
            this.unitCostDecimal);
      }

      /**
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
       * AuthorizationCreateParams.Fuel#extraParams} for the field documentation.
       */
      public Builder putExtraParam(String key, Object value) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.put(key, value);
        return this;
      }

      /**
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
       * See {@link AuthorizationCreateParams.Fuel#extraParams} for the field documentation.
       */
      public Builder putAllExtraParam(Map map) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.putAll(map);
        return this;
      }

      /**
       * Conexxus Payment
       * System Product Code identifying the primary fuel product purchased.
       */
      public Builder setIndustryProductCode(String industryProductCode) {
        this.industryProductCode = industryProductCode;
        return this;
      }

      /**
       * The quantity of {@code unit}s of fuel that was dispensed, represented as a decimal string
       * with at most 12 decimal places.
       */
      public Builder setQuantityDecimal(BigDecimal quantityDecimal) {
        this.quantityDecimal = quantityDecimal;
        return this;
      }

      /**
       * The type of fuel that was purchased. One of {@code diesel}, {@code unleaded_plus}, {@code
       * unleaded_regular}, {@code unleaded_super}, or {@code other}.
       */
      public Builder setType(AuthorizationCreateParams.Fuel.Type type) {
        this.type = type;
        return this;
      }

      /**
       * The units for {@code quantity_decimal}. One of {@code charging_minute}, {@code
       * imperial_gallon}, {@code kilogram}, {@code kilowatt_hour}, {@code liter}, {@code pound},
       * {@code us_gallon}, or {@code other}.
       */
      public Builder setUnit(AuthorizationCreateParams.Fuel.Unit unit) {
        this.unit = unit;
        return this;
      }

      /**
       * The cost in cents per each unit of fuel, represented as a decimal string with at most 12
       * decimal places.
       */
      public Builder setUnitCostDecimal(BigDecimal unitCostDecimal) {
        this.unitCostDecimal = unitCostDecimal;
        return this;
      }
    }

    public enum Type implements ApiRequestParams.EnumParam {
      @SerializedName("diesel")
      DIESEL("diesel"),

      @SerializedName("other")
      OTHER("other"),

      @SerializedName("unleaded_plus")
      UNLEADED_PLUS("unleaded_plus"),

      @SerializedName("unleaded_regular")
      UNLEADED_REGULAR("unleaded_regular"),

      @SerializedName("unleaded_super")
      UNLEADED_SUPER("unleaded_super");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

    public enum Unit implements ApiRequestParams.EnumParam {
      @SerializedName("charging_minute")
      CHARGING_MINUTE("charging_minute"),

      @SerializedName("imperial_gallon")
      IMPERIAL_GALLON("imperial_gallon"),

      @SerializedName("kilogram")
      KILOGRAM("kilogram"),

      @SerializedName("kilowatt_hour")
      KILOWATT_HOUR("kilowatt_hour"),

      @SerializedName("liter")
      LITER("liter"),

      @SerializedName("other")
      OTHER("other"),

      @SerializedName("pound")
      POUND("pound"),

      @SerializedName("us_gallon")
      US_GALLON("us_gallon");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

  @Getter
  public static class MerchantData {
    /**
     * A categorization of the seller's type of business. See our merchant categories guide for
     * a list of possible values.
     */
    @SerializedName("category")
    Category category;

    /** City where the seller is located. */
    @SerializedName("city")
    String city;

    /** Country where the seller is located. */
    @SerializedName("country")
    String country;

    /**
     * Map of extra parameters for custom features not available in this client library. The content
     * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
     * key/value pair is serialized as if the key is a root-level field (serialized) name in this
     * param object. Effectively, this map is flattened to its parent instance.
     */
    @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
    Map extraParams;

    /** Name of the seller. */
    @SerializedName("name")
    String name;

    /**
     * Identifier assigned to the seller by the card network. Different card networks may assign
     * different network_id fields to the same merchant.
     */
    @SerializedName("network_id")
    String networkId;

    /** Postal code where the seller is located. */
    @SerializedName("postal_code")
    String postalCode;

    /** State where the seller is located. */
    @SerializedName("state")
    String state;

    /** An ID assigned by the seller to the location of the sale. */
    @SerializedName("terminal_id")
    String terminalId;

    /** URL provided by the merchant on a 3DS request. */
    @SerializedName("url")
    String url;

    private MerchantData(
        Category category,
        String city,
        String country,
        Map extraParams,
        String name,
        String networkId,
        String postalCode,
        String state,
        String terminalId,
        String url) {
      this.category = category;
      this.city = city;
      this.country = country;
      this.extraParams = extraParams;
      this.name = name;
      this.networkId = networkId;
      this.postalCode = postalCode;
      this.state = state;
      this.terminalId = terminalId;
      this.url = url;
    }

    public static Builder builder() {
      return new Builder();
    }

    public static class Builder {
      private Category category;

      private String city;

      private String country;

      private Map extraParams;

      private String name;

      private String networkId;

      private String postalCode;

      private String state;

      private String terminalId;

      private String url;

      /** Finalize and obtain parameter instance from this builder. */
      public AuthorizationCreateParams.MerchantData build() {
        return new AuthorizationCreateParams.MerchantData(
            this.category,
            this.city,
            this.country,
            this.extraParams,
            this.name,
            this.networkId,
            this.postalCode,
            this.state,
            this.terminalId,
            this.url);
      }

      /**
       * A categorization of the seller's type of business. See our merchant categories guide
       * for a list of possible values.
       */
      public Builder setCategory(AuthorizationCreateParams.MerchantData.Category category) {
        this.category = category;
        return this;
      }

      /** City where the seller is located. */
      public Builder setCity(String city) {
        this.city = city;
        return this;
      }

      /** Country where the seller is located. */
      public Builder setCountry(String country) {
        this.country = country;
        return this;
      }

      /**
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
       * AuthorizationCreateParams.MerchantData#extraParams} for the field documentation.
       */
      public Builder putExtraParam(String key, Object value) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.put(key, value);
        return this;
      }

      /**
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
       * See {@link AuthorizationCreateParams.MerchantData#extraParams} for the field documentation.
       */
      public Builder putAllExtraParam(Map map) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.putAll(map);
        return this;
      }

      /** Name of the seller. */
      public Builder setName(String name) {
        this.name = name;
        return this;
      }

      /**
       * Identifier assigned to the seller by the card network. Different card networks may assign
       * different network_id fields to the same merchant.
       */
      public Builder setNetworkId(String networkId) {
        this.networkId = networkId;
        return this;
      }

      /** Postal code where the seller is located. */
      public Builder setPostalCode(String postalCode) {
        this.postalCode = postalCode;
        return this;
      }

      /** State where the seller is located. */
      public Builder setState(String state) {
        this.state = state;
        return this;
      }

      /** An ID assigned by the seller to the location of the sale. */
      public Builder setTerminalId(String terminalId) {
        this.terminalId = terminalId;
        return this;
      }

      /** URL provided by the merchant on a 3DS request. */
      public Builder setUrl(String url) {
        this.url = url;
        return this;
      }
    }

    public enum Category implements ApiRequestParams.EnumParam {
      @SerializedName("ac_refrigeration_repair")
      AC_REFRIGERATION_REPAIR("ac_refrigeration_repair"),

      @SerializedName("accounting_bookkeeping_services")
      ACCOUNTING_BOOKKEEPING_SERVICES("accounting_bookkeeping_services"),

      @SerializedName("advertising_services")
      ADVERTISING_SERVICES("advertising_services"),

      @SerializedName("agricultural_cooperative")
      AGRICULTURAL_COOPERATIVE("agricultural_cooperative"),

      @SerializedName("airlines_air_carriers")
      AIRLINES_AIR_CARRIERS("airlines_air_carriers"),

      @SerializedName("airports_flying_fields")
      AIRPORTS_FLYING_FIELDS("airports_flying_fields"),

      @SerializedName("ambulance_services")
      AMBULANCE_SERVICES("ambulance_services"),

      @SerializedName("amusement_parks_carnivals")
      AMUSEMENT_PARKS_CARNIVALS("amusement_parks_carnivals"),

      @SerializedName("antique_reproductions")
      ANTIQUE_REPRODUCTIONS("antique_reproductions"),

      @SerializedName("antique_shops")
      ANTIQUE_SHOPS("antique_shops"),

      @SerializedName("aquariums")
      AQUARIUMS("aquariums"),

      @SerializedName("architectural_surveying_services")
      ARCHITECTURAL_SURVEYING_SERVICES("architectural_surveying_services"),

      @SerializedName("art_dealers_and_galleries")
      ART_DEALERS_AND_GALLERIES("art_dealers_and_galleries"),

      @SerializedName("artists_supply_and_craft_shops")
      ARTISTS_SUPPLY_AND_CRAFT_SHOPS("artists_supply_and_craft_shops"),

      @SerializedName("auto_and_home_supply_stores")
      AUTO_AND_HOME_SUPPLY_STORES("auto_and_home_supply_stores"),

      @SerializedName("auto_body_repair_shops")
      AUTO_BODY_REPAIR_SHOPS("auto_body_repair_shops"),

      @SerializedName("auto_paint_shops")
      AUTO_PAINT_SHOPS("auto_paint_shops"),

      @SerializedName("auto_service_shops")
      AUTO_SERVICE_SHOPS("auto_service_shops"),

      @SerializedName("automated_cash_disburse")
      AUTOMATED_CASH_DISBURSE("automated_cash_disburse"),

      @SerializedName("automated_fuel_dispensers")
      AUTOMATED_FUEL_DISPENSERS("automated_fuel_dispensers"),

      @SerializedName("automobile_associations")
      AUTOMOBILE_ASSOCIATIONS("automobile_associations"),

      @SerializedName("automotive_parts_and_accessories_stores")
      AUTOMOTIVE_PARTS_AND_ACCESSORIES_STORES("automotive_parts_and_accessories_stores"),

      @SerializedName("automotive_tire_stores")
      AUTOMOTIVE_TIRE_STORES("automotive_tire_stores"),

      @SerializedName("bail_and_bond_payments")
      BAIL_AND_BOND_PAYMENTS("bail_and_bond_payments"),

      @SerializedName("bakeries")
      BAKERIES("bakeries"),

      @SerializedName("bands_orchestras")
      BANDS_ORCHESTRAS("bands_orchestras"),

      @SerializedName("barber_and_beauty_shops")
      BARBER_AND_BEAUTY_SHOPS("barber_and_beauty_shops"),

      @SerializedName("betting_casino_gambling")
      BETTING_CASINO_GAMBLING("betting_casino_gambling"),

      @SerializedName("bicycle_shops")
      BICYCLE_SHOPS("bicycle_shops"),

      @SerializedName("billiard_pool_establishments")
      BILLIARD_POOL_ESTABLISHMENTS("billiard_pool_establishments"),

      @SerializedName("boat_dealers")
      BOAT_DEALERS("boat_dealers"),

      @SerializedName("boat_rentals_and_leases")
      BOAT_RENTALS_AND_LEASES("boat_rentals_and_leases"),

      @SerializedName("book_stores")
      BOOK_STORES("book_stores"),

      @SerializedName("books_periodicals_and_newspapers")
      BOOKS_PERIODICALS_AND_NEWSPAPERS("books_periodicals_and_newspapers"),

      @SerializedName("bowling_alleys")
      BOWLING_ALLEYS("bowling_alleys"),

      @SerializedName("bus_lines")
      BUS_LINES("bus_lines"),

      @SerializedName("business_secretarial_schools")
      BUSINESS_SECRETARIAL_SCHOOLS("business_secretarial_schools"),

      @SerializedName("buying_shopping_services")
      BUYING_SHOPPING_SERVICES("buying_shopping_services"),

      @SerializedName("cable_satellite_and_other_pay_television_and_radio")
      CABLE_SATELLITE_AND_OTHER_PAY_TELEVISION_AND_RADIO(
          "cable_satellite_and_other_pay_television_and_radio"),

      @SerializedName("camera_and_photographic_supply_stores")
      CAMERA_AND_PHOTOGRAPHIC_SUPPLY_STORES("camera_and_photographic_supply_stores"),

      @SerializedName("candy_nut_and_confectionery_stores")
      CANDY_NUT_AND_CONFECTIONERY_STORES("candy_nut_and_confectionery_stores"),

      @SerializedName("car_and_truck_dealers_new_used")
      CAR_AND_TRUCK_DEALERS_NEW_USED("car_and_truck_dealers_new_used"),

      @SerializedName("car_and_truck_dealers_used_only")
      CAR_AND_TRUCK_DEALERS_USED_ONLY("car_and_truck_dealers_used_only"),

      @SerializedName("car_rental_agencies")
      CAR_RENTAL_AGENCIES("car_rental_agencies"),

      @SerializedName("car_washes")
      CAR_WASHES("car_washes"),

      @SerializedName("carpentry_services")
      CARPENTRY_SERVICES("carpentry_services"),

      @SerializedName("carpet_upholstery_cleaning")
      CARPET_UPHOLSTERY_CLEANING("carpet_upholstery_cleaning"),

      @SerializedName("caterers")
      CATERERS("caterers"),

      @SerializedName("charitable_and_social_service_organizations_fundraising")
      CHARITABLE_AND_SOCIAL_SERVICE_ORGANIZATIONS_FUNDRAISING(
          "charitable_and_social_service_organizations_fundraising"),

      @SerializedName("chemicals_and_allied_products")
      CHEMICALS_AND_ALLIED_PRODUCTS("chemicals_and_allied_products"),

      @SerializedName("child_care_services")
      CHILD_CARE_SERVICES("child_care_services"),

      @SerializedName("childrens_and_infants_wear_stores")
      CHILDRENS_AND_INFANTS_WEAR_STORES("childrens_and_infants_wear_stores"),

      @SerializedName("chiropodists_podiatrists")
      CHIROPODISTS_PODIATRISTS("chiropodists_podiatrists"),

      @SerializedName("chiropractors")
      CHIROPRACTORS("chiropractors"),

      @SerializedName("cigar_stores_and_stands")
      CIGAR_STORES_AND_STANDS("cigar_stores_and_stands"),

      @SerializedName("civic_social_fraternal_associations")
      CIVIC_SOCIAL_FRATERNAL_ASSOCIATIONS("civic_social_fraternal_associations"),

      @SerializedName("cleaning_and_maintenance")
      CLEANING_AND_MAINTENANCE("cleaning_and_maintenance"),

      @SerializedName("clothing_rental")
      CLOTHING_RENTAL("clothing_rental"),

      @SerializedName("colleges_universities")
      COLLEGES_UNIVERSITIES("colleges_universities"),

      @SerializedName("commercial_equipment")
      COMMERCIAL_EQUIPMENT("commercial_equipment"),

      @SerializedName("commercial_footwear")
      COMMERCIAL_FOOTWEAR("commercial_footwear"),

      @SerializedName("commercial_photography_art_and_graphics")
      COMMERCIAL_PHOTOGRAPHY_ART_AND_GRAPHICS("commercial_photography_art_and_graphics"),

      @SerializedName("commuter_transport_and_ferries")
      COMMUTER_TRANSPORT_AND_FERRIES("commuter_transport_and_ferries"),

      @SerializedName("computer_network_services")
      COMPUTER_NETWORK_SERVICES("computer_network_services"),

      @SerializedName("computer_programming")
      COMPUTER_PROGRAMMING("computer_programming"),

      @SerializedName("computer_repair")
      COMPUTER_REPAIR("computer_repair"),

      @SerializedName("computer_software_stores")
      COMPUTER_SOFTWARE_STORES("computer_software_stores"),

      @SerializedName("computers_peripherals_and_software")
      COMPUTERS_PERIPHERALS_AND_SOFTWARE("computers_peripherals_and_software"),

      @SerializedName("concrete_work_services")
      CONCRETE_WORK_SERVICES("concrete_work_services"),

      @SerializedName("construction_materials")
      CONSTRUCTION_MATERIALS("construction_materials"),

      @SerializedName("consulting_public_relations")
      CONSULTING_PUBLIC_RELATIONS("consulting_public_relations"),

      @SerializedName("correspondence_schools")
      CORRESPONDENCE_SCHOOLS("correspondence_schools"),

      @SerializedName("cosmetic_stores")
      COSMETIC_STORES("cosmetic_stores"),

      @SerializedName("counseling_services")
      COUNSELING_SERVICES("counseling_services"),

      @SerializedName("country_clubs")
      COUNTRY_CLUBS("country_clubs"),

      @SerializedName("courier_services")
      COURIER_SERVICES("courier_services"),

      @SerializedName("court_costs")
      COURT_COSTS("court_costs"),

      @SerializedName("credit_reporting_agencies")
      CREDIT_REPORTING_AGENCIES("credit_reporting_agencies"),

      @SerializedName("cruise_lines")
      CRUISE_LINES("cruise_lines"),

      @SerializedName("dairy_products_stores")
      DAIRY_PRODUCTS_STORES("dairy_products_stores"),

      @SerializedName("dance_hall_studios_schools")
      DANCE_HALL_STUDIOS_SCHOOLS("dance_hall_studios_schools"),

      @SerializedName("dating_escort_services")
      DATING_ESCORT_SERVICES("dating_escort_services"),

      @SerializedName("dentists_orthodontists")
      DENTISTS_ORTHODONTISTS("dentists_orthodontists"),

      @SerializedName("department_stores")
      DEPARTMENT_STORES("department_stores"),

      @SerializedName("detective_agencies")
      DETECTIVE_AGENCIES("detective_agencies"),

      @SerializedName("digital_goods_applications")
      DIGITAL_GOODS_APPLICATIONS("digital_goods_applications"),

      @SerializedName("digital_goods_games")
      DIGITAL_GOODS_GAMES("digital_goods_games"),

      @SerializedName("digital_goods_large_volume")
      DIGITAL_GOODS_LARGE_VOLUME("digital_goods_large_volume"),

      @SerializedName("digital_goods_media")
      DIGITAL_GOODS_MEDIA("digital_goods_media"),

      @SerializedName("direct_marketing_catalog_merchant")
      DIRECT_MARKETING_CATALOG_MERCHANT("direct_marketing_catalog_merchant"),

      @SerializedName("direct_marketing_combination_catalog_and_retail_merchant")
      DIRECT_MARKETING_COMBINATION_CATALOG_AND_RETAIL_MERCHANT(
          "direct_marketing_combination_catalog_and_retail_merchant"),

      @SerializedName("direct_marketing_inbound_telemarketing")
      DIRECT_MARKETING_INBOUND_TELEMARKETING("direct_marketing_inbound_telemarketing"),

      @SerializedName("direct_marketing_insurance_services")
      DIRECT_MARKETING_INSURANCE_SERVICES("direct_marketing_insurance_services"),

      @SerializedName("direct_marketing_other")
      DIRECT_MARKETING_OTHER("direct_marketing_other"),

      @SerializedName("direct_marketing_outbound_telemarketing")
      DIRECT_MARKETING_OUTBOUND_TELEMARKETING("direct_marketing_outbound_telemarketing"),

      @SerializedName("direct_marketing_subscription")
      DIRECT_MARKETING_SUBSCRIPTION("direct_marketing_subscription"),

      @SerializedName("direct_marketing_travel")
      DIRECT_MARKETING_TRAVEL("direct_marketing_travel"),

      @SerializedName("discount_stores")
      DISCOUNT_STORES("discount_stores"),

      @SerializedName("doctors")
      DOCTORS("doctors"),

      @SerializedName("door_to_door_sales")
      DOOR_TO_DOOR_SALES("door_to_door_sales"),

      @SerializedName("drapery_window_covering_and_upholstery_stores")
      DRAPERY_WINDOW_COVERING_AND_UPHOLSTERY_STORES(
          "drapery_window_covering_and_upholstery_stores"),

      @SerializedName("drinking_places")
      DRINKING_PLACES("drinking_places"),

      @SerializedName("drug_stores_and_pharmacies")
      DRUG_STORES_AND_PHARMACIES("drug_stores_and_pharmacies"),

      @SerializedName("drugs_drug_proprietaries_and_druggist_sundries")
      DRUGS_DRUG_PROPRIETARIES_AND_DRUGGIST_SUNDRIES(
          "drugs_drug_proprietaries_and_druggist_sundries"),

      @SerializedName("dry_cleaners")
      DRY_CLEANERS("dry_cleaners"),

      @SerializedName("durable_goods")
      DURABLE_GOODS("durable_goods"),

      @SerializedName("duty_free_stores")
      DUTY_FREE_STORES("duty_free_stores"),

      @SerializedName("eating_places_restaurants")
      EATING_PLACES_RESTAURANTS("eating_places_restaurants"),

      @SerializedName("educational_services")
      EDUCATIONAL_SERVICES("educational_services"),

      @SerializedName("electric_razor_stores")
      ELECTRIC_RAZOR_STORES("electric_razor_stores"),

      @SerializedName("electric_vehicle_charging")
      ELECTRIC_VEHICLE_CHARGING("electric_vehicle_charging"),

      @SerializedName("electrical_parts_and_equipment")
      ELECTRICAL_PARTS_AND_EQUIPMENT("electrical_parts_and_equipment"),

      @SerializedName("electrical_services")
      ELECTRICAL_SERVICES("electrical_services"),

      @SerializedName("electronics_repair_shops")
      ELECTRONICS_REPAIR_SHOPS("electronics_repair_shops"),

      @SerializedName("electronics_stores")
      ELECTRONICS_STORES("electronics_stores"),

      @SerializedName("elementary_secondary_schools")
      ELEMENTARY_SECONDARY_SCHOOLS("elementary_secondary_schools"),

      @SerializedName("emergency_services_gcas_visa_use_only")
      EMERGENCY_SERVICES_GCAS_VISA_USE_ONLY("emergency_services_gcas_visa_use_only"),

      @SerializedName("employment_temp_agencies")
      EMPLOYMENT_TEMP_AGENCIES("employment_temp_agencies"),

      @SerializedName("equipment_rental")
      EQUIPMENT_RENTAL("equipment_rental"),

      @SerializedName("exterminating_services")
      EXTERMINATING_SERVICES("exterminating_services"),

      @SerializedName("family_clothing_stores")
      FAMILY_CLOTHING_STORES("family_clothing_stores"),

      @SerializedName("fast_food_restaurants")
      FAST_FOOD_RESTAURANTS("fast_food_restaurants"),

      @SerializedName("financial_institutions")
      FINANCIAL_INSTITUTIONS("financial_institutions"),

      @SerializedName("fines_government_administrative_entities")
      FINES_GOVERNMENT_ADMINISTRATIVE_ENTITIES("fines_government_administrative_entities"),

      @SerializedName("fireplace_fireplace_screens_and_accessories_stores")
      FIREPLACE_FIREPLACE_SCREENS_AND_ACCESSORIES_STORES(
          "fireplace_fireplace_screens_and_accessories_stores"),

      @SerializedName("floor_covering_stores")
      FLOOR_COVERING_STORES("floor_covering_stores"),

      @SerializedName("florists")
      FLORISTS("florists"),

      @SerializedName("florists_supplies_nursery_stock_and_flowers")
      FLORISTS_SUPPLIES_NURSERY_STOCK_AND_FLOWERS("florists_supplies_nursery_stock_and_flowers"),

      @SerializedName("freezer_and_locker_meat_provisioners")
      FREEZER_AND_LOCKER_MEAT_PROVISIONERS("freezer_and_locker_meat_provisioners"),

      @SerializedName("fuel_dealers_non_automotive")
      FUEL_DEALERS_NON_AUTOMOTIVE("fuel_dealers_non_automotive"),

      @SerializedName("funeral_services_crematories")
      FUNERAL_SERVICES_CREMATORIES("funeral_services_crematories"),

      @SerializedName("furniture_home_furnishings_and_equipment_stores_except_appliances")
      FURNITURE_HOME_FURNISHINGS_AND_EQUIPMENT_STORES_EXCEPT_APPLIANCES(
          "furniture_home_furnishings_and_equipment_stores_except_appliances"),

      @SerializedName("furniture_repair_refinishing")
      FURNITURE_REPAIR_REFINISHING("furniture_repair_refinishing"),

      @SerializedName("furriers_and_fur_shops")
      FURRIERS_AND_FUR_SHOPS("furriers_and_fur_shops"),

      @SerializedName("general_services")
      GENERAL_SERVICES("general_services"),

      @SerializedName("gift_card_novelty_and_souvenir_shops")
      GIFT_CARD_NOVELTY_AND_SOUVENIR_SHOPS("gift_card_novelty_and_souvenir_shops"),

      @SerializedName("glass_paint_and_wallpaper_stores")
      GLASS_PAINT_AND_WALLPAPER_STORES("glass_paint_and_wallpaper_stores"),

      @SerializedName("glassware_crystal_stores")
      GLASSWARE_CRYSTAL_STORES("glassware_crystal_stores"),

      @SerializedName("golf_courses_public")
      GOLF_COURSES_PUBLIC("golf_courses_public"),

      @SerializedName("government_licensed_horse_dog_racing_us_region_only")
      GOVERNMENT_LICENSED_HORSE_DOG_RACING_US_REGION_ONLY(
          "government_licensed_horse_dog_racing_us_region_only"),

      @SerializedName("government_licensed_online_casions_online_gambling_us_region_only")
      GOVERNMENT_LICENSED_ONLINE_CASIONS_ONLINE_GAMBLING_US_REGION_ONLY(
          "government_licensed_online_casions_online_gambling_us_region_only"),

      @SerializedName("government_owned_lotteries_non_us_region")
      GOVERNMENT_OWNED_LOTTERIES_NON_US_REGION("government_owned_lotteries_non_us_region"),

      @SerializedName("government_owned_lotteries_us_region_only")
      GOVERNMENT_OWNED_LOTTERIES_US_REGION_ONLY("government_owned_lotteries_us_region_only"),

      @SerializedName("government_services")
      GOVERNMENT_SERVICES("government_services"),

      @SerializedName("grocery_stores_supermarkets")
      GROCERY_STORES_SUPERMARKETS("grocery_stores_supermarkets"),

      @SerializedName("hardware_equipment_and_supplies")
      HARDWARE_EQUIPMENT_AND_SUPPLIES("hardware_equipment_and_supplies"),

      @SerializedName("hardware_stores")
      HARDWARE_STORES("hardware_stores"),

      @SerializedName("health_and_beauty_spas")
      HEALTH_AND_BEAUTY_SPAS("health_and_beauty_spas"),

      @SerializedName("hearing_aids_sales_and_supplies")
      HEARING_AIDS_SALES_AND_SUPPLIES("hearing_aids_sales_and_supplies"),

      @SerializedName("heating_plumbing_a_c")
      HEATING_PLUMBING_A_C("heating_plumbing_a_c"),

      @SerializedName("hobby_toy_and_game_shops")
      HOBBY_TOY_AND_GAME_SHOPS("hobby_toy_and_game_shops"),

      @SerializedName("home_supply_warehouse_stores")
      HOME_SUPPLY_WAREHOUSE_STORES("home_supply_warehouse_stores"),

      @SerializedName("hospitals")
      HOSPITALS("hospitals"),

      @SerializedName("hotels_motels_and_resorts")
      HOTELS_MOTELS_AND_RESORTS("hotels_motels_and_resorts"),

      @SerializedName("household_appliance_stores")
      HOUSEHOLD_APPLIANCE_STORES("household_appliance_stores"),

      @SerializedName("industrial_supplies")
      INDUSTRIAL_SUPPLIES("industrial_supplies"),

      @SerializedName("information_retrieval_services")
      INFORMATION_RETRIEVAL_SERVICES("information_retrieval_services"),

      @SerializedName("insurance_default")
      INSURANCE_DEFAULT("insurance_default"),

      @SerializedName("insurance_underwriting_premiums")
      INSURANCE_UNDERWRITING_PREMIUMS("insurance_underwriting_premiums"),

      @SerializedName("intra_company_purchases")
      INTRA_COMPANY_PURCHASES("intra_company_purchases"),

      @SerializedName("jewelry_stores_watches_clocks_and_silverware_stores")
      JEWELRY_STORES_WATCHES_CLOCKS_AND_SILVERWARE_STORES(
          "jewelry_stores_watches_clocks_and_silverware_stores"),

      @SerializedName("landscaping_services")
      LANDSCAPING_SERVICES("landscaping_services"),

      @SerializedName("laundries")
      LAUNDRIES("laundries"),

      @SerializedName("laundry_cleaning_services")
      LAUNDRY_CLEANING_SERVICES("laundry_cleaning_services"),

      @SerializedName("legal_services_attorneys")
      LEGAL_SERVICES_ATTORNEYS("legal_services_attorneys"),

      @SerializedName("luggage_and_leather_goods_stores")
      LUGGAGE_AND_LEATHER_GOODS_STORES("luggage_and_leather_goods_stores"),

      @SerializedName("lumber_building_materials_stores")
      LUMBER_BUILDING_MATERIALS_STORES("lumber_building_materials_stores"),

      @SerializedName("manual_cash_disburse")
      MANUAL_CASH_DISBURSE("manual_cash_disburse"),

      @SerializedName("marinas_service_and_supplies")
      MARINAS_SERVICE_AND_SUPPLIES("marinas_service_and_supplies"),

      @SerializedName("marketplaces")
      MARKETPLACES("marketplaces"),

      @SerializedName("masonry_stonework_and_plaster")
      MASONRY_STONEWORK_AND_PLASTER("masonry_stonework_and_plaster"),

      @SerializedName("massage_parlors")
      MASSAGE_PARLORS("massage_parlors"),

      @SerializedName("medical_and_dental_labs")
      MEDICAL_AND_DENTAL_LABS("medical_and_dental_labs"),

      @SerializedName("medical_dental_ophthalmic_and_hospital_equipment_and_supplies")
      MEDICAL_DENTAL_OPHTHALMIC_AND_HOSPITAL_EQUIPMENT_AND_SUPPLIES(
          "medical_dental_ophthalmic_and_hospital_equipment_and_supplies"),

      @SerializedName("medical_services")
      MEDICAL_SERVICES("medical_services"),

      @SerializedName("membership_organizations")
      MEMBERSHIP_ORGANIZATIONS("membership_organizations"),

      @SerializedName("mens_and_boys_clothing_and_accessories_stores")
      MENS_AND_BOYS_CLOTHING_AND_ACCESSORIES_STORES(
          "mens_and_boys_clothing_and_accessories_stores"),

      @SerializedName("mens_womens_clothing_stores")
      MENS_WOMENS_CLOTHING_STORES("mens_womens_clothing_stores"),

      @SerializedName("metal_service_centers")
      METAL_SERVICE_CENTERS("metal_service_centers"),

      @SerializedName("miscellaneous_apparel_and_accessory_shops")
      MISCELLANEOUS_APPAREL_AND_ACCESSORY_SHOPS("miscellaneous_apparel_and_accessory_shops"),

      @SerializedName("miscellaneous_auto_dealers")
      MISCELLANEOUS_AUTO_DEALERS("miscellaneous_auto_dealers"),

      @SerializedName("miscellaneous_business_services")
      MISCELLANEOUS_BUSINESS_SERVICES("miscellaneous_business_services"),

      @SerializedName("miscellaneous_food_stores")
      MISCELLANEOUS_FOOD_STORES("miscellaneous_food_stores"),

      @SerializedName("miscellaneous_general_merchandise")
      MISCELLANEOUS_GENERAL_MERCHANDISE("miscellaneous_general_merchandise"),

      @SerializedName("miscellaneous_general_services")
      MISCELLANEOUS_GENERAL_SERVICES("miscellaneous_general_services"),

      @SerializedName("miscellaneous_home_furnishing_specialty_stores")
      MISCELLANEOUS_HOME_FURNISHING_SPECIALTY_STORES(
          "miscellaneous_home_furnishing_specialty_stores"),

      @SerializedName("miscellaneous_publishing_and_printing")
      MISCELLANEOUS_PUBLISHING_AND_PRINTING("miscellaneous_publishing_and_printing"),

      @SerializedName("miscellaneous_recreation_services")
      MISCELLANEOUS_RECREATION_SERVICES("miscellaneous_recreation_services"),

      @SerializedName("miscellaneous_repair_shops")
      MISCELLANEOUS_REPAIR_SHOPS("miscellaneous_repair_shops"),

      @SerializedName("miscellaneous_specialty_retail")
      MISCELLANEOUS_SPECIALTY_RETAIL("miscellaneous_specialty_retail"),

      @SerializedName("mobile_home_dealers")
      MOBILE_HOME_DEALERS("mobile_home_dealers"),

      @SerializedName("motion_picture_theaters")
      MOTION_PICTURE_THEATERS("motion_picture_theaters"),

      @SerializedName("motor_freight_carriers_and_trucking")
      MOTOR_FREIGHT_CARRIERS_AND_TRUCKING("motor_freight_carriers_and_trucking"),

      @SerializedName("motor_homes_dealers")
      MOTOR_HOMES_DEALERS("motor_homes_dealers"),

      @SerializedName("motor_vehicle_supplies_and_new_parts")
      MOTOR_VEHICLE_SUPPLIES_AND_NEW_PARTS("motor_vehicle_supplies_and_new_parts"),

      @SerializedName("motorcycle_shops_and_dealers")
      MOTORCYCLE_SHOPS_AND_DEALERS("motorcycle_shops_and_dealers"),

      @SerializedName("motorcycle_shops_dealers")
      MOTORCYCLE_SHOPS_DEALERS("motorcycle_shops_dealers"),

      @SerializedName("music_stores_musical_instruments_pianos_and_sheet_music")
      MUSIC_STORES_MUSICAL_INSTRUMENTS_PIANOS_AND_SHEET_MUSIC(
          "music_stores_musical_instruments_pianos_and_sheet_music"),

      @SerializedName("news_dealers_and_newsstands")
      NEWS_DEALERS_AND_NEWSSTANDS("news_dealers_and_newsstands"),

      @SerializedName("non_fi_money_orders")
      NON_FI_MONEY_ORDERS("non_fi_money_orders"),

      @SerializedName("non_fi_stored_value_card_purchase_load")
      NON_FI_STORED_VALUE_CARD_PURCHASE_LOAD("non_fi_stored_value_card_purchase_load"),

      @SerializedName("nondurable_goods")
      NONDURABLE_GOODS("nondurable_goods"),

      @SerializedName("nurseries_lawn_and_garden_supply_stores")
      NURSERIES_LAWN_AND_GARDEN_SUPPLY_STORES("nurseries_lawn_and_garden_supply_stores"),

      @SerializedName("nursing_personal_care")
      NURSING_PERSONAL_CARE("nursing_personal_care"),

      @SerializedName("office_and_commercial_furniture")
      OFFICE_AND_COMMERCIAL_FURNITURE("office_and_commercial_furniture"),

      @SerializedName("opticians_eyeglasses")
      OPTICIANS_EYEGLASSES("opticians_eyeglasses"),

      @SerializedName("optometrists_ophthalmologist")
      OPTOMETRISTS_OPHTHALMOLOGIST("optometrists_ophthalmologist"),

      @SerializedName("orthopedic_goods_prosthetic_devices")
      ORTHOPEDIC_GOODS_PROSTHETIC_DEVICES("orthopedic_goods_prosthetic_devices"),

      @SerializedName("osteopaths")
      OSTEOPATHS("osteopaths"),

      @SerializedName("package_stores_beer_wine_and_liquor")
      PACKAGE_STORES_BEER_WINE_AND_LIQUOR("package_stores_beer_wine_and_liquor"),

      @SerializedName("paints_varnishes_and_supplies")
      PAINTS_VARNISHES_AND_SUPPLIES("paints_varnishes_and_supplies"),

      @SerializedName("parking_lots_garages")
      PARKING_LOTS_GARAGES("parking_lots_garages"),

      @SerializedName("passenger_railways")
      PASSENGER_RAILWAYS("passenger_railways"),

      @SerializedName("pawn_shops")
      PAWN_SHOPS("pawn_shops"),

      @SerializedName("pet_shops_pet_food_and_supplies")
      PET_SHOPS_PET_FOOD_AND_SUPPLIES("pet_shops_pet_food_and_supplies"),

      @SerializedName("petroleum_and_petroleum_products")
      PETROLEUM_AND_PETROLEUM_PRODUCTS("petroleum_and_petroleum_products"),

      @SerializedName("photo_developing")
      PHOTO_DEVELOPING("photo_developing"),

      @SerializedName("photographic_photocopy_microfilm_equipment_and_supplies")
      PHOTOGRAPHIC_PHOTOCOPY_MICROFILM_EQUIPMENT_AND_SUPPLIES(
          "photographic_photocopy_microfilm_equipment_and_supplies"),

      @SerializedName("photographic_studios")
      PHOTOGRAPHIC_STUDIOS("photographic_studios"),

      @SerializedName("picture_video_production")
      PICTURE_VIDEO_PRODUCTION("picture_video_production"),

      @SerializedName("piece_goods_notions_and_other_dry_goods")
      PIECE_GOODS_NOTIONS_AND_OTHER_DRY_GOODS("piece_goods_notions_and_other_dry_goods"),

      @SerializedName("plumbing_heating_equipment_and_supplies")
      PLUMBING_HEATING_EQUIPMENT_AND_SUPPLIES("plumbing_heating_equipment_and_supplies"),

      @SerializedName("political_organizations")
      POLITICAL_ORGANIZATIONS("political_organizations"),

      @SerializedName("postal_services_government_only")
      POSTAL_SERVICES_GOVERNMENT_ONLY("postal_services_government_only"),

      @SerializedName("precious_stones_and_metals_watches_and_jewelry")
      PRECIOUS_STONES_AND_METALS_WATCHES_AND_JEWELRY(
          "precious_stones_and_metals_watches_and_jewelry"),

      @SerializedName("professional_services")
      PROFESSIONAL_SERVICES("professional_services"),

      @SerializedName("public_warehousing_and_storage")
      PUBLIC_WAREHOUSING_AND_STORAGE("public_warehousing_and_storage"),

      @SerializedName("quick_copy_repro_and_blueprint")
      QUICK_COPY_REPRO_AND_BLUEPRINT("quick_copy_repro_and_blueprint"),

      @SerializedName("railroads")
      RAILROADS("railroads"),

      @SerializedName("real_estate_agents_and_managers_rentals")
      REAL_ESTATE_AGENTS_AND_MANAGERS_RENTALS("real_estate_agents_and_managers_rentals"),

      @SerializedName("record_stores")
      RECORD_STORES("record_stores"),

      @SerializedName("recreational_vehicle_rentals")
      RECREATIONAL_VEHICLE_RENTALS("recreational_vehicle_rentals"),

      @SerializedName("religious_goods_stores")
      RELIGIOUS_GOODS_STORES("religious_goods_stores"),

      @SerializedName("religious_organizations")
      RELIGIOUS_ORGANIZATIONS("religious_organizations"),

      @SerializedName("roofing_siding_sheet_metal")
      ROOFING_SIDING_SHEET_METAL("roofing_siding_sheet_metal"),

      @SerializedName("secretarial_support_services")
      SECRETARIAL_SUPPORT_SERVICES("secretarial_support_services"),

      @SerializedName("security_brokers_dealers")
      SECURITY_BROKERS_DEALERS("security_brokers_dealers"),

      @SerializedName("service_stations")
      SERVICE_STATIONS("service_stations"),

      @SerializedName("sewing_needlework_fabric_and_piece_goods_stores")
      SEWING_NEEDLEWORK_FABRIC_AND_PIECE_GOODS_STORES(
          "sewing_needlework_fabric_and_piece_goods_stores"),

      @SerializedName("shoe_repair_hat_cleaning")
      SHOE_REPAIR_HAT_CLEANING("shoe_repair_hat_cleaning"),

      @SerializedName("shoe_stores")
      SHOE_STORES("shoe_stores"),

      @SerializedName("small_appliance_repair")
      SMALL_APPLIANCE_REPAIR("small_appliance_repair"),

      @SerializedName("snowmobile_dealers")
      SNOWMOBILE_DEALERS("snowmobile_dealers"),

      @SerializedName("special_trade_services")
      SPECIAL_TRADE_SERVICES("special_trade_services"),

      @SerializedName("specialty_cleaning")
      SPECIALTY_CLEANING("specialty_cleaning"),

      @SerializedName("sporting_goods_stores")
      SPORTING_GOODS_STORES("sporting_goods_stores"),

      @SerializedName("sporting_recreation_camps")
      SPORTING_RECREATION_CAMPS("sporting_recreation_camps"),

      @SerializedName("sports_and_riding_apparel_stores")
      SPORTS_AND_RIDING_APPAREL_STORES("sports_and_riding_apparel_stores"),

      @SerializedName("sports_clubs_fields")
      SPORTS_CLUBS_FIELDS("sports_clubs_fields"),

      @SerializedName("stamp_and_coin_stores")
      STAMP_AND_COIN_STORES("stamp_and_coin_stores"),

      @SerializedName("stationary_office_supplies_printing_and_writing_paper")
      STATIONARY_OFFICE_SUPPLIES_PRINTING_AND_WRITING_PAPER(
          "stationary_office_supplies_printing_and_writing_paper"),

      @SerializedName("stationery_stores_office_and_school_supply_stores")
      STATIONERY_STORES_OFFICE_AND_SCHOOL_SUPPLY_STORES(
          "stationery_stores_office_and_school_supply_stores"),

      @SerializedName("swimming_pools_sales")
      SWIMMING_POOLS_SALES("swimming_pools_sales"),

      @SerializedName("t_ui_travel_germany")
      T_UI_TRAVEL_GERMANY("t_ui_travel_germany"),

      @SerializedName("tailors_alterations")
      TAILORS_ALTERATIONS("tailors_alterations"),

      @SerializedName("tax_payments_government_agencies")
      TAX_PAYMENTS_GOVERNMENT_AGENCIES("tax_payments_government_agencies"),

      @SerializedName("tax_preparation_services")
      TAX_PREPARATION_SERVICES("tax_preparation_services"),

      @SerializedName("taxicabs_limousines")
      TAXICABS_LIMOUSINES("taxicabs_limousines"),

      @SerializedName("telecommunication_equipment_and_telephone_sales")
      TELECOMMUNICATION_EQUIPMENT_AND_TELEPHONE_SALES(
          "telecommunication_equipment_and_telephone_sales"),

      @SerializedName("telecommunication_services")
      TELECOMMUNICATION_SERVICES("telecommunication_services"),

      @SerializedName("telegraph_services")
      TELEGRAPH_SERVICES("telegraph_services"),

      @SerializedName("tent_and_awning_shops")
      TENT_AND_AWNING_SHOPS("tent_and_awning_shops"),

      @SerializedName("testing_laboratories")
      TESTING_LABORATORIES("testing_laboratories"),

      @SerializedName("theatrical_ticket_agencies")
      THEATRICAL_TICKET_AGENCIES("theatrical_ticket_agencies"),

      @SerializedName("timeshares")
      TIMESHARES("timeshares"),

      @SerializedName("tire_retreading_and_repair")
      TIRE_RETREADING_AND_REPAIR("tire_retreading_and_repair"),

      @SerializedName("tolls_bridge_fees")
      TOLLS_BRIDGE_FEES("tolls_bridge_fees"),

      @SerializedName("tourist_attractions_and_exhibits")
      TOURIST_ATTRACTIONS_AND_EXHIBITS("tourist_attractions_and_exhibits"),

      @SerializedName("towing_services")
      TOWING_SERVICES("towing_services"),

      @SerializedName("trailer_parks_campgrounds")
      TRAILER_PARKS_CAMPGROUNDS("trailer_parks_campgrounds"),

      @SerializedName("transportation_services")
      TRANSPORTATION_SERVICES("transportation_services"),

      @SerializedName("travel_agencies_tour_operators")
      TRAVEL_AGENCIES_TOUR_OPERATORS("travel_agencies_tour_operators"),

      @SerializedName("truck_stop_iteration")
      TRUCK_STOP_ITERATION("truck_stop_iteration"),

      @SerializedName("truck_utility_trailer_rentals")
      TRUCK_UTILITY_TRAILER_RENTALS("truck_utility_trailer_rentals"),

      @SerializedName("typesetting_plate_making_and_related_services")
      TYPESETTING_PLATE_MAKING_AND_RELATED_SERVICES(
          "typesetting_plate_making_and_related_services"),

      @SerializedName("typewriter_stores")
      TYPEWRITER_STORES("typewriter_stores"),

      @SerializedName("u_s_federal_government_agencies_or_departments")
      U_S_FEDERAL_GOVERNMENT_AGENCIES_OR_DEPARTMENTS(
          "u_s_federal_government_agencies_or_departments"),

      @SerializedName("uniforms_commercial_clothing")
      UNIFORMS_COMMERCIAL_CLOTHING("uniforms_commercial_clothing"),

      @SerializedName("used_merchandise_and_secondhand_stores")
      USED_MERCHANDISE_AND_SECONDHAND_STORES("used_merchandise_and_secondhand_stores"),

      @SerializedName("utilities")
      UTILITIES("utilities"),

      @SerializedName("variety_stores")
      VARIETY_STORES("variety_stores"),

      @SerializedName("veterinary_services")
      VETERINARY_SERVICES("veterinary_services"),

      @SerializedName("video_amusement_game_supplies")
      VIDEO_AMUSEMENT_GAME_SUPPLIES("video_amusement_game_supplies"),

      @SerializedName("video_game_arcades")
      VIDEO_GAME_ARCADES("video_game_arcades"),

      @SerializedName("video_tape_rental_stores")
      VIDEO_TAPE_RENTAL_STORES("video_tape_rental_stores"),

      @SerializedName("vocational_trade_schools")
      VOCATIONAL_TRADE_SCHOOLS("vocational_trade_schools"),

      @SerializedName("watch_jewelry_repair")
      WATCH_JEWELRY_REPAIR("watch_jewelry_repair"),

      @SerializedName("welding_repair")
      WELDING_REPAIR("welding_repair"),

      @SerializedName("wholesale_clubs")
      WHOLESALE_CLUBS("wholesale_clubs"),

      @SerializedName("wig_and_toupee_stores")
      WIG_AND_TOUPEE_STORES("wig_and_toupee_stores"),

      @SerializedName("wires_money_orders")
      WIRES_MONEY_ORDERS("wires_money_orders"),

      @SerializedName("womens_accessory_and_specialty_shops")
      WOMENS_ACCESSORY_AND_SPECIALTY_SHOPS("womens_accessory_and_specialty_shops"),

      @SerializedName("womens_ready_to_wear_stores")
      WOMENS_READY_TO_WEAR_STORES("womens_ready_to_wear_stores"),

      @SerializedName("wrecking_and_salvage_yards")
      WRECKING_AND_SALVAGE_YARDS("wrecking_and_salvage_yards");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

  @Getter
  public static class NetworkData {
    /** Identifier assigned to the acquirer by the card network. */
    @SerializedName("acquiring_institution_id")
    String acquiringInstitutionId;

    /**
     * Map of extra parameters for custom features not available in this client library. The content
     * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
     * key/value pair is serialized as if the key is a root-level field (serialized) name in this
     * param object. Effectively, this map is flattened to its parent instance.
     */
    @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
    Map extraParams;

    private NetworkData(String acquiringInstitutionId, Map extraParams) {
      this.acquiringInstitutionId = acquiringInstitutionId;
      this.extraParams = extraParams;
    }

    public static Builder builder() {
      return new Builder();
    }

    public static class Builder {
      private String acquiringInstitutionId;

      private Map extraParams;

      /** Finalize and obtain parameter instance from this builder. */
      public AuthorizationCreateParams.NetworkData build() {
        return new AuthorizationCreateParams.NetworkData(
            this.acquiringInstitutionId, this.extraParams);
      }

      /** Identifier assigned to the acquirer by the card network. */
      public Builder setAcquiringInstitutionId(String acquiringInstitutionId) {
        this.acquiringInstitutionId = acquiringInstitutionId;
        return this;
      }

      /**
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
       * AuthorizationCreateParams.NetworkData#extraParams} for the field documentation.
       */
      public Builder putExtraParam(String key, Object value) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.put(key, value);
        return this;
      }

      /**
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
       * See {@link AuthorizationCreateParams.NetworkData#extraParams} for the field documentation.
       */
      public Builder putAllExtraParam(Map map) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.putAll(map);
        return this;
      }
    }
  }

  @Getter
  public static class VerificationData {
    /**
     * Whether the cardholder provided an address first line and if it matched the cardholder’s
     * {@code billing.address.line1}.
     */
    @SerializedName("address_line1_check")
    AddressLine1Check addressLine1Check;

    /**
     * Whether the cardholder provided a postal code and if it matched the cardholder’s {@code
     * billing.address.postal_code}.
     */
    @SerializedName("address_postal_code_check")
    AddressPostalCodeCheck addressPostalCodeCheck;

    /** The exemption applied to this authorization. */
    @SerializedName("authentication_exemption")
    AuthenticationExemption authenticationExemption;

    /** Whether the cardholder provided a CVC and if it matched Stripe’s record. */
    @SerializedName("cvc_check")
    CvcCheck cvcCheck;

    /** Whether the cardholder provided an expiry date and if it matched Stripe’s record. */
    @SerializedName("expiry_check")
    ExpiryCheck expiryCheck;

    /**
     * Map of extra parameters for custom features not available in this client library. The content
     * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
     * key/value pair is serialized as if the key is a root-level field (serialized) name in this
     * param object. Effectively, this map is flattened to its parent instance.
     */
    @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
    Map extraParams;

    /** 3D Secure details. */
    @SerializedName("three_d_secure")
    ThreeDSecure threeDSecure;

    private VerificationData(
        AddressLine1Check addressLine1Check,
        AddressPostalCodeCheck addressPostalCodeCheck,
        AuthenticationExemption authenticationExemption,
        CvcCheck cvcCheck,
        ExpiryCheck expiryCheck,
        Map extraParams,
        ThreeDSecure threeDSecure) {
      this.addressLine1Check = addressLine1Check;
      this.addressPostalCodeCheck = addressPostalCodeCheck;
      this.authenticationExemption = authenticationExemption;
      this.cvcCheck = cvcCheck;
      this.expiryCheck = expiryCheck;
      this.extraParams = extraParams;
      this.threeDSecure = threeDSecure;
    }

    public static Builder builder() {
      return new Builder();
    }

    public static class Builder {
      private AddressLine1Check addressLine1Check;

      private AddressPostalCodeCheck addressPostalCodeCheck;

      private AuthenticationExemption authenticationExemption;

      private CvcCheck cvcCheck;

      private ExpiryCheck expiryCheck;

      private Map extraParams;

      private ThreeDSecure threeDSecure;

      /** Finalize and obtain parameter instance from this builder. */
      public AuthorizationCreateParams.VerificationData build() {
        return new AuthorizationCreateParams.VerificationData(
            this.addressLine1Check,
            this.addressPostalCodeCheck,
            this.authenticationExemption,
            this.cvcCheck,
            this.expiryCheck,
            this.extraParams,
            this.threeDSecure);
      }

      /**
       * Whether the cardholder provided an address first line and if it matched the cardholder’s
       * {@code billing.address.line1}.
       */
      public Builder setAddressLine1Check(
          AuthorizationCreateParams.VerificationData.AddressLine1Check addressLine1Check) {
        this.addressLine1Check = addressLine1Check;
        return this;
      }

      /**
       * Whether the cardholder provided a postal code and if it matched the cardholder’s {@code
       * billing.address.postal_code}.
       */
      public Builder setAddressPostalCodeCheck(
          AuthorizationCreateParams.VerificationData.AddressPostalCodeCheck
              addressPostalCodeCheck) {
        this.addressPostalCodeCheck = addressPostalCodeCheck;
        return this;
      }

      /** The exemption applied to this authorization. */
      public Builder setAuthenticationExemption(
          AuthorizationCreateParams.VerificationData.AuthenticationExemption
              authenticationExemption) {
        this.authenticationExemption = authenticationExemption;
        return this;
      }

      /** Whether the cardholder provided a CVC and if it matched Stripe’s record. */
      public Builder setCvcCheck(AuthorizationCreateParams.VerificationData.CvcCheck cvcCheck) {
        this.cvcCheck = cvcCheck;
        return this;
      }

      /** Whether the cardholder provided an expiry date and if it matched Stripe’s record. */
      public Builder setExpiryCheck(
          AuthorizationCreateParams.VerificationData.ExpiryCheck expiryCheck) {
        this.expiryCheck = expiryCheck;
        return this;
      }

      /**
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
       * AuthorizationCreateParams.VerificationData#extraParams} for the field documentation.
       */
      public Builder putExtraParam(String key, Object value) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.put(key, value);
        return this;
      }

      /**
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
       * See {@link AuthorizationCreateParams.VerificationData#extraParams} for the field
       * documentation.
       */
      public Builder putAllExtraParam(Map map) {
        if (this.extraParams == null) {
          this.extraParams = new HashMap<>();
        }
        this.extraParams.putAll(map);
        return this;
      }

      /** 3D Secure details. */
      public Builder setThreeDSecure(
          AuthorizationCreateParams.VerificationData.ThreeDSecure threeDSecure) {
        this.threeDSecure = threeDSecure;
        return this;
      }
    }

    @Getter
    public static class AuthenticationExemption {
      /**
       * Required. The entity that requested the exemption, either the acquiring
       * merchant or the Issuing user.
       */
      @SerializedName("claimed_by")
      ClaimedBy claimedBy;

      /**
       * Map of extra parameters for custom features not available in this client library. The
       * content in this map is not serialized under this field's {@code @SerializedName} value.
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
       * name in this param object. Effectively, this map is flattened to its parent instance.
       */
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
      Map extraParams;

      /** Required. The specific exemption claimed for this authorization. */
      @SerializedName("type")
      Type type;

      private AuthenticationExemption(
          ClaimedBy claimedBy, Map extraParams, Type type) {
        this.claimedBy = claimedBy;
        this.extraParams = extraParams;
        this.type = type;
      }

      public static Builder builder() {
        return new Builder();
      }

      public static class Builder {
        private ClaimedBy claimedBy;

        private Map extraParams;

        private Type type;

        /** Finalize and obtain parameter instance from this builder. */
        public AuthorizationCreateParams.VerificationData.AuthenticationExemption build() {
          return new AuthorizationCreateParams.VerificationData.AuthenticationExemption(
              this.claimedBy, this.extraParams, this.type);
        }

        /**
         * Required. The entity that requested the exemption, either the acquiring
         * merchant or the Issuing user.
         */
        public Builder setClaimedBy(
            AuthorizationCreateParams.VerificationData.AuthenticationExemption.ClaimedBy
                claimedBy) {
          this.claimedBy = claimedBy;
          return this;
        }

        /**
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
         * map. See {@link
         * AuthorizationCreateParams.VerificationData.AuthenticationExemption#extraParams} for the
         * field documentation.
         */
        public Builder putExtraParam(String key, Object value) {
          if (this.extraParams == null) {
            this.extraParams = new HashMap<>();
          }
          this.extraParams.put(key, value);
          return this;
        }

        /**
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
         * map. See {@link
         * AuthorizationCreateParams.VerificationData.AuthenticationExemption#extraParams} for the
         * field documentation.
         */
        public Builder putAllExtraParam(Map map) {
          if (this.extraParams == null) {
            this.extraParams = new HashMap<>();
          }
          this.extraParams.putAll(map);
          return this;
        }

        /** Required. The specific exemption claimed for this authorization. */
        public Builder setType(
            AuthorizationCreateParams.VerificationData.AuthenticationExemption.Type type) {
          this.type = type;
          return this;
        }
      }

      public enum ClaimedBy implements ApiRequestParams.EnumParam {
        @SerializedName("acquirer")
        ACQUIRER("acquirer"),

        @SerializedName("issuer")
        ISSUER("issuer");

        @Getter(onMethod_ = {@Override})
        private final String value;

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

      public enum Type implements ApiRequestParams.EnumParam {
        @SerializedName("low_value_transaction")
        LOW_VALUE_TRANSACTION("low_value_transaction"),

        @SerializedName("transaction_risk_analysis")
        TRANSACTION_RISK_ANALYSIS("transaction_risk_analysis"),

        @SerializedName("unknown")
        UNKNOWN("unknown");

        @Getter(onMethod_ = {@Override})
        private final String value;

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

    @Getter
    public static class ThreeDSecure {
      /**
       * Map of extra parameters for custom features not available in this client library. The
       * content in this map is not serialized under this field's {@code @SerializedName} value.
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
       * name in this param object. Effectively, this map is flattened to its parent instance.
       */
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
      Map extraParams;

      /** Required. The outcome of the 3D Secure authentication request. */
      @SerializedName("result")
      Result result;

      private ThreeDSecure(Map extraParams, Result result) {
        this.extraParams = extraParams;
        this.result = result;
      }

      public static Builder builder() {
        return new Builder();
      }

      public static class Builder {
        private Map extraParams;

        private Result result;

        /** Finalize and obtain parameter instance from this builder. */
        public AuthorizationCreateParams.VerificationData.ThreeDSecure build() {
          return new AuthorizationCreateParams.VerificationData.ThreeDSecure(
              this.extraParams, this.result);
        }

        /**
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
         * map. See {@link AuthorizationCreateParams.VerificationData.ThreeDSecure#extraParams} for
         * the field documentation.
         */
        public Builder putExtraParam(String key, Object value) {
          if (this.extraParams == null) {
            this.extraParams = new HashMap<>();
          }
          this.extraParams.put(key, value);
          return this;
        }

        /**
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
         * map. See {@link AuthorizationCreateParams.VerificationData.ThreeDSecure#extraParams} for
         * the field documentation.
         */
        public Builder putAllExtraParam(Map map) {
          if (this.extraParams == null) {
            this.extraParams = new HashMap<>();
          }
          this.extraParams.putAll(map);
          return this;
        }

        /** Required. The outcome of the 3D Secure authentication request. */
        public Builder setResult(
            AuthorizationCreateParams.VerificationData.ThreeDSecure.Result result) {
          this.result = result;
          return this;
        }
      }

      public enum Result implements ApiRequestParams.EnumParam {
        @SerializedName("attempt_acknowledged")
        ATTEMPT_ACKNOWLEDGED("attempt_acknowledged"),

        @SerializedName("authenticated")
        AUTHENTICATED("authenticated"),

        @SerializedName("failed")
        FAILED("failed"),

        @SerializedName("required")
        REQUIRED("required");

        @Getter(onMethod_ = {@Override})
        private final String value;

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

    public enum AddressLine1Check implements ApiRequestParams.EnumParam {
      @SerializedName("match")
      MATCH("match"),

      @SerializedName("mismatch")
      MISMATCH("mismatch"),

      @SerializedName("not_provided")
      NOT_PROVIDED("not_provided");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

    public enum AddressPostalCodeCheck implements ApiRequestParams.EnumParam {
      @SerializedName("match")
      MATCH("match"),

      @SerializedName("mismatch")
      MISMATCH("mismatch"),

      @SerializedName("not_provided")
      NOT_PROVIDED("not_provided");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

    public enum CvcCheck implements ApiRequestParams.EnumParam {
      @SerializedName("match")
      MATCH("match"),

      @SerializedName("mismatch")
      MISMATCH("mismatch"),

      @SerializedName("not_provided")
      NOT_PROVIDED("not_provided");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

    public enum ExpiryCheck implements ApiRequestParams.EnumParam {
      @SerializedName("match")
      MATCH("match"),

      @SerializedName("mismatch")
      MISMATCH("mismatch"),

      @SerializedName("not_provided")
      NOT_PROVIDED("not_provided");

      @Getter(onMethod_ = {@Override})
      private final String value;

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

  public enum AuthorizationMethod implements ApiRequestParams.EnumParam {
    @SerializedName("chip")
    CHIP("chip"),

    @SerializedName("contactless")
    CONTACTLESS("contactless"),

    @SerializedName("keyed_in")
    KEYED_IN("keyed_in"),

    @SerializedName("online")
    ONLINE("online"),

    @SerializedName("swipe")
    SWIPE("swipe");

    @Getter(onMethod_ = {@Override})
    private final String value;

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

  public enum Wallet implements ApiRequestParams.EnumParam {
    @SerializedName("apple_pay")
    APPLE_PAY("apple_pay"),

    @SerializedName("google_pay")
    GOOGLE_PAY("google_pay"),

    @SerializedName("samsung_pay")
    SAMSUNG_PAY("samsung_pay");

    @Getter(onMethod_ = {@Override})
    private final String value;

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy