• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

stripe / stripe-java / #16624

07 Nov 2024 10:04PM UTC coverage: 12.419% (-0.1%) from 12.519%
#16624

push

github

web-flow
Merge pull request #1917 from stripe/latest-codegen-beta

Update generated code for beta

17 of 1341 new or added lines in 57 files covered. (1.27%)

33 existing lines in 29 files now uncovered.

18855 of 151828 relevant lines covered (12.42%)

0.12 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

2.26
/src/main/java/com/stripe/param/PaymentLinkUpdateParams.java
1
// File generated from our OpenAPI spec
2
package com.stripe.param;
3

4
import com.google.gson.annotations.SerializedName;
5
import com.stripe.net.ApiRequestParams;
6
import com.stripe.param.common.EmptyParam;
7
import java.util.ArrayList;
8
import java.util.HashMap;
9
import java.util.List;
10
import java.util.Map;
11
import lombok.Getter;
12

13
@Getter
14
public class PaymentLinkUpdateParams extends ApiRequestParams {
15
  /**
16
   * Whether the payment link's {@code url} is active. If {@code false}, customers visiting the URL
17
   * will be shown a page saying that the link has been deactivated.
18
   */
19
  @SerializedName("active")
20
  Boolean active;
21

22
  /** Behavior after the purchase is complete. */
23
  @SerializedName("after_completion")
24
  AfterCompletion afterCompletion;
25

26
  /** Enables user redeemable promotion codes. */
27
  @SerializedName("allow_promotion_codes")
28
  Boolean allowPromotionCodes;
29

30
  /** Configuration for automatic tax collection. */
31
  @SerializedName("automatic_tax")
32
  AutomaticTax automaticTax;
33

34
  /** Configuration for collecting the customer's billing address. Defaults to {@code auto}. */
35
  @SerializedName("billing_address_collection")
36
  BillingAddressCollection billingAddressCollection;
37

38
  /**
39
   * Collect additional information from your customer using custom fields. Up to 3 fields are
40
   * supported.
41
   */
42
  @SerializedName("custom_fields")
43
  Object customFields;
44

45
  /** Display additional text for your customers using custom text. */
46
  @SerializedName("custom_text")
47
  CustomText customText;
48

49
  /**
50
   * Configures whether <a href="https://stripe.com/docs/api/checkout/sessions">checkout
51
   * sessions</a> created by this payment link create a <a
52
   * href="https://stripe.com/docs/api/customers">Customer</a>.
53
   */
54
  @SerializedName("customer_creation")
55
  CustomerCreation customerCreation;
56

57
  /** Specifies which fields in the response should be expanded. */
58
  @SerializedName("expand")
59
  List<String> expand;
60

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

70
  /** The custom message to be displayed to a customer when a payment link is no longer active. */
71
  @SerializedName("inactive_message")
72
  Object inactiveMessage;
73

74
  /** Generate a post-purchase Invoice for one-time payments. */
75
  @SerializedName("invoice_creation")
76
  InvoiceCreation invoiceCreation;
77

78
  /**
79
   * The line items representing what is being sold. Each line item represents an item being sold.
80
   * Up to 20 line items are supported.
81
   */
82
  @SerializedName("line_items")
83
  List<PaymentLinkUpdateParams.LineItem> lineItems;
84

85
  /**
86
   * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that you can attach
87
   * to an object. This can be useful for storing additional information about the object in a
88
   * structured format. Individual keys can be unset by posting an empty value to them. All keys can
89
   * be unset by posting an empty value to {@code metadata}. Metadata associated with this Payment
90
   * Link will automatically be copied to <a
91
   * href="https://stripe.com/docs/api/checkout/sessions">checkout sessions</a> created by this
92
   * payment link.
93
   */
94
  @SerializedName("metadata")
95
  Map<String, String> metadata;
96

97
  /**
98
   * A subset of parameters to be passed to PaymentIntent creation for Checkout Sessions in {@code
99
   * payment} mode.
100
   */
101
  @SerializedName("payment_intent_data")
102
  PaymentIntentData paymentIntentData;
103

104
  /**
105
   * Specify whether Checkout should collect a payment method. When set to {@code if_required},
106
   * Checkout will not collect a payment method when the total due for the session is 0.This may
107
   * occur if the Checkout Session includes a free trial or a discount.
108
   *
109
   * <p>Can only be set in {@code subscription} mode. Defaults to {@code always}.
110
   *
111
   * <p>If you'd like information on how to collect a payment method outside of Checkout, read the
112
   * guide on <a href="https://stripe.com/docs/payments/checkout/free-trials">configuring
113
   * subscriptions with a free trial</a>.
114
   */
115
  @SerializedName("payment_method_collection")
116
  PaymentMethodCollection paymentMethodCollection;
117

118
  /**
119
   * The list of payment method types that customers can use. Pass an empty string to enable dynamic
120
   * payment methods that use your <a
121
   * href="https://dashboard.stripe.com/settings/payment_methods">payment method settings</a>.
122
   */
123
  @SerializedName("payment_method_types")
124
  Object paymentMethodTypes;
125

126
  /** Settings that restrict the usage of a payment link. */
127
  @SerializedName("restrictions")
128
  Object restrictions;
129

130
  /** Configuration for collecting the customer's shipping address. */
131
  @SerializedName("shipping_address_collection")
132
  Object shippingAddressCollection;
133

134
  /**
135
   * Describes the type of transaction being performed in order to customize relevant text on the
136
   * page, such as the submit button. Changing this value will also affect the hostname in the <a
137
   * href="https://stripe.com/docs/api/payment_links/payment_links/object#url">url</a> property
138
   * (example: {@code donate.stripe.com}).
139
   */
140
  @SerializedName("submit_type")
141
  SubmitType submitType;
142

143
  /**
144
   * When creating a subscription, the specified configuration data will be used. There must be at
145
   * least one line item with a recurring price to use {@code subscription_data}.
146
   */
147
  @SerializedName("subscription_data")
148
  SubscriptionData subscriptionData;
149

150
  /** Controls tax ID collection during checkout. */
151
  @SerializedName("tax_id_collection")
152
  TaxIdCollection taxIdCollection;
153

154
  private PaymentLinkUpdateParams(
155
      Boolean active,
156
      AfterCompletion afterCompletion,
157
      Boolean allowPromotionCodes,
158
      AutomaticTax automaticTax,
159
      BillingAddressCollection billingAddressCollection,
160
      Object customFields,
161
      CustomText customText,
162
      CustomerCreation customerCreation,
163
      List<String> expand,
164
      Map<String, Object> extraParams,
165
      Object inactiveMessage,
166
      InvoiceCreation invoiceCreation,
167
      List<PaymentLinkUpdateParams.LineItem> lineItems,
168
      Map<String, String> metadata,
169
      PaymentIntentData paymentIntentData,
170
      PaymentMethodCollection paymentMethodCollection,
171
      Object paymentMethodTypes,
172
      Object restrictions,
173
      Object shippingAddressCollection,
174
      SubmitType submitType,
175
      SubscriptionData subscriptionData,
176
      TaxIdCollection taxIdCollection) {
1✔
177
    this.active = active;
1✔
178
    this.afterCompletion = afterCompletion;
1✔
179
    this.allowPromotionCodes = allowPromotionCodes;
1✔
180
    this.automaticTax = automaticTax;
1✔
181
    this.billingAddressCollection = billingAddressCollection;
1✔
182
    this.customFields = customFields;
1✔
183
    this.customText = customText;
1✔
184
    this.customerCreation = customerCreation;
1✔
185
    this.expand = expand;
1✔
186
    this.extraParams = extraParams;
1✔
187
    this.inactiveMessage = inactiveMessage;
1✔
188
    this.invoiceCreation = invoiceCreation;
1✔
189
    this.lineItems = lineItems;
1✔
190
    this.metadata = metadata;
1✔
191
    this.paymentIntentData = paymentIntentData;
1✔
192
    this.paymentMethodCollection = paymentMethodCollection;
1✔
193
    this.paymentMethodTypes = paymentMethodTypes;
1✔
194
    this.restrictions = restrictions;
1✔
195
    this.shippingAddressCollection = shippingAddressCollection;
1✔
196
    this.submitType = submitType;
1✔
197
    this.subscriptionData = subscriptionData;
1✔
198
    this.taxIdCollection = taxIdCollection;
1✔
199
  }
1✔
200

201
  public static Builder builder() {
202
    return new Builder();
1✔
203
  }
204

205
  public static class Builder {
1✔
206
    private Boolean active;
207

208
    private AfterCompletion afterCompletion;
209

210
    private Boolean allowPromotionCodes;
211

212
    private AutomaticTax automaticTax;
213

214
    private BillingAddressCollection billingAddressCollection;
215

216
    private Object customFields;
217

218
    private CustomText customText;
219

220
    private CustomerCreation customerCreation;
221

222
    private List<String> expand;
223

224
    private Map<String, Object> extraParams;
225

226
    private Object inactiveMessage;
227

228
    private InvoiceCreation invoiceCreation;
229

230
    private List<PaymentLinkUpdateParams.LineItem> lineItems;
231

232
    private Map<String, String> metadata;
233

234
    private PaymentIntentData paymentIntentData;
235

236
    private PaymentMethodCollection paymentMethodCollection;
237

238
    private Object paymentMethodTypes;
239

240
    private Object restrictions;
241

242
    private Object shippingAddressCollection;
243

244
    private SubmitType submitType;
245

246
    private SubscriptionData subscriptionData;
247

248
    private TaxIdCollection taxIdCollection;
249

250
    /** Finalize and obtain parameter instance from this builder. */
251
    public PaymentLinkUpdateParams build() {
252
      return new PaymentLinkUpdateParams(
1✔
253
          this.active,
254
          this.afterCompletion,
255
          this.allowPromotionCodes,
256
          this.automaticTax,
257
          this.billingAddressCollection,
258
          this.customFields,
259
          this.customText,
260
          this.customerCreation,
261
          this.expand,
262
          this.extraParams,
263
          this.inactiveMessage,
264
          this.invoiceCreation,
265
          this.lineItems,
266
          this.metadata,
267
          this.paymentIntentData,
268
          this.paymentMethodCollection,
269
          this.paymentMethodTypes,
270
          this.restrictions,
271
          this.shippingAddressCollection,
272
          this.submitType,
273
          this.subscriptionData,
274
          this.taxIdCollection);
275
    }
276

277
    /**
278
     * Whether the payment link's {@code url} is active. If {@code false}, customers visiting the
279
     * URL will be shown a page saying that the link has been deactivated.
280
     */
281
    public Builder setActive(Boolean active) {
282
      this.active = active;
1✔
283
      return this;
1✔
284
    }
285

286
    /** Behavior after the purchase is complete. */
287
    public Builder setAfterCompletion(PaymentLinkUpdateParams.AfterCompletion afterCompletion) {
288
      this.afterCompletion = afterCompletion;
×
289
      return this;
×
290
    }
291

292
    /** Enables user redeemable promotion codes. */
293
    public Builder setAllowPromotionCodes(Boolean allowPromotionCodes) {
294
      this.allowPromotionCodes = allowPromotionCodes;
×
295
      return this;
×
296
    }
297

298
    /** Configuration for automatic tax collection. */
299
    public Builder setAutomaticTax(PaymentLinkUpdateParams.AutomaticTax automaticTax) {
300
      this.automaticTax = automaticTax;
×
301
      return this;
×
302
    }
303

304
    /** Configuration for collecting the customer's billing address. Defaults to {@code auto}. */
305
    public Builder setBillingAddressCollection(
306
        PaymentLinkUpdateParams.BillingAddressCollection billingAddressCollection) {
307
      this.billingAddressCollection = billingAddressCollection;
×
308
      return this;
×
309
    }
310

311
    /**
312
     * Add an element to `customFields` list. A list is initialized for the first `add/addAll` call,
313
     * and subsequent calls adds additional elements to the original list. See {@link
314
     * PaymentLinkUpdateParams#customFields} for the field documentation.
315
     */
316
    @SuppressWarnings("unchecked")
317
    public Builder addCustomField(PaymentLinkUpdateParams.CustomField element) {
318
      if (this.customFields == null || this.customFields instanceof EmptyParam) {
×
319
        this.customFields = new ArrayList<PaymentLinkUpdateParams.CustomField>();
×
320
      }
321
      ((List<PaymentLinkUpdateParams.CustomField>) this.customFields).add(element);
×
322
      return this;
×
323
    }
324

325
    /**
326
     * Add all elements to `customFields` list. A list is initialized for the first `add/addAll`
327
     * call, and subsequent calls adds additional elements to the original list. See {@link
328
     * PaymentLinkUpdateParams#customFields} for the field documentation.
329
     */
330
    @SuppressWarnings("unchecked")
331
    public Builder addAllCustomField(List<PaymentLinkUpdateParams.CustomField> elements) {
332
      if (this.customFields == null || this.customFields instanceof EmptyParam) {
×
333
        this.customFields = new ArrayList<PaymentLinkUpdateParams.CustomField>();
×
334
      }
335
      ((List<PaymentLinkUpdateParams.CustomField>) this.customFields).addAll(elements);
×
336
      return this;
×
337
    }
338

339
    /**
340
     * Collect additional information from your customer using custom fields. Up to 3 fields are
341
     * supported.
342
     */
343
    public Builder setCustomFields(EmptyParam customFields) {
344
      this.customFields = customFields;
×
345
      return this;
×
346
    }
347

348
    /**
349
     * Collect additional information from your customer using custom fields. Up to 3 fields are
350
     * supported.
351
     */
352
    public Builder setCustomFields(List<PaymentLinkUpdateParams.CustomField> customFields) {
353
      this.customFields = customFields;
×
354
      return this;
×
355
    }
356

357
    /** Display additional text for your customers using custom text. */
358
    public Builder setCustomText(PaymentLinkUpdateParams.CustomText customText) {
359
      this.customText = customText;
×
360
      return this;
×
361
    }
362

363
    /**
364
     * Configures whether <a href="https://stripe.com/docs/api/checkout/sessions">checkout
365
     * sessions</a> created by this payment link create a <a
366
     * href="https://stripe.com/docs/api/customers">Customer</a>.
367
     */
368
    public Builder setCustomerCreation(PaymentLinkUpdateParams.CustomerCreation customerCreation) {
369
      this.customerCreation = customerCreation;
×
370
      return this;
×
371
    }
372

373
    /**
374
     * Add an element to `expand` list. A list is initialized for the first `add/addAll` call, and
375
     * subsequent calls adds additional elements to the original list. See {@link
376
     * PaymentLinkUpdateParams#expand} for the field documentation.
377
     */
378
    public Builder addExpand(String element) {
379
      if (this.expand == null) {
×
380
        this.expand = new ArrayList<>();
×
381
      }
382
      this.expand.add(element);
×
383
      return this;
×
384
    }
385

386
    /**
387
     * Add all elements to `expand` list. A list is initialized for the first `add/addAll` call, and
388
     * subsequent calls adds additional elements to the original list. See {@link
389
     * PaymentLinkUpdateParams#expand} for the field documentation.
390
     */
391
    public Builder addAllExpand(List<String> elements) {
392
      if (this.expand == null) {
×
393
        this.expand = new ArrayList<>();
×
394
      }
395
      this.expand.addAll(elements);
×
396
      return this;
×
397
    }
398

399
    /**
400
     * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
401
     * call, and subsequent calls add additional key/value pairs to the original map. See {@link
402
     * PaymentLinkUpdateParams#extraParams} for the field documentation.
403
     */
404
    public Builder putExtraParam(String key, Object value) {
405
      if (this.extraParams == null) {
×
406
        this.extraParams = new HashMap<>();
×
407
      }
408
      this.extraParams.put(key, value);
×
409
      return this;
×
410
    }
411

412
    /**
413
     * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
414
     * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
415
     * See {@link PaymentLinkUpdateParams#extraParams} for the field documentation.
416
     */
417
    public Builder putAllExtraParam(Map<String, Object> map) {
418
      if (this.extraParams == null) {
×
419
        this.extraParams = new HashMap<>();
×
420
      }
421
      this.extraParams.putAll(map);
×
422
      return this;
×
423
    }
424

425
    /** The custom message to be displayed to a customer when a payment link is no longer active. */
426
    public Builder setInactiveMessage(String inactiveMessage) {
427
      this.inactiveMessage = inactiveMessage;
×
428
      return this;
×
429
    }
430

431
    /** The custom message to be displayed to a customer when a payment link is no longer active. */
432
    public Builder setInactiveMessage(EmptyParam inactiveMessage) {
433
      this.inactiveMessage = inactiveMessage;
×
434
      return this;
×
435
    }
436

437
    /** Generate a post-purchase Invoice for one-time payments. */
438
    public Builder setInvoiceCreation(PaymentLinkUpdateParams.InvoiceCreation invoiceCreation) {
439
      this.invoiceCreation = invoiceCreation;
×
440
      return this;
×
441
    }
442

443
    /**
444
     * Add an element to `lineItems` list. A list is initialized for the first `add/addAll` call,
445
     * and subsequent calls adds additional elements to the original list. See {@link
446
     * PaymentLinkUpdateParams#lineItems} for the field documentation.
447
     */
448
    public Builder addLineItem(PaymentLinkUpdateParams.LineItem element) {
449
      if (this.lineItems == null) {
×
450
        this.lineItems = new ArrayList<>();
×
451
      }
452
      this.lineItems.add(element);
×
453
      return this;
×
454
    }
455

456
    /**
457
     * Add all elements to `lineItems` list. A list is initialized for the first `add/addAll` call,
458
     * and subsequent calls adds additional elements to the original list. See {@link
459
     * PaymentLinkUpdateParams#lineItems} for the field documentation.
460
     */
461
    public Builder addAllLineItem(List<PaymentLinkUpdateParams.LineItem> elements) {
462
      if (this.lineItems == null) {
×
463
        this.lineItems = new ArrayList<>();
×
464
      }
465
      this.lineItems.addAll(elements);
×
466
      return this;
×
467
    }
468

469
    /**
470
     * Add a key/value pair to `metadata` map. A map is initialized for the first `put/putAll` call,
471
     * and subsequent calls add additional key/value pairs to the original map. See {@link
472
     * PaymentLinkUpdateParams#metadata} for the field documentation.
473
     */
474
    public Builder putMetadata(String key, String value) {
475
      if (this.metadata == null) {
×
476
        this.metadata = new HashMap<>();
×
477
      }
478
      this.metadata.put(key, value);
×
479
      return this;
×
480
    }
481

482
    /**
483
     * Add all map key/value pairs to `metadata` map. A map is initialized for the first
484
     * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
485
     * See {@link PaymentLinkUpdateParams#metadata} for the field documentation.
486
     */
487
    public Builder putAllMetadata(Map<String, String> map) {
488
      if (this.metadata == null) {
×
489
        this.metadata = new HashMap<>();
×
490
      }
491
      this.metadata.putAll(map);
×
492
      return this;
×
493
    }
494

495
    /**
496
     * A subset of parameters to be passed to PaymentIntent creation for Checkout Sessions in {@code
497
     * payment} mode.
498
     */
499
    public Builder setPaymentIntentData(
500
        PaymentLinkUpdateParams.PaymentIntentData paymentIntentData) {
501
      this.paymentIntentData = paymentIntentData;
×
502
      return this;
×
503
    }
504

505
    /**
506
     * Specify whether Checkout should collect a payment method. When set to {@code if_required},
507
     * Checkout will not collect a payment method when the total due for the session is 0.This may
508
     * occur if the Checkout Session includes a free trial or a discount.
509
     *
510
     * <p>Can only be set in {@code subscription} mode. Defaults to {@code always}.
511
     *
512
     * <p>If you'd like information on how to collect a payment method outside of Checkout, read the
513
     * guide on <a href="https://stripe.com/docs/payments/checkout/free-trials">configuring
514
     * subscriptions with a free trial</a>.
515
     */
516
    public Builder setPaymentMethodCollection(
517
        PaymentLinkUpdateParams.PaymentMethodCollection paymentMethodCollection) {
518
      this.paymentMethodCollection = paymentMethodCollection;
×
519
      return this;
×
520
    }
521

522
    /**
523
     * Add an element to `paymentMethodTypes` list. A list is initialized for the first `add/addAll`
524
     * call, and subsequent calls adds additional elements to the original list. See {@link
525
     * PaymentLinkUpdateParams#paymentMethodTypes} for the field documentation.
526
     */
527
    @SuppressWarnings("unchecked")
528
    public Builder addPaymentMethodType(PaymentLinkUpdateParams.PaymentMethodType element) {
529
      if (this.paymentMethodTypes == null || this.paymentMethodTypes instanceof EmptyParam) {
×
530
        this.paymentMethodTypes = new ArrayList<PaymentLinkUpdateParams.PaymentMethodType>();
×
531
      }
532
      ((List<PaymentLinkUpdateParams.PaymentMethodType>) this.paymentMethodTypes).add(element);
×
533
      return this;
×
534
    }
535

536
    /**
537
     * Add all elements to `paymentMethodTypes` list. A list is initialized for the first
538
     * `add/addAll` call, and subsequent calls adds additional elements to the original list. See
539
     * {@link PaymentLinkUpdateParams#paymentMethodTypes} for the field documentation.
540
     */
541
    @SuppressWarnings("unchecked")
542
    public Builder addAllPaymentMethodType(
543
        List<PaymentLinkUpdateParams.PaymentMethodType> elements) {
544
      if (this.paymentMethodTypes == null || this.paymentMethodTypes instanceof EmptyParam) {
×
545
        this.paymentMethodTypes = new ArrayList<PaymentLinkUpdateParams.PaymentMethodType>();
×
546
      }
547
      ((List<PaymentLinkUpdateParams.PaymentMethodType>) this.paymentMethodTypes).addAll(elements);
×
548
      return this;
×
549
    }
550

551
    /**
552
     * The list of payment method types that customers can use. Pass an empty string to enable
553
     * dynamic payment methods that use your <a
554
     * href="https://dashboard.stripe.com/settings/payment_methods">payment method settings</a>.
555
     */
556
    public Builder setPaymentMethodTypes(EmptyParam paymentMethodTypes) {
557
      this.paymentMethodTypes = paymentMethodTypes;
×
558
      return this;
×
559
    }
560

561
    /**
562
     * The list of payment method types that customers can use. Pass an empty string to enable
563
     * dynamic payment methods that use your <a
564
     * href="https://dashboard.stripe.com/settings/payment_methods">payment method settings</a>.
565
     */
566
    public Builder setPaymentMethodTypes(
567
        List<PaymentLinkUpdateParams.PaymentMethodType> paymentMethodTypes) {
568
      this.paymentMethodTypes = paymentMethodTypes;
×
569
      return this;
×
570
    }
571

572
    /** Settings that restrict the usage of a payment link. */
573
    public Builder setRestrictions(PaymentLinkUpdateParams.Restrictions restrictions) {
574
      this.restrictions = restrictions;
×
575
      return this;
×
576
    }
577

578
    /** Settings that restrict the usage of a payment link. */
579
    public Builder setRestrictions(EmptyParam restrictions) {
580
      this.restrictions = restrictions;
×
581
      return this;
×
582
    }
583

584
    /** Configuration for collecting the customer's shipping address. */
585
    public Builder setShippingAddressCollection(
586
        PaymentLinkUpdateParams.ShippingAddressCollection shippingAddressCollection) {
587
      this.shippingAddressCollection = shippingAddressCollection;
×
588
      return this;
×
589
    }
590

591
    /** Configuration for collecting the customer's shipping address. */
592
    public Builder setShippingAddressCollection(EmptyParam shippingAddressCollection) {
593
      this.shippingAddressCollection = shippingAddressCollection;
×
594
      return this;
×
595
    }
596

597
    /**
598
     * Describes the type of transaction being performed in order to customize relevant text on the
599
     * page, such as the submit button. Changing this value will also affect the hostname in the <a
600
     * href="https://stripe.com/docs/api/payment_links/payment_links/object#url">url</a> property
601
     * (example: {@code donate.stripe.com}).
602
     */
603
    public Builder setSubmitType(PaymentLinkUpdateParams.SubmitType submitType) {
NEW
604
      this.submitType = submitType;
×
NEW
605
      return this;
×
606
    }
607

608
    /**
609
     * When creating a subscription, the specified configuration data will be used. There must be at
610
     * least one line item with a recurring price to use {@code subscription_data}.
611
     */
612
    public Builder setSubscriptionData(PaymentLinkUpdateParams.SubscriptionData subscriptionData) {
613
      this.subscriptionData = subscriptionData;
×
614
      return this;
×
615
    }
616

617
    /** Controls tax ID collection during checkout. */
618
    public Builder setTaxIdCollection(PaymentLinkUpdateParams.TaxIdCollection taxIdCollection) {
619
      this.taxIdCollection = taxIdCollection;
×
620
      return this;
×
621
    }
622
  }
623

624
  @Getter
625
  public static class AfterCompletion {
626
    /**
627
     * Map of extra parameters for custom features not available in this client library. The content
628
     * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
629
     * key/value pair is serialized as if the key is a root-level field (serialized) name in this
630
     * param object. Effectively, this map is flattened to its parent instance.
631
     */
632
    @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
633
    Map<String, Object> extraParams;
634

635
    /** Configuration when {@code type=hosted_confirmation}. */
636
    @SerializedName("hosted_confirmation")
637
    HostedConfirmation hostedConfirmation;
638

639
    /** Configuration when {@code type=redirect}. */
640
    @SerializedName("redirect")
641
    Redirect redirect;
642

643
    /**
644
     * <strong>Required.</strong> The specified behavior after the purchase is complete. Either
645
     * {@code redirect} or {@code hosted_confirmation}.
646
     */
647
    @SerializedName("type")
648
    Type type;
649

650
    private AfterCompletion(
651
        Map<String, Object> extraParams,
652
        HostedConfirmation hostedConfirmation,
653
        Redirect redirect,
654
        Type type) {
×
655
      this.extraParams = extraParams;
×
656
      this.hostedConfirmation = hostedConfirmation;
×
657
      this.redirect = redirect;
×
658
      this.type = type;
×
659
    }
×
660

661
    public static Builder builder() {
662
      return new Builder();
×
663
    }
664

665
    public static class Builder {
×
666
      private Map<String, Object> extraParams;
667

668
      private HostedConfirmation hostedConfirmation;
669

670
      private Redirect redirect;
671

672
      private Type type;
673

674
      /** Finalize and obtain parameter instance from this builder. */
675
      public PaymentLinkUpdateParams.AfterCompletion build() {
676
        return new PaymentLinkUpdateParams.AfterCompletion(
×
677
            this.extraParams, this.hostedConfirmation, this.redirect, this.type);
678
      }
679

680
      /**
681
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
682
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
683
       * PaymentLinkUpdateParams.AfterCompletion#extraParams} for the field documentation.
684
       */
685
      public Builder putExtraParam(String key, Object value) {
686
        if (this.extraParams == null) {
×
687
          this.extraParams = new HashMap<>();
×
688
        }
689
        this.extraParams.put(key, value);
×
690
        return this;
×
691
      }
692

693
      /**
694
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
695
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
696
       * See {@link PaymentLinkUpdateParams.AfterCompletion#extraParams} for the field
697
       * documentation.
698
       */
699
      public Builder putAllExtraParam(Map<String, Object> map) {
700
        if (this.extraParams == null) {
×
701
          this.extraParams = new HashMap<>();
×
702
        }
703
        this.extraParams.putAll(map);
×
704
        return this;
×
705
      }
706

707
      /** Configuration when {@code type=hosted_confirmation}. */
708
      public Builder setHostedConfirmation(
709
          PaymentLinkUpdateParams.AfterCompletion.HostedConfirmation hostedConfirmation) {
710
        this.hostedConfirmation = hostedConfirmation;
×
711
        return this;
×
712
      }
713

714
      /** Configuration when {@code type=redirect}. */
715
      public Builder setRedirect(PaymentLinkUpdateParams.AfterCompletion.Redirect redirect) {
716
        this.redirect = redirect;
×
717
        return this;
×
718
      }
719

720
      /**
721
       * <strong>Required.</strong> The specified behavior after the purchase is complete. Either
722
       * {@code redirect} or {@code hosted_confirmation}.
723
       */
724
      public Builder setType(PaymentLinkUpdateParams.AfterCompletion.Type type) {
725
        this.type = type;
×
726
        return this;
×
727
      }
728
    }
729

730
    @Getter
731
    public static class HostedConfirmation {
732
      /** A custom message to display to the customer after the purchase is complete. */
733
      @SerializedName("custom_message")
734
      Object customMessage;
735

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

745
      private HostedConfirmation(Object customMessage, Map<String, Object> extraParams) {
×
746
        this.customMessage = customMessage;
×
747
        this.extraParams = extraParams;
×
748
      }
×
749

750
      public static Builder builder() {
751
        return new Builder();
×
752
      }
753

754
      public static class Builder {
×
755
        private Object customMessage;
756

757
        private Map<String, Object> extraParams;
758

759
        /** Finalize and obtain parameter instance from this builder. */
760
        public PaymentLinkUpdateParams.AfterCompletion.HostedConfirmation build() {
761
          return new PaymentLinkUpdateParams.AfterCompletion.HostedConfirmation(
×
762
              this.customMessage, this.extraParams);
763
        }
764

765
        /** A custom message to display to the customer after the purchase is complete. */
766
        public Builder setCustomMessage(String customMessage) {
767
          this.customMessage = customMessage;
×
768
          return this;
×
769
        }
770

771
        /** A custom message to display to the customer after the purchase is complete. */
772
        public Builder setCustomMessage(EmptyParam customMessage) {
773
          this.customMessage = customMessage;
×
774
          return this;
×
775
        }
776

777
        /**
778
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
779
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
780
         * map. See {@link PaymentLinkUpdateParams.AfterCompletion.HostedConfirmation#extraParams}
781
         * for the field documentation.
782
         */
783
        public Builder putExtraParam(String key, Object value) {
784
          if (this.extraParams == null) {
×
785
            this.extraParams = new HashMap<>();
×
786
          }
787
          this.extraParams.put(key, value);
×
788
          return this;
×
789
        }
790

791
        /**
792
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
793
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
794
         * map. See {@link PaymentLinkUpdateParams.AfterCompletion.HostedConfirmation#extraParams}
795
         * for the field documentation.
796
         */
797
        public Builder putAllExtraParam(Map<String, Object> map) {
798
          if (this.extraParams == null) {
×
799
            this.extraParams = new HashMap<>();
×
800
          }
801
          this.extraParams.putAll(map);
×
802
          return this;
×
803
        }
804
      }
805
    }
806

807
    @Getter
808
    public static class Redirect {
809
      /**
810
       * Map of extra parameters for custom features not available in this client library. The
811
       * content in this map is not serialized under this field's {@code @SerializedName} value.
812
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
813
       * name in this param object. Effectively, this map is flattened to its parent instance.
814
       */
815
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
816
      Map<String, Object> extraParams;
817

818
      /**
819
       * <strong>Required.</strong> The URL the customer will be redirected to after the purchase is
820
       * complete. You can embed {@code {CHECKOUT_SESSION_ID}} into the URL to have the {@code id}
821
       * of the completed <a
822
       * href="https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-id">checkout
823
       * session</a> included.
824
       */
825
      @SerializedName("url")
826
      Object url;
827

828
      private Redirect(Map<String, Object> extraParams, Object url) {
×
829
        this.extraParams = extraParams;
×
830
        this.url = url;
×
831
      }
×
832

833
      public static Builder builder() {
834
        return new Builder();
×
835
      }
836

837
      public static class Builder {
×
838
        private Map<String, Object> extraParams;
839

840
        private Object url;
841

842
        /** Finalize and obtain parameter instance from this builder. */
843
        public PaymentLinkUpdateParams.AfterCompletion.Redirect build() {
844
          return new PaymentLinkUpdateParams.AfterCompletion.Redirect(this.extraParams, this.url);
×
845
        }
846

847
        /**
848
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
849
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
850
         * map. See {@link PaymentLinkUpdateParams.AfterCompletion.Redirect#extraParams} for the
851
         * field documentation.
852
         */
853
        public Builder putExtraParam(String key, Object value) {
854
          if (this.extraParams == null) {
×
855
            this.extraParams = new HashMap<>();
×
856
          }
857
          this.extraParams.put(key, value);
×
858
          return this;
×
859
        }
860

861
        /**
862
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
863
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
864
         * map. See {@link PaymentLinkUpdateParams.AfterCompletion.Redirect#extraParams} for the
865
         * field documentation.
866
         */
867
        public Builder putAllExtraParam(Map<String, Object> map) {
868
          if (this.extraParams == null) {
×
869
            this.extraParams = new HashMap<>();
×
870
          }
871
          this.extraParams.putAll(map);
×
872
          return this;
×
873
        }
874

875
        /**
876
         * <strong>Required.</strong> The URL the customer will be redirected to after the purchase
877
         * is complete. You can embed {@code {CHECKOUT_SESSION_ID}} into the URL to have the {@code
878
         * id} of the completed <a
879
         * href="https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-id">checkout
880
         * session</a> included.
881
         */
882
        public Builder setUrl(String url) {
883
          this.url = url;
×
884
          return this;
×
885
        }
886

887
        /**
888
         * <strong>Required.</strong> The URL the customer will be redirected to after the purchase
889
         * is complete. You can embed {@code {CHECKOUT_SESSION_ID}} into the URL to have the {@code
890
         * id} of the completed <a
891
         * href="https://stripe.com/docs/api/checkout/sessions/object#checkout_session_object-id">checkout
892
         * session</a> included.
893
         */
894
        public Builder setUrl(EmptyParam url) {
895
          this.url = url;
×
896
          return this;
×
897
        }
898
      }
899
    }
900

901
    public enum Type implements ApiRequestParams.EnumParam {
×
902
      @SerializedName("hosted_confirmation")
×
903
      HOSTED_CONFIRMATION("hosted_confirmation"),
904

905
      @SerializedName("redirect")
×
906
      REDIRECT("redirect");
907

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

911
      Type(String value) {
×
912
        this.value = value;
×
913
      }
×
914
    }
915
  }
916

917
  @Getter
918
  public static class AutomaticTax {
919
    /**
920
     * <strong>Required.</strong> If {@code true}, tax will be calculated automatically using the
921
     * customer's location.
922
     */
923
    @SerializedName("enabled")
924
    Boolean enabled;
925

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

935
    /**
936
     * The account that's liable for tax. If set, the business address and tax registrations
937
     * required to perform the tax calculation are loaded from this account. The tax transaction is
938
     * returned in the report of the connected account.
939
     */
940
    @SerializedName("liability")
941
    Liability liability;
942

943
    private AutomaticTax(Boolean enabled, Map<String, Object> extraParams, Liability liability) {
×
944
      this.enabled = enabled;
×
945
      this.extraParams = extraParams;
×
946
      this.liability = liability;
×
947
    }
×
948

949
    public static Builder builder() {
950
      return new Builder();
×
951
    }
952

953
    public static class Builder {
×
954
      private Boolean enabled;
955

956
      private Map<String, Object> extraParams;
957

958
      private Liability liability;
959

960
      /** Finalize and obtain parameter instance from this builder. */
961
      public PaymentLinkUpdateParams.AutomaticTax build() {
962
        return new PaymentLinkUpdateParams.AutomaticTax(
×
963
            this.enabled, this.extraParams, this.liability);
964
      }
965

966
      /**
967
       * <strong>Required.</strong> If {@code true}, tax will be calculated automatically using the
968
       * customer's location.
969
       */
970
      public Builder setEnabled(Boolean enabled) {
971
        this.enabled = enabled;
×
972
        return this;
×
973
      }
974

975
      /**
976
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
977
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
978
       * PaymentLinkUpdateParams.AutomaticTax#extraParams} for the field documentation.
979
       */
980
      public Builder putExtraParam(String key, Object value) {
981
        if (this.extraParams == null) {
×
982
          this.extraParams = new HashMap<>();
×
983
        }
984
        this.extraParams.put(key, value);
×
985
        return this;
×
986
      }
987

988
      /**
989
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
990
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
991
       * See {@link PaymentLinkUpdateParams.AutomaticTax#extraParams} for the field documentation.
992
       */
993
      public Builder putAllExtraParam(Map<String, Object> map) {
994
        if (this.extraParams == null) {
×
995
          this.extraParams = new HashMap<>();
×
996
        }
997
        this.extraParams.putAll(map);
×
998
        return this;
×
999
      }
1000

1001
      /**
1002
       * The account that's liable for tax. If set, the business address and tax registrations
1003
       * required to perform the tax calculation are loaded from this account. The tax transaction
1004
       * is returned in the report of the connected account.
1005
       */
1006
      public Builder setLiability(PaymentLinkUpdateParams.AutomaticTax.Liability liability) {
1007
        this.liability = liability;
×
1008
        return this;
×
1009
      }
1010
    }
1011

1012
    @Getter
1013
    public static class Liability {
1014
      /** The connected account being referenced when {@code type} is {@code account}. */
1015
      @SerializedName("account")
1016
      Object account;
1017

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

1027
      /** <strong>Required.</strong> Type of the account referenced in the request. */
1028
      @SerializedName("type")
1029
      Type type;
1030

1031
      private Liability(Object account, Map<String, Object> extraParams, Type type) {
×
1032
        this.account = account;
×
1033
        this.extraParams = extraParams;
×
1034
        this.type = type;
×
1035
      }
×
1036

1037
      public static Builder builder() {
1038
        return new Builder();
×
1039
      }
1040

1041
      public static class Builder {
×
1042
        private Object account;
1043

1044
        private Map<String, Object> extraParams;
1045

1046
        private Type type;
1047

1048
        /** Finalize and obtain parameter instance from this builder. */
1049
        public PaymentLinkUpdateParams.AutomaticTax.Liability build() {
1050
          return new PaymentLinkUpdateParams.AutomaticTax.Liability(
×
1051
              this.account, this.extraParams, this.type);
1052
        }
1053

1054
        /** The connected account being referenced when {@code type} is {@code account}. */
1055
        public Builder setAccount(String account) {
1056
          this.account = account;
×
1057
          return this;
×
1058
        }
1059

1060
        /** The connected account being referenced when {@code type} is {@code account}. */
1061
        public Builder setAccount(EmptyParam account) {
1062
          this.account = account;
×
1063
          return this;
×
1064
        }
1065

1066
        /**
1067
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
1068
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1069
         * map. See {@link PaymentLinkUpdateParams.AutomaticTax.Liability#extraParams} for the field
1070
         * documentation.
1071
         */
1072
        public Builder putExtraParam(String key, Object value) {
1073
          if (this.extraParams == null) {
×
1074
            this.extraParams = new HashMap<>();
×
1075
          }
1076
          this.extraParams.put(key, value);
×
1077
          return this;
×
1078
        }
1079

1080
        /**
1081
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
1082
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1083
         * map. See {@link PaymentLinkUpdateParams.AutomaticTax.Liability#extraParams} for the field
1084
         * documentation.
1085
         */
1086
        public Builder putAllExtraParam(Map<String, Object> map) {
1087
          if (this.extraParams == null) {
×
1088
            this.extraParams = new HashMap<>();
×
1089
          }
1090
          this.extraParams.putAll(map);
×
1091
          return this;
×
1092
        }
1093

1094
        /** <strong>Required.</strong> Type of the account referenced in the request. */
1095
        public Builder setType(PaymentLinkUpdateParams.AutomaticTax.Liability.Type type) {
1096
          this.type = type;
×
1097
          return this;
×
1098
        }
1099
      }
1100

1101
      public enum Type implements ApiRequestParams.EnumParam {
×
1102
        @SerializedName("account")
×
1103
        ACCOUNT("account"),
1104

1105
        @SerializedName("self")
×
1106
        SELF("self");
1107

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

1111
        Type(String value) {
×
1112
          this.value = value;
×
1113
        }
×
1114
      }
1115
    }
1116
  }
1117

1118
  @Getter
1119
  public static class CustomField {
1120
    /** Configuration for {@code type=dropdown} fields. */
1121
    @SerializedName("dropdown")
1122
    Dropdown dropdown;
1123

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

1133
    /**
1134
     * <strong>Required.</strong> String of your choice that your integration can use to reconcile
1135
     * this field. Must be unique to this field, alphanumeric, and up to 200 characters.
1136
     */
1137
    @SerializedName("key")
1138
    Object key;
1139

1140
    /** <strong>Required.</strong> The label for the field, displayed to the customer. */
1141
    @SerializedName("label")
1142
    Label label;
1143

1144
    /** Configuration for {@code type=numeric} fields. */
1145
    @SerializedName("numeric")
1146
    Numeric numeric;
1147

1148
    /**
1149
     * Whether the customer is required to complete the field before completing the Checkout
1150
     * Session. Defaults to {@code false}.
1151
     */
1152
    @SerializedName("optional")
1153
    Boolean optional;
1154

1155
    /** Configuration for {@code type=text} fields. */
1156
    @SerializedName("text")
1157
    Text text;
1158

1159
    /** <strong>Required.</strong> The type of the field. */
1160
    @SerializedName("type")
1161
    Type type;
1162

1163
    private CustomField(
1164
        Dropdown dropdown,
1165
        Map<String, Object> extraParams,
1166
        Object key,
1167
        Label label,
1168
        Numeric numeric,
1169
        Boolean optional,
1170
        Text text,
1171
        Type type) {
×
1172
      this.dropdown = dropdown;
×
1173
      this.extraParams = extraParams;
×
1174
      this.key = key;
×
1175
      this.label = label;
×
1176
      this.numeric = numeric;
×
1177
      this.optional = optional;
×
1178
      this.text = text;
×
1179
      this.type = type;
×
1180
    }
×
1181

1182
    public static Builder builder() {
1183
      return new Builder();
×
1184
    }
1185

1186
    public static class Builder {
×
1187
      private Dropdown dropdown;
1188

1189
      private Map<String, Object> extraParams;
1190

1191
      private Object key;
1192

1193
      private Label label;
1194

1195
      private Numeric numeric;
1196

1197
      private Boolean optional;
1198

1199
      private Text text;
1200

1201
      private Type type;
1202

1203
      /** Finalize and obtain parameter instance from this builder. */
1204
      public PaymentLinkUpdateParams.CustomField build() {
1205
        return new PaymentLinkUpdateParams.CustomField(
×
1206
            this.dropdown,
1207
            this.extraParams,
1208
            this.key,
1209
            this.label,
1210
            this.numeric,
1211
            this.optional,
1212
            this.text,
1213
            this.type);
1214
      }
1215

1216
      /** Configuration for {@code type=dropdown} fields. */
1217
      public Builder setDropdown(PaymentLinkUpdateParams.CustomField.Dropdown dropdown) {
1218
        this.dropdown = dropdown;
×
1219
        return this;
×
1220
      }
1221

1222
      /**
1223
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
1224
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
1225
       * PaymentLinkUpdateParams.CustomField#extraParams} for the field documentation.
1226
       */
1227
      public Builder putExtraParam(String key, Object value) {
1228
        if (this.extraParams == null) {
×
1229
          this.extraParams = new HashMap<>();
×
1230
        }
1231
        this.extraParams.put(key, value);
×
1232
        return this;
×
1233
      }
1234

1235
      /**
1236
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
1237
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
1238
       * See {@link PaymentLinkUpdateParams.CustomField#extraParams} for the field documentation.
1239
       */
1240
      public Builder putAllExtraParam(Map<String, Object> map) {
1241
        if (this.extraParams == null) {
×
1242
          this.extraParams = new HashMap<>();
×
1243
        }
1244
        this.extraParams.putAll(map);
×
1245
        return this;
×
1246
      }
1247

1248
      /**
1249
       * <strong>Required.</strong> String of your choice that your integration can use to reconcile
1250
       * this field. Must be unique to this field, alphanumeric, and up to 200 characters.
1251
       */
1252
      public Builder setKey(String key) {
1253
        this.key = key;
×
1254
        return this;
×
1255
      }
1256

1257
      /**
1258
       * <strong>Required.</strong> String of your choice that your integration can use to reconcile
1259
       * this field. Must be unique to this field, alphanumeric, and up to 200 characters.
1260
       */
1261
      public Builder setKey(EmptyParam key) {
1262
        this.key = key;
×
1263
        return this;
×
1264
      }
1265

1266
      /** <strong>Required.</strong> The label for the field, displayed to the customer. */
1267
      public Builder setLabel(PaymentLinkUpdateParams.CustomField.Label label) {
1268
        this.label = label;
×
1269
        return this;
×
1270
      }
1271

1272
      /** Configuration for {@code type=numeric} fields. */
1273
      public Builder setNumeric(PaymentLinkUpdateParams.CustomField.Numeric numeric) {
1274
        this.numeric = numeric;
×
1275
        return this;
×
1276
      }
1277

1278
      /**
1279
       * Whether the customer is required to complete the field before completing the Checkout
1280
       * Session. Defaults to {@code false}.
1281
       */
1282
      public Builder setOptional(Boolean optional) {
1283
        this.optional = optional;
×
1284
        return this;
×
1285
      }
1286

1287
      /** Configuration for {@code type=text} fields. */
1288
      public Builder setText(PaymentLinkUpdateParams.CustomField.Text text) {
1289
        this.text = text;
×
1290
        return this;
×
1291
      }
1292

1293
      /** <strong>Required.</strong> The type of the field. */
1294
      public Builder setType(PaymentLinkUpdateParams.CustomField.Type type) {
1295
        this.type = type;
×
1296
        return this;
×
1297
      }
1298
    }
1299

1300
    @Getter
1301
    public static class Dropdown {
1302
      /**
1303
       * Map of extra parameters for custom features not available in this client library. The
1304
       * content in this map is not serialized under this field's {@code @SerializedName} value.
1305
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
1306
       * name in this param object. Effectively, this map is flattened to its parent instance.
1307
       */
1308
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
1309
      Map<String, Object> extraParams;
1310

1311
      /**
1312
       * <strong>Required.</strong> The options available for the customer to select. Up to 200
1313
       * options allowed.
1314
       */
1315
      @SerializedName("options")
1316
      List<PaymentLinkUpdateParams.CustomField.Dropdown.Option> options;
1317

1318
      private Dropdown(
1319
          Map<String, Object> extraParams,
1320
          List<PaymentLinkUpdateParams.CustomField.Dropdown.Option> options) {
×
1321
        this.extraParams = extraParams;
×
1322
        this.options = options;
×
1323
      }
×
1324

1325
      public static Builder builder() {
1326
        return new Builder();
×
1327
      }
1328

1329
      public static class Builder {
×
1330
        private Map<String, Object> extraParams;
1331

1332
        private List<PaymentLinkUpdateParams.CustomField.Dropdown.Option> options;
1333

1334
        /** Finalize and obtain parameter instance from this builder. */
1335
        public PaymentLinkUpdateParams.CustomField.Dropdown build() {
1336
          return new PaymentLinkUpdateParams.CustomField.Dropdown(this.extraParams, this.options);
×
1337
        }
1338

1339
        /**
1340
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
1341
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1342
         * map. See {@link PaymentLinkUpdateParams.CustomField.Dropdown#extraParams} for the field
1343
         * documentation.
1344
         */
1345
        public Builder putExtraParam(String key, Object value) {
1346
          if (this.extraParams == null) {
×
1347
            this.extraParams = new HashMap<>();
×
1348
          }
1349
          this.extraParams.put(key, value);
×
1350
          return this;
×
1351
        }
1352

1353
        /**
1354
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
1355
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1356
         * map. See {@link PaymentLinkUpdateParams.CustomField.Dropdown#extraParams} for the field
1357
         * documentation.
1358
         */
1359
        public Builder putAllExtraParam(Map<String, Object> map) {
1360
          if (this.extraParams == null) {
×
1361
            this.extraParams = new HashMap<>();
×
1362
          }
1363
          this.extraParams.putAll(map);
×
1364
          return this;
×
1365
        }
1366

1367
        /**
1368
         * Add an element to `options` list. A list is initialized for the first `add/addAll` call,
1369
         * and subsequent calls adds additional elements to the original list. See {@link
1370
         * PaymentLinkUpdateParams.CustomField.Dropdown#options} for the field documentation.
1371
         */
1372
        public Builder addOption(PaymentLinkUpdateParams.CustomField.Dropdown.Option element) {
1373
          if (this.options == null) {
×
1374
            this.options = new ArrayList<>();
×
1375
          }
1376
          this.options.add(element);
×
1377
          return this;
×
1378
        }
1379

1380
        /**
1381
         * Add all elements to `options` list. A list is initialized for the first `add/addAll`
1382
         * call, and subsequent calls adds additional elements to the original list. See {@link
1383
         * PaymentLinkUpdateParams.CustomField.Dropdown#options} for the field documentation.
1384
         */
1385
        public Builder addAllOption(
1386
            List<PaymentLinkUpdateParams.CustomField.Dropdown.Option> elements) {
1387
          if (this.options == null) {
×
1388
            this.options = new ArrayList<>();
×
1389
          }
1390
          this.options.addAll(elements);
×
1391
          return this;
×
1392
        }
1393
      }
1394

1395
      @Getter
1396
      public static class Option {
1397
        /**
1398
         * Map of extra parameters for custom features not available in this client library. The
1399
         * content in this map is not serialized under this field's {@code @SerializedName} value.
1400
         * Instead, each key/value pair is serialized as if the key is a root-level field
1401
         * (serialized) name in this param object. Effectively, this map is flattened to its parent
1402
         * instance.
1403
         */
1404
        @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
1405
        Map<String, Object> extraParams;
1406

1407
        /**
1408
         * <strong>Required.</strong> The label for the option, displayed to the customer. Up to 100
1409
         * characters.
1410
         */
1411
        @SerializedName("label")
1412
        Object label;
1413

1414
        /**
1415
         * <strong>Required.</strong> The value for this option, not displayed to the customer, used
1416
         * by your integration to reconcile the option selected by the customer. Must be unique to
1417
         * this option, alphanumeric, and up to 100 characters.
1418
         */
1419
        @SerializedName("value")
1420
        Object value;
1421

1422
        private Option(Map<String, Object> extraParams, Object label, Object value) {
×
1423
          this.extraParams = extraParams;
×
1424
          this.label = label;
×
1425
          this.value = value;
×
1426
        }
×
1427

1428
        public static Builder builder() {
1429
          return new Builder();
×
1430
        }
1431

1432
        public static class Builder {
×
1433
          private Map<String, Object> extraParams;
1434

1435
          private Object label;
1436

1437
          private Object value;
1438

1439
          /** Finalize and obtain parameter instance from this builder. */
1440
          public PaymentLinkUpdateParams.CustomField.Dropdown.Option build() {
1441
            return new PaymentLinkUpdateParams.CustomField.Dropdown.Option(
×
1442
                this.extraParams, this.label, this.value);
1443
          }
1444

1445
          /**
1446
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
1447
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1448
           * map. See {@link PaymentLinkUpdateParams.CustomField.Dropdown.Option#extraParams} for
1449
           * the field documentation.
1450
           */
1451
          public Builder putExtraParam(String key, Object value) {
1452
            if (this.extraParams == null) {
×
1453
              this.extraParams = new HashMap<>();
×
1454
            }
1455
            this.extraParams.put(key, value);
×
1456
            return this;
×
1457
          }
1458

1459
          /**
1460
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
1461
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1462
           * map. See {@link PaymentLinkUpdateParams.CustomField.Dropdown.Option#extraParams} for
1463
           * the field documentation.
1464
           */
1465
          public Builder putAllExtraParam(Map<String, Object> map) {
1466
            if (this.extraParams == null) {
×
1467
              this.extraParams = new HashMap<>();
×
1468
            }
1469
            this.extraParams.putAll(map);
×
1470
            return this;
×
1471
          }
1472

1473
          /**
1474
           * <strong>Required.</strong> The label for the option, displayed to the customer. Up to
1475
           * 100 characters.
1476
           */
1477
          public Builder setLabel(String label) {
1478
            this.label = label;
×
1479
            return this;
×
1480
          }
1481

1482
          /**
1483
           * <strong>Required.</strong> The label for the option, displayed to the customer. Up to
1484
           * 100 characters.
1485
           */
1486
          public Builder setLabel(EmptyParam label) {
1487
            this.label = label;
×
1488
            return this;
×
1489
          }
1490

1491
          /**
1492
           * <strong>Required.</strong> The value for this option, not displayed to the customer,
1493
           * used by your integration to reconcile the option selected by the customer. Must be
1494
           * unique to this option, alphanumeric, and up to 100 characters.
1495
           */
1496
          public Builder setValue(String value) {
1497
            this.value = value;
×
1498
            return this;
×
1499
          }
1500

1501
          /**
1502
           * <strong>Required.</strong> The value for this option, not displayed to the customer,
1503
           * used by your integration to reconcile the option selected by the customer. Must be
1504
           * unique to this option, alphanumeric, and up to 100 characters.
1505
           */
1506
          public Builder setValue(EmptyParam value) {
1507
            this.value = value;
×
1508
            return this;
×
1509
          }
1510
        }
1511
      }
1512
    }
1513

1514
    @Getter
1515
    public static class Label {
1516
      /**
1517
       * <strong>Required.</strong> Custom text for the label, displayed to the customer. Up to 50
1518
       * characters.
1519
       */
1520
      @SerializedName("custom")
1521
      Object custom;
1522

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

1532
      /** <strong>Required.</strong> The type of the label. */
1533
      @SerializedName("type")
1534
      Type type;
1535

1536
      private Label(Object custom, Map<String, Object> extraParams, Type type) {
×
1537
        this.custom = custom;
×
1538
        this.extraParams = extraParams;
×
1539
        this.type = type;
×
1540
      }
×
1541

1542
      public static Builder builder() {
1543
        return new Builder();
×
1544
      }
1545

1546
      public static class Builder {
×
1547
        private Object custom;
1548

1549
        private Map<String, Object> extraParams;
1550

1551
        private Type type;
1552

1553
        /** Finalize and obtain parameter instance from this builder. */
1554
        public PaymentLinkUpdateParams.CustomField.Label build() {
1555
          return new PaymentLinkUpdateParams.CustomField.Label(
×
1556
              this.custom, this.extraParams, this.type);
1557
        }
1558

1559
        /**
1560
         * <strong>Required.</strong> Custom text for the label, displayed to the customer. Up to 50
1561
         * characters.
1562
         */
1563
        public Builder setCustom(String custom) {
1564
          this.custom = custom;
×
1565
          return this;
×
1566
        }
1567

1568
        /**
1569
         * <strong>Required.</strong> Custom text for the label, displayed to the customer. Up to 50
1570
         * characters.
1571
         */
1572
        public Builder setCustom(EmptyParam custom) {
1573
          this.custom = custom;
×
1574
          return this;
×
1575
        }
1576

1577
        /**
1578
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
1579
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1580
         * map. See {@link PaymentLinkUpdateParams.CustomField.Label#extraParams} for the field
1581
         * documentation.
1582
         */
1583
        public Builder putExtraParam(String key, Object value) {
1584
          if (this.extraParams == null) {
×
1585
            this.extraParams = new HashMap<>();
×
1586
          }
1587
          this.extraParams.put(key, value);
×
1588
          return this;
×
1589
        }
1590

1591
        /**
1592
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
1593
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1594
         * map. See {@link PaymentLinkUpdateParams.CustomField.Label#extraParams} for the field
1595
         * documentation.
1596
         */
1597
        public Builder putAllExtraParam(Map<String, Object> map) {
1598
          if (this.extraParams == null) {
×
1599
            this.extraParams = new HashMap<>();
×
1600
          }
1601
          this.extraParams.putAll(map);
×
1602
          return this;
×
1603
        }
1604

1605
        /** <strong>Required.</strong> The type of the label. */
1606
        public Builder setType(PaymentLinkUpdateParams.CustomField.Label.Type type) {
1607
          this.type = type;
×
1608
          return this;
×
1609
        }
1610
      }
1611

1612
      public enum Type implements ApiRequestParams.EnumParam {
×
1613
        @SerializedName("custom")
×
1614
        CUSTOM("custom");
1615

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

1619
        Type(String value) {
×
1620
          this.value = value;
×
1621
        }
×
1622
      }
1623
    }
1624

1625
    @Getter
1626
    public static class Numeric {
1627
      /**
1628
       * Map of extra parameters for custom features not available in this client library. The
1629
       * content in this map is not serialized under this field's {@code @SerializedName} value.
1630
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
1631
       * name in this param object. Effectively, this map is flattened to its parent instance.
1632
       */
1633
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
1634
      Map<String, Object> extraParams;
1635

1636
      /** The maximum character length constraint for the customer's input. */
1637
      @SerializedName("maximum_length")
1638
      Long maximumLength;
1639

1640
      /** The minimum character length requirement for the customer's input. */
1641
      @SerializedName("minimum_length")
1642
      Long minimumLength;
1643

1644
      private Numeric(Map<String, Object> extraParams, Long maximumLength, Long minimumLength) {
×
1645
        this.extraParams = extraParams;
×
1646
        this.maximumLength = maximumLength;
×
1647
        this.minimumLength = minimumLength;
×
1648
      }
×
1649

1650
      public static Builder builder() {
1651
        return new Builder();
×
1652
      }
1653

1654
      public static class Builder {
×
1655
        private Map<String, Object> extraParams;
1656

1657
        private Long maximumLength;
1658

1659
        private Long minimumLength;
1660

1661
        /** Finalize and obtain parameter instance from this builder. */
1662
        public PaymentLinkUpdateParams.CustomField.Numeric build() {
1663
          return new PaymentLinkUpdateParams.CustomField.Numeric(
×
1664
              this.extraParams, this.maximumLength, this.minimumLength);
1665
        }
1666

1667
        /**
1668
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
1669
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1670
         * map. See {@link PaymentLinkUpdateParams.CustomField.Numeric#extraParams} for the field
1671
         * documentation.
1672
         */
1673
        public Builder putExtraParam(String key, Object value) {
1674
          if (this.extraParams == null) {
×
1675
            this.extraParams = new HashMap<>();
×
1676
          }
1677
          this.extraParams.put(key, value);
×
1678
          return this;
×
1679
        }
1680

1681
        /**
1682
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
1683
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1684
         * map. See {@link PaymentLinkUpdateParams.CustomField.Numeric#extraParams} for the field
1685
         * documentation.
1686
         */
1687
        public Builder putAllExtraParam(Map<String, Object> map) {
1688
          if (this.extraParams == null) {
×
1689
            this.extraParams = new HashMap<>();
×
1690
          }
1691
          this.extraParams.putAll(map);
×
1692
          return this;
×
1693
        }
1694

1695
        /** The maximum character length constraint for the customer's input. */
1696
        public Builder setMaximumLength(Long maximumLength) {
1697
          this.maximumLength = maximumLength;
×
1698
          return this;
×
1699
        }
1700

1701
        /** The minimum character length requirement for the customer's input. */
1702
        public Builder setMinimumLength(Long minimumLength) {
1703
          this.minimumLength = minimumLength;
×
1704
          return this;
×
1705
        }
1706
      }
1707
    }
1708

1709
    @Getter
1710
    public static class Text {
1711
      /**
1712
       * Map of extra parameters for custom features not available in this client library. The
1713
       * content in this map is not serialized under this field's {@code @SerializedName} value.
1714
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
1715
       * name in this param object. Effectively, this map is flattened to its parent instance.
1716
       */
1717
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
1718
      Map<String, Object> extraParams;
1719

1720
      /** The maximum character length constraint for the customer's input. */
1721
      @SerializedName("maximum_length")
1722
      Long maximumLength;
1723

1724
      /** The minimum character length requirement for the customer's input. */
1725
      @SerializedName("minimum_length")
1726
      Long minimumLength;
1727

1728
      private Text(Map<String, Object> extraParams, Long maximumLength, Long minimumLength) {
×
1729
        this.extraParams = extraParams;
×
1730
        this.maximumLength = maximumLength;
×
1731
        this.minimumLength = minimumLength;
×
1732
      }
×
1733

1734
      public static Builder builder() {
1735
        return new Builder();
×
1736
      }
1737

1738
      public static class Builder {
×
1739
        private Map<String, Object> extraParams;
1740

1741
        private Long maximumLength;
1742

1743
        private Long minimumLength;
1744

1745
        /** Finalize and obtain parameter instance from this builder. */
1746
        public PaymentLinkUpdateParams.CustomField.Text build() {
1747
          return new PaymentLinkUpdateParams.CustomField.Text(
×
1748
              this.extraParams, this.maximumLength, this.minimumLength);
1749
        }
1750

1751
        /**
1752
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
1753
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1754
         * map. See {@link PaymentLinkUpdateParams.CustomField.Text#extraParams} for the field
1755
         * documentation.
1756
         */
1757
        public Builder putExtraParam(String key, Object value) {
1758
          if (this.extraParams == null) {
×
1759
            this.extraParams = new HashMap<>();
×
1760
          }
1761
          this.extraParams.put(key, value);
×
1762
          return this;
×
1763
        }
1764

1765
        /**
1766
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
1767
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1768
         * map. See {@link PaymentLinkUpdateParams.CustomField.Text#extraParams} for the field
1769
         * documentation.
1770
         */
1771
        public Builder putAllExtraParam(Map<String, Object> map) {
1772
          if (this.extraParams == null) {
×
1773
            this.extraParams = new HashMap<>();
×
1774
          }
1775
          this.extraParams.putAll(map);
×
1776
          return this;
×
1777
        }
1778

1779
        /** The maximum character length constraint for the customer's input. */
1780
        public Builder setMaximumLength(Long maximumLength) {
1781
          this.maximumLength = maximumLength;
×
1782
          return this;
×
1783
        }
1784

1785
        /** The minimum character length requirement for the customer's input. */
1786
        public Builder setMinimumLength(Long minimumLength) {
1787
          this.minimumLength = minimumLength;
×
1788
          return this;
×
1789
        }
1790
      }
1791
    }
1792

1793
    public enum Type implements ApiRequestParams.EnumParam {
×
1794
      @SerializedName("dropdown")
×
1795
      DROPDOWN("dropdown"),
1796

1797
      @SerializedName("numeric")
×
1798
      NUMERIC("numeric"),
1799

1800
      @SerializedName("text")
×
1801
      TEXT("text");
1802

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

1806
      Type(String value) {
×
1807
        this.value = value;
×
1808
      }
×
1809
    }
1810
  }
1811

1812
  @Getter
1813
  public static class CustomText {
1814
    /** Custom text that should be displayed after the payment confirmation button. */
1815
    @SerializedName("after_submit")
1816
    Object afterSubmit;
1817

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

1827
    /** Custom text that should be displayed alongside shipping address collection. */
1828
    @SerializedName("shipping_address")
1829
    Object shippingAddress;
1830

1831
    /** Custom text that should be displayed alongside the payment confirmation button. */
1832
    @SerializedName("submit")
1833
    Object submit;
1834

1835
    /**
1836
     * Custom text that should be displayed in place of the default terms of service agreement text.
1837
     */
1838
    @SerializedName("terms_of_service_acceptance")
1839
    Object termsOfServiceAcceptance;
1840

1841
    private CustomText(
1842
        Object afterSubmit,
1843
        Map<String, Object> extraParams,
1844
        Object shippingAddress,
1845
        Object submit,
1846
        Object termsOfServiceAcceptance) {
×
1847
      this.afterSubmit = afterSubmit;
×
1848
      this.extraParams = extraParams;
×
1849
      this.shippingAddress = shippingAddress;
×
1850
      this.submit = submit;
×
1851
      this.termsOfServiceAcceptance = termsOfServiceAcceptance;
×
1852
    }
×
1853

1854
    public static Builder builder() {
1855
      return new Builder();
×
1856
    }
1857

1858
    public static class Builder {
×
1859
      private Object afterSubmit;
1860

1861
      private Map<String, Object> extraParams;
1862

1863
      private Object shippingAddress;
1864

1865
      private Object submit;
1866

1867
      private Object termsOfServiceAcceptance;
1868

1869
      /** Finalize and obtain parameter instance from this builder. */
1870
      public PaymentLinkUpdateParams.CustomText build() {
1871
        return new PaymentLinkUpdateParams.CustomText(
×
1872
            this.afterSubmit,
1873
            this.extraParams,
1874
            this.shippingAddress,
1875
            this.submit,
1876
            this.termsOfServiceAcceptance);
1877
      }
1878

1879
      /** Custom text that should be displayed after the payment confirmation button. */
1880
      public Builder setAfterSubmit(PaymentLinkUpdateParams.CustomText.AfterSubmit afterSubmit) {
1881
        this.afterSubmit = afterSubmit;
×
1882
        return this;
×
1883
      }
1884

1885
      /** Custom text that should be displayed after the payment confirmation button. */
1886
      public Builder setAfterSubmit(EmptyParam afterSubmit) {
1887
        this.afterSubmit = afterSubmit;
×
1888
        return this;
×
1889
      }
1890

1891
      /**
1892
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
1893
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
1894
       * PaymentLinkUpdateParams.CustomText#extraParams} for the field documentation.
1895
       */
1896
      public Builder putExtraParam(String key, Object value) {
1897
        if (this.extraParams == null) {
×
1898
          this.extraParams = new HashMap<>();
×
1899
        }
1900
        this.extraParams.put(key, value);
×
1901
        return this;
×
1902
      }
1903

1904
      /**
1905
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
1906
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
1907
       * See {@link PaymentLinkUpdateParams.CustomText#extraParams} for the field documentation.
1908
       */
1909
      public Builder putAllExtraParam(Map<String, Object> map) {
1910
        if (this.extraParams == null) {
×
1911
          this.extraParams = new HashMap<>();
×
1912
        }
1913
        this.extraParams.putAll(map);
×
1914
        return this;
×
1915
      }
1916

1917
      /** Custom text that should be displayed alongside shipping address collection. */
1918
      public Builder setShippingAddress(
1919
          PaymentLinkUpdateParams.CustomText.ShippingAddress shippingAddress) {
1920
        this.shippingAddress = shippingAddress;
×
1921
        return this;
×
1922
      }
1923

1924
      /** Custom text that should be displayed alongside shipping address collection. */
1925
      public Builder setShippingAddress(EmptyParam shippingAddress) {
1926
        this.shippingAddress = shippingAddress;
×
1927
        return this;
×
1928
      }
1929

1930
      /** Custom text that should be displayed alongside the payment confirmation button. */
1931
      public Builder setSubmit(PaymentLinkUpdateParams.CustomText.Submit submit) {
1932
        this.submit = submit;
×
1933
        return this;
×
1934
      }
1935

1936
      /** Custom text that should be displayed alongside the payment confirmation button. */
1937
      public Builder setSubmit(EmptyParam submit) {
1938
        this.submit = submit;
×
1939
        return this;
×
1940
      }
1941

1942
      /**
1943
       * Custom text that should be displayed in place of the default terms of service agreement
1944
       * text.
1945
       */
1946
      public Builder setTermsOfServiceAcceptance(
1947
          PaymentLinkUpdateParams.CustomText.TermsOfServiceAcceptance termsOfServiceAcceptance) {
1948
        this.termsOfServiceAcceptance = termsOfServiceAcceptance;
×
1949
        return this;
×
1950
      }
1951

1952
      /**
1953
       * Custom text that should be displayed in place of the default terms of service agreement
1954
       * text.
1955
       */
1956
      public Builder setTermsOfServiceAcceptance(EmptyParam termsOfServiceAcceptance) {
1957
        this.termsOfServiceAcceptance = termsOfServiceAcceptance;
×
1958
        return this;
×
1959
      }
1960
    }
1961

1962
    @Getter
1963
    public static class AfterSubmit {
1964
      /**
1965
       * Map of extra parameters for custom features not available in this client library. The
1966
       * content in this map is not serialized under this field's {@code @SerializedName} value.
1967
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
1968
       * name in this param object. Effectively, this map is flattened to its parent instance.
1969
       */
1970
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
1971
      Map<String, Object> extraParams;
1972

1973
      /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
1974
      @SerializedName("message")
1975
      Object message;
1976

1977
      private AfterSubmit(Map<String, Object> extraParams, Object message) {
×
1978
        this.extraParams = extraParams;
×
1979
        this.message = message;
×
1980
      }
×
1981

1982
      public static Builder builder() {
1983
        return new Builder();
×
1984
      }
1985

1986
      public static class Builder {
×
1987
        private Map<String, Object> extraParams;
1988

1989
        private Object message;
1990

1991
        /** Finalize and obtain parameter instance from this builder. */
1992
        public PaymentLinkUpdateParams.CustomText.AfterSubmit build() {
1993
          return new PaymentLinkUpdateParams.CustomText.AfterSubmit(this.extraParams, this.message);
×
1994
        }
1995

1996
        /**
1997
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
1998
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
1999
         * map. See {@link PaymentLinkUpdateParams.CustomText.AfterSubmit#extraParams} for the field
2000
         * documentation.
2001
         */
2002
        public Builder putExtraParam(String key, Object value) {
2003
          if (this.extraParams == null) {
×
2004
            this.extraParams = new HashMap<>();
×
2005
          }
2006
          this.extraParams.put(key, value);
×
2007
          return this;
×
2008
        }
2009

2010
        /**
2011
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2012
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2013
         * map. See {@link PaymentLinkUpdateParams.CustomText.AfterSubmit#extraParams} for the field
2014
         * documentation.
2015
         */
2016
        public Builder putAllExtraParam(Map<String, Object> map) {
2017
          if (this.extraParams == null) {
×
2018
            this.extraParams = new HashMap<>();
×
2019
          }
2020
          this.extraParams.putAll(map);
×
2021
          return this;
×
2022
        }
2023

2024
        /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2025
        public Builder setMessage(String message) {
2026
          this.message = message;
×
2027
          return this;
×
2028
        }
2029

2030
        /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2031
        public Builder setMessage(EmptyParam message) {
2032
          this.message = message;
×
2033
          return this;
×
2034
        }
2035
      }
2036
    }
2037

2038
    @Getter
2039
    public static class ShippingAddress {
2040
      /**
2041
       * Map of extra parameters for custom features not available in this client library. The
2042
       * content in this map is not serialized under this field's {@code @SerializedName} value.
2043
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
2044
       * name in this param object. Effectively, this map is flattened to its parent instance.
2045
       */
2046
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
2047
      Map<String, Object> extraParams;
2048

2049
      /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2050
      @SerializedName("message")
2051
      Object message;
2052

2053
      private ShippingAddress(Map<String, Object> extraParams, Object message) {
×
2054
        this.extraParams = extraParams;
×
2055
        this.message = message;
×
2056
      }
×
2057

2058
      public static Builder builder() {
2059
        return new Builder();
×
2060
      }
2061

2062
      public static class Builder {
×
2063
        private Map<String, Object> extraParams;
2064

2065
        private Object message;
2066

2067
        /** Finalize and obtain parameter instance from this builder. */
2068
        public PaymentLinkUpdateParams.CustomText.ShippingAddress build() {
2069
          return new PaymentLinkUpdateParams.CustomText.ShippingAddress(
×
2070
              this.extraParams, this.message);
2071
        }
2072

2073
        /**
2074
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
2075
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2076
         * map. See {@link PaymentLinkUpdateParams.CustomText.ShippingAddress#extraParams} for the
2077
         * field documentation.
2078
         */
2079
        public Builder putExtraParam(String key, Object value) {
2080
          if (this.extraParams == null) {
×
2081
            this.extraParams = new HashMap<>();
×
2082
          }
2083
          this.extraParams.put(key, value);
×
2084
          return this;
×
2085
        }
2086

2087
        /**
2088
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2089
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2090
         * map. See {@link PaymentLinkUpdateParams.CustomText.ShippingAddress#extraParams} for the
2091
         * field documentation.
2092
         */
2093
        public Builder putAllExtraParam(Map<String, Object> map) {
2094
          if (this.extraParams == null) {
×
2095
            this.extraParams = new HashMap<>();
×
2096
          }
2097
          this.extraParams.putAll(map);
×
2098
          return this;
×
2099
        }
2100

2101
        /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2102
        public Builder setMessage(String message) {
2103
          this.message = message;
×
2104
          return this;
×
2105
        }
2106

2107
        /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2108
        public Builder setMessage(EmptyParam message) {
2109
          this.message = message;
×
2110
          return this;
×
2111
        }
2112
      }
2113
    }
2114

2115
    @Getter
2116
    public static class Submit {
2117
      /**
2118
       * Map of extra parameters for custom features not available in this client library. The
2119
       * content in this map is not serialized under this field's {@code @SerializedName} value.
2120
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
2121
       * name in this param object. Effectively, this map is flattened to its parent instance.
2122
       */
2123
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
2124
      Map<String, Object> extraParams;
2125

2126
      /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2127
      @SerializedName("message")
2128
      Object message;
2129

2130
      private Submit(Map<String, Object> extraParams, Object message) {
×
2131
        this.extraParams = extraParams;
×
2132
        this.message = message;
×
2133
      }
×
2134

2135
      public static Builder builder() {
2136
        return new Builder();
×
2137
      }
2138

2139
      public static class Builder {
×
2140
        private Map<String, Object> extraParams;
2141

2142
        private Object message;
2143

2144
        /** Finalize and obtain parameter instance from this builder. */
2145
        public PaymentLinkUpdateParams.CustomText.Submit build() {
2146
          return new PaymentLinkUpdateParams.CustomText.Submit(this.extraParams, this.message);
×
2147
        }
2148

2149
        /**
2150
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
2151
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2152
         * map. See {@link PaymentLinkUpdateParams.CustomText.Submit#extraParams} for the field
2153
         * documentation.
2154
         */
2155
        public Builder putExtraParam(String key, Object value) {
2156
          if (this.extraParams == null) {
×
2157
            this.extraParams = new HashMap<>();
×
2158
          }
2159
          this.extraParams.put(key, value);
×
2160
          return this;
×
2161
        }
2162

2163
        /**
2164
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2165
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2166
         * map. See {@link PaymentLinkUpdateParams.CustomText.Submit#extraParams} for the field
2167
         * documentation.
2168
         */
2169
        public Builder putAllExtraParam(Map<String, Object> map) {
2170
          if (this.extraParams == null) {
×
2171
            this.extraParams = new HashMap<>();
×
2172
          }
2173
          this.extraParams.putAll(map);
×
2174
          return this;
×
2175
        }
2176

2177
        /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2178
        public Builder setMessage(String message) {
2179
          this.message = message;
×
2180
          return this;
×
2181
        }
2182

2183
        /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2184
        public Builder setMessage(EmptyParam message) {
2185
          this.message = message;
×
2186
          return this;
×
2187
        }
2188
      }
2189
    }
2190

2191
    @Getter
2192
    public static class TermsOfServiceAcceptance {
2193
      /**
2194
       * Map of extra parameters for custom features not available in this client library. The
2195
       * content in this map is not serialized under this field's {@code @SerializedName} value.
2196
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
2197
       * name in this param object. Effectively, this map is flattened to its parent instance.
2198
       */
2199
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
2200
      Map<String, Object> extraParams;
2201

2202
      /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2203
      @SerializedName("message")
2204
      Object message;
2205

2206
      private TermsOfServiceAcceptance(Map<String, Object> extraParams, Object message) {
×
2207
        this.extraParams = extraParams;
×
2208
        this.message = message;
×
2209
      }
×
2210

2211
      public static Builder builder() {
2212
        return new Builder();
×
2213
      }
2214

2215
      public static class Builder {
×
2216
        private Map<String, Object> extraParams;
2217

2218
        private Object message;
2219

2220
        /** Finalize and obtain parameter instance from this builder. */
2221
        public PaymentLinkUpdateParams.CustomText.TermsOfServiceAcceptance build() {
2222
          return new PaymentLinkUpdateParams.CustomText.TermsOfServiceAcceptance(
×
2223
              this.extraParams, this.message);
2224
        }
2225

2226
        /**
2227
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
2228
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2229
         * map. See {@link PaymentLinkUpdateParams.CustomText.TermsOfServiceAcceptance#extraParams}
2230
         * for the field documentation.
2231
         */
2232
        public Builder putExtraParam(String key, Object value) {
2233
          if (this.extraParams == null) {
×
2234
            this.extraParams = new HashMap<>();
×
2235
          }
2236
          this.extraParams.put(key, value);
×
2237
          return this;
×
2238
        }
2239

2240
        /**
2241
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2242
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2243
         * map. See {@link PaymentLinkUpdateParams.CustomText.TermsOfServiceAcceptance#extraParams}
2244
         * for the field documentation.
2245
         */
2246
        public Builder putAllExtraParam(Map<String, Object> map) {
2247
          if (this.extraParams == null) {
×
2248
            this.extraParams = new HashMap<>();
×
2249
          }
2250
          this.extraParams.putAll(map);
×
2251
          return this;
×
2252
        }
2253

2254
        /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2255
        public Builder setMessage(String message) {
2256
          this.message = message;
×
2257
          return this;
×
2258
        }
2259

2260
        /** <strong>Required.</strong> Text may be up to 1200 characters in length. */
2261
        public Builder setMessage(EmptyParam message) {
2262
          this.message = message;
×
2263
          return this;
×
2264
        }
2265
      }
2266
    }
2267
  }
2268

2269
  @Getter
2270
  public static class InvoiceCreation {
2271
    /** <strong>Required.</strong> Whether the feature is enabled */
2272
    @SerializedName("enabled")
2273
    Boolean enabled;
2274

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

2284
    /** Invoice PDF configuration. */
2285
    @SerializedName("invoice_data")
2286
    InvoiceData invoiceData;
2287

2288
    private InvoiceCreation(
2289
        Boolean enabled, Map<String, Object> extraParams, InvoiceData invoiceData) {
×
2290
      this.enabled = enabled;
×
2291
      this.extraParams = extraParams;
×
2292
      this.invoiceData = invoiceData;
×
2293
    }
×
2294

2295
    public static Builder builder() {
2296
      return new Builder();
×
2297
    }
2298

2299
    public static class Builder {
×
2300
      private Boolean enabled;
2301

2302
      private Map<String, Object> extraParams;
2303

2304
      private InvoiceData invoiceData;
2305

2306
      /** Finalize and obtain parameter instance from this builder. */
2307
      public PaymentLinkUpdateParams.InvoiceCreation build() {
2308
        return new PaymentLinkUpdateParams.InvoiceCreation(
×
2309
            this.enabled, this.extraParams, this.invoiceData);
2310
      }
2311

2312
      /** <strong>Required.</strong> Whether the feature is enabled */
2313
      public Builder setEnabled(Boolean enabled) {
2314
        this.enabled = enabled;
×
2315
        return this;
×
2316
      }
2317

2318
      /**
2319
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
2320
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
2321
       * PaymentLinkUpdateParams.InvoiceCreation#extraParams} for the field documentation.
2322
       */
2323
      public Builder putExtraParam(String key, Object value) {
2324
        if (this.extraParams == null) {
×
2325
          this.extraParams = new HashMap<>();
×
2326
        }
2327
        this.extraParams.put(key, value);
×
2328
        return this;
×
2329
      }
2330

2331
      /**
2332
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2333
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
2334
       * See {@link PaymentLinkUpdateParams.InvoiceCreation#extraParams} for the field
2335
       * documentation.
2336
       */
2337
      public Builder putAllExtraParam(Map<String, Object> map) {
2338
        if (this.extraParams == null) {
×
2339
          this.extraParams = new HashMap<>();
×
2340
        }
2341
        this.extraParams.putAll(map);
×
2342
        return this;
×
2343
      }
2344

2345
      /** Invoice PDF configuration. */
2346
      public Builder setInvoiceData(
2347
          PaymentLinkUpdateParams.InvoiceCreation.InvoiceData invoiceData) {
2348
        this.invoiceData = invoiceData;
×
2349
        return this;
×
2350
      }
2351
    }
2352

2353
    @Getter
2354
    public static class InvoiceData {
2355
      /** The account tax IDs associated with the invoice. */
2356
      @SerializedName("account_tax_ids")
2357
      Object accountTaxIds;
2358

2359
      /** Default custom fields to be displayed on invoices for this customer. */
2360
      @SerializedName("custom_fields")
2361
      Object customFields;
2362

2363
      /** An arbitrary string attached to the object. Often useful for displaying to users. */
2364
      @SerializedName("description")
2365
      Object description;
2366

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

2376
      /** Default footer to be displayed on invoices for this customer. */
2377
      @SerializedName("footer")
2378
      Object footer;
2379

2380
      /**
2381
       * The connected account that issues the invoice. The invoice is presented with the branding
2382
       * and support information of the specified account.
2383
       */
2384
      @SerializedName("issuer")
2385
      Issuer issuer;
2386

2387
      /**
2388
       * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that you can
2389
       * attach to an object. This can be useful for storing additional information about the object
2390
       * in a structured format. Individual keys can be unset by posting an empty value to them. All
2391
       * keys can be unset by posting an empty value to {@code metadata}.
2392
       */
2393
      @SerializedName("metadata")
2394
      Object metadata;
2395

2396
      /** Default options for invoice PDF rendering for this customer. */
2397
      @SerializedName("rendering_options")
2398
      Object renderingOptions;
2399

2400
      private InvoiceData(
2401
          Object accountTaxIds,
2402
          Object customFields,
2403
          Object description,
2404
          Map<String, Object> extraParams,
2405
          Object footer,
2406
          Issuer issuer,
2407
          Object metadata,
2408
          Object renderingOptions) {
×
2409
        this.accountTaxIds = accountTaxIds;
×
2410
        this.customFields = customFields;
×
2411
        this.description = description;
×
2412
        this.extraParams = extraParams;
×
2413
        this.footer = footer;
×
2414
        this.issuer = issuer;
×
2415
        this.metadata = metadata;
×
2416
        this.renderingOptions = renderingOptions;
×
2417
      }
×
2418

2419
      public static Builder builder() {
2420
        return new Builder();
×
2421
      }
2422

2423
      public static class Builder {
×
2424
        private Object accountTaxIds;
2425

2426
        private Object customFields;
2427

2428
        private Object description;
2429

2430
        private Map<String, Object> extraParams;
2431

2432
        private Object footer;
2433

2434
        private Issuer issuer;
2435

2436
        private Object metadata;
2437

2438
        private Object renderingOptions;
2439

2440
        /** Finalize and obtain parameter instance from this builder. */
2441
        public PaymentLinkUpdateParams.InvoiceCreation.InvoiceData build() {
2442
          return new PaymentLinkUpdateParams.InvoiceCreation.InvoiceData(
×
2443
              this.accountTaxIds,
2444
              this.customFields,
2445
              this.description,
2446
              this.extraParams,
2447
              this.footer,
2448
              this.issuer,
2449
              this.metadata,
2450
              this.renderingOptions);
2451
        }
2452

2453
        /**
2454
         * Add an element to `accountTaxIds` list. A list is initialized for the first `add/addAll`
2455
         * call, and subsequent calls adds additional elements to the original list. See {@link
2456
         * PaymentLinkUpdateParams.InvoiceCreation.InvoiceData#accountTaxIds} for the field
2457
         * documentation.
2458
         */
2459
        @SuppressWarnings("unchecked")
2460
        public Builder addAccountTaxId(String element) {
2461
          if (this.accountTaxIds == null || this.accountTaxIds instanceof EmptyParam) {
×
2462
            this.accountTaxIds = new ArrayList<String>();
×
2463
          }
2464
          ((List<String>) this.accountTaxIds).add(element);
×
2465
          return this;
×
2466
        }
2467

2468
        /**
2469
         * Add all elements to `accountTaxIds` list. A list is initialized for the first
2470
         * `add/addAll` call, and subsequent calls adds additional elements to the original list.
2471
         * See {@link PaymentLinkUpdateParams.InvoiceCreation.InvoiceData#accountTaxIds} for the
2472
         * field documentation.
2473
         */
2474
        @SuppressWarnings("unchecked")
2475
        public Builder addAllAccountTaxId(List<String> elements) {
2476
          if (this.accountTaxIds == null || this.accountTaxIds instanceof EmptyParam) {
×
2477
            this.accountTaxIds = new ArrayList<String>();
×
2478
          }
2479
          ((List<String>) this.accountTaxIds).addAll(elements);
×
2480
          return this;
×
2481
        }
2482

2483
        /** The account tax IDs associated with the invoice. */
2484
        public Builder setAccountTaxIds(EmptyParam accountTaxIds) {
2485
          this.accountTaxIds = accountTaxIds;
×
2486
          return this;
×
2487
        }
2488

2489
        /** The account tax IDs associated with the invoice. */
2490
        public Builder setAccountTaxIds(List<String> accountTaxIds) {
2491
          this.accountTaxIds = accountTaxIds;
×
2492
          return this;
×
2493
        }
2494

2495
        /**
2496
         * Add an element to `customFields` list. A list is initialized for the first `add/addAll`
2497
         * call, and subsequent calls adds additional elements to the original list. See {@link
2498
         * PaymentLinkUpdateParams.InvoiceCreation.InvoiceData#customFields} for the field
2499
         * documentation.
2500
         */
2501
        @SuppressWarnings("unchecked")
2502
        public Builder addCustomField(
2503
            PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField element) {
2504
          if (this.customFields == null || this.customFields instanceof EmptyParam) {
×
2505
            this.customFields =
×
2506
                new ArrayList<PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField>();
2507
          }
2508
          ((List<PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField>)
×
2509
                  this.customFields)
2510
              .add(element);
×
2511
          return this;
×
2512
        }
2513

2514
        /**
2515
         * Add all elements to `customFields` list. A list is initialized for the first `add/addAll`
2516
         * call, and subsequent calls adds additional elements to the original list. See {@link
2517
         * PaymentLinkUpdateParams.InvoiceCreation.InvoiceData#customFields} for the field
2518
         * documentation.
2519
         */
2520
        @SuppressWarnings("unchecked")
2521
        public Builder addAllCustomField(
2522
            List<PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField> elements) {
2523
          if (this.customFields == null || this.customFields instanceof EmptyParam) {
×
2524
            this.customFields =
×
2525
                new ArrayList<PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField>();
2526
          }
2527
          ((List<PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField>)
×
2528
                  this.customFields)
2529
              .addAll(elements);
×
2530
          return this;
×
2531
        }
2532

2533
        /** Default custom fields to be displayed on invoices for this customer. */
2534
        public Builder setCustomFields(EmptyParam customFields) {
2535
          this.customFields = customFields;
×
2536
          return this;
×
2537
        }
2538

2539
        /** Default custom fields to be displayed on invoices for this customer. */
2540
        public Builder setCustomFields(
2541
            List<PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField> customFields) {
2542
          this.customFields = customFields;
×
2543
          return this;
×
2544
        }
2545

2546
        /** An arbitrary string attached to the object. Often useful for displaying to users. */
2547
        public Builder setDescription(String description) {
2548
          this.description = description;
×
2549
          return this;
×
2550
        }
2551

2552
        /** An arbitrary string attached to the object. Often useful for displaying to users. */
2553
        public Builder setDescription(EmptyParam description) {
2554
          this.description = description;
×
2555
          return this;
×
2556
        }
2557

2558
        /**
2559
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
2560
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2561
         * map. See {@link PaymentLinkUpdateParams.InvoiceCreation.InvoiceData#extraParams} for the
2562
         * field documentation.
2563
         */
2564
        public Builder putExtraParam(String key, Object value) {
2565
          if (this.extraParams == null) {
×
2566
            this.extraParams = new HashMap<>();
×
2567
          }
2568
          this.extraParams.put(key, value);
×
2569
          return this;
×
2570
        }
2571

2572
        /**
2573
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2574
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2575
         * map. See {@link PaymentLinkUpdateParams.InvoiceCreation.InvoiceData#extraParams} for the
2576
         * field documentation.
2577
         */
2578
        public Builder putAllExtraParam(Map<String, Object> map) {
2579
          if (this.extraParams == null) {
×
2580
            this.extraParams = new HashMap<>();
×
2581
          }
2582
          this.extraParams.putAll(map);
×
2583
          return this;
×
2584
        }
2585

2586
        /** Default footer to be displayed on invoices for this customer. */
2587
        public Builder setFooter(String footer) {
2588
          this.footer = footer;
×
2589
          return this;
×
2590
        }
2591

2592
        /** Default footer to be displayed on invoices for this customer. */
2593
        public Builder setFooter(EmptyParam footer) {
2594
          this.footer = footer;
×
2595
          return this;
×
2596
        }
2597

2598
        /**
2599
         * The connected account that issues the invoice. The invoice is presented with the branding
2600
         * and support information of the specified account.
2601
         */
2602
        public Builder setIssuer(
2603
            PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.Issuer issuer) {
2604
          this.issuer = issuer;
×
2605
          return this;
×
2606
        }
2607

2608
        /**
2609
         * Add a key/value pair to `metadata` map. A map is initialized for the first `put/putAll`
2610
         * call, and subsequent calls add additional key/value pairs to the original map. See {@link
2611
         * PaymentLinkUpdateParams.InvoiceCreation.InvoiceData#metadata} for the field
2612
         * documentation.
2613
         */
2614
        @SuppressWarnings("unchecked")
2615
        public Builder putMetadata(String key, String value) {
2616
          if (this.metadata == null || this.metadata instanceof EmptyParam) {
×
2617
            this.metadata = new HashMap<String, String>();
×
2618
          }
2619
          ((Map<String, String>) this.metadata).put(key, value);
×
2620
          return this;
×
2621
        }
2622

2623
        /**
2624
         * Add all map key/value pairs to `metadata` map. A map is initialized for the first
2625
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2626
         * map. See {@link PaymentLinkUpdateParams.InvoiceCreation.InvoiceData#metadata} for the
2627
         * field documentation.
2628
         */
2629
        @SuppressWarnings("unchecked")
2630
        public Builder putAllMetadata(Map<String, String> map) {
2631
          if (this.metadata == null || this.metadata instanceof EmptyParam) {
×
2632
            this.metadata = new HashMap<String, String>();
×
2633
          }
2634
          ((Map<String, String>) this.metadata).putAll(map);
×
2635
          return this;
×
2636
        }
2637

2638
        /**
2639
         * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that you can
2640
         * attach to an object. This can be useful for storing additional information about the
2641
         * object in a structured format. Individual keys can be unset by posting an empty value to
2642
         * them. All keys can be unset by posting an empty value to {@code metadata}.
2643
         */
2644
        public Builder setMetadata(EmptyParam metadata) {
2645
          this.metadata = metadata;
×
2646
          return this;
×
2647
        }
2648

2649
        /**
2650
         * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that you can
2651
         * attach to an object. This can be useful for storing additional information about the
2652
         * object in a structured format. Individual keys can be unset by posting an empty value to
2653
         * them. All keys can be unset by posting an empty value to {@code metadata}.
2654
         */
2655
        public Builder setMetadata(Map<String, String> metadata) {
2656
          this.metadata = metadata;
×
2657
          return this;
×
2658
        }
2659

2660
        /** Default options for invoice PDF rendering for this customer. */
2661
        public Builder setRenderingOptions(
2662
            PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.RenderingOptions renderingOptions) {
2663
          this.renderingOptions = renderingOptions;
×
2664
          return this;
×
2665
        }
2666

2667
        /** Default options for invoice PDF rendering for this customer. */
2668
        public Builder setRenderingOptions(EmptyParam renderingOptions) {
2669
          this.renderingOptions = renderingOptions;
×
2670
          return this;
×
2671
        }
2672
      }
2673

2674
      @Getter
2675
      public static class CustomField {
2676
        /**
2677
         * Map of extra parameters for custom features not available in this client library. The
2678
         * content in this map is not serialized under this field's {@code @SerializedName} value.
2679
         * Instead, each key/value pair is serialized as if the key is a root-level field
2680
         * (serialized) name in this param object. Effectively, this map is flattened to its parent
2681
         * instance.
2682
         */
2683
        @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
2684
        Map<String, Object> extraParams;
2685

2686
        /**
2687
         * <strong>Required.</strong> The name of the custom field. This may be up to 40 characters.
2688
         */
2689
        @SerializedName("name")
2690
        Object name;
2691

2692
        /**
2693
         * <strong>Required.</strong> The value of the custom field. This may be up to 140
2694
         * characters.
2695
         */
2696
        @SerializedName("value")
2697
        Object value;
2698

2699
        private CustomField(Map<String, Object> extraParams, Object name, Object value) {
×
2700
          this.extraParams = extraParams;
×
2701
          this.name = name;
×
2702
          this.value = value;
×
2703
        }
×
2704

2705
        public static Builder builder() {
2706
          return new Builder();
×
2707
        }
2708

2709
        public static class Builder {
×
2710
          private Map<String, Object> extraParams;
2711

2712
          private Object name;
2713

2714
          private Object value;
2715

2716
          /** Finalize and obtain parameter instance from this builder. */
2717
          public PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField build() {
2718
            return new PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField(
×
2719
                this.extraParams, this.name, this.value);
2720
          }
2721

2722
          /**
2723
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
2724
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2725
           * map. See {@link
2726
           * PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField#extraParams} for the
2727
           * field documentation.
2728
           */
2729
          public Builder putExtraParam(String key, Object value) {
2730
            if (this.extraParams == null) {
×
2731
              this.extraParams = new HashMap<>();
×
2732
            }
2733
            this.extraParams.put(key, value);
×
2734
            return this;
×
2735
          }
2736

2737
          /**
2738
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2739
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2740
           * map. See {@link
2741
           * PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.CustomField#extraParams} for the
2742
           * field documentation.
2743
           */
2744
          public Builder putAllExtraParam(Map<String, Object> map) {
2745
            if (this.extraParams == null) {
×
2746
              this.extraParams = new HashMap<>();
×
2747
            }
2748
            this.extraParams.putAll(map);
×
2749
            return this;
×
2750
          }
2751

2752
          /**
2753
           * <strong>Required.</strong> The name of the custom field. This may be up to 40
2754
           * characters.
2755
           */
2756
          public Builder setName(String name) {
2757
            this.name = name;
×
2758
            return this;
×
2759
          }
2760

2761
          /**
2762
           * <strong>Required.</strong> The name of the custom field. This may be up to 40
2763
           * characters.
2764
           */
2765
          public Builder setName(EmptyParam name) {
2766
            this.name = name;
×
2767
            return this;
×
2768
          }
2769

2770
          /**
2771
           * <strong>Required.</strong> The value of the custom field. This may be up to 140
2772
           * characters.
2773
           */
2774
          public Builder setValue(String value) {
2775
            this.value = value;
×
2776
            return this;
×
2777
          }
2778

2779
          /**
2780
           * <strong>Required.</strong> The value of the custom field. This may be up to 140
2781
           * characters.
2782
           */
2783
          public Builder setValue(EmptyParam value) {
2784
            this.value = value;
×
2785
            return this;
×
2786
          }
2787
        }
2788
      }
2789

2790
      @Getter
2791
      public static class Issuer {
2792
        /** The connected account being referenced when {@code type} is {@code account}. */
2793
        @SerializedName("account")
2794
        Object account;
2795

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

2806
        /** <strong>Required.</strong> Type of the account referenced in the request. */
2807
        @SerializedName("type")
2808
        Type type;
2809

2810
        private Issuer(Object account, Map<String, Object> extraParams, Type type) {
×
2811
          this.account = account;
×
2812
          this.extraParams = extraParams;
×
2813
          this.type = type;
×
2814
        }
×
2815

2816
        public static Builder builder() {
2817
          return new Builder();
×
2818
        }
2819

2820
        public static class Builder {
×
2821
          private Object account;
2822

2823
          private Map<String, Object> extraParams;
2824

2825
          private Type type;
2826

2827
          /** Finalize and obtain parameter instance from this builder. */
2828
          public PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.Issuer build() {
2829
            return new PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.Issuer(
×
2830
                this.account, this.extraParams, this.type);
2831
          }
2832

2833
          /** The connected account being referenced when {@code type} is {@code account}. */
2834
          public Builder setAccount(String account) {
2835
            this.account = account;
×
2836
            return this;
×
2837
          }
2838

2839
          /** The connected account being referenced when {@code type} is {@code account}. */
2840
          public Builder setAccount(EmptyParam account) {
2841
            this.account = account;
×
2842
            return this;
×
2843
          }
2844

2845
          /**
2846
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
2847
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2848
           * map. See {@link PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.Issuer#extraParams}
2849
           * for the field documentation.
2850
           */
2851
          public Builder putExtraParam(String key, Object value) {
2852
            if (this.extraParams == null) {
×
2853
              this.extraParams = new HashMap<>();
×
2854
            }
2855
            this.extraParams.put(key, value);
×
2856
            return this;
×
2857
          }
2858

2859
          /**
2860
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2861
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2862
           * map. See {@link PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.Issuer#extraParams}
2863
           * for the field documentation.
2864
           */
2865
          public Builder putAllExtraParam(Map<String, Object> map) {
2866
            if (this.extraParams == null) {
×
2867
              this.extraParams = new HashMap<>();
×
2868
            }
2869
            this.extraParams.putAll(map);
×
2870
            return this;
×
2871
          }
2872

2873
          /** <strong>Required.</strong> Type of the account referenced in the request. */
2874
          public Builder setType(
2875
              PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.Issuer.Type type) {
2876
            this.type = type;
×
2877
            return this;
×
2878
          }
2879
        }
2880

2881
        public enum Type implements ApiRequestParams.EnumParam {
×
2882
          @SerializedName("account")
×
2883
          ACCOUNT("account"),
2884

2885
          @SerializedName("self")
×
2886
          SELF("self");
2887

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

2891
          Type(String value) {
×
2892
            this.value = value;
×
2893
          }
×
2894
        }
2895
      }
2896

2897
      @Getter
2898
      public static class RenderingOptions {
2899
        /**
2900
         * How line-item prices and amounts will be displayed with respect to tax on invoice PDFs.
2901
         * One of {@code exclude_tax} or {@code include_inclusive_tax}. {@code
2902
         * include_inclusive_tax} will include inclusive tax (and exclude exclusive tax) in invoice
2903
         * PDF amounts. {@code exclude_tax} will exclude all tax (inclusive and exclusive alike)
2904
         * from invoice PDF amounts.
2905
         */
2906
        @SerializedName("amount_tax_display")
2907
        ApiRequestParams.EnumParam amountTaxDisplay;
2908

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

2919
        private RenderingOptions(
2920
            ApiRequestParams.EnumParam amountTaxDisplay, Map<String, Object> extraParams) {
×
2921
          this.amountTaxDisplay = amountTaxDisplay;
×
2922
          this.extraParams = extraParams;
×
2923
        }
×
2924

2925
        public static Builder builder() {
2926
          return new Builder();
×
2927
        }
2928

2929
        public static class Builder {
×
2930
          private ApiRequestParams.EnumParam amountTaxDisplay;
2931

2932
          private Map<String, Object> extraParams;
2933

2934
          /** Finalize and obtain parameter instance from this builder. */
2935
          public PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.RenderingOptions build() {
2936
            return new PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.RenderingOptions(
×
2937
                this.amountTaxDisplay, this.extraParams);
2938
          }
2939

2940
          /**
2941
           * How line-item prices and amounts will be displayed with respect to tax on invoice PDFs.
2942
           * One of {@code exclude_tax} or {@code include_inclusive_tax}. {@code
2943
           * include_inclusive_tax} will include inclusive tax (and exclude exclusive tax) in
2944
           * invoice PDF amounts. {@code exclude_tax} will exclude all tax (inclusive and exclusive
2945
           * alike) from invoice PDF amounts.
2946
           */
2947
          public Builder setAmountTaxDisplay(
2948
              PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.RenderingOptions.AmountTaxDisplay
2949
                  amountTaxDisplay) {
2950
            this.amountTaxDisplay = amountTaxDisplay;
×
2951
            return this;
×
2952
          }
2953

2954
          /**
2955
           * How line-item prices and amounts will be displayed with respect to tax on invoice PDFs.
2956
           * One of {@code exclude_tax} or {@code include_inclusive_tax}. {@code
2957
           * include_inclusive_tax} will include inclusive tax (and exclude exclusive tax) in
2958
           * invoice PDF amounts. {@code exclude_tax} will exclude all tax (inclusive and exclusive
2959
           * alike) from invoice PDF amounts.
2960
           */
2961
          public Builder setAmountTaxDisplay(EmptyParam amountTaxDisplay) {
2962
            this.amountTaxDisplay = amountTaxDisplay;
×
2963
            return this;
×
2964
          }
2965

2966
          /**
2967
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
2968
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2969
           * map. See {@link
2970
           * PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.RenderingOptions#extraParams} for
2971
           * the field documentation.
2972
           */
2973
          public Builder putExtraParam(String key, Object value) {
2974
            if (this.extraParams == null) {
×
2975
              this.extraParams = new HashMap<>();
×
2976
            }
2977
            this.extraParams.put(key, value);
×
2978
            return this;
×
2979
          }
2980

2981
          /**
2982
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
2983
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
2984
           * map. See {@link
2985
           * PaymentLinkUpdateParams.InvoiceCreation.InvoiceData.RenderingOptions#extraParams} for
2986
           * the field documentation.
2987
           */
2988
          public Builder putAllExtraParam(Map<String, Object> map) {
2989
            if (this.extraParams == null) {
×
2990
              this.extraParams = new HashMap<>();
×
2991
            }
2992
            this.extraParams.putAll(map);
×
2993
            return this;
×
2994
          }
2995
        }
2996

2997
        public enum AmountTaxDisplay implements ApiRequestParams.EnumParam {
×
2998
          @SerializedName("exclude_tax")
×
2999
          EXCLUDE_TAX("exclude_tax"),
3000

3001
          @SerializedName("include_inclusive_tax")
×
3002
          INCLUDE_INCLUSIVE_TAX("include_inclusive_tax");
3003

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

3007
          AmountTaxDisplay(String value) {
×
3008
            this.value = value;
×
3009
          }
×
3010
        }
3011
      }
3012
    }
3013
  }
3014

3015
  @Getter
3016
  public static class LineItem {
3017
    /**
3018
     * When set, provides configuration for this item’s quantity to be adjusted by the customer
3019
     * during checkout.
3020
     */
3021
    @SerializedName("adjustable_quantity")
3022
    AdjustableQuantity adjustableQuantity;
3023

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

3033
    /** <strong>Required.</strong> The ID of an existing line item on the payment link. */
3034
    @SerializedName("id")
3035
    Object id;
3036

3037
    /** The quantity of the line item being purchased. */
3038
    @SerializedName("quantity")
3039
    Long quantity;
3040

3041
    private LineItem(
3042
        AdjustableQuantity adjustableQuantity,
3043
        Map<String, Object> extraParams,
3044
        Object id,
3045
        Long quantity) {
×
3046
      this.adjustableQuantity = adjustableQuantity;
×
3047
      this.extraParams = extraParams;
×
3048
      this.id = id;
×
3049
      this.quantity = quantity;
×
3050
    }
×
3051

3052
    public static Builder builder() {
3053
      return new Builder();
×
3054
    }
3055

3056
    public static class Builder {
×
3057
      private AdjustableQuantity adjustableQuantity;
3058

3059
      private Map<String, Object> extraParams;
3060

3061
      private Object id;
3062

3063
      private Long quantity;
3064

3065
      /** Finalize and obtain parameter instance from this builder. */
3066
      public PaymentLinkUpdateParams.LineItem build() {
3067
        return new PaymentLinkUpdateParams.LineItem(
×
3068
            this.adjustableQuantity, this.extraParams, this.id, this.quantity);
3069
      }
3070

3071
      /**
3072
       * When set, provides configuration for this item’s quantity to be adjusted by the customer
3073
       * during checkout.
3074
       */
3075
      public Builder setAdjustableQuantity(
3076
          PaymentLinkUpdateParams.LineItem.AdjustableQuantity adjustableQuantity) {
3077
        this.adjustableQuantity = adjustableQuantity;
×
3078
        return this;
×
3079
      }
3080

3081
      /**
3082
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
3083
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
3084
       * PaymentLinkUpdateParams.LineItem#extraParams} for the field documentation.
3085
       */
3086
      public Builder putExtraParam(String key, Object value) {
3087
        if (this.extraParams == null) {
×
3088
          this.extraParams = new HashMap<>();
×
3089
        }
3090
        this.extraParams.put(key, value);
×
3091
        return this;
×
3092
      }
3093

3094
      /**
3095
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
3096
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
3097
       * See {@link PaymentLinkUpdateParams.LineItem#extraParams} for the field documentation.
3098
       */
3099
      public Builder putAllExtraParam(Map<String, Object> map) {
3100
        if (this.extraParams == null) {
×
3101
          this.extraParams = new HashMap<>();
×
3102
        }
3103
        this.extraParams.putAll(map);
×
3104
        return this;
×
3105
      }
3106

3107
      /** <strong>Required.</strong> The ID of an existing line item on the payment link. */
3108
      public Builder setId(String id) {
3109
        this.id = id;
×
3110
        return this;
×
3111
      }
3112

3113
      /** <strong>Required.</strong> The ID of an existing line item on the payment link. */
3114
      public Builder setId(EmptyParam id) {
3115
        this.id = id;
×
3116
        return this;
×
3117
      }
3118

3119
      /** The quantity of the line item being purchased. */
3120
      public Builder setQuantity(Long quantity) {
3121
        this.quantity = quantity;
×
3122
        return this;
×
3123
      }
3124
    }
3125

3126
    @Getter
3127
    public static class AdjustableQuantity {
3128
      /**
3129
       * <strong>Required.</strong> Set to true if the quantity can be adjusted to any non-negative
3130
       * Integer.
3131
       */
3132
      @SerializedName("enabled")
3133
      Boolean enabled;
3134

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

3144
      /**
3145
       * The maximum quantity the customer can purchase. By default this value is 99. You can
3146
       * specify a value up to 999.
3147
       */
3148
      @SerializedName("maximum")
3149
      Long maximum;
3150

3151
      /**
3152
       * The minimum quantity the customer can purchase. By default this value is 0. If there is
3153
       * only one item in the cart then that item's quantity cannot go down to 0.
3154
       */
3155
      @SerializedName("minimum")
3156
      Long minimum;
3157

3158
      private AdjustableQuantity(
3159
          Boolean enabled, Map<String, Object> extraParams, Long maximum, Long minimum) {
×
3160
        this.enabled = enabled;
×
3161
        this.extraParams = extraParams;
×
3162
        this.maximum = maximum;
×
3163
        this.minimum = minimum;
×
3164
      }
×
3165

3166
      public static Builder builder() {
3167
        return new Builder();
×
3168
      }
3169

3170
      public static class Builder {
×
3171
        private Boolean enabled;
3172

3173
        private Map<String, Object> extraParams;
3174

3175
        private Long maximum;
3176

3177
        private Long minimum;
3178

3179
        /** Finalize and obtain parameter instance from this builder. */
3180
        public PaymentLinkUpdateParams.LineItem.AdjustableQuantity build() {
3181
          return new PaymentLinkUpdateParams.LineItem.AdjustableQuantity(
×
3182
              this.enabled, this.extraParams, this.maximum, this.minimum);
3183
        }
3184

3185
        /**
3186
         * <strong>Required.</strong> Set to true if the quantity can be adjusted to any
3187
         * non-negative Integer.
3188
         */
3189
        public Builder setEnabled(Boolean enabled) {
3190
          this.enabled = enabled;
×
3191
          return this;
×
3192
        }
3193

3194
        /**
3195
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
3196
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
3197
         * map. See {@link PaymentLinkUpdateParams.LineItem.AdjustableQuantity#extraParams} for the
3198
         * field documentation.
3199
         */
3200
        public Builder putExtraParam(String key, Object value) {
3201
          if (this.extraParams == null) {
×
3202
            this.extraParams = new HashMap<>();
×
3203
          }
3204
          this.extraParams.put(key, value);
×
3205
          return this;
×
3206
        }
3207

3208
        /**
3209
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
3210
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
3211
         * map. See {@link PaymentLinkUpdateParams.LineItem.AdjustableQuantity#extraParams} for the
3212
         * field documentation.
3213
         */
3214
        public Builder putAllExtraParam(Map<String, Object> map) {
3215
          if (this.extraParams == null) {
×
3216
            this.extraParams = new HashMap<>();
×
3217
          }
3218
          this.extraParams.putAll(map);
×
3219
          return this;
×
3220
        }
3221

3222
        /**
3223
         * The maximum quantity the customer can purchase. By default this value is 99. You can
3224
         * specify a value up to 999.
3225
         */
3226
        public Builder setMaximum(Long maximum) {
3227
          this.maximum = maximum;
×
3228
          return this;
×
3229
        }
3230

3231
        /**
3232
         * The minimum quantity the customer can purchase. By default this value is 0. If there is
3233
         * only one item in the cart then that item's quantity cannot go down to 0.
3234
         */
3235
        public Builder setMinimum(Long minimum) {
3236
          this.minimum = minimum;
×
3237
          return this;
×
3238
        }
3239
      }
3240
    }
3241
  }
3242

3243
  @Getter
3244
  public static class PaymentIntentData {
3245
    /** An arbitrary string attached to the object. Often useful for displaying to users. */
3246
    @SerializedName("description")
3247
    Object description;
3248

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

3258
    /**
3259
     * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that will
3260
     * declaratively set metadata on <a href="https://stripe.com/docs/api/payment_intents">Payment
3261
     * Intents</a> generated from this payment link. Unlike object-level metadata, this field is
3262
     * declarative. Updates will clear prior values.
3263
     */
3264
    @SerializedName("metadata")
3265
    Object metadata;
3266

3267
    /**
3268
     * Text that appears on the customer's statement as the statement descriptor for a non-card
3269
     * charge. This value overrides the account's default statement descriptor. For information
3270
     * about requirements, including the 22-character limit, see <a
3271
     * href="https://docs.stripe.com/get-started/account/statement-descriptors">the Statement
3272
     * Descriptor docs</a>.
3273
     *
3274
     * <p>Setting this value for a card charge returns an error. For card charges, set the <a
3275
     * href="https://docs.stripe.com/get-started/account/statement-descriptors#dynamic">statement_descriptor_suffix</a>
3276
     * instead.
3277
     */
3278
    @SerializedName("statement_descriptor")
3279
    Object statementDescriptor;
3280

3281
    /**
3282
     * Provides information about a card charge. Concatenated to the account's <a
3283
     * href="https://docs.stripe.com/get-started/account/statement-descriptors#static">statement
3284
     * descriptor prefix</a> to form the complete statement descriptor that appears on the
3285
     * customer's statement.
3286
     */
3287
    @SerializedName("statement_descriptor_suffix")
3288
    Object statementDescriptorSuffix;
3289

3290
    /**
3291
     * A string that identifies the resulting payment as part of a group. See the PaymentIntents <a
3292
     * href="https://stripe.com/docs/connect/separate-charges-and-transfers">use case for connected
3293
     * accounts</a> for details.
3294
     */
3295
    @SerializedName("transfer_group")
3296
    Object transferGroup;
3297

3298
    private PaymentIntentData(
3299
        Object description,
3300
        Map<String, Object> extraParams,
3301
        Object metadata,
3302
        Object statementDescriptor,
3303
        Object statementDescriptorSuffix,
3304
        Object transferGroup) {
×
3305
      this.description = description;
×
3306
      this.extraParams = extraParams;
×
3307
      this.metadata = metadata;
×
3308
      this.statementDescriptor = statementDescriptor;
×
3309
      this.statementDescriptorSuffix = statementDescriptorSuffix;
×
3310
      this.transferGroup = transferGroup;
×
3311
    }
×
3312

3313
    public static Builder builder() {
3314
      return new Builder();
×
3315
    }
3316

3317
    public static class Builder {
×
3318
      private Object description;
3319

3320
      private Map<String, Object> extraParams;
3321

3322
      private Object metadata;
3323

3324
      private Object statementDescriptor;
3325

3326
      private Object statementDescriptorSuffix;
3327

3328
      private Object transferGroup;
3329

3330
      /** Finalize and obtain parameter instance from this builder. */
3331
      public PaymentLinkUpdateParams.PaymentIntentData build() {
3332
        return new PaymentLinkUpdateParams.PaymentIntentData(
×
3333
            this.description,
3334
            this.extraParams,
3335
            this.metadata,
3336
            this.statementDescriptor,
3337
            this.statementDescriptorSuffix,
3338
            this.transferGroup);
3339
      }
3340

3341
      /** An arbitrary string attached to the object. Often useful for displaying to users. */
3342
      public Builder setDescription(String description) {
3343
        this.description = description;
×
3344
        return this;
×
3345
      }
3346

3347
      /** An arbitrary string attached to the object. Often useful for displaying to users. */
3348
      public Builder setDescription(EmptyParam description) {
3349
        this.description = description;
×
3350
        return this;
×
3351
      }
3352

3353
      /**
3354
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
3355
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
3356
       * PaymentLinkUpdateParams.PaymentIntentData#extraParams} for the field documentation.
3357
       */
3358
      public Builder putExtraParam(String key, Object value) {
3359
        if (this.extraParams == null) {
×
3360
          this.extraParams = new HashMap<>();
×
3361
        }
3362
        this.extraParams.put(key, value);
×
3363
        return this;
×
3364
      }
3365

3366
      /**
3367
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
3368
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
3369
       * See {@link PaymentLinkUpdateParams.PaymentIntentData#extraParams} for the field
3370
       * documentation.
3371
       */
3372
      public Builder putAllExtraParam(Map<String, Object> map) {
3373
        if (this.extraParams == null) {
×
3374
          this.extraParams = new HashMap<>();
×
3375
        }
3376
        this.extraParams.putAll(map);
×
3377
        return this;
×
3378
      }
3379

3380
      /**
3381
       * Add a key/value pair to `metadata` map. A map is initialized for the first `put/putAll`
3382
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
3383
       * PaymentLinkUpdateParams.PaymentIntentData#metadata} for the field documentation.
3384
       */
3385
      @SuppressWarnings("unchecked")
3386
      public Builder putMetadata(String key, String value) {
3387
        if (this.metadata == null || this.metadata instanceof EmptyParam) {
×
3388
          this.metadata = new HashMap<String, String>();
×
3389
        }
3390
        ((Map<String, String>) this.metadata).put(key, value);
×
3391
        return this;
×
3392
      }
3393

3394
      /**
3395
       * Add all map key/value pairs to `metadata` map. A map is initialized for the first
3396
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
3397
       * See {@link PaymentLinkUpdateParams.PaymentIntentData#metadata} for the field documentation.
3398
       */
3399
      @SuppressWarnings("unchecked")
3400
      public Builder putAllMetadata(Map<String, String> map) {
3401
        if (this.metadata == null || this.metadata instanceof EmptyParam) {
×
3402
          this.metadata = new HashMap<String, String>();
×
3403
        }
3404
        ((Map<String, String>) this.metadata).putAll(map);
×
3405
        return this;
×
3406
      }
3407

3408
      /**
3409
       * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that will
3410
       * declaratively set metadata on <a href="https://stripe.com/docs/api/payment_intents">Payment
3411
       * Intents</a> generated from this payment link. Unlike object-level metadata, this field is
3412
       * declarative. Updates will clear prior values.
3413
       */
3414
      public Builder setMetadata(EmptyParam metadata) {
3415
        this.metadata = metadata;
×
3416
        return this;
×
3417
      }
3418

3419
      /**
3420
       * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that will
3421
       * declaratively set metadata on <a href="https://stripe.com/docs/api/payment_intents">Payment
3422
       * Intents</a> generated from this payment link. Unlike object-level metadata, this field is
3423
       * declarative. Updates will clear prior values.
3424
       */
3425
      public Builder setMetadata(Map<String, String> metadata) {
3426
        this.metadata = metadata;
×
3427
        return this;
×
3428
      }
3429

3430
      /**
3431
       * Text that appears on the customer's statement as the statement descriptor for a non-card
3432
       * charge. This value overrides the account's default statement descriptor. For information
3433
       * about requirements, including the 22-character limit, see <a
3434
       * href="https://docs.stripe.com/get-started/account/statement-descriptors">the Statement
3435
       * Descriptor docs</a>.
3436
       *
3437
       * <p>Setting this value for a card charge returns an error. For card charges, set the <a
3438
       * href="https://docs.stripe.com/get-started/account/statement-descriptors#dynamic">statement_descriptor_suffix</a>
3439
       * instead.
3440
       */
3441
      public Builder setStatementDescriptor(String statementDescriptor) {
3442
        this.statementDescriptor = statementDescriptor;
×
3443
        return this;
×
3444
      }
3445

3446
      /**
3447
       * Text that appears on the customer's statement as the statement descriptor for a non-card
3448
       * charge. This value overrides the account's default statement descriptor. For information
3449
       * about requirements, including the 22-character limit, see <a
3450
       * href="https://docs.stripe.com/get-started/account/statement-descriptors">the Statement
3451
       * Descriptor docs</a>.
3452
       *
3453
       * <p>Setting this value for a card charge returns an error. For card charges, set the <a
3454
       * href="https://docs.stripe.com/get-started/account/statement-descriptors#dynamic">statement_descriptor_suffix</a>
3455
       * instead.
3456
       */
3457
      public Builder setStatementDescriptor(EmptyParam statementDescriptor) {
3458
        this.statementDescriptor = statementDescriptor;
×
3459
        return this;
×
3460
      }
3461

3462
      /**
3463
       * Provides information about a card charge. Concatenated to the account's <a
3464
       * href="https://docs.stripe.com/get-started/account/statement-descriptors#static">statement
3465
       * descriptor prefix</a> to form the complete statement descriptor that appears on the
3466
       * customer's statement.
3467
       */
3468
      public Builder setStatementDescriptorSuffix(String statementDescriptorSuffix) {
3469
        this.statementDescriptorSuffix = statementDescriptorSuffix;
×
3470
        return this;
×
3471
      }
3472

3473
      /**
3474
       * Provides information about a card charge. Concatenated to the account's <a
3475
       * href="https://docs.stripe.com/get-started/account/statement-descriptors#static">statement
3476
       * descriptor prefix</a> to form the complete statement descriptor that appears on the
3477
       * customer's statement.
3478
       */
3479
      public Builder setStatementDescriptorSuffix(EmptyParam statementDescriptorSuffix) {
3480
        this.statementDescriptorSuffix = statementDescriptorSuffix;
×
3481
        return this;
×
3482
      }
3483

3484
      /**
3485
       * A string that identifies the resulting payment as part of a group. See the PaymentIntents
3486
       * <a href="https://stripe.com/docs/connect/separate-charges-and-transfers">use case for
3487
       * connected accounts</a> for details.
3488
       */
3489
      public Builder setTransferGroup(String transferGroup) {
3490
        this.transferGroup = transferGroup;
×
3491
        return this;
×
3492
      }
3493

3494
      /**
3495
       * A string that identifies the resulting payment as part of a group. See the PaymentIntents
3496
       * <a href="https://stripe.com/docs/connect/separate-charges-and-transfers">use case for
3497
       * connected accounts</a> for details.
3498
       */
3499
      public Builder setTransferGroup(EmptyParam transferGroup) {
3500
        this.transferGroup = transferGroup;
×
3501
        return this;
×
3502
      }
3503
    }
3504
  }
3505

3506
  @Getter
3507
  public static class Restrictions {
3508
    /**
3509
     * <strong>Required.</strong> Configuration for the {@code completed_sessions} restriction type.
3510
     */
3511
    @SerializedName("completed_sessions")
3512
    CompletedSessions completedSessions;
3513

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

3523
    private Restrictions(CompletedSessions completedSessions, Map<String, Object> extraParams) {
×
3524
      this.completedSessions = completedSessions;
×
3525
      this.extraParams = extraParams;
×
3526
    }
×
3527

3528
    public static Builder builder() {
3529
      return new Builder();
×
3530
    }
3531

3532
    public static class Builder {
×
3533
      private CompletedSessions completedSessions;
3534

3535
      private Map<String, Object> extraParams;
3536

3537
      /** Finalize and obtain parameter instance from this builder. */
3538
      public PaymentLinkUpdateParams.Restrictions build() {
3539
        return new PaymentLinkUpdateParams.Restrictions(this.completedSessions, this.extraParams);
×
3540
      }
3541

3542
      /**
3543
       * <strong>Required.</strong> Configuration for the {@code completed_sessions} restriction
3544
       * type.
3545
       */
3546
      public Builder setCompletedSessions(
3547
          PaymentLinkUpdateParams.Restrictions.CompletedSessions completedSessions) {
3548
        this.completedSessions = completedSessions;
×
3549
        return this;
×
3550
      }
3551

3552
      /**
3553
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
3554
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
3555
       * PaymentLinkUpdateParams.Restrictions#extraParams} for the field documentation.
3556
       */
3557
      public Builder putExtraParam(String key, Object value) {
3558
        if (this.extraParams == null) {
×
3559
          this.extraParams = new HashMap<>();
×
3560
        }
3561
        this.extraParams.put(key, value);
×
3562
        return this;
×
3563
      }
3564

3565
      /**
3566
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
3567
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
3568
       * See {@link PaymentLinkUpdateParams.Restrictions#extraParams} for the field documentation.
3569
       */
3570
      public Builder putAllExtraParam(Map<String, Object> map) {
3571
        if (this.extraParams == null) {
×
3572
          this.extraParams = new HashMap<>();
×
3573
        }
3574
        this.extraParams.putAll(map);
×
3575
        return this;
×
3576
      }
3577
    }
3578

3579
    @Getter
3580
    public static class CompletedSessions {
3581
      /**
3582
       * Map of extra parameters for custom features not available in this client library. The
3583
       * content in this map is not serialized under this field's {@code @SerializedName} value.
3584
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
3585
       * name in this param object. Effectively, this map is flattened to its parent instance.
3586
       */
3587
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
3588
      Map<String, Object> extraParams;
3589

3590
      /**
3591
       * <strong>Required.</strong> The maximum number of checkout sessions that can be completed
3592
       * for the {@code completed_sessions} restriction to be met.
3593
       */
3594
      @SerializedName("limit")
3595
      Long limit;
3596

3597
      private CompletedSessions(Map<String, Object> extraParams, Long limit) {
×
3598
        this.extraParams = extraParams;
×
3599
        this.limit = limit;
×
3600
      }
×
3601

3602
      public static Builder builder() {
3603
        return new Builder();
×
3604
      }
3605

3606
      public static class Builder {
×
3607
        private Map<String, Object> extraParams;
3608

3609
        private Long limit;
3610

3611
        /** Finalize and obtain parameter instance from this builder. */
3612
        public PaymentLinkUpdateParams.Restrictions.CompletedSessions build() {
3613
          return new PaymentLinkUpdateParams.Restrictions.CompletedSessions(
×
3614
              this.extraParams, this.limit);
3615
        }
3616

3617
        /**
3618
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
3619
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
3620
         * map. See {@link PaymentLinkUpdateParams.Restrictions.CompletedSessions#extraParams} for
3621
         * the field documentation.
3622
         */
3623
        public Builder putExtraParam(String key, Object value) {
3624
          if (this.extraParams == null) {
×
3625
            this.extraParams = new HashMap<>();
×
3626
          }
3627
          this.extraParams.put(key, value);
×
3628
          return this;
×
3629
        }
3630

3631
        /**
3632
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
3633
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
3634
         * map. See {@link PaymentLinkUpdateParams.Restrictions.CompletedSessions#extraParams} for
3635
         * the field documentation.
3636
         */
3637
        public Builder putAllExtraParam(Map<String, Object> map) {
3638
          if (this.extraParams == null) {
×
3639
            this.extraParams = new HashMap<>();
×
3640
          }
3641
          this.extraParams.putAll(map);
×
3642
          return this;
×
3643
        }
3644

3645
        /**
3646
         * <strong>Required.</strong> The maximum number of checkout sessions that can be completed
3647
         * for the {@code completed_sessions} restriction to be met.
3648
         */
3649
        public Builder setLimit(Long limit) {
3650
          this.limit = limit;
×
3651
          return this;
×
3652
        }
3653
      }
3654
    }
3655
  }
3656

3657
  @Getter
3658
  public static class ShippingAddressCollection {
3659
    /**
3660
     * <strong>Required.</strong> An array of two-letter ISO country codes representing which
3661
     * countries Checkout should provide as options for shipping locations.
3662
     */
3663
    @SerializedName("allowed_countries")
3664
    List<PaymentLinkUpdateParams.ShippingAddressCollection.AllowedCountry> allowedCountries;
3665

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

3675
    private ShippingAddressCollection(
3676
        List<PaymentLinkUpdateParams.ShippingAddressCollection.AllowedCountry> allowedCountries,
3677
        Map<String, Object> extraParams) {
×
3678
      this.allowedCountries = allowedCountries;
×
3679
      this.extraParams = extraParams;
×
3680
    }
×
3681

3682
    public static Builder builder() {
3683
      return new Builder();
×
3684
    }
3685

3686
    public static class Builder {
×
3687
      private List<PaymentLinkUpdateParams.ShippingAddressCollection.AllowedCountry>
3688
          allowedCountries;
3689

3690
      private Map<String, Object> extraParams;
3691

3692
      /** Finalize and obtain parameter instance from this builder. */
3693
      public PaymentLinkUpdateParams.ShippingAddressCollection build() {
3694
        return new PaymentLinkUpdateParams.ShippingAddressCollection(
×
3695
            this.allowedCountries, this.extraParams);
3696
      }
3697

3698
      /**
3699
       * Add an element to `allowedCountries` list. A list is initialized for the first `add/addAll`
3700
       * call, and subsequent calls adds additional elements to the original list. See {@link
3701
       * PaymentLinkUpdateParams.ShippingAddressCollection#allowedCountries} for the field
3702
       * documentation.
3703
       */
3704
      public Builder addAllowedCountry(
3705
          PaymentLinkUpdateParams.ShippingAddressCollection.AllowedCountry element) {
3706
        if (this.allowedCountries == null) {
×
3707
          this.allowedCountries = new ArrayList<>();
×
3708
        }
3709
        this.allowedCountries.add(element);
×
3710
        return this;
×
3711
      }
3712

3713
      /**
3714
       * Add all elements to `allowedCountries` list. A list is initialized for the first
3715
       * `add/addAll` call, and subsequent calls adds additional elements to the original list. See
3716
       * {@link PaymentLinkUpdateParams.ShippingAddressCollection#allowedCountries} for the field
3717
       * documentation.
3718
       */
3719
      public Builder addAllAllowedCountry(
3720
          List<PaymentLinkUpdateParams.ShippingAddressCollection.AllowedCountry> elements) {
3721
        if (this.allowedCountries == null) {
×
3722
          this.allowedCountries = new ArrayList<>();
×
3723
        }
3724
        this.allowedCountries.addAll(elements);
×
3725
        return this;
×
3726
      }
3727

3728
      /**
3729
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
3730
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
3731
       * PaymentLinkUpdateParams.ShippingAddressCollection#extraParams} for the field documentation.
3732
       */
3733
      public Builder putExtraParam(String key, Object value) {
3734
        if (this.extraParams == null) {
×
3735
          this.extraParams = new HashMap<>();
×
3736
        }
3737
        this.extraParams.put(key, value);
×
3738
        return this;
×
3739
      }
3740

3741
      /**
3742
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
3743
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
3744
       * See {@link PaymentLinkUpdateParams.ShippingAddressCollection#extraParams} for the field
3745
       * documentation.
3746
       */
3747
      public Builder putAllExtraParam(Map<String, Object> map) {
3748
        if (this.extraParams == null) {
×
3749
          this.extraParams = new HashMap<>();
×
3750
        }
3751
        this.extraParams.putAll(map);
×
3752
        return this;
×
3753
      }
3754
    }
3755

3756
    public enum AllowedCountry implements ApiRequestParams.EnumParam {
×
3757
      @SerializedName("AC")
×
3758
      AC("AC"),
3759

3760
      @SerializedName("AD")
×
3761
      AD("AD"),
3762

3763
      @SerializedName("AE")
×
3764
      AE("AE"),
3765

3766
      @SerializedName("AF")
×
3767
      AF("AF"),
3768

3769
      @SerializedName("AG")
×
3770
      AG("AG"),
3771

3772
      @SerializedName("AI")
×
3773
      AI("AI"),
3774

3775
      @SerializedName("AL")
×
3776
      AL("AL"),
3777

3778
      @SerializedName("AM")
×
3779
      AM("AM"),
3780

3781
      @SerializedName("AO")
×
3782
      AO("AO"),
3783

3784
      @SerializedName("AQ")
×
3785
      AQ("AQ"),
3786

3787
      @SerializedName("AR")
×
3788
      AR("AR"),
3789

3790
      @SerializedName("AT")
×
3791
      AT("AT"),
3792

3793
      @SerializedName("AU")
×
3794
      AU("AU"),
3795

3796
      @SerializedName("AW")
×
3797
      AW("AW"),
3798

3799
      @SerializedName("AX")
×
3800
      AX("AX"),
3801

3802
      @SerializedName("AZ")
×
3803
      AZ("AZ"),
3804

3805
      @SerializedName("BA")
×
3806
      BA("BA"),
3807

3808
      @SerializedName("BB")
×
3809
      BB("BB"),
3810

3811
      @SerializedName("BD")
×
3812
      BD("BD"),
3813

3814
      @SerializedName("BE")
×
3815
      BE("BE"),
3816

3817
      @SerializedName("BF")
×
3818
      BF("BF"),
3819

3820
      @SerializedName("BG")
×
3821
      BG("BG"),
3822

3823
      @SerializedName("BH")
×
3824
      BH("BH"),
3825

3826
      @SerializedName("BI")
×
3827
      BI("BI"),
3828

3829
      @SerializedName("BJ")
×
3830
      BJ("BJ"),
3831

3832
      @SerializedName("BL")
×
3833
      BL("BL"),
3834

3835
      @SerializedName("BM")
×
3836
      BM("BM"),
3837

3838
      @SerializedName("BN")
×
3839
      BN("BN"),
3840

3841
      @SerializedName("BO")
×
3842
      BO("BO"),
3843

3844
      @SerializedName("BQ")
×
3845
      BQ("BQ"),
3846

3847
      @SerializedName("BR")
×
3848
      BR("BR"),
3849

3850
      @SerializedName("BS")
×
3851
      BS("BS"),
3852

3853
      @SerializedName("BT")
×
3854
      BT("BT"),
3855

3856
      @SerializedName("BV")
×
3857
      BV("BV"),
3858

3859
      @SerializedName("BW")
×
3860
      BW("BW"),
3861

3862
      @SerializedName("BY")
×
3863
      BY("BY"),
3864

3865
      @SerializedName("BZ")
×
3866
      BZ("BZ"),
3867

3868
      @SerializedName("CA")
×
3869
      CA("CA"),
3870

3871
      @SerializedName("CD")
×
3872
      CD("CD"),
3873

3874
      @SerializedName("CF")
×
3875
      CF("CF"),
3876

3877
      @SerializedName("CG")
×
3878
      CG("CG"),
3879

3880
      @SerializedName("CH")
×
3881
      CH("CH"),
3882

3883
      @SerializedName("CI")
×
3884
      CI("CI"),
3885

3886
      @SerializedName("CK")
×
3887
      CK("CK"),
3888

3889
      @SerializedName("CL")
×
3890
      CL("CL"),
3891

3892
      @SerializedName("CM")
×
3893
      CM("CM"),
3894

3895
      @SerializedName("CN")
×
3896
      CN("CN"),
3897

3898
      @SerializedName("CO")
×
3899
      CO("CO"),
3900

3901
      @SerializedName("CR")
×
3902
      CR("CR"),
3903

3904
      @SerializedName("CV")
×
3905
      CV("CV"),
3906

3907
      @SerializedName("CW")
×
3908
      CW("CW"),
3909

3910
      @SerializedName("CY")
×
3911
      CY("CY"),
3912

3913
      @SerializedName("CZ")
×
3914
      CZ("CZ"),
3915

3916
      @SerializedName("DE")
×
3917
      DE("DE"),
3918

3919
      @SerializedName("DJ")
×
3920
      DJ("DJ"),
3921

3922
      @SerializedName("DK")
×
3923
      DK("DK"),
3924

3925
      @SerializedName("DM")
×
3926
      DM("DM"),
3927

3928
      @SerializedName("DO")
×
3929
      DO("DO"),
3930

3931
      @SerializedName("DZ")
×
3932
      DZ("DZ"),
3933

3934
      @SerializedName("EC")
×
3935
      EC("EC"),
3936

3937
      @SerializedName("EE")
×
3938
      EE("EE"),
3939

3940
      @SerializedName("EG")
×
3941
      EG("EG"),
3942

3943
      @SerializedName("EH")
×
3944
      EH("EH"),
3945

3946
      @SerializedName("ER")
×
3947
      ER("ER"),
3948

3949
      @SerializedName("ES")
×
3950
      ES("ES"),
3951

3952
      @SerializedName("ET")
×
3953
      ET("ET"),
3954

3955
      @SerializedName("FI")
×
3956
      FI("FI"),
3957

3958
      @SerializedName("FJ")
×
3959
      FJ("FJ"),
3960

3961
      @SerializedName("FK")
×
3962
      FK("FK"),
3963

3964
      @SerializedName("FO")
×
3965
      FO("FO"),
3966

3967
      @SerializedName("FR")
×
3968
      FR("FR"),
3969

3970
      @SerializedName("GA")
×
3971
      GA("GA"),
3972

3973
      @SerializedName("GB")
×
3974
      GB("GB"),
3975

3976
      @SerializedName("GD")
×
3977
      GD("GD"),
3978

3979
      @SerializedName("GE")
×
3980
      GE("GE"),
3981

3982
      @SerializedName("GF")
×
3983
      GF("GF"),
3984

3985
      @SerializedName("GG")
×
3986
      GG("GG"),
3987

3988
      @SerializedName("GH")
×
3989
      GH("GH"),
3990

3991
      @SerializedName("GI")
×
3992
      GI("GI"),
3993

3994
      @SerializedName("GL")
×
3995
      GL("GL"),
3996

3997
      @SerializedName("GM")
×
3998
      GM("GM"),
3999

4000
      @SerializedName("GN")
×
4001
      GN("GN"),
4002

4003
      @SerializedName("GP")
×
4004
      GP("GP"),
4005

4006
      @SerializedName("GQ")
×
4007
      GQ("GQ"),
4008

4009
      @SerializedName("GR")
×
4010
      GR("GR"),
4011

4012
      @SerializedName("GS")
×
4013
      GS("GS"),
4014

4015
      @SerializedName("GT")
×
4016
      GT("GT"),
4017

4018
      @SerializedName("GU")
×
4019
      GU("GU"),
4020

4021
      @SerializedName("GW")
×
4022
      GW("GW"),
4023

4024
      @SerializedName("GY")
×
4025
      GY("GY"),
4026

4027
      @SerializedName("HK")
×
4028
      HK("HK"),
4029

4030
      @SerializedName("HN")
×
4031
      HN("HN"),
4032

4033
      @SerializedName("HR")
×
4034
      HR("HR"),
4035

4036
      @SerializedName("HT")
×
4037
      HT("HT"),
4038

4039
      @SerializedName("HU")
×
4040
      HU("HU"),
4041

4042
      @SerializedName("ID")
×
4043
      ID("ID"),
4044

4045
      @SerializedName("IE")
×
4046
      IE("IE"),
4047

4048
      @SerializedName("IL")
×
4049
      IL("IL"),
4050

4051
      @SerializedName("IM")
×
4052
      IM("IM"),
4053

4054
      @SerializedName("IN")
×
4055
      IN("IN"),
4056

4057
      @SerializedName("IO")
×
4058
      IO("IO"),
4059

4060
      @SerializedName("IQ")
×
4061
      IQ("IQ"),
4062

4063
      @SerializedName("IS")
×
4064
      IS("IS"),
4065

4066
      @SerializedName("IT")
×
4067
      IT("IT"),
4068

4069
      @SerializedName("JE")
×
4070
      JE("JE"),
4071

4072
      @SerializedName("JM")
×
4073
      JM("JM"),
4074

4075
      @SerializedName("JO")
×
4076
      JO("JO"),
4077

4078
      @SerializedName("JP")
×
4079
      JP("JP"),
4080

4081
      @SerializedName("KE")
×
4082
      KE("KE"),
4083

4084
      @SerializedName("KG")
×
4085
      KG("KG"),
4086

4087
      @SerializedName("KH")
×
4088
      KH("KH"),
4089

4090
      @SerializedName("KI")
×
4091
      KI("KI"),
4092

4093
      @SerializedName("KM")
×
4094
      KM("KM"),
4095

4096
      @SerializedName("KN")
×
4097
      KN("KN"),
4098

4099
      @SerializedName("KR")
×
4100
      KR("KR"),
4101

4102
      @SerializedName("KW")
×
4103
      KW("KW"),
4104

4105
      @SerializedName("KY")
×
4106
      KY("KY"),
4107

4108
      @SerializedName("KZ")
×
4109
      KZ("KZ"),
4110

4111
      @SerializedName("LA")
×
4112
      LA("LA"),
4113

4114
      @SerializedName("LB")
×
4115
      LB("LB"),
4116

4117
      @SerializedName("LC")
×
4118
      LC("LC"),
4119

4120
      @SerializedName("LI")
×
4121
      LI("LI"),
4122

4123
      @SerializedName("LK")
×
4124
      LK("LK"),
4125

4126
      @SerializedName("LR")
×
4127
      LR("LR"),
4128

4129
      @SerializedName("LS")
×
4130
      LS("LS"),
4131

4132
      @SerializedName("LT")
×
4133
      LT("LT"),
4134

4135
      @SerializedName("LU")
×
4136
      LU("LU"),
4137

4138
      @SerializedName("LV")
×
4139
      LV("LV"),
4140

4141
      @SerializedName("LY")
×
4142
      LY("LY"),
4143

4144
      @SerializedName("MA")
×
4145
      MA("MA"),
4146

4147
      @SerializedName("MC")
×
4148
      MC("MC"),
4149

4150
      @SerializedName("MD")
×
4151
      MD("MD"),
4152

4153
      @SerializedName("ME")
×
4154
      ME("ME"),
4155

4156
      @SerializedName("MF")
×
4157
      MF("MF"),
4158

4159
      @SerializedName("MG")
×
4160
      MG("MG"),
4161

4162
      @SerializedName("MK")
×
4163
      MK("MK"),
4164

4165
      @SerializedName("ML")
×
4166
      ML("ML"),
4167

4168
      @SerializedName("MM")
×
4169
      MM("MM"),
4170

4171
      @SerializedName("MN")
×
4172
      MN("MN"),
4173

4174
      @SerializedName("MO")
×
4175
      MO("MO"),
4176

4177
      @SerializedName("MQ")
×
4178
      MQ("MQ"),
4179

4180
      @SerializedName("MR")
×
4181
      MR("MR"),
4182

4183
      @SerializedName("MS")
×
4184
      MS("MS"),
4185

4186
      @SerializedName("MT")
×
4187
      MT("MT"),
4188

4189
      @SerializedName("MU")
×
4190
      MU("MU"),
4191

4192
      @SerializedName("MV")
×
4193
      MV("MV"),
4194

4195
      @SerializedName("MW")
×
4196
      MW("MW"),
4197

4198
      @SerializedName("MX")
×
4199
      MX("MX"),
4200

4201
      @SerializedName("MY")
×
4202
      MY("MY"),
4203

4204
      @SerializedName("MZ")
×
4205
      MZ("MZ"),
4206

4207
      @SerializedName("NA")
×
4208
      NA("NA"),
4209

4210
      @SerializedName("NC")
×
4211
      NC("NC"),
4212

4213
      @SerializedName("NE")
×
4214
      NE("NE"),
4215

4216
      @SerializedName("NG")
×
4217
      NG("NG"),
4218

4219
      @SerializedName("NI")
×
4220
      NI("NI"),
4221

4222
      @SerializedName("NL")
×
4223
      NL("NL"),
4224

4225
      @SerializedName("NO")
×
4226
      NO("NO"),
4227

4228
      @SerializedName("NP")
×
4229
      NP("NP"),
4230

4231
      @SerializedName("NR")
×
4232
      NR("NR"),
4233

4234
      @SerializedName("NU")
×
4235
      NU("NU"),
4236

4237
      @SerializedName("NZ")
×
4238
      NZ("NZ"),
4239

4240
      @SerializedName("OM")
×
4241
      OM("OM"),
4242

4243
      @SerializedName("PA")
×
4244
      PA("PA"),
4245

4246
      @SerializedName("PE")
×
4247
      PE("PE"),
4248

4249
      @SerializedName("PF")
×
4250
      PF("PF"),
4251

4252
      @SerializedName("PG")
×
4253
      PG("PG"),
4254

4255
      @SerializedName("PH")
×
4256
      PH("PH"),
4257

4258
      @SerializedName("PK")
×
4259
      PK("PK"),
4260

4261
      @SerializedName("PL")
×
4262
      PL("PL"),
4263

4264
      @SerializedName("PM")
×
4265
      PM("PM"),
4266

4267
      @SerializedName("PN")
×
4268
      PN("PN"),
4269

4270
      @SerializedName("PR")
×
4271
      PR("PR"),
4272

4273
      @SerializedName("PS")
×
4274
      PS("PS"),
4275

4276
      @SerializedName("PT")
×
4277
      PT("PT"),
4278

4279
      @SerializedName("PY")
×
4280
      PY("PY"),
4281

4282
      @SerializedName("QA")
×
4283
      QA("QA"),
4284

4285
      @SerializedName("RE")
×
4286
      RE("RE"),
4287

4288
      @SerializedName("RO")
×
4289
      RO("RO"),
4290

4291
      @SerializedName("RS")
×
4292
      RS("RS"),
4293

4294
      @SerializedName("RU")
×
4295
      RU("RU"),
4296

4297
      @SerializedName("RW")
×
4298
      RW("RW"),
4299

4300
      @SerializedName("SA")
×
4301
      SA("SA"),
4302

4303
      @SerializedName("SB")
×
4304
      SB("SB"),
4305

4306
      @SerializedName("SC")
×
4307
      SC("SC"),
4308

4309
      @SerializedName("SE")
×
4310
      SE("SE"),
4311

4312
      @SerializedName("SG")
×
4313
      SG("SG"),
4314

4315
      @SerializedName("SH")
×
4316
      SH("SH"),
4317

4318
      @SerializedName("SI")
×
4319
      SI("SI"),
4320

4321
      @SerializedName("SJ")
×
4322
      SJ("SJ"),
4323

4324
      @SerializedName("SK")
×
4325
      SK("SK"),
4326

4327
      @SerializedName("SL")
×
4328
      SL("SL"),
4329

4330
      @SerializedName("SM")
×
4331
      SM("SM"),
4332

4333
      @SerializedName("SN")
×
4334
      SN("SN"),
4335

4336
      @SerializedName("SO")
×
4337
      SO("SO"),
4338

4339
      @SerializedName("SR")
×
4340
      SR("SR"),
4341

4342
      @SerializedName("SS")
×
4343
      SS("SS"),
4344

4345
      @SerializedName("ST")
×
4346
      ST("ST"),
4347

4348
      @SerializedName("SV")
×
4349
      SV("SV"),
4350

4351
      @SerializedName("SX")
×
4352
      SX("SX"),
4353

4354
      @SerializedName("SZ")
×
4355
      SZ("SZ"),
4356

4357
      @SerializedName("TA")
×
4358
      TA("TA"),
4359

4360
      @SerializedName("TC")
×
4361
      TC("TC"),
4362

4363
      @SerializedName("TD")
×
4364
      TD("TD"),
4365

4366
      @SerializedName("TF")
×
4367
      TF("TF"),
4368

4369
      @SerializedName("TG")
×
4370
      TG("TG"),
4371

4372
      @SerializedName("TH")
×
4373
      TH("TH"),
4374

4375
      @SerializedName("TJ")
×
4376
      TJ("TJ"),
4377

4378
      @SerializedName("TK")
×
4379
      TK("TK"),
4380

4381
      @SerializedName("TL")
×
4382
      TL("TL"),
4383

4384
      @SerializedName("TM")
×
4385
      TM("TM"),
4386

4387
      @SerializedName("TN")
×
4388
      TN("TN"),
4389

4390
      @SerializedName("TO")
×
4391
      TO("TO"),
4392

4393
      @SerializedName("TR")
×
4394
      TR("TR"),
4395

4396
      @SerializedName("TT")
×
4397
      TT("TT"),
4398

4399
      @SerializedName("TV")
×
4400
      TV("TV"),
4401

4402
      @SerializedName("TW")
×
4403
      TW("TW"),
4404

4405
      @SerializedName("TZ")
×
4406
      TZ("TZ"),
4407

4408
      @SerializedName("UA")
×
4409
      UA("UA"),
4410

4411
      @SerializedName("UG")
×
4412
      UG("UG"),
4413

4414
      @SerializedName("US")
×
4415
      US("US"),
4416

4417
      @SerializedName("UY")
×
4418
      UY("UY"),
4419

4420
      @SerializedName("UZ")
×
4421
      UZ("UZ"),
4422

4423
      @SerializedName("VA")
×
4424
      VA("VA"),
4425

4426
      @SerializedName("VC")
×
4427
      VC("VC"),
4428

4429
      @SerializedName("VE")
×
4430
      VE("VE"),
4431

4432
      @SerializedName("VG")
×
4433
      VG("VG"),
4434

4435
      @SerializedName("VN")
×
4436
      VN("VN"),
4437

4438
      @SerializedName("VU")
×
4439
      VU("VU"),
4440

4441
      @SerializedName("WF")
×
4442
      WF("WF"),
4443

4444
      @SerializedName("WS")
×
4445
      WS("WS"),
4446

4447
      @SerializedName("XK")
×
4448
      XK("XK"),
4449

4450
      @SerializedName("YE")
×
4451
      YE("YE"),
4452

4453
      @SerializedName("YT")
×
4454
      YT("YT"),
4455

4456
      @SerializedName("ZA")
×
4457
      ZA("ZA"),
4458

4459
      @SerializedName("ZM")
×
4460
      ZM("ZM"),
4461

4462
      @SerializedName("ZW")
×
4463
      ZW("ZW"),
4464

4465
      @SerializedName("ZZ")
×
4466
      ZZ("ZZ");
4467

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

4471
      AllowedCountry(String value) {
×
4472
        this.value = value;
×
4473
      }
×
4474
    }
4475
  }
4476

4477
  @Getter
4478
  public static class SubscriptionData {
4479
    /**
4480
     * Map of extra parameters for custom features not available in this client library. The content
4481
     * in this map is not serialized under this field's {@code @SerializedName} value. Instead, each
4482
     * key/value pair is serialized as if the key is a root-level field (serialized) name in this
4483
     * param object. Effectively, this map is flattened to its parent instance.
4484
     */
4485
    @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
4486
    Map<String, Object> extraParams;
4487

4488
    /** All invoices will be billed using the specified settings. */
4489
    @SerializedName("invoice_settings")
4490
    InvoiceSettings invoiceSettings;
4491

4492
    /**
4493
     * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that will
4494
     * declaratively set metadata on <a
4495
     * href="https://stripe.com/docs/api/subscriptions">Subscriptions</a> generated from this
4496
     * payment link. Unlike object-level metadata, this field is declarative. Updates will clear
4497
     * prior values.
4498
     */
4499
    @SerializedName("metadata")
4500
    Object metadata;
4501

4502
    /** Settings related to subscription trials. */
4503
    @SerializedName("trial_settings")
4504
    Object trialSettings;
4505

4506
    private SubscriptionData(
4507
        Map<String, Object> extraParams,
4508
        InvoiceSettings invoiceSettings,
4509
        Object metadata,
4510
        Object trialSettings) {
×
4511
      this.extraParams = extraParams;
×
4512
      this.invoiceSettings = invoiceSettings;
×
4513
      this.metadata = metadata;
×
4514
      this.trialSettings = trialSettings;
×
4515
    }
×
4516

4517
    public static Builder builder() {
4518
      return new Builder();
×
4519
    }
4520

4521
    public static class Builder {
×
4522
      private Map<String, Object> extraParams;
4523

4524
      private InvoiceSettings invoiceSettings;
4525

4526
      private Object metadata;
4527

4528
      private Object trialSettings;
4529

4530
      /** Finalize and obtain parameter instance from this builder. */
4531
      public PaymentLinkUpdateParams.SubscriptionData build() {
4532
        return new PaymentLinkUpdateParams.SubscriptionData(
×
4533
            this.extraParams, this.invoiceSettings, this.metadata, this.trialSettings);
4534
      }
4535

4536
      /**
4537
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
4538
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
4539
       * PaymentLinkUpdateParams.SubscriptionData#extraParams} for the field documentation.
4540
       */
4541
      public Builder putExtraParam(String key, Object value) {
4542
        if (this.extraParams == null) {
×
4543
          this.extraParams = new HashMap<>();
×
4544
        }
4545
        this.extraParams.put(key, value);
×
4546
        return this;
×
4547
      }
4548

4549
      /**
4550
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
4551
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
4552
       * See {@link PaymentLinkUpdateParams.SubscriptionData#extraParams} for the field
4553
       * documentation.
4554
       */
4555
      public Builder putAllExtraParam(Map<String, Object> map) {
4556
        if (this.extraParams == null) {
×
4557
          this.extraParams = new HashMap<>();
×
4558
        }
4559
        this.extraParams.putAll(map);
×
4560
        return this;
×
4561
      }
4562

4563
      /** All invoices will be billed using the specified settings. */
4564
      public Builder setInvoiceSettings(
4565
          PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings invoiceSettings) {
4566
        this.invoiceSettings = invoiceSettings;
×
4567
        return this;
×
4568
      }
4569

4570
      /**
4571
       * Add a key/value pair to `metadata` map. A map is initialized for the first `put/putAll`
4572
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
4573
       * PaymentLinkUpdateParams.SubscriptionData#metadata} for the field documentation.
4574
       */
4575
      @SuppressWarnings("unchecked")
4576
      public Builder putMetadata(String key, String value) {
4577
        if (this.metadata == null || this.metadata instanceof EmptyParam) {
×
4578
          this.metadata = new HashMap<String, String>();
×
4579
        }
4580
        ((Map<String, String>) this.metadata).put(key, value);
×
4581
        return this;
×
4582
      }
4583

4584
      /**
4585
       * Add all map key/value pairs to `metadata` map. A map is initialized for the first
4586
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
4587
       * See {@link PaymentLinkUpdateParams.SubscriptionData#metadata} for the field documentation.
4588
       */
4589
      @SuppressWarnings("unchecked")
4590
      public Builder putAllMetadata(Map<String, String> map) {
4591
        if (this.metadata == null || this.metadata instanceof EmptyParam) {
×
4592
          this.metadata = new HashMap<String, String>();
×
4593
        }
4594
        ((Map<String, String>) this.metadata).putAll(map);
×
4595
        return this;
×
4596
      }
4597

4598
      /**
4599
       * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that will
4600
       * declaratively set metadata on <a
4601
       * href="https://stripe.com/docs/api/subscriptions">Subscriptions</a> generated from this
4602
       * payment link. Unlike object-level metadata, this field is declarative. Updates will clear
4603
       * prior values.
4604
       */
4605
      public Builder setMetadata(EmptyParam metadata) {
4606
        this.metadata = metadata;
×
4607
        return this;
×
4608
      }
4609

4610
      /**
4611
       * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that will
4612
       * declaratively set metadata on <a
4613
       * href="https://stripe.com/docs/api/subscriptions">Subscriptions</a> generated from this
4614
       * payment link. Unlike object-level metadata, this field is declarative. Updates will clear
4615
       * prior values.
4616
       */
4617
      public Builder setMetadata(Map<String, String> metadata) {
4618
        this.metadata = metadata;
×
4619
        return this;
×
4620
      }
4621

4622
      /** Settings related to subscription trials. */
4623
      public Builder setTrialSettings(
4624
          PaymentLinkUpdateParams.SubscriptionData.TrialSettings trialSettings) {
4625
        this.trialSettings = trialSettings;
×
4626
        return this;
×
4627
      }
4628

4629
      /** Settings related to subscription trials. */
4630
      public Builder setTrialSettings(EmptyParam trialSettings) {
4631
        this.trialSettings = trialSettings;
×
4632
        return this;
×
4633
      }
4634
    }
4635

4636
    @Getter
4637
    public static class InvoiceSettings {
4638
      /**
4639
       * Map of extra parameters for custom features not available in this client library. The
4640
       * content in this map is not serialized under this field's {@code @SerializedName} value.
4641
       * Instead, each key/value pair is serialized as if the key is a root-level field (serialized)
4642
       * name in this param object. Effectively, this map is flattened to its parent instance.
4643
       */
4644
      @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
4645
      Map<String, Object> extraParams;
4646

4647
      /**
4648
       * The connected account that issues the invoice. The invoice is presented with the branding
4649
       * and support information of the specified account.
4650
       */
4651
      @SerializedName("issuer")
4652
      Issuer issuer;
4653

4654
      private InvoiceSettings(Map<String, Object> extraParams, Issuer issuer) {
×
4655
        this.extraParams = extraParams;
×
4656
        this.issuer = issuer;
×
4657
      }
×
4658

4659
      public static Builder builder() {
4660
        return new Builder();
×
4661
      }
4662

4663
      public static class Builder {
×
4664
        private Map<String, Object> extraParams;
4665

4666
        private Issuer issuer;
4667

4668
        /** Finalize and obtain parameter instance from this builder. */
4669
        public PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings build() {
4670
          return new PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings(
×
4671
              this.extraParams, this.issuer);
4672
        }
4673

4674
        /**
4675
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
4676
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
4677
         * map. See {@link PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings#extraParams} for
4678
         * the field documentation.
4679
         */
4680
        public Builder putExtraParam(String key, Object value) {
4681
          if (this.extraParams == null) {
×
4682
            this.extraParams = new HashMap<>();
×
4683
          }
4684
          this.extraParams.put(key, value);
×
4685
          return this;
×
4686
        }
4687

4688
        /**
4689
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
4690
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
4691
         * map. See {@link PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings#extraParams} for
4692
         * the field documentation.
4693
         */
4694
        public Builder putAllExtraParam(Map<String, Object> map) {
4695
          if (this.extraParams == null) {
×
4696
            this.extraParams = new HashMap<>();
×
4697
          }
4698
          this.extraParams.putAll(map);
×
4699
          return this;
×
4700
        }
4701

4702
        /**
4703
         * The connected account that issues the invoice. The invoice is presented with the branding
4704
         * and support information of the specified account.
4705
         */
4706
        public Builder setIssuer(
4707
            PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings.Issuer issuer) {
4708
          this.issuer = issuer;
×
4709
          return this;
×
4710
        }
4711
      }
4712

4713
      @Getter
4714
      public static class Issuer {
4715
        /** The connected account being referenced when {@code type} is {@code account}. */
4716
        @SerializedName("account")
4717
        Object account;
4718

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

4729
        /** <strong>Required.</strong> Type of the account referenced in the request. */
4730
        @SerializedName("type")
4731
        Type type;
4732

4733
        private Issuer(Object account, Map<String, Object> extraParams, Type type) {
×
4734
          this.account = account;
×
4735
          this.extraParams = extraParams;
×
4736
          this.type = type;
×
4737
        }
×
4738

4739
        public static Builder builder() {
4740
          return new Builder();
×
4741
        }
4742

4743
        public static class Builder {
×
4744
          private Object account;
4745

4746
          private Map<String, Object> extraParams;
4747

4748
          private Type type;
4749

4750
          /** Finalize and obtain parameter instance from this builder. */
4751
          public PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings.Issuer build() {
4752
            return new PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings.Issuer(
×
4753
                this.account, this.extraParams, this.type);
4754
          }
4755

4756
          /** The connected account being referenced when {@code type} is {@code account}. */
4757
          public Builder setAccount(String account) {
4758
            this.account = account;
×
4759
            return this;
×
4760
          }
4761

4762
          /** The connected account being referenced when {@code type} is {@code account}. */
4763
          public Builder setAccount(EmptyParam account) {
4764
            this.account = account;
×
4765
            return this;
×
4766
          }
4767

4768
          /**
4769
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
4770
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
4771
           * map. See {@link
4772
           * PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings.Issuer#extraParams} for the
4773
           * field documentation.
4774
           */
4775
          public Builder putExtraParam(String key, Object value) {
4776
            if (this.extraParams == null) {
×
4777
              this.extraParams = new HashMap<>();
×
4778
            }
4779
            this.extraParams.put(key, value);
×
4780
            return this;
×
4781
          }
4782

4783
          /**
4784
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
4785
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
4786
           * map. See {@link
4787
           * PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings.Issuer#extraParams} for the
4788
           * field documentation.
4789
           */
4790
          public Builder putAllExtraParam(Map<String, Object> map) {
4791
            if (this.extraParams == null) {
×
4792
              this.extraParams = new HashMap<>();
×
4793
            }
4794
            this.extraParams.putAll(map);
×
4795
            return this;
×
4796
          }
4797

4798
          /** <strong>Required.</strong> Type of the account referenced in the request. */
4799
          public Builder setType(
4800
              PaymentLinkUpdateParams.SubscriptionData.InvoiceSettings.Issuer.Type type) {
4801
            this.type = type;
×
4802
            return this;
×
4803
          }
4804
        }
4805

4806
        public enum Type implements ApiRequestParams.EnumParam {
×
4807
          @SerializedName("account")
×
4808
          ACCOUNT("account"),
4809

4810
          @SerializedName("self")
×
4811
          SELF("self");
4812

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

4816
          Type(String value) {
×
4817
            this.value = value;
×
4818
          }
×
4819
        }
4820
      }
4821
    }
4822

4823
    @Getter
4824
    public static class TrialSettings {
4825
      /**
4826
       * <strong>Required.</strong> Defines how the subscription should behave when the user's free
4827
       * trial ends.
4828
       */
4829
      @SerializedName("end_behavior")
4830
      EndBehavior endBehavior;
4831

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

4841
      private TrialSettings(EndBehavior endBehavior, Map<String, Object> extraParams) {
×
4842
        this.endBehavior = endBehavior;
×
4843
        this.extraParams = extraParams;
×
4844
      }
×
4845

4846
      public static Builder builder() {
4847
        return new Builder();
×
4848
      }
4849

4850
      public static class Builder {
×
4851
        private EndBehavior endBehavior;
4852

4853
        private Map<String, Object> extraParams;
4854

4855
        /** Finalize and obtain parameter instance from this builder. */
4856
        public PaymentLinkUpdateParams.SubscriptionData.TrialSettings build() {
4857
          return new PaymentLinkUpdateParams.SubscriptionData.TrialSettings(
×
4858
              this.endBehavior, this.extraParams);
4859
        }
4860

4861
        /**
4862
         * <strong>Required.</strong> Defines how the subscription should behave when the user's
4863
         * free trial ends.
4864
         */
4865
        public Builder setEndBehavior(
4866
            PaymentLinkUpdateParams.SubscriptionData.TrialSettings.EndBehavior endBehavior) {
4867
          this.endBehavior = endBehavior;
×
4868
          return this;
×
4869
        }
4870

4871
        /**
4872
         * Add a key/value pair to `extraParams` map. A map is initialized for the first
4873
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
4874
         * map. See {@link PaymentLinkUpdateParams.SubscriptionData.TrialSettings#extraParams} for
4875
         * the field documentation.
4876
         */
4877
        public Builder putExtraParam(String key, Object value) {
4878
          if (this.extraParams == null) {
×
4879
            this.extraParams = new HashMap<>();
×
4880
          }
4881
          this.extraParams.put(key, value);
×
4882
          return this;
×
4883
        }
4884

4885
        /**
4886
         * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
4887
         * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
4888
         * map. See {@link PaymentLinkUpdateParams.SubscriptionData.TrialSettings#extraParams} for
4889
         * the field documentation.
4890
         */
4891
        public Builder putAllExtraParam(Map<String, Object> map) {
4892
          if (this.extraParams == null) {
×
4893
            this.extraParams = new HashMap<>();
×
4894
          }
4895
          this.extraParams.putAll(map);
×
4896
          return this;
×
4897
        }
4898
      }
4899

4900
      @Getter
4901
      public static class EndBehavior {
4902
        /**
4903
         * Map of extra parameters for custom features not available in this client library. The
4904
         * content in this map is not serialized under this field's {@code @SerializedName} value.
4905
         * Instead, each key/value pair is serialized as if the key is a root-level field
4906
         * (serialized) name in this param object. Effectively, this map is flattened to its parent
4907
         * instance.
4908
         */
4909
        @SerializedName(ApiRequestParams.EXTRA_PARAMS_KEY)
4910
        Map<String, Object> extraParams;
4911

4912
        /**
4913
         * <strong>Required.</strong> Indicates how the subscription should change when the trial
4914
         * ends if the user did not provide a payment method.
4915
         */
4916
        @SerializedName("missing_payment_method")
4917
        MissingPaymentMethod missingPaymentMethod;
4918

4919
        private EndBehavior(
4920
            Map<String, Object> extraParams, MissingPaymentMethod missingPaymentMethod) {
×
4921
          this.extraParams = extraParams;
×
4922
          this.missingPaymentMethod = missingPaymentMethod;
×
4923
        }
×
4924

4925
        public static Builder builder() {
4926
          return new Builder();
×
4927
        }
4928

4929
        public static class Builder {
×
4930
          private Map<String, Object> extraParams;
4931

4932
          private MissingPaymentMethod missingPaymentMethod;
4933

4934
          /** Finalize and obtain parameter instance from this builder. */
4935
          public PaymentLinkUpdateParams.SubscriptionData.TrialSettings.EndBehavior build() {
4936
            return new PaymentLinkUpdateParams.SubscriptionData.TrialSettings.EndBehavior(
×
4937
                this.extraParams, this.missingPaymentMethod);
4938
          }
4939

4940
          /**
4941
           * Add a key/value pair to `extraParams` map. A map is initialized for the first
4942
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
4943
           * map. See {@link
4944
           * PaymentLinkUpdateParams.SubscriptionData.TrialSettings.EndBehavior#extraParams} for the
4945
           * field documentation.
4946
           */
4947
          public Builder putExtraParam(String key, Object value) {
4948
            if (this.extraParams == null) {
×
4949
              this.extraParams = new HashMap<>();
×
4950
            }
4951
            this.extraParams.put(key, value);
×
4952
            return this;
×
4953
          }
4954

4955
          /**
4956
           * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
4957
           * `put/putAll` call, and subsequent calls add additional key/value pairs to the original
4958
           * map. See {@link
4959
           * PaymentLinkUpdateParams.SubscriptionData.TrialSettings.EndBehavior#extraParams} for the
4960
           * field documentation.
4961
           */
4962
          public Builder putAllExtraParam(Map<String, Object> map) {
4963
            if (this.extraParams == null) {
×
4964
              this.extraParams = new HashMap<>();
×
4965
            }
4966
            this.extraParams.putAll(map);
×
4967
            return this;
×
4968
          }
4969

4970
          /**
4971
           * <strong>Required.</strong> Indicates how the subscription should change when the trial
4972
           * ends if the user did not provide a payment method.
4973
           */
4974
          public Builder setMissingPaymentMethod(
4975
              PaymentLinkUpdateParams.SubscriptionData.TrialSettings.EndBehavior
4976
                      .MissingPaymentMethod
4977
                  missingPaymentMethod) {
4978
            this.missingPaymentMethod = missingPaymentMethod;
×
4979
            return this;
×
4980
          }
4981
        }
4982

4983
        public enum MissingPaymentMethod implements ApiRequestParams.EnumParam {
×
4984
          @SerializedName("cancel")
×
4985
          CANCEL("cancel"),
4986

4987
          @SerializedName("create_invoice")
×
4988
          CREATE_INVOICE("create_invoice"),
4989

4990
          @SerializedName("pause")
×
4991
          PAUSE("pause");
4992

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

4996
          MissingPaymentMethod(String value) {
×
4997
            this.value = value;
×
4998
          }
×
4999
        }
5000
      }
5001
    }
5002
  }
5003

5004
  @Getter
5005
  public static class TaxIdCollection {
5006
    /**
5007
     * <strong>Required.</strong> Enable tax ID collection during checkout. Defaults to {@code
5008
     * false}.
5009
     */
5010
    @SerializedName("enabled")
5011
    Boolean enabled;
5012

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

5022
    /** Describes whether a tax ID is required during checkout. Defaults to {@code never}. */
5023
    @SerializedName("required")
5024
    Required required;
5025

5026
    private TaxIdCollection(Boolean enabled, Map<String, Object> extraParams, Required required) {
×
5027
      this.enabled = enabled;
×
5028
      this.extraParams = extraParams;
×
5029
      this.required = required;
×
5030
    }
×
5031

5032
    public static Builder builder() {
5033
      return new Builder();
×
5034
    }
5035

5036
    public static class Builder {
×
5037
      private Boolean enabled;
5038

5039
      private Map<String, Object> extraParams;
5040

5041
      private Required required;
5042

5043
      /** Finalize and obtain parameter instance from this builder. */
5044
      public PaymentLinkUpdateParams.TaxIdCollection build() {
5045
        return new PaymentLinkUpdateParams.TaxIdCollection(
×
5046
            this.enabled, this.extraParams, this.required);
5047
      }
5048

5049
      /**
5050
       * <strong>Required.</strong> Enable tax ID collection during checkout. Defaults to {@code
5051
       * false}.
5052
       */
5053
      public Builder setEnabled(Boolean enabled) {
5054
        this.enabled = enabled;
×
5055
        return this;
×
5056
      }
5057

5058
      /**
5059
       * Add a key/value pair to `extraParams` map. A map is initialized for the first `put/putAll`
5060
       * call, and subsequent calls add additional key/value pairs to the original map. See {@link
5061
       * PaymentLinkUpdateParams.TaxIdCollection#extraParams} for the field documentation.
5062
       */
5063
      public Builder putExtraParam(String key, Object value) {
5064
        if (this.extraParams == null) {
×
5065
          this.extraParams = new HashMap<>();
×
5066
        }
5067
        this.extraParams.put(key, value);
×
5068
        return this;
×
5069
      }
5070

5071
      /**
5072
       * Add all map key/value pairs to `extraParams` map. A map is initialized for the first
5073
       * `put/putAll` call, and subsequent calls add additional key/value pairs to the original map.
5074
       * See {@link PaymentLinkUpdateParams.TaxIdCollection#extraParams} for the field
5075
       * documentation.
5076
       */
5077
      public Builder putAllExtraParam(Map<String, Object> map) {
5078
        if (this.extraParams == null) {
×
5079
          this.extraParams = new HashMap<>();
×
5080
        }
5081
        this.extraParams.putAll(map);
×
5082
        return this;
×
5083
      }
5084

5085
      /** Describes whether a tax ID is required during checkout. Defaults to {@code never}. */
5086
      public Builder setRequired(PaymentLinkUpdateParams.TaxIdCollection.Required required) {
5087
        this.required = required;
×
5088
        return this;
×
5089
      }
5090
    }
5091

5092
    public enum Required implements ApiRequestParams.EnumParam {
×
5093
      @SerializedName("if_supported")
×
5094
      IF_SUPPORTED("if_supported"),
5095

5096
      @SerializedName("never")
×
5097
      NEVER("never");
5098

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

5102
      Required(String value) {
×
5103
        this.value = value;
×
5104
      }
×
5105
    }
5106
  }
5107

5108
  public enum BillingAddressCollection implements ApiRequestParams.EnumParam {
×
5109
    @SerializedName("auto")
×
5110
    AUTO("auto"),
5111

5112
    @SerializedName("required")
×
5113
    REQUIRED("required");
5114

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

5118
    BillingAddressCollection(String value) {
×
5119
      this.value = value;
×
5120
    }
×
5121
  }
5122

5123
  public enum CustomerCreation implements ApiRequestParams.EnumParam {
×
5124
    @SerializedName("always")
×
5125
    ALWAYS("always"),
5126

5127
    @SerializedName("if_required")
×
5128
    IF_REQUIRED("if_required");
5129

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

5133
    CustomerCreation(String value) {
×
5134
      this.value = value;
×
5135
    }
×
5136
  }
5137

5138
  public enum PaymentMethodCollection implements ApiRequestParams.EnumParam {
×
5139
    @SerializedName("always")
×
5140
    ALWAYS("always"),
5141

5142
    @SerializedName("if_required")
×
5143
    IF_REQUIRED("if_required");
5144

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

5148
    PaymentMethodCollection(String value) {
×
5149
      this.value = value;
×
5150
    }
×
5151
  }
5152

5153
  public enum PaymentMethodType implements ApiRequestParams.EnumParam {
×
5154
    @SerializedName("affirm")
×
5155
    AFFIRM("affirm"),
5156

5157
    @SerializedName("afterpay_clearpay")
×
5158
    AFTERPAY_CLEARPAY("afterpay_clearpay"),
5159

5160
    @SerializedName("alipay")
×
5161
    ALIPAY("alipay"),
5162

5163
    @SerializedName("alma")
×
5164
    ALMA("alma"),
5165

5166
    @SerializedName("au_becs_debit")
×
5167
    AU_BECS_DEBIT("au_becs_debit"),
5168

5169
    @SerializedName("bacs_debit")
×
5170
    BACS_DEBIT("bacs_debit"),
5171

5172
    @SerializedName("bancontact")
×
5173
    BANCONTACT("bancontact"),
5174

5175
    @SerializedName("blik")
×
5176
    BLIK("blik"),
5177

5178
    @SerializedName("boleto")
×
5179
    BOLETO("boleto"),
5180

5181
    @SerializedName("card")
×
5182
    CARD("card"),
5183

5184
    @SerializedName("cashapp")
×
5185
    CASHAPP("cashapp"),
5186

5187
    @SerializedName("eps")
×
5188
    EPS("eps"),
5189

5190
    @SerializedName("fpx")
×
5191
    FPX("fpx"),
5192

5193
    @SerializedName("giropay")
×
5194
    GIROPAY("giropay"),
5195

5196
    @SerializedName("gopay")
×
5197
    GOPAY("gopay"),
5198

5199
    @SerializedName("grabpay")
×
5200
    GRABPAY("grabpay"),
5201

5202
    @SerializedName("ideal")
×
5203
    IDEAL("ideal"),
5204

5205
    @SerializedName("klarna")
×
5206
    KLARNA("klarna"),
5207

5208
    @SerializedName("konbini")
×
5209
    KONBINI("konbini"),
5210

5211
    @SerializedName("link")
×
5212
    LINK("link"),
5213

5214
    @SerializedName("mb_way")
×
5215
    MB_WAY("mb_way"),
5216

5217
    @SerializedName("mobilepay")
×
5218
    MOBILEPAY("mobilepay"),
5219

5220
    @SerializedName("multibanco")
×
5221
    MULTIBANCO("multibanco"),
5222

5223
    @SerializedName("oxxo")
×
5224
    OXXO("oxxo"),
5225

5226
    @SerializedName("p24")
×
5227
    P24("p24"),
5228

5229
    @SerializedName("paynow")
×
5230
    PAYNOW("paynow"),
5231

5232
    @SerializedName("paypal")
×
5233
    PAYPAL("paypal"),
5234

5235
    @SerializedName("payto")
×
5236
    PAYTO("payto"),
5237

5238
    @SerializedName("pix")
×
5239
    PIX("pix"),
5240

5241
    @SerializedName("promptpay")
×
5242
    PROMPTPAY("promptpay"),
5243

5244
    @SerializedName("qris")
×
5245
    QRIS("qris"),
5246

5247
    @SerializedName("rechnung")
×
5248
    RECHNUNG("rechnung"),
5249

5250
    @SerializedName("sepa_debit")
×
5251
    SEPA_DEBIT("sepa_debit"),
5252

5253
    @SerializedName("shopeepay")
×
5254
    SHOPEEPAY("shopeepay"),
5255

5256
    @SerializedName("sofort")
×
5257
    SOFORT("sofort"),
5258

5259
    @SerializedName("swish")
×
5260
    SWISH("swish"),
5261

5262
    @SerializedName("twint")
×
5263
    TWINT("twint"),
5264

5265
    @SerializedName("us_bank_account")
×
5266
    US_BANK_ACCOUNT("us_bank_account"),
5267

5268
    @SerializedName("wechat_pay")
×
5269
    WECHAT_PAY("wechat_pay"),
5270

5271
    @SerializedName("zip")
×
5272
    ZIP("zip");
5273

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

5277
    PaymentMethodType(String value) {
×
5278
      this.value = value;
×
5279
    }
×
5280
  }
5281

NEW
5282
  public enum SubmitType implements ApiRequestParams.EnumParam {
×
NEW
5283
    @SerializedName("auto")
×
5284
    AUTO("auto"),
5285

NEW
5286
    @SerializedName("book")
×
5287
    BOOK("book"),
5288

NEW
5289
    @SerializedName("donate")
×
5290
    DONATE("donate"),
5291

NEW
5292
    @SerializedName("pay")
×
5293
    PAY("pay");
5294

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

NEW
5298
    SubmitType(String value) {
×
NEW
5299
      this.value = value;
×
NEW
5300
    }
×
5301
  }
5302
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc