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

com.stripe.param.SubscriptionItemUpdateParams Maven / Gradle / Ivy

There is a newer version: 28.1.0-beta.3
Show newest version
// File generated from our OpenAPI spec
package com.stripe.param;

import com.google.gson.annotations.SerializedName;
import com.stripe.net.ApiRequestParams;
import com.stripe.param.common.EmptyParam;
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 SubscriptionItemUpdateParams extends ApiRequestParams {
  /**
   * Define thresholds at which an invoice will be sent, and the subscription advanced to a new
   * billing period. When updating, pass an empty string to remove previously-defined thresholds.
   */
  @SerializedName("billing_thresholds")
  Object billingThresholds;

  /** The coupons to redeem into discounts for the subscription item. */
  @SerializedName("discounts")
  Object discounts;

  /** 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;

  /**
   * Set of key-value pairs that you can attach
   * to an object. This can be useful for storing additional information about the object in a
   * structured format. Individual keys can be unset by posting an empty value to them. All keys can
   * be unset by posting an empty value to {@code metadata}.
   */
  @SerializedName("metadata")
  Object metadata;

  /**
   * Indicates if a customer is on or off-session while an invoice payment is attempted. Defaults to
   * {@code false} (on-session).
   */
  @SerializedName("off_session")
  Boolean offSession;

  /**
   * Use {@code allow_incomplete} to transition the subscription to {@code status=past_due} if a
   * payment is required but cannot be paid. This allows you to manage scenarios where additional
   * user actions are needed to pay a subscription's invoice. For example, SCA regulation may
   * require 3DS authentication to complete payment. See the SCA Migration
   * Guide for Billing to learn more. This is the default behavior.
   *
   * 

Use {@code default_incomplete} to transition the subscription to {@code status=past_due} * when payment is required and await explicit confirmation of the invoice's payment intent. This * allows simpler management of scenarios where additional user actions are needed to pay a * subscription’s invoice. Such as failed payments, SCA * regulation, or collecting a mandate for a bank debit payment method. * *

Use {@code pending_if_incomplete} to update the subscription using pending updates. When * you use {@code pending_if_incomplete} you can only pass the parameters supported * by pending updates. * *

Use {@code error_if_incomplete} if you want Stripe to return an HTTP 402 status code if a * subscription's invoice cannot be paid. For example, if a payment method requires 3DS * authentication due to SCA regulation and further user action is needed, this parameter does not * update the subscription and returns an error instead. This was the default behavior for API * versions prior to 2019-03-14. See the changelog to learn more. */ @SerializedName("payment_behavior") PaymentBehavior paymentBehavior; /** The identifier of the new plan for this subscription item. */ @SerializedName("plan") Object plan; /** * The ID of the price object. One of {@code price} or {@code price_data} is required. When * changing a subscription item's price, {@code quantity} is set to 1 unless a {@code quantity} * parameter is provided. */ @SerializedName("price") Object price; /** * Data used to generate a new Price object * inline. One of {@code price} or {@code price_data} is required. */ @SerializedName("price_data") PriceData priceData; /** * Determines how to handle prorations when the billing * cycle changes (e.g., when switching plans, resetting {@code billing_cycle_anchor=now}, or * starting a trial), or if an item's {@code quantity} changes. The default value is {@code * create_prorations}. */ @SerializedName("proration_behavior") ProrationBehavior prorationBehavior; /** * If set, the proration will be calculated as though the subscription was updated at the given * time. This can be used to apply the same proration that was previewed with the upcoming invoice endpoint. */ @SerializedName("proration_date") Long prorationDate; /** The quantity you'd like to apply to the subscription item you're creating. */ @SerializedName("quantity") Long quantity; /** * A list of Tax Rate ids. These Tax Rates * will override the {@code * default_tax_rates} on the Subscription. When updating, pass an empty string to remove * previously-defined tax rates. */ @SerializedName("tax_rates") Object taxRates; private SubscriptionItemUpdateParams( Object billingThresholds, Object discounts, List expand, Map extraParams, Object metadata, Boolean offSession, PaymentBehavior paymentBehavior, Object plan, Object price, PriceData priceData, ProrationBehavior prorationBehavior, Long prorationDate, Long quantity, Object taxRates) { this.billingThresholds = billingThresholds; this.discounts = discounts; this.expand = expand; this.extraParams = extraParams; this.metadata = metadata; this.offSession = offSession; this.paymentBehavior = paymentBehavior; this.plan = plan; this.price = price; this.priceData = priceData; this.prorationBehavior = prorationBehavior; this.prorationDate = prorationDate; this.quantity = quantity; this.taxRates = taxRates; } public static Builder builder() { return new Builder(); } public static class Builder { private Object billingThresholds; private Object discounts; private List expand; private Map extraParams; private Object metadata; private Boolean offSession; private PaymentBehavior paymentBehavior; private Object plan; private Object price; private PriceData priceData; private ProrationBehavior prorationBehavior; private Long prorationDate; private Long quantity; private Object taxRates; /** Finalize and obtain parameter instance from this builder. */ public SubscriptionItemUpdateParams build() { return new SubscriptionItemUpdateParams( this.billingThresholds, this.discounts, this.expand, this.extraParams, this.metadata, this.offSession, this.paymentBehavior, this.plan, this.price, this.priceData, this.prorationBehavior, this.prorationDate, this.quantity, this.taxRates); } /** * Define thresholds at which an invoice will be sent, and the subscription advanced to a new * billing period. When updating, pass an empty string to remove previously-defined thresholds. */ public Builder setBillingThresholds( SubscriptionItemUpdateParams.BillingThresholds billingThresholds) { this.billingThresholds = billingThresholds; return this; } /** * Define thresholds at which an invoice will be sent, and the subscription advanced to a new * billing period. When updating, pass an empty string to remove previously-defined thresholds. */ public Builder setBillingThresholds(EmptyParam billingThresholds) { this.billingThresholds = billingThresholds; return this; } /** * Add an element to `discounts` list. A list is initialized for the first `add/addAll` call, * and subsequent calls adds additional elements to the original list. See {@link * SubscriptionItemUpdateParams#discounts} for the field documentation. */ @SuppressWarnings("unchecked") public Builder addDiscount(SubscriptionItemUpdateParams.Discount element) { if (this.discounts == null || this.discounts instanceof EmptyParam) { this.discounts = new ArrayList(); } ((List) this.discounts).add(element); return this; } /** * Add all elements to `discounts` list. A list is initialized for the first `add/addAll` call, * and subsequent calls adds additional elements to the original list. See {@link * SubscriptionItemUpdateParams#discounts} for the field documentation. */ @SuppressWarnings("unchecked") public Builder addAllDiscount(List elements) { if (this.discounts == null || this.discounts instanceof EmptyParam) { this.discounts = new ArrayList(); } ((List) this.discounts).addAll(elements); return this; } /** The coupons to redeem into discounts for the subscription item. */ public Builder setDiscounts(EmptyParam discounts) { this.discounts = discounts; return this; } /** The coupons to redeem into discounts for the subscription item. */ public Builder setDiscounts(List discounts) { this.discounts = discounts; 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 * SubscriptionItemUpdateParams#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 * SubscriptionItemUpdateParams#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 * SubscriptionItemUpdateParams#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 SubscriptionItemUpdateParams#extraParams} for the field documentation. */ public Builder putAllExtraParam(Map map) { if (this.extraParams == null) { this.extraParams = new HashMap<>(); } this.extraParams.putAll(map); return this; } /** * Add a key/value pair to `metadata` 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 * SubscriptionItemUpdateParams#metadata} for the field documentation. */ @SuppressWarnings("unchecked") public Builder putMetadata(String key, String value) { if (this.metadata == null || this.metadata instanceof EmptyParam) { this.metadata = new HashMap(); } ((Map) this.metadata).put(key, value); return this; } /** * Add all map key/value pairs to `metadata` 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 SubscriptionItemUpdateParams#metadata} for the field documentation. */ @SuppressWarnings("unchecked") public Builder putAllMetadata(Map map) { if (this.metadata == null || this.metadata instanceof EmptyParam) { this.metadata = new HashMap(); } ((Map) this.metadata).putAll(map); return this; } /** * Set of key-value pairs that you can attach * to an object. This can be useful for storing additional information about the object in a * structured format. Individual keys can be unset by posting an empty value to them. All keys * can be unset by posting an empty value to {@code metadata}. */ public Builder setMetadata(EmptyParam metadata) { this.metadata = metadata; return this; } /** * Set of key-value pairs that you can attach * to an object. This can be useful for storing additional information about the object in a * structured format. Individual keys can be unset by posting an empty value to them. All keys * can be unset by posting an empty value to {@code metadata}. */ public Builder setMetadata(Map metadata) { this.metadata = metadata; return this; } /** * Indicates if a customer is on or off-session while an invoice payment is attempted. Defaults * to {@code false} (on-session). */ public Builder setOffSession(Boolean offSession) { this.offSession = offSession; return this; } /** * Use {@code allow_incomplete} to transition the subscription to {@code status=past_due} if a * payment is required but cannot be paid. This allows you to manage scenarios where additional * user actions are needed to pay a subscription's invoice. For example, SCA regulation may * require 3DS authentication to complete payment. See the SCA Migration * Guide for Billing to learn more. This is the default behavior. * *

Use {@code default_incomplete} to transition the subscription to {@code status=past_due} * when payment is required and await explicit confirmation of the invoice's payment intent. * This allows simpler management of scenarios where additional user actions are needed to pay a * subscription’s invoice. Such as failed payments, SCA * regulation, or collecting a mandate for a bank debit payment method. * *

Use {@code pending_if_incomplete} to update the subscription using pending updates. * When you use {@code pending_if_incomplete} you can only pass the parameters supported * by pending updates. * *

Use {@code error_if_incomplete} if you want Stripe to return an HTTP 402 status code if a * subscription's invoice cannot be paid. For example, if a payment method requires 3DS * authentication due to SCA regulation and further user action is needed, this parameter does * not update the subscription and returns an error instead. This was the default behavior for * API versions prior to 2019-03-14. See the changelog to learn more. */ public Builder setPaymentBehavior( SubscriptionItemUpdateParams.PaymentBehavior paymentBehavior) { this.paymentBehavior = paymentBehavior; return this; } /** The identifier of the new plan for this subscription item. */ public Builder setPlan(String plan) { this.plan = plan; return this; } /** The identifier of the new plan for this subscription item. */ public Builder setPlan(EmptyParam plan) { this.plan = plan; return this; } /** * The ID of the price object. One of {@code price} or {@code price_data} is required. When * changing a subscription item's price, {@code quantity} is set to 1 unless a {@code quantity} * parameter is provided. */ public Builder setPrice(String price) { this.price = price; return this; } /** * The ID of the price object. One of {@code price} or {@code price_data} is required. When * changing a subscription item's price, {@code quantity} is set to 1 unless a {@code quantity} * parameter is provided. */ public Builder setPrice(EmptyParam price) { this.price = price; return this; } /** * Data used to generate a new Price object * inline. One of {@code price} or {@code price_data} is required. */ public Builder setPriceData(SubscriptionItemUpdateParams.PriceData priceData) { this.priceData = priceData; return this; } /** * Determines how to handle prorations when the * billing cycle changes (e.g., when switching plans, resetting {@code * billing_cycle_anchor=now}, or starting a trial), or if an item's {@code quantity} changes. * The default value is {@code create_prorations}. */ public Builder setProrationBehavior( SubscriptionItemUpdateParams.ProrationBehavior prorationBehavior) { this.prorationBehavior = prorationBehavior; return this; } /** * If set, the proration will be calculated as though the subscription was updated at the given * time. This can be used to apply the same proration that was previewed with the upcoming invoice endpoint. */ public Builder setProrationDate(Long prorationDate) { this.prorationDate = prorationDate; return this; } /** The quantity you'd like to apply to the subscription item you're creating. */ public Builder setQuantity(Long quantity) { this.quantity = quantity; return this; } /** * Add an element to `taxRates` list. A list is initialized for the first `add/addAll` call, and * subsequent calls adds additional elements to the original list. See {@link * SubscriptionItemUpdateParams#taxRates} for the field documentation. */ @SuppressWarnings("unchecked") public Builder addTaxRate(String element) { if (this.taxRates == null || this.taxRates instanceof EmptyParam) { this.taxRates = new ArrayList(); } ((List) this.taxRates).add(element); return this; } /** * Add all elements to `taxRates` list. A list is initialized for the first `add/addAll` call, * and subsequent calls adds additional elements to the original list. See {@link * SubscriptionItemUpdateParams#taxRates} for the field documentation. */ @SuppressWarnings("unchecked") public Builder addAllTaxRate(List elements) { if (this.taxRates == null || this.taxRates instanceof EmptyParam) { this.taxRates = new ArrayList(); } ((List) this.taxRates).addAll(elements); return this; } /** * A list of Tax Rate ids. These Tax Rates * will override the {@code * default_tax_rates} on the Subscription. When updating, pass an empty string to remove * previously-defined tax rates. */ public Builder setTaxRates(EmptyParam taxRates) { this.taxRates = taxRates; return this; } /** * A list of Tax Rate ids. These Tax Rates * will override the {@code * default_tax_rates} on the Subscription. When updating, pass an empty string to remove * previously-defined tax rates. */ public Builder setTaxRates(List taxRates) { this.taxRates = taxRates; return this; } } @Getter public static class BillingThresholds { /** * 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. Number of units that meets the billing threshold to advance the * subscription to a new billing period (e.g., it takes 10 $5 units to meet a $50 monetary * threshold) */ @SerializedName("usage_gte") Long usageGte; private BillingThresholds(Map extraParams, Long usageGte) { this.extraParams = extraParams; this.usageGte = usageGte; } public static Builder builder() { return new Builder(); } public static class Builder { private Map extraParams; private Long usageGte; /** Finalize and obtain parameter instance from this builder. */ public SubscriptionItemUpdateParams.BillingThresholds build() { return new SubscriptionItemUpdateParams.BillingThresholds(this.extraParams, this.usageGte); } /** * 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 * SubscriptionItemUpdateParams.BillingThresholds#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 SubscriptionItemUpdateParams.BillingThresholds#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. Number of units that meets the billing threshold to advance the * subscription to a new billing period (e.g., it takes 10 $5 units to meet a $50 monetary * threshold) */ public Builder setUsageGte(Long usageGte) { this.usageGte = usageGte; return this; } } } @Getter public static class Discount { /** ID of the coupon to create a new discount for. */ @SerializedName("coupon") Object coupon; /** ID of an existing discount on the object (or one of its ancestors) to reuse. */ @SerializedName("discount") Object discount; /** Details to determine how long the discount should be applied for. */ @SerializedName("discount_end") DiscountEnd discountEnd; /** * 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; /** ID of the promotion code to create a new discount for. */ @SerializedName("promotion_code") Object promotionCode; private Discount( Object coupon, Object discount, DiscountEnd discountEnd, Map extraParams, Object promotionCode) { this.coupon = coupon; this.discount = discount; this.discountEnd = discountEnd; this.extraParams = extraParams; this.promotionCode = promotionCode; } public static Builder builder() { return new Builder(); } public static class Builder { private Object coupon; private Object discount; private DiscountEnd discountEnd; private Map extraParams; private Object promotionCode; /** Finalize and obtain parameter instance from this builder. */ public SubscriptionItemUpdateParams.Discount build() { return new SubscriptionItemUpdateParams.Discount( this.coupon, this.discount, this.discountEnd, this.extraParams, this.promotionCode); } /** ID of the coupon to create a new discount for. */ public Builder setCoupon(String coupon) { this.coupon = coupon; return this; } /** ID of the coupon to create a new discount for. */ public Builder setCoupon(EmptyParam coupon) { this.coupon = coupon; return this; } /** ID of an existing discount on the object (or one of its ancestors) to reuse. */ public Builder setDiscount(String discount) { this.discount = discount; return this; } /** ID of an existing discount on the object (or one of its ancestors) to reuse. */ public Builder setDiscount(EmptyParam discount) { this.discount = discount; return this; } /** Details to determine how long the discount should be applied for. */ public Builder setDiscountEnd(SubscriptionItemUpdateParams.Discount.DiscountEnd discountEnd) { this.discountEnd = discountEnd; 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 * SubscriptionItemUpdateParams.Discount#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 SubscriptionItemUpdateParams.Discount#extraParams} for the field documentation. */ public Builder putAllExtraParam(Map map) { if (this.extraParams == null) { this.extraParams = new HashMap<>(); } this.extraParams.putAll(map); return this; } /** ID of the promotion code to create a new discount for. */ public Builder setPromotionCode(String promotionCode) { this.promotionCode = promotionCode; return this; } /** ID of the promotion code to create a new discount for. */ public Builder setPromotionCode(EmptyParam promotionCode) { this.promotionCode = promotionCode; return this; } } @Getter public static class DiscountEnd { /** Time span for the redeemed discount. */ @SerializedName("duration") Duration duration; /** * 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; /** A precise Unix timestamp for the discount to end. Must be in the future. */ @SerializedName("timestamp") Long timestamp; /** * Required. The type of calculation made to determine when the discount * ends. */ @SerializedName("type") Type type; private DiscountEnd( Duration duration, Map extraParams, Long timestamp, Type type) { this.duration = duration; this.extraParams = extraParams; this.timestamp = timestamp; this.type = type; } public static Builder builder() { return new Builder(); } public static class Builder { private Duration duration; private Map extraParams; private Long timestamp; private Type type; /** Finalize and obtain parameter instance from this builder. */ public SubscriptionItemUpdateParams.Discount.DiscountEnd build() { return new SubscriptionItemUpdateParams.Discount.DiscountEnd( this.duration, this.extraParams, this.timestamp, this.type); } /** Time span for the redeemed discount. */ public Builder setDuration( SubscriptionItemUpdateParams.Discount.DiscountEnd.Duration duration) { this.duration = duration; 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 SubscriptionItemUpdateParams.Discount.DiscountEnd#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 SubscriptionItemUpdateParams.Discount.DiscountEnd#extraParams} for the * field documentation. */ public Builder putAllExtraParam(Map map) { if (this.extraParams == null) { this.extraParams = new HashMap<>(); } this.extraParams.putAll(map); return this; } /** A precise Unix timestamp for the discount to end. Must be in the future. */ public Builder setTimestamp(Long timestamp) { this.timestamp = timestamp; return this; } /** * Required. The type of calculation made to determine when the discount * ends. */ public Builder setType(SubscriptionItemUpdateParams.Discount.DiscountEnd.Type type) { this.type = type; return this; } } @Getter public static class Duration { /** * 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. Specifies a type of interval unit. Either {@code day}, {@code * week}, {@code month} or {@code year}. */ @SerializedName("interval") Interval interval; /** * Required. The number of intervals, as an whole number greater than 0. * Stripe multiplies this by the interval type to get the overall duration. */ @SerializedName("interval_count") Long intervalCount; private Duration(Map extraParams, Interval interval, Long intervalCount) { this.extraParams = extraParams; this.interval = interval; this.intervalCount = intervalCount; } public static Builder builder() { return new Builder(); } public static class Builder { private Map extraParams; private Interval interval; private Long intervalCount; /** Finalize and obtain parameter instance from this builder. */ public SubscriptionItemUpdateParams.Discount.DiscountEnd.Duration build() { return new SubscriptionItemUpdateParams.Discount.DiscountEnd.Duration( this.extraParams, this.interval, this.intervalCount); } /** * 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 SubscriptionItemUpdateParams.Discount.DiscountEnd.Duration#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 SubscriptionItemUpdateParams.Discount.DiscountEnd.Duration#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. Specifies a type of interval unit. Either {@code day}, * {@code week}, {@code month} or {@code year}. */ public Builder setInterval( SubscriptionItemUpdateParams.Discount.DiscountEnd.Duration.Interval interval) { this.interval = interval; return this; } /** * Required. The number of intervals, as an whole number greater than 0. * Stripe multiplies this by the interval type to get the overall duration. */ public Builder setIntervalCount(Long intervalCount) { this.intervalCount = intervalCount; return this; } } public enum Interval implements ApiRequestParams.EnumParam { @SerializedName("day") DAY("day"), @SerializedName("month") MONTH("month"), @SerializedName("week") WEEK("week"), @SerializedName("year") YEAR("year"); @Getter(onMethod_ = {@Override}) private final String value; Interval(String value) { this.value = value; } } } public enum Type implements ApiRequestParams.EnumParam { @SerializedName("duration") DURATION("duration"), @SerializedName("timestamp") TIMESTAMP("timestamp"); @Getter(onMethod_ = {@Override}) private final String value; Type(String value) { this.value = value; } } } } @Getter public static class PriceData { /** * Required. Three-letter ISO currency code, in lowercase. * Must be a supported currency. */ @SerializedName("currency") Object currency; /** * 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 ID of the product that this price will belong to. */ @SerializedName("product") Object product; /** * Required. The recurring components of a price such as {@code interval} and * {@code interval_count}. */ @SerializedName("recurring") Recurring recurring; /** * Only required if a default * tax behavior was not provided in the Stripe Tax settings. Specifies whether the price is * considered inclusive of taxes or exclusive of taxes. One of {@code inclusive}, {@code * exclusive}, or {@code unspecified}. Once specified as either {@code inclusive} or {@code * exclusive}, it cannot be changed. */ @SerializedName("tax_behavior") TaxBehavior taxBehavior; /** * A positive integer in cents (or local equivalent) (or 0 for a free price) representing how * much to charge. */ @SerializedName("unit_amount") Long unitAmount; /** * Same as {@code unit_amount}, but accepts a decimal value in cents (or local equivalent) with * at most 12 decimal places. Only one of {@code unit_amount} and {@code unit_amount_decimal} * can be set. */ @SerializedName("unit_amount_decimal") Object unitAmountDecimal; private PriceData( Object currency, Map extraParams, Object product, Recurring recurring, TaxBehavior taxBehavior, Long unitAmount, Object unitAmountDecimal) { this.currency = currency; this.extraParams = extraParams; this.product = product; this.recurring = recurring; this.taxBehavior = taxBehavior; this.unitAmount = unitAmount; this.unitAmountDecimal = unitAmountDecimal; } public static Builder builder() { return new Builder(); } public static class Builder { private Object currency; private Map extraParams; private Object product; private Recurring recurring; private TaxBehavior taxBehavior; private Long unitAmount; private Object unitAmountDecimal; /** Finalize and obtain parameter instance from this builder. */ public SubscriptionItemUpdateParams.PriceData build() { return new SubscriptionItemUpdateParams.PriceData( this.currency, this.extraParams, this.product, this.recurring, this.taxBehavior, this.unitAmount, this.unitAmountDecimal); } /** * Required. Three-letter ISO currency code, in * lowercase. Must be a supported currency. */ public Builder setCurrency(String currency) { this.currency = currency; return this; } /** * Required. Three-letter ISO currency code, in * lowercase. Must be a supported currency. */ public Builder setCurrency(EmptyParam currency) { this.currency = currency; 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 * SubscriptionItemUpdateParams.PriceData#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 SubscriptionItemUpdateParams.PriceData#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 ID of the product that this price will belong to. */ public Builder setProduct(String product) { this.product = product; return this; } /** Required. The ID of the product that this price will belong to. */ public Builder setProduct(EmptyParam product) { this.product = product; return this; } /** * Required. The recurring components of a price such as {@code interval} and * {@code interval_count}. */ public Builder setRecurring(SubscriptionItemUpdateParams.PriceData.Recurring recurring) { this.recurring = recurring; return this; } /** * Only required if a default * tax behavior was not provided in the Stripe Tax settings. Specifies whether the price * is considered inclusive of taxes or exclusive of taxes. One of {@code inclusive}, {@code * exclusive}, or {@code unspecified}. Once specified as either {@code inclusive} or {@code * exclusive}, it cannot be changed. */ public Builder setTaxBehavior( SubscriptionItemUpdateParams.PriceData.TaxBehavior taxBehavior) { this.taxBehavior = taxBehavior; return this; } /** * A positive integer in cents (or local equivalent) (or 0 for a free price) representing how * much to charge. */ public Builder setUnitAmount(Long unitAmount) { this.unitAmount = unitAmount; return this; } /** * Same as {@code unit_amount}, but accepts a decimal value in cents (or local equivalent) * with at most 12 decimal places. Only one of {@code unit_amount} and {@code * unit_amount_decimal} can be set. */ public Builder setUnitAmountDecimal(BigDecimal unitAmountDecimal) { this.unitAmountDecimal = unitAmountDecimal; return this; } /** * Same as {@code unit_amount}, but accepts a decimal value in cents (or local equivalent) * with at most 12 decimal places. Only one of {@code unit_amount} and {@code * unit_amount_decimal} can be set. */ public Builder setUnitAmountDecimal(EmptyParam unitAmountDecimal) { this.unitAmountDecimal = unitAmountDecimal; return this; } } @Getter public static class Recurring { /** * 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. Specifies billing frequency. Either {@code day}, {@code week}, * {@code month} or {@code year}. */ @SerializedName("interval") Interval interval; /** * The number of intervals between subscription billings. For example, {@code interval=month} * and {@code interval_count=3} bills every 3 months. Maximum of three years interval allowed * (3 years, 36 months, or 156 weeks). */ @SerializedName("interval_count") Long intervalCount; private Recurring(Map extraParams, Interval interval, Long intervalCount) { this.extraParams = extraParams; this.interval = interval; this.intervalCount = intervalCount; } public static Builder builder() { return new Builder(); } public static class Builder { private Map extraParams; private Interval interval; private Long intervalCount; /** Finalize and obtain parameter instance from this builder. */ public SubscriptionItemUpdateParams.PriceData.Recurring build() { return new SubscriptionItemUpdateParams.PriceData.Recurring( this.extraParams, this.interval, this.intervalCount); } /** * 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 SubscriptionItemUpdateParams.PriceData.Recurring#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 SubscriptionItemUpdateParams.PriceData.Recurring#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. Specifies billing frequency. Either {@code day}, {@code week}, * {@code month} or {@code year}. */ public Builder setInterval( SubscriptionItemUpdateParams.PriceData.Recurring.Interval interval) { this.interval = interval; return this; } /** * The number of intervals between subscription billings. For example, {@code * interval=month} and {@code interval_count=3} bills every 3 months. Maximum of three years * interval allowed (3 years, 36 months, or 156 weeks). */ public Builder setIntervalCount(Long intervalCount) { this.intervalCount = intervalCount; return this; } } public enum Interval implements ApiRequestParams.EnumParam { @SerializedName("day") DAY("day"), @SerializedName("month") MONTH("month"), @SerializedName("week") WEEK("week"), @SerializedName("year") YEAR("year"); @Getter(onMethod_ = {@Override}) private final String value; Interval(String value) { this.value = value; } } } public enum TaxBehavior implements ApiRequestParams.EnumParam { @SerializedName("exclusive") EXCLUSIVE("exclusive"), @SerializedName("inclusive") INCLUSIVE("inclusive"), @SerializedName("unspecified") UNSPECIFIED("unspecified"); @Getter(onMethod_ = {@Override}) private final String value; TaxBehavior(String value) { this.value = value; } } } public enum PaymentBehavior implements ApiRequestParams.EnumParam { @SerializedName("allow_incomplete") ALLOW_INCOMPLETE("allow_incomplete"), @SerializedName("default_incomplete") DEFAULT_INCOMPLETE("default_incomplete"), @SerializedName("error_if_incomplete") ERROR_IF_INCOMPLETE("error_if_incomplete"), @SerializedName("pending_if_incomplete") PENDING_IF_INCOMPLETE("pending_if_incomplete"); @Getter(onMethod_ = {@Override}) private final String value; PaymentBehavior(String value) { this.value = value; } } public enum ProrationBehavior implements ApiRequestParams.EnumParam { @SerializedName("always_invoice") ALWAYS_INVOICE("always_invoice"), @SerializedName("create_prorations") CREATE_PRORATIONS("create_prorations"), @SerializedName("none") NONE("none"); @Getter(onMethod_ = {@Override}) private final String value; ProrationBehavior(String value) { this.value = value; } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy