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

stripe / stripe-java / #16380

30 Aug 2024 07:54PM UTC coverage: 12.882% (-0.004%) from 12.886%
#16380

push

github

web-flow
Merge from master after the changes to not pass api_mode from individual methods (#1857)

* Generate SDK for OpenAPI spec version 1230 (#1856)

* Bump version to 26.9.0

* No need for APIMode to be passed around from individual API methods (#1855)

* Generated code

* Update the code around raw request

* Update the v2 tests to use v2 path

16 of 23 new or added lines in 7 files covered. (69.57%)

706 existing lines in 213 files now uncovered.

18468 of 143365 relevant lines covered (12.88%)

0.13 hits per line

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

59.7
/src/main/java/com/stripe/model/InvoiceItem.java
1
// File generated from our OpenAPI spec
2
package com.stripe.model;
3

4
import com.google.gson.annotations.SerializedName;
5
import com.stripe.exception.StripeException;
6
import com.stripe.model.testhelpers.TestClock;
7
import com.stripe.net.ApiRequest;
8
import com.stripe.net.ApiRequestParams;
9
import com.stripe.net.ApiResource;
10
import com.stripe.net.BaseAddress;
11
import com.stripe.net.RequestOptions;
12
import com.stripe.net.StripeResponseGetter;
13
import com.stripe.param.InvoiceItemCreateParams;
14
import com.stripe.param.InvoiceItemListParams;
15
import com.stripe.param.InvoiceItemRetrieveParams;
16
import com.stripe.param.InvoiceItemUpdateParams;
17
import java.math.BigDecimal;
18
import java.util.List;
19
import java.util.Map;
20
import java.util.stream.Collectors;
21
import lombok.EqualsAndHashCode;
22
import lombok.Getter;
23
import lombok.Setter;
24

25
/**
26
 * Invoice Items represent the component lines of an <a
27
 * href="https://stripe.com/docs/api/invoices">invoice</a>. An invoice item is added to an invoice
28
 * by creating or updating it with an {@code invoice} field, at which point it will be included as
29
 * <a href="https://stripe.com/docs/api/invoices/line_item">an invoice line item</a> within <a
30
 * href="https://stripe.com/docs/api/invoices/object#invoice_object-lines">invoice.lines</a>.
31
 *
32
 * <p>Invoice Items can be created before you are ready to actually send the invoice. This can be
33
 * particularly useful when combined with a <a
34
 * href="https://stripe.com/docs/api/subscriptions">subscription</a>. Sometimes you want to add a
35
 * charge or credit to a customer, but actually charge or credit the customer’s card only at the end
36
 * of a regular billing cycle. This is useful for combining several charges (to minimize
37
 * per-transaction fees), or for having Stripe tabulate your usage-based billing totals.
38
 *
39
 * <p>Related guides: <a href="https://stripe.com/docs/invoicing/integration">Integrate with the
40
 * Invoicing API</a>, <a
41
 * href="https://stripe.com/docs/billing/invoices/subscription#adding-upcoming-invoice-items">Subscription
42
 * Invoices</a>.
43
 */
44
@Getter
45
@Setter
46
@EqualsAndHashCode(callSuper = false)
47
public class InvoiceItem extends ApiResource implements HasId, MetadataStore<InvoiceItem> {
1✔
48
  /**
49
   * Amount (in the {@code currency} specified) of the invoice item. This should always be equal to
50
   * {@code unit_amount * quantity}.
51
   */
52
  @SerializedName("amount")
53
  Long amount;
54

55
  /**
56
   * Three-letter <a href="https://www.iso.org/iso-4217-currency-codes.html">ISO currency code</a>,
57
   * in lowercase. Must be a <a href="https://stripe.com/docs/currencies">supported currency</a>.
58
   */
59
  @SerializedName("currency")
60
  String currency;
61

62
  /** The ID of the customer who will be billed when this invoice item is billed. */
63
  @SerializedName("customer")
64
  @Getter(lombok.AccessLevel.NONE)
65
  @Setter(lombok.AccessLevel.NONE)
66
  ExpandableField<Customer> customer;
67

68
  /** Time at which the object was created. Measured in seconds since the Unix epoch. */
69
  @SerializedName("date")
70
  Long date;
71

72
  /** Always true for a deleted object. */
73
  @SerializedName("deleted")
74
  Boolean deleted;
75

76
  /** An arbitrary string attached to the object. Often useful for displaying to users. */
77
  @SerializedName("description")
78
  String description;
79

80
  /** If true, discounts will apply to this invoice item. Always false for prorations. */
81
  @SerializedName("discountable")
82
  Boolean discountable;
83

84
  /**
85
   * The discounts which apply to the invoice item. Item discounts are applied before invoice
86
   * discounts. Use {@code expand[]=discounts} to expand each discount.
87
   */
88
  @SerializedName("discounts")
89
  List<ExpandableField<Discount>> discounts;
90

91
  /** Unique identifier for the object. */
92
  @Getter(onMethod_ = {@Override})
93
  @SerializedName("id")
94
  String id;
95

96
  /** The ID of the invoice this invoice item belongs to. */
97
  @SerializedName("invoice")
98
  @Getter(lombok.AccessLevel.NONE)
99
  @Setter(lombok.AccessLevel.NONE)
100
  ExpandableField<Invoice> invoice;
101

102
  /**
103
   * Has the value {@code true} if the object exists in live mode or the value {@code false} if the
104
   * object exists in test mode.
105
   */
106
  @SerializedName("livemode")
107
  Boolean livemode;
108

109
  /**
110
   * The margins which apply to the invoice item. When set, the {@code default_margins} on the
111
   * invoice do not apply to this invoice item.
112
   */
113
  @SerializedName("margins")
114
  List<ExpandableField<Margin>> margins;
115

116
  /**
117
   * Set of <a href="https://stripe.com/docs/api/metadata">key-value pairs</a> that you can attach
118
   * to an object. This can be useful for storing additional information about the object in a
119
   * structured format.
120
   */
121
  @Getter(onMethod_ = {@Override})
122
  @SerializedName("metadata")
123
  Map<String, String> metadata;
124

125
  /**
126
   * String representing the object's type. Objects of the same type share the same value.
127
   *
128
   * <p>Equal to {@code invoiceitem}.
129
   */
130
  @SerializedName("object")
131
  String object;
132

133
  @SerializedName("period")
134
  Period period;
135

136
  /**
137
   * If the invoice item is a proration, the plan of the subscription that the proration was
138
   * computed for.
139
   */
140
  @SerializedName("plan")
141
  Plan plan;
142

143
  /** The price of the invoice item. */
144
  @SerializedName("price")
145
  Price price;
146

147
  /**
148
   * Whether the invoice item was created automatically as a proration adjustment when the customer
149
   * switched plans.
150
   */
151
  @SerializedName("proration")
152
  Boolean proration;
153

154
  /**
155
   * Quantity of units for the invoice item. If the invoice item is a proration, the quantity of the
156
   * subscription that the proration was computed for.
157
   */
158
  @SerializedName("quantity")
159
  Long quantity;
160

161
  /** The subscription that this invoice item has been created for, if any. */
162
  @SerializedName("subscription")
163
  @Getter(lombok.AccessLevel.NONE)
164
  @Setter(lombok.AccessLevel.NONE)
165
  ExpandableField<Subscription> subscription;
166

167
  /** The subscription item that this invoice item has been created for, if any. */
168
  @SerializedName("subscription_item")
169
  String subscriptionItem;
170

171
  /**
172
   * The tax rates which apply to the invoice item. When set, the {@code default_tax_rates} on the
173
   * invoice do not apply to this invoice item.
174
   */
175
  @SerializedName("tax_rates")
176
  List<TaxRate> taxRates;
177

178
  /** ID of the test clock this invoice item belongs to. */
179
  @SerializedName("test_clock")
180
  @Getter(lombok.AccessLevel.NONE)
181
  @Setter(lombok.AccessLevel.NONE)
182
  ExpandableField<TestClock> testClock;
183

184
  /** Unit amount (in the {@code currency} specified) of the invoice item. */
185
  @SerializedName("unit_amount")
186
  Long unitAmount;
187

188
  /** Same as {@code unit_amount}, but contains a decimal value with at most 12 decimal places. */
189
  @SerializedName("unit_amount_decimal")
190
  BigDecimal unitAmountDecimal;
191

192
  /** Get ID of expandable {@code customer} object. */
193
  public String getCustomer() {
194
    return (this.customer != null) ? this.customer.getId() : null;
1✔
195
  }
196

197
  public void setCustomer(String id) {
198
    this.customer = ApiResource.setExpandableFieldId(id, this.customer);
×
199
  }
×
200

201
  /** Get expanded {@code customer}. */
202
  public Customer getCustomerObject() {
203
    return (this.customer != null) ? this.customer.getExpanded() : null;
1✔
204
  }
205

206
  public void setCustomerObject(Customer expandableObject) {
207
    this.customer = new ExpandableField<Customer>(expandableObject.getId(), expandableObject);
×
208
  }
×
209

210
  /** Get ID of expandable {@code invoice} object. */
211
  public String getInvoice() {
212
    return (this.invoice != null) ? this.invoice.getId() : null;
1✔
213
  }
214

215
  public void setInvoice(String id) {
216
    this.invoice = ApiResource.setExpandableFieldId(id, this.invoice);
×
217
  }
×
218

219
  /** Get expanded {@code invoice}. */
220
  public Invoice getInvoiceObject() {
221
    return (this.invoice != null) ? this.invoice.getExpanded() : null;
1✔
222
  }
223

224
  public void setInvoiceObject(Invoice expandableObject) {
225
    this.invoice = new ExpandableField<Invoice>(expandableObject.getId(), expandableObject);
×
226
  }
×
227

228
  /** Get ID of expandable {@code subscription} object. */
229
  public String getSubscription() {
230
    return (this.subscription != null) ? this.subscription.getId() : null;
1✔
231
  }
232

233
  public void setSubscription(String id) {
234
    this.subscription = ApiResource.setExpandableFieldId(id, this.subscription);
×
235
  }
×
236

237
  /** Get expanded {@code subscription}. */
238
  public Subscription getSubscriptionObject() {
239
    return (this.subscription != null) ? this.subscription.getExpanded() : null;
1✔
240
  }
241

242
  public void setSubscriptionObject(Subscription expandableObject) {
243
    this.subscription =
×
244
        new ExpandableField<Subscription>(expandableObject.getId(), expandableObject);
×
245
  }
×
246

247
  /** Get ID of expandable {@code testClock} object. */
248
  public String getTestClock() {
249
    return (this.testClock != null) ? this.testClock.getId() : null;
1✔
250
  }
251

252
  public void setTestClock(String id) {
253
    this.testClock = ApiResource.setExpandableFieldId(id, this.testClock);
×
254
  }
×
255

256
  /** Get expanded {@code testClock}. */
257
  public TestClock getTestClockObject() {
258
    return (this.testClock != null) ? this.testClock.getExpanded() : null;
×
259
  }
260

261
  public void setTestClockObject(TestClock expandableObject) {
262
    this.testClock = new ExpandableField<TestClock>(expandableObject.getId(), expandableObject);
×
263
  }
×
264

265
  /** Get IDs of expandable {@code discounts} object list. */
266
  public List<String> getDiscounts() {
267
    return (this.discounts != null)
1✔
268
        ? this.discounts.stream().map(x -> x.getId()).collect(Collectors.toList())
1✔
269
        : null;
×
270
  }
271

272
  public void setDiscounts(List<String> ids) {
273
    if (ids == null) {
1✔
274
      this.discounts = null;
×
275
      return;
×
276
    }
277
    if (this.discounts != null
1✔
278
        && this.discounts.stream().map(x -> x.getId()).collect(Collectors.toList()).equals(ids)) {
1✔
279
      // noop if the ids are equal to what are already present
280
      return;
1✔
281
    }
282
    this.discounts =
1✔
283
        (ids != null)
1✔
284
            ? ids.stream()
1✔
285
                .map(id -> new ExpandableField<Discount>(id, null))
1✔
286
                .collect(Collectors.toList())
1✔
287
            : null;
1✔
288
  }
1✔
289

290
  /** Get expanded {@code discounts}. */
291
  public List<Discount> getDiscountObjects() {
292
    return (this.discounts != null)
1✔
293
        ? this.discounts.stream().map(x -> x.getExpanded()).collect(Collectors.toList())
1✔
294
        : null;
×
295
  }
296

297
  public void setDiscountObjects(List<Discount> objs) {
298
    this.discounts =
1✔
299
        objs != null
1✔
300
            ? objs.stream()
1✔
301
                .map(x -> new ExpandableField<Discount>(x.getId(), x))
1✔
302
                .collect(Collectors.toList())
1✔
303
            : null;
1✔
304
  }
1✔
305

306
  /** Get IDs of expandable {@code margins} object list. */
307
  public List<String> getMargins() {
308
    return (this.margins != null)
1✔
309
        ? this.margins.stream().map(x -> x.getId()).collect(Collectors.toList())
×
310
        : null;
1✔
311
  }
312

313
  public void setMargins(List<String> ids) {
314
    if (ids == null) {
×
315
      this.margins = null;
×
316
      return;
×
317
    }
318
    if (this.margins != null
×
319
        && this.margins.stream().map(x -> x.getId()).collect(Collectors.toList()).equals(ids)) {
×
320
      // noop if the ids are equal to what are already present
321
      return;
×
322
    }
323
    this.margins =
×
324
        (ids != null)
×
325
            ? ids.stream()
×
326
                .map(id -> new ExpandableField<Margin>(id, null))
×
327
                .collect(Collectors.toList())
×
328
            : null;
×
329
  }
×
330

331
  /** Get expanded {@code margins}. */
332
  public List<Margin> getMarginObjects() {
333
    return (this.margins != null)
×
334
        ? this.margins.stream().map(x -> x.getExpanded()).collect(Collectors.toList())
×
335
        : null;
×
336
  }
337

338
  public void setMarginObjects(List<Margin> objs) {
339
    this.margins =
×
340
        objs != null
×
341
            ? objs.stream()
×
342
                .map(x -> new ExpandableField<Margin>(x.getId(), x))
×
343
                .collect(Collectors.toList())
×
344
            : null;
×
345
  }
×
346

347
  /**
348
   * Creates an item to be added to a draft invoice (up to 250 items per invoice). If no invoice is
349
   * specified, the item will be on the next invoice created for the customer specified.
350
   */
351
  public static InvoiceItem create(Map<String, Object> params) throws StripeException {
352
    return create(params, (RequestOptions) null);
1✔
353
  }
354

355
  /**
356
   * Creates an item to be added to a draft invoice (up to 250 items per invoice). If no invoice is
357
   * specified, the item will be on the next invoice created for the customer specified.
358
   */
359
  public static InvoiceItem create(Map<String, Object> params, RequestOptions options)
360
      throws StripeException {
361
    String path = "/v1/invoiceitems";
1✔
362
    ApiRequest request =
1✔
363
        new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options);
364
    return getGlobalResponseGetter().request(request, InvoiceItem.class);
1✔
365
  }
366

367
  /**
368
   * Creates an item to be added to a draft invoice (up to 250 items per invoice). If no invoice is
369
   * specified, the item will be on the next invoice created for the customer specified.
370
   */
371
  public static InvoiceItem create(InvoiceItemCreateParams params) throws StripeException {
372
    return create(params, (RequestOptions) null);
1✔
373
  }
374

375
  /**
376
   * Creates an item to be added to a draft invoice (up to 250 items per invoice). If no invoice is
377
   * specified, the item will be on the next invoice created for the customer specified.
378
   */
379
  public static InvoiceItem create(InvoiceItemCreateParams params, RequestOptions options)
380
      throws StripeException {
381
    String path = "/v1/invoiceitems";
1✔
382
    ApiResource.checkNullTypedParams(path, params);
1✔
383
    ApiRequest request =
1✔
384
        new ApiRequest(
385
            BaseAddress.API,
386
            ApiResource.RequestMethod.POST,
387
            path,
388
            ApiRequestParams.paramsToMap(params),
1✔
389
            options);
390
    return getGlobalResponseGetter().request(request, InvoiceItem.class);
1✔
391
  }
392

393
  /**
394
   * Deletes an invoice item, removing it from an invoice. Deleting invoice items is only possible
395
   * when they’re not attached to invoices, or if it’s attached to a draft invoice.
396
   */
397
  public InvoiceItem delete() throws StripeException {
398
    return delete((Map<String, Object>) null, (RequestOptions) null);
1✔
399
  }
400

401
  /**
402
   * Deletes an invoice item, removing it from an invoice. Deleting invoice items is only possible
403
   * when they’re not attached to invoices, or if it’s attached to a draft invoice.
404
   */
405
  public InvoiceItem delete(RequestOptions options) throws StripeException {
406
    return delete((Map<String, Object>) null, options);
×
407
  }
408

409
  /**
410
   * Deletes an invoice item, removing it from an invoice. Deleting invoice items is only possible
411
   * when they’re not attached to invoices, or if it’s attached to a draft invoice.
412
   */
413
  public InvoiceItem delete(Map<String, Object> params) throws StripeException {
414
    return delete(params, (RequestOptions) null);
×
415
  }
416

417
  /**
418
   * Deletes an invoice item, removing it from an invoice. Deleting invoice items is only possible
419
   * when they’re not attached to invoices, or if it’s attached to a draft invoice.
420
   */
421
  public InvoiceItem delete(Map<String, Object> params, RequestOptions options)
422
      throws StripeException {
423
    String path = String.format("/v1/invoiceitems/%s", ApiResource.urlEncodeId(this.getId()));
1✔
424
    ApiRequest request =
1✔
425
        new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.DELETE, path, params, options);
426
    return getResponseGetter().request(request, InvoiceItem.class);
1✔
427
  }
428

429
  /**
430
   * Returns a list of your invoice items. Invoice items are returned sorted by creation date, with
431
   * the most recently created invoice items appearing first.
432
   */
433
  public static InvoiceItemCollection list(Map<String, Object> params) throws StripeException {
434
    return list(params, (RequestOptions) null);
1✔
435
  }
436

437
  /**
438
   * Returns a list of your invoice items. Invoice items are returned sorted by creation date, with
439
   * the most recently created invoice items appearing first.
440
   */
441
  public static InvoiceItemCollection list(Map<String, Object> params, RequestOptions options)
442
      throws StripeException {
443
    String path = "/v1/invoiceitems";
1✔
444
    ApiRequest request =
1✔
445
        new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.GET, path, params, options);
446
    return getGlobalResponseGetter().request(request, InvoiceItemCollection.class);
1✔
447
  }
448

449
  /**
450
   * Returns a list of your invoice items. Invoice items are returned sorted by creation date, with
451
   * the most recently created invoice items appearing first.
452
   */
453
  public static InvoiceItemCollection list(InvoiceItemListParams params) throws StripeException {
454
    return list(params, (RequestOptions) null);
1✔
455
  }
456

457
  /**
458
   * Returns a list of your invoice items. Invoice items are returned sorted by creation date, with
459
   * the most recently created invoice items appearing first.
460
   */
461
  public static InvoiceItemCollection list(InvoiceItemListParams params, RequestOptions options)
462
      throws StripeException {
463
    String path = "/v1/invoiceitems";
1✔
464
    ApiResource.checkNullTypedParams(path, params);
1✔
465
    ApiRequest request =
1✔
466
        new ApiRequest(
467
            BaseAddress.API,
468
            ApiResource.RequestMethod.GET,
469
            path,
470
            ApiRequestParams.paramsToMap(params),
1✔
471
            options);
472
    return getGlobalResponseGetter().request(request, InvoiceItemCollection.class);
1✔
473
  }
474

475
  /** Retrieves the invoice item with the given ID. */
476
  public static InvoiceItem retrieve(String invoiceitem) throws StripeException {
477
    return retrieve(invoiceitem, (Map<String, Object>) null, (RequestOptions) null);
1✔
478
  }
479

480
  /** Retrieves the invoice item with the given ID. */
481
  public static InvoiceItem retrieve(String invoiceitem, RequestOptions options)
482
      throws StripeException {
483
    return retrieve(invoiceitem, (Map<String, Object>) null, options);
×
484
  }
485

486
  /** Retrieves the invoice item with the given ID. */
487
  public static InvoiceItem retrieve(
488
      String invoiceitem, Map<String, Object> params, RequestOptions options)
489
      throws StripeException {
490
    String path = String.format("/v1/invoiceitems/%s", ApiResource.urlEncodeId(invoiceitem));
1✔
491
    ApiRequest request =
1✔
492
        new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.GET, path, params, options);
493
    return getGlobalResponseGetter().request(request, InvoiceItem.class);
1✔
494
  }
495

496
  /** Retrieves the invoice item with the given ID. */
497
  public static InvoiceItem retrieve(
498
      String invoiceitem, InvoiceItemRetrieveParams params, RequestOptions options)
499
      throws StripeException {
500
    String path = String.format("/v1/invoiceitems/%s", ApiResource.urlEncodeId(invoiceitem));
×
501
    ApiResource.checkNullTypedParams(path, params);
×
502
    ApiRequest request =
×
503
        new ApiRequest(
504
            BaseAddress.API,
505
            ApiResource.RequestMethod.GET,
506
            path,
507
            ApiRequestParams.paramsToMap(params),
×
508
            options);
UNCOV
509
    return getGlobalResponseGetter().request(request, InvoiceItem.class);
×
510
  }
511

512
  /**
513
   * Updates the amount or description of an invoice item on an upcoming invoice. Updating an
514
   * invoice item is only possible before the invoice it’s attached to is closed.
515
   */
516
  @Override
517
  public InvoiceItem update(Map<String, Object> params) throws StripeException {
518
    return update(params, (RequestOptions) null);
1✔
519
  }
520

521
  /**
522
   * Updates the amount or description of an invoice item on an upcoming invoice. Updating an
523
   * invoice item is only possible before the invoice it’s attached to is closed.
524
   */
525
  @Override
526
  public InvoiceItem update(Map<String, Object> params, RequestOptions options)
527
      throws StripeException {
528
    String path = String.format("/v1/invoiceitems/%s", ApiResource.urlEncodeId(this.getId()));
1✔
529
    ApiRequest request =
1✔
530
        new ApiRequest(BaseAddress.API, ApiResource.RequestMethod.POST, path, params, options);
531
    return getResponseGetter().request(request, InvoiceItem.class);
1✔
532
  }
533

534
  /**
535
   * Updates the amount or description of an invoice item on an upcoming invoice. Updating an
536
   * invoice item is only possible before the invoice it’s attached to is closed.
537
   */
538
  public InvoiceItem update(InvoiceItemUpdateParams params) throws StripeException {
539
    return update(params, (RequestOptions) null);
1✔
540
  }
541

542
  /**
543
   * Updates the amount or description of an invoice item on an upcoming invoice. Updating an
544
   * invoice item is only possible before the invoice it’s attached to is closed.
545
   */
546
  public InvoiceItem update(InvoiceItemUpdateParams params, RequestOptions options)
547
      throws StripeException {
548
    String path = String.format("/v1/invoiceitems/%s", ApiResource.urlEncodeId(this.getId()));
1✔
549
    ApiResource.checkNullTypedParams(path, params);
1✔
550
    ApiRequest request =
1✔
551
        new ApiRequest(
552
            BaseAddress.API,
553
            ApiResource.RequestMethod.POST,
554
            path,
555
            ApiRequestParams.paramsToMap(params),
1✔
556
            options);
557
    return getResponseGetter().request(request, InvoiceItem.class);
1✔
558
  }
559

560
  @Getter
561
  @Setter
562
  @EqualsAndHashCode(callSuper = false)
563
  public static class Period extends StripeObject {
1✔
564
    /**
565
     * The end of the period, which must be greater than or equal to the start. This value is
566
     * inclusive.
567
     */
568
    @SerializedName("end")
569
    Long end;
570

571
    /** The start of the period. This value is inclusive. */
572
    @SerializedName("start")
573
    Long start;
574
  }
575

576
  @Override
577
  public void setResponseGetter(StripeResponseGetter responseGetter) {
578
    super.setResponseGetter(responseGetter);
1✔
579
    trySetResponseGetter(customer, responseGetter);
1✔
580
    trySetResponseGetter(invoice, responseGetter);
1✔
581
    trySetResponseGetter(period, responseGetter);
1✔
582
    trySetResponseGetter(plan, responseGetter);
1✔
583
    trySetResponseGetter(price, responseGetter);
1✔
584
    trySetResponseGetter(subscription, responseGetter);
1✔
585
    trySetResponseGetter(testClock, responseGetter);
1✔
586
  }
1✔
587
}
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