@conflict-hq/ezacto-client 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/generated.ts CHANGED
@@ -13,6 +13,11 @@ export type Attachment = {
13
13
  "uploaded_by_user_id": number | null;
14
14
  "created_at": string;
15
15
  "updated_at": string;
16
+ "through"?: string | null;
17
+ };
18
+
19
+ export type RecurringAttachmentThroughInput = {
20
+ "through": string | null;
16
21
  };
17
22
 
18
23
  export type AttachmentEnvelope = {
@@ -25,6 +30,245 @@ export type AttachmentListEnvelope = {
25
30
  "links": Links;
26
31
  };
27
32
 
33
+ export type PaymentActualsEnvelope = {
34
+ "data": {
35
+ "month": string;
36
+ "currency": string;
37
+ "completed": boolean;
38
+ "people": Array<{
39
+ "user_id": number;
40
+ "name": string;
41
+ "entries": Array<{
42
+ "entry_id": number;
43
+ "project_id": number;
44
+ "project_name": string;
45
+ "spent_date": string;
46
+ "rounded_seconds": number;
47
+ "cost_rate_cents": number | null;
48
+ "selected_seconds": number;
49
+ }>;
50
+ }>;
51
+ };
52
+ };
53
+
54
+ export type ConfirmPaymentActuals = {
55
+ "id": string;
56
+ "user_id": number;
57
+ "month": string;
58
+ "expected_version": number;
59
+ "currency": string;
60
+ "entries": Array<{
61
+ "entry_id": number;
62
+ "project_id": number;
63
+ "project_name": string;
64
+ "spent_date": string;
65
+ "rounded_seconds": number;
66
+ "cost_rate_cents": number | null;
67
+ "selected_seconds": number;
68
+ }>;
69
+ "note": string;
70
+ };
71
+
72
+ export type StaffPaymentProviderCommand = {
73
+ "id": string;
74
+ "user_id": number | null;
75
+ "expected_version": number;
76
+ "provider": "wise" | "deel" | null;
77
+ "note": string;
78
+ };
79
+
80
+ export type StaffPaymentProviderEvent = {
81
+ "id": string;
82
+ "user_id": number | null;
83
+ "expected_version": number;
84
+ "provider": "wise" | "deel" | null;
85
+ "note": string;
86
+ "version": number;
87
+ "actor_id": number;
88
+ "actor_name": string;
89
+ "recorded_at": string;
90
+ "request_id": string;
91
+ };
92
+
93
+ export type StaffPaymentProviderSettings = {
94
+ "default_provider": "wise" | "deel";
95
+ "version": number;
96
+ "events": Array<StaffPaymentProviderEvent>;
97
+ };
98
+
99
+ export type StaffPaymentCommand = {
100
+ "id": string;
101
+ "user_id": number;
102
+ "month": string;
103
+ "expected_version": number;
104
+ "kind": "amount" | "payment" | "void" | "opening" | "reopen" | "note";
105
+ "amount_cents": number | null;
106
+ "currency": string | null;
107
+ "paid_on": string | null;
108
+ "due_on": string | null;
109
+ "reference": string;
110
+ "note": string;
111
+ "payment_id": string | null;
112
+ "source": "wise" | "deel" | "historical";
113
+ };
114
+
115
+ export type StaffPaymentEvent = {
116
+ "id": string;
117
+ "user_id": number;
118
+ "month": string;
119
+ "expected_version": number;
120
+ "kind": "amount" | "payment" | "void" | "opening" | "reopen" | "note";
121
+ "amount_cents": number | null;
122
+ "currency": string | null;
123
+ "paid_on": string | null;
124
+ "due_on": string | null;
125
+ "reference": string;
126
+ "note": string;
127
+ "payment_id": string | null;
128
+ "source": "wise" | "deel" | "historical";
129
+ "version": number;
130
+ "actor_id": number;
131
+ "actor_name": string;
132
+ "recorded_at": string;
133
+ "request_id": string;
134
+ };
135
+
136
+ export type StaffPaymentRow = {
137
+ "user_id": number;
138
+ "name": string;
139
+ "active": boolean;
140
+ "wise_ready": boolean;
141
+ "deel_ready": boolean;
142
+ "payout_provider": "wise" | "deel";
143
+ "provider_override": "wise" | "deel" | null;
144
+ "provider_version": number;
145
+ "month": string;
146
+ "version": number;
147
+ "amount_cents": number | null;
148
+ "currency": string | null;
149
+ "has_hours": boolean;
150
+ "amount_basis": "ledger" | "contractor_cost";
151
+ "paid_cents": number;
152
+ "balance_cents": number | null;
153
+ "reserved_cents": number;
154
+ "available_cents": number | null;
155
+ "due_on": string | null;
156
+ "settled_through": string | null;
157
+ "status": "in_progress" | "pending" | "partial" | "paid" | "settled";
158
+ "overdue": boolean;
159
+ "events": Array<StaffPaymentEvent>;
160
+ };
161
+
162
+ export type StaffPaymentReport = {
163
+ "month": string;
164
+ "as_of": string;
165
+ "rows": Array<StaffPaymentRow>;
166
+ "provider_settings": StaffPaymentProviderSettings;
167
+ };
168
+
169
+ export type StaffPaymentReportEnvelope = {
170
+ "data": StaffPaymentReport;
171
+ };
172
+
173
+ export type PaymentSelection = {
174
+ "user_id": number;
175
+ "month": string;
176
+ "amount_cents": number;
177
+ "expected_version": number;
178
+ };
179
+
180
+ export type PaymentRunCommand = {
181
+ "id": string;
182
+ "name": string;
183
+ "source_currency": string;
184
+ "scheduled_at": string;
185
+ "timezone": string;
186
+ "items": Array<PaymentSelection>;
187
+ };
188
+
189
+ export type PaymentQuote = {
190
+ "id": string;
191
+ "profile_id": string;
192
+ "recipient_id": string;
193
+ "recipient_name": string;
194
+ "source_currency": string;
195
+ "target_currency": string;
196
+ "target_cents": number;
197
+ "source_cents": number;
198
+ "fee_cents": number;
199
+ "rate": number;
200
+ "expires_at": string;
201
+ "estimated_arrival": string | null;
202
+ };
203
+
204
+ export type PaymentDestination = {
205
+ "id": number;
206
+ "external_id": string;
207
+ "kind": "account" | "contact";
208
+ };
209
+
210
+ export type PaymentItem = {
211
+ "user_id": number;
212
+ "month": string;
213
+ "amount_cents": number;
214
+ "expected_version": number;
215
+ "id": string;
216
+ "run_id": string;
217
+ "name": string;
218
+ "currency": string;
219
+ "destination": PaymentDestination;
220
+ "quote": PaymentQuote;
221
+ "execution_quote": PaymentQuote | null;
222
+ "max_source_cents": number;
223
+ "state": "draft" | "queued" | "creating" | "funding" | "processing" | "paid" | "failed" | "attention" | "cancelled";
224
+ "transfer_id": string | null;
225
+ "provider_status": string | null;
226
+ "failure": string | null;
227
+ "attempts": number;
228
+ "next_attempt_at": string;
229
+ "updated_at": string;
230
+ "version": number;
231
+ "lease_token": string | null;
232
+ "lease_until": string | null;
233
+ };
234
+
235
+ export type PaymentRun = {
236
+ "id": string;
237
+ "name": string;
238
+ "source_currency": string;
239
+ "scheduled_at": string;
240
+ "timezone": string;
241
+ "state": "draft" | "approved" | "cancelled";
242
+ "actor_id": number;
243
+ "approved_by": number | null;
244
+ "created_at": string;
245
+ "approved_at": string | null;
246
+ "request_id": string;
247
+ "items": Array<PaymentItem>;
248
+ };
249
+
250
+ export type PaymentRunApproval = {
251
+ "limits": Array<{
252
+ "item_id": string;
253
+ "max_source_cents": number;
254
+ }>;
255
+ };
256
+
257
+ export type PaymentRunEnvelope = {
258
+ "data": PaymentRun;
259
+ };
260
+
261
+ export type PaymentRunReport = {
262
+ "from": string;
263
+ "to": string;
264
+ "ledgers": Array<StaffPaymentReport>;
265
+ "runs": Array<PaymentRun>;
266
+ };
267
+
268
+ export type PaymentRunReportEnvelope = {
269
+ "data": PaymentRunReport;
270
+ };
271
+
28
272
  export type InvoiceReminderPolicy = {
29
273
  "first_after_days": number;
30
274
  "every_days": number;
@@ -123,6 +367,7 @@ export type EmailLog = {
123
367
  "from": EmailRecipient | null;
124
368
  "reply_to": Array<EmailRecipient>;
125
369
  "to": Array<EmailRecipient>;
370
+ "cc": Array<EmailRecipient>;
126
371
  "template": string;
127
372
  "subject": string;
128
373
  "provider": string | null;
@@ -304,6 +549,92 @@ export type QuickBooksAuthorizeEnvelope = {
304
549
  };
305
550
  };
306
551
 
552
+ export type WiseConnection = {
553
+ "profile_id": string;
554
+ "profile_name": string | null;
555
+ "payable_recipients": number;
556
+ "webhooks_verifiable": boolean;
557
+ };
558
+
559
+ export type WiseRecipient = {
560
+ "id": string;
561
+ "holder_name": string | null;
562
+ "currency": string;
563
+ "type": string;
564
+ "masked_summary": string | null;
565
+ "email": string | null;
566
+ };
567
+
568
+ export type WiseStatusEnvelope = {
569
+ "data": {
570
+ "configured": boolean;
571
+ "connection": WiseConnection | null;
572
+ };
573
+ };
574
+
575
+ export type WiseRecipientListEnvelope = {
576
+ "data": Array<WiseRecipient>;
577
+ };
578
+
579
+ export type WiseOnboardInput = {
580
+ "user_id": number;
581
+ "email": string;
582
+ "legal_name": string;
583
+ "currency": string;
584
+ };
585
+
586
+ export type WiseDestinationEnvelope = {
587
+ "data": {
588
+ "configured": boolean;
589
+ "destination": {
590
+ "id": number;
591
+ "kind": "account" | "contact";
592
+ "linked_at": string;
593
+ "linked_by_user_id": number;
594
+ "verified_at": string | null;
595
+ } | null;
596
+ };
597
+ };
598
+
599
+ export type WiseProposal = {
600
+ "user_id": number;
601
+ "name": string;
602
+ "payroll_email": string | null;
603
+ "matches": Array<WiseRecipient>;
604
+ };
605
+
606
+ export type WiseProposalListEnvelope = {
607
+ "data": Array<WiseProposal>;
608
+ };
609
+
610
+ export type WiseContactInput = {
611
+ "user_id": number;
612
+ "identifier": string;
613
+ "currency": string;
614
+ };
615
+
616
+ export type WiseContactEnvelope = {
617
+ "data": {
618
+ "user_id": number;
619
+ "contact": {
620
+ "id": string;
621
+ "name": string | null;
622
+ };
623
+ };
624
+ };
625
+
626
+ export type WiseLinkInput = {
627
+ "user_id": number;
628
+ "recipient_id": string;
629
+ };
630
+
631
+ export type WiseLinkEnvelope = {
632
+ "data": {
633
+ "user_id": number;
634
+ "recipient": WiseRecipient;
635
+ };
636
+ };
637
+
307
638
  export type QuickBooksConnectionEnvelope = {
308
639
  "data": QuickBooksConnection | null;
309
640
  };
@@ -312,6 +643,26 @@ export type QuickBooksSettingsInput = {
312
643
  "allow_online_payment": boolean;
313
644
  };
314
645
 
646
+ export type InvoiceQuickBooksEnvelope = {
647
+ "data": {
648
+ "connected": boolean;
649
+ "invoice": {
650
+ "quickbooks_id": string;
651
+ "mirrored_at": string;
652
+ } | null;
653
+ "payments": Array<{
654
+ "payment_id": number;
655
+ "quickbooks_id": string;
656
+ "mirrored_at": string;
657
+ }>;
658
+ "last_outcome": {
659
+ "kind": "created" | "updated" | "adopted" | "linked" | "refused" | "failed";
660
+ "reason": string | null;
661
+ "at": string;
662
+ } | null;
663
+ };
664
+ };
665
+
315
666
  export type SenderEvidenceRefreshInput = {
316
667
  "expected_evidence_version": number;
317
668
  };
@@ -344,10 +695,17 @@ export type OutboxAggregate = {
344
695
  "sequence": number;
345
696
  };
346
697
 
698
+ export type ActivityLogActor = {
699
+ "type": "user" | "contact" | "system";
700
+ "id": number | null;
701
+ "name": string | null;
702
+ };
703
+
347
704
  export type ActivityLog = {
348
705
  "event_id": string;
349
706
  "event_type": string;
350
707
  "aggregate": OutboxAggregate;
708
+ "actor": ActivityLogActor | null;
351
709
  "payload": {
352
710
  [key: string]: unknown;
353
711
  };
@@ -689,6 +1047,11 @@ export type TeamRateInput = {
689
1047
  "start_date": string | null;
690
1048
  };
691
1049
 
1050
+ export type TeamRateRemovalInput = {
1051
+ "expected_version": number;
1052
+ "kind": "billable" | "cost";
1053
+ };
1054
+
692
1055
  export type TeamCommandReceipt = {
693
1056
  "target_user_id": number;
694
1057
  "version": number;
@@ -776,6 +1139,7 @@ export type TimeEntry = {
776
1139
  };
777
1140
 
778
1141
  export type TimeEntryInput = {
1142
+ "user_id"?: number;
779
1143
  "project_id": number;
780
1144
  "task_id": number;
781
1145
  "spent_date"?: string;
@@ -847,6 +1211,35 @@ export type TimeEntryNoteSettingsEnvelope = {
847
1211
  "links": Links;
848
1212
  };
849
1213
 
1214
+ export type Profile = {
1215
+ "user_id": number;
1216
+ "first_name"?: string;
1217
+ "last_name"?: string;
1218
+ "email"?: string | null;
1219
+ "timezone": string;
1220
+ "invoice_copy_to_self"?: boolean;
1221
+ };
1222
+
1223
+ export type ProfilePatch = {
1224
+ "timezone"?: string;
1225
+ "invoice_copy_to_self"?: boolean;
1226
+ };
1227
+
1228
+ export type ProfileEnvelope = {
1229
+ "data": Profile;
1230
+ "links": Links;
1231
+ };
1232
+
1233
+ export type AccountDeletionRequest = {
1234
+ "user_id": number;
1235
+ "requested_at": string;
1236
+ };
1237
+
1238
+ export type AccountDeletionRequestEnvelope = {
1239
+ "data": AccountDeletionRequest;
1240
+ "links": Links;
1241
+ };
1242
+
850
1243
  export type TimeEntryOption = {
851
1244
  "project_id": number;
852
1245
  "task_id": number;
@@ -1280,12 +1673,46 @@ export type EstimateConversionEnvelope = {
1280
1673
  };
1281
1674
 
1282
1675
  export type InvoiceGenerationInput = {
1676
+ "kind"?: "tracked";
1283
1677
  "client_id": number;
1284
- "from": string;
1678
+ "from"?: string | null;
1285
1679
  "to": string;
1286
1680
  "project_ids": Array<number>;
1287
1681
  "time_summary_type": "project" | "task" | "people" | "detailed" | null;
1288
1682
  "expense_summary_type": "project" | "category" | "people" | "detailed" | null;
1683
+ } | {
1684
+ "kind": "free_form";
1685
+ "client_id": number;
1686
+ } | {
1687
+ "kind": "banded";
1688
+ "client_id": number;
1689
+ "from"?: string | null;
1690
+ "to": string;
1691
+ "project_ids": Array<number>;
1692
+ "line_items": Array<{
1693
+ "kind": string;
1694
+ "description"?: string | null;
1695
+ "quantity": number;
1696
+ "unit_price_cents": number;
1697
+ "project_id"?: number | null;
1698
+ }>;
1699
+ "claim_mode": "all" | "ceiling";
1700
+ "claim_ceiling_seconds"?: number | null;
1701
+ "claim_ceiling_cents"?: number | null;
1702
+ "overage_summary_type"?: "project" | "task" | "people" | "detailed" | null;
1703
+ };
1704
+
1705
+ export type InvoiceBandClaim = {
1706
+ "claimed_entry_count": number;
1707
+ "claimed_seconds": number;
1708
+ "billed_entry_count": number;
1709
+ "billed_seconds": number;
1710
+ };
1711
+
1712
+ export type InvoiceGenerationEnvelope = {
1713
+ "data": Invoice;
1714
+ "band"?: InvoiceBandClaim;
1715
+ "links": Links;
1289
1716
  };
1290
1717
 
1291
1718
  export type InvoiceCommandSnapshot = {
@@ -1387,6 +1814,7 @@ export type InvoiceMessage = {
1387
1814
  "sent_from": string | null;
1388
1815
  "sent_from_email": string | null;
1389
1816
  "recipients": Array<InvoiceRecipient>;
1817
+ "cc": Array<InvoiceRecipient>;
1390
1818
  "subject": string | null;
1391
1819
  "body": string | null;
1392
1820
  "attach_pdf": boolean;
@@ -1435,32 +1863,158 @@ export type InvoiceTransitionInput = {
1435
1863
  export type InvoiceEmailDeliveryInput = {
1436
1864
  "expected_version": number;
1437
1865
  "recipients": Array<InvoiceRecipient>;
1866
+ "cc"?: Array<InvoiceRecipient>;
1867
+ "subject"?: string;
1868
+ "message"?: string;
1869
+ "send_me_a_copy"?: boolean;
1438
1870
  "sender_identity_id"?: number;
1439
1871
  "template_version"?: number;
1440
1872
  "confirmed": true;
1441
1873
  };
1442
1874
 
1443
- export type InvoicePayment = {
1444
- "id": number;
1875
+ export type InvoiceEmailPreviewInput = {
1876
+ "expected_version"?: number;
1877
+ "recipients": Array<InvoiceRecipient>;
1878
+ "cc"?: Array<InvoiceRecipient>;
1879
+ "subject"?: string;
1880
+ "message"?: string;
1881
+ "send_me_a_copy"?: boolean;
1882
+ "sender_identity_id"?: number;
1883
+ "template_version"?: number;
1884
+ "attach_pdf"?: boolean;
1885
+ "attach_files"?: boolean;
1886
+ "append_pdfs"?: boolean;
1887
+ "attach_journal"?: "detailed" | "summary" | false;
1888
+ "journal_formats"?: JournalFormats;
1889
+ };
1890
+
1891
+ export type InvoiceEmailPreviewAttachment = {
1892
+ "kind": "invoice" | "journal" | "file";
1893
+ "filename": string;
1894
+ "content_type": string;
1895
+ "byte_size": number;
1896
+ "appended": Array<string>;
1897
+ "not_appended": "encrypted" | "unreadable" | "empty" | "too_large" | null;
1898
+ };
1899
+
1900
+ export type InvoiceEmailPreviewEnvelope = {
1901
+ "data": {
1445
1902
  "invoice_id": number;
1446
- "currency": string;
1447
- "amount_cents": number;
1448
- "paid_at": string | null;
1449
- "paid_date": string | null;
1450
- "notes": string | null;
1451
- "recorded_by_user_id": number | null;
1452
- "provider": string;
1453
- "provider_shape": string;
1454
- "provider_account_id": number | null;
1455
- "provider_transaction_id": string | null;
1456
- "bank_deposit_id": number | null;
1457
- "created_at": string;
1458
- "updated_at": string;
1903
+ "from": InvoiceRecipient;
1904
+ "reply_to": string | null;
1905
+ "to": Array<InvoiceRecipient>;
1906
+ "cc": Array<InvoiceRecipient>;
1907
+ "send_me_a_copy": boolean;
1908
+ "subject": string;
1909
+ "text": string;
1910
+ "html": string | null;
1911
+ "attachments": Array<InvoiceEmailPreviewAttachment>;
1912
+ };
1913
+ "links": {
1914
+ "document": string;
1915
+ };
1459
1916
  };
1460
1917
 
1461
- export type InvoicePaymentListEnvelope = {
1462
- "data": Array<InvoicePayment>;
1463
- "links": Links;
1918
+ export type InvoiceEmailPreviewSentEnvelope = {
1919
+ "data": {
1920
+ "invoice_id": number;
1921
+ "delivery_id": number;
1922
+ "to": Array<InvoiceRecipient>;
1923
+ "subject": string;
1924
+ };
1925
+ };
1926
+
1927
+ export type InvoiceEmailDefaultsEnvelope = {
1928
+ "data": {
1929
+ "invoice_id": number;
1930
+ "client_id": number;
1931
+ "company_name": string;
1932
+ "client_name": string;
1933
+ "template_version": number;
1934
+ "subject": string;
1935
+ "message": string;
1936
+ "to": Array<InvoiceRecipient>;
1937
+ "cc": Array<InvoiceRecipient>;
1938
+ "recipients_source": "client" | "contacts";
1939
+ "always_cc": Array<InvoiceRecipient>;
1940
+ "sender": {
1941
+ "name": string;
1942
+ "email": string | null;
1943
+ };
1944
+ "send_me_a_copy": boolean;
1945
+ "delivery": {
1946
+ "available": boolean;
1947
+ "code": string | null;
1948
+ "message": string | null;
1949
+ };
1950
+ };
1951
+ };
1952
+
1953
+ export type InvoiceRecipientLists = {
1954
+ "to": Array<InvoiceRecipient>;
1955
+ "cc": Array<InvoiceRecipient>;
1956
+ };
1957
+
1958
+ export type ClientInvoiceSendingEnvelope = {
1959
+ "data": {
1960
+ "client_id": number;
1961
+ "recipients": InvoiceRecipientLists | null;
1962
+ "contacts": InvoiceRecipientLists;
1963
+ "attach_pdf": boolean | null;
1964
+ "append_pdfs": boolean | null;
1965
+ "attach_files": boolean | null;
1966
+ "attach_journal": "detailed" | "summary" | boolean | null;
1967
+ "journal_formats": JournalFormats | null;
1968
+ "organization": {
1969
+ "attach_pdf": boolean;
1970
+ "append_pdfs": boolean;
1971
+ "attach_files": boolean;
1972
+ "attach_journal": "detailed" | "summary" | boolean;
1973
+ "journal_formats": JournalFormats;
1974
+ };
1975
+ };
1976
+ };
1977
+
1978
+ export type ClientInvoiceSendingInput = {
1979
+ "recipients"?: InvoiceRecipientLists | null;
1980
+ "attach_pdf"?: boolean | null;
1981
+ "append_pdfs"?: boolean | null;
1982
+ "attach_files"?: boolean | null;
1983
+ "attach_journal"?: "detailed" | "summary" | false | null;
1984
+ "journal_formats"?: JournalFormats | null;
1985
+ };
1986
+
1987
+ export type OrganizationInvoiceSendingEnvelope = {
1988
+ "data": {
1989
+ "always_cc": Array<InvoiceRecipient>;
1990
+ };
1991
+ };
1992
+
1993
+ export type OrganizationInvoiceSendingInput = {
1994
+ "always_cc": Array<InvoiceRecipient>;
1995
+ };
1996
+
1997
+ export type InvoicePayment = {
1998
+ "id": number;
1999
+ "invoice_id": number;
2000
+ "currency": string;
2001
+ "amount_cents": number;
2002
+ "paid_at": string | null;
2003
+ "paid_date": string | null;
2004
+ "notes": string | null;
2005
+ "recorded_by_user_id": number | null;
2006
+ "provider": string;
2007
+ "provider_shape": string;
2008
+ "provider_account_id": number | null;
2009
+ "provider_transaction_id": string | null;
2010
+ "bank_deposit_id": number | null;
2011
+ "created_at": string;
2012
+ "updated_at": string;
2013
+ };
2014
+
2015
+ export type InvoicePaymentListEnvelope = {
2016
+ "data": Array<InvoicePayment>;
2017
+ "links": Links;
1464
2018
  };
1465
2019
 
1466
2020
  export type InvoicePaymentInput = {
@@ -1708,6 +2262,13 @@ export type RecurringInvoice = {
1708
2262
  "next_issue_on": string;
1709
2263
  "amount_config": RecurringAmountConfig;
1710
2264
  "can_draw_from_retainer_id": number | null;
2265
+ "claims_project_ids": Array<number> | null;
2266
+ "claim_mode": "all" | "ceiling";
2267
+ "claim_ceiling_seconds": number | null;
2268
+ "claim_ceiling_cents": number | null;
2269
+ "claim_scope": "billable" | "tracked";
2270
+ "cost_alert_basis_points": number | null;
2271
+ "purchase_order": string | null;
1711
2272
  "created_at": string;
1712
2273
  "updated_at": string;
1713
2274
  };
@@ -1738,6 +2299,37 @@ export type RecurringInvoicePage = {
1738
2299
  "page": PageMetadata;
1739
2300
  };
1740
2301
 
2302
+ export type BandClaimBackfillInput = {
2303
+ "invoice_ids": Array<number>;
2304
+ "project_ids"?: Array<number>;
2305
+ "apply"?: boolean;
2306
+ };
2307
+
2308
+ export type BandClaimBackfillLine = {
2309
+ "invoice_id": number;
2310
+ "number": string;
2311
+ "issue_date": string;
2312
+ "state": string;
2313
+ "amount_cents": number;
2314
+ "entry_count": number;
2315
+ "seconds": number;
2316
+ "billable_value_cents": number;
2317
+ "entries_without_billable_rate": number;
2318
+ "foregone_billable_cents": number;
2319
+ };
2320
+
2321
+ export type BandClaimBackfill = {
2322
+ "run_id": string;
2323
+ "applied": boolean;
2324
+ "invoices": Array<BandClaimBackfillLine>;
2325
+ "remaining_entry_count": number;
2326
+ "remaining_seconds": number;
2327
+ };
2328
+
2329
+ export type BandClaimBackfillEnvelope = {
2330
+ "data": BandClaimBackfill;
2331
+ };
2332
+
1741
2333
  export type RecurringInvoiceInput = {
1742
2334
  "client_id": number;
1743
2335
  "subject_template": string;
@@ -1747,6 +2339,13 @@ export type RecurringInvoiceInput = {
1747
2339
  "next_issue_on": string;
1748
2340
  "amount_config": RecurringAmountConfig;
1749
2341
  "can_draw_from_retainer_id"?: number | null;
2342
+ "claims_project_ids"?: Array<number> | null;
2343
+ "claim_mode"?: "all" | "ceiling";
2344
+ "claim_ceiling_seconds"?: number | null;
2345
+ "claim_ceiling_cents"?: number | null;
2346
+ "claim_scope"?: "billable" | "tracked";
2347
+ "cost_alert_basis_points"?: number | null;
2348
+ "purchase_order"?: string | null;
1750
2349
  };
1751
2350
 
1752
2351
  export type MyHoursProject = {
@@ -1798,8 +2397,12 @@ export type DetailedTimeRow = {
1798
2397
  "time_entry_count": number;
1799
2398
  "billable_amount_cents"?: number | null;
1800
2399
  "entries_without_billable_rate": number;
2400
+ "claimed": boolean;
1801
2401
  "time_entry_id"?: number;
2402
+ "invoice_id"?: number | null;
2403
+ "invoice_number"?: string | null;
1802
2404
  "notes"?: string | null;
2405
+ "project_active"?: boolean;
1803
2406
  };
1804
2407
 
1805
2408
  export type DetailedTimeCurrencyTotal = {
@@ -1813,13 +2416,20 @@ export type DetailedTimeReport = {
1813
2416
  "to": string;
1814
2417
  "client_id": number | null;
1815
2418
  "project_id": number | null;
1816
- "hours": "all" | "billable" | "non_billable" | "uninvoiced";
2419
+ "task_id": number | null;
2420
+ "user_id": number | null;
2421
+ "role_id": number | null;
2422
+ "tag_id": number | null;
2423
+ "invoice_state": "all" | "invoiced" | "uninvoiced";
2424
+ "hours": "all" | "billable" | "non_billable" | "uninvoiced" | "claimed" | "unclaimed";
1817
2425
  "grain": "day" | "entry";
1818
2426
  "active_projects_only": boolean;
1819
2427
  "seconds": number;
1820
2428
  "rounded_seconds": number;
1821
2429
  "billable_seconds": number;
1822
2430
  "uninvoiced_billable_seconds": number;
2431
+ "claimed_seconds": number;
2432
+ "unclaimed_seconds": number;
1823
2433
  "time_entry_count": number;
1824
2434
  "currencies": Array<DetailedTimeCurrencyTotal>;
1825
2435
  "rows": Array<DetailedTimeRow>;
@@ -1830,6 +2440,30 @@ export type DetailedTimeReportEnvelope = {
1830
2440
  "links": Links;
1831
2441
  };
1832
2442
 
2443
+ export type ReportTimeActionInput = {
2444
+ "command_id": string;
2445
+ "action": "mark_invoiced" | "mark_uninvoiced" | "move";
2446
+ "entry_ids": Array<number>;
2447
+ "confirmed": true;
2448
+ "invoice_id"?: number;
2449
+ "project_id"?: number;
2450
+ "task_id"?: number;
2451
+ };
2452
+
2453
+ export type ReportTimeAction = {
2454
+ "command_id": string;
2455
+ "action": "mark_invoiced" | "mark_uninvoiced" | "move";
2456
+ "requested": number;
2457
+ "changed_entry_ids": Array<number>;
2458
+ "ineligible_entry_ids": Array<number>;
2459
+ "replayed": boolean;
2460
+ };
2461
+
2462
+ export type ReportTimeActionEnvelope = {
2463
+ "data": ReportTimeAction;
2464
+ "links": Links;
2465
+ };
2466
+
1833
2467
  export type TimeReportAmount = {
1834
2468
  "currency": string;
1835
2469
  "billable_cents": number;
@@ -1898,6 +2532,7 @@ export type TimeReportTeammateRow = {
1898
2532
  export type TimeReport = {
1899
2533
  "from": string;
1900
2534
  "to": string;
2535
+ "fixed_fee_included": boolean;
1901
2536
  "totals": TimeReportTotals;
1902
2537
  "clients": Array<TimeReportClientRow>;
1903
2538
  "projects": Array<TimeReportProjectRow>;
@@ -1951,7 +2586,11 @@ export type ContractorCostRow = {
1951
2586
  "is_contractor": boolean;
1952
2587
  "currency": string;
1953
2588
  "rounded_seconds": number;
2589
+ "utilization_ppm": number | null;
1954
2590
  "cost_cents": number | null;
2591
+ "cost_rate_cents": number | null;
2592
+ "cost_rate_is_mixed": boolean;
2593
+ "entry_count": number;
1955
2594
  "entries_without_rate": number;
1956
2595
  };
1957
2596
 
@@ -1966,6 +2605,213 @@ export type ContractorCostReportEnvelope = {
1966
2605
  "links": Links;
1967
2606
  };
1968
2607
 
2608
+ export type InvoicedReportTotal = {
2609
+ "currency": string;
2610
+ "invoice_count": number;
2611
+ "invoiced_cents"?: number;
2612
+ "paid_cents"?: number;
2613
+ "balance_cents"?: number;
2614
+ };
2615
+
2616
+ export type InvoicedReportRow = {
2617
+ "invoice_id": number;
2618
+ "number": string;
2619
+ "state": "draft" | "open" | "paid" | "closed";
2620
+ "close_reason": "cancelled" | "written_off" | "source_closed" | null;
2621
+ "issue_date": string;
2622
+ "due_date": string;
2623
+ "client_id": number;
2624
+ "client_name": string;
2625
+ "subject": string | null;
2626
+ "currency": string;
2627
+ "invoiced_cents"?: number;
2628
+ "paid_cents"?: number;
2629
+ "balance_cents"?: number;
2630
+ };
2631
+
2632
+ export type InvoicedReport = {
2633
+ "from": string;
2634
+ "to": string;
2635
+ "client_id": number | null;
2636
+ "status": "draft" | "open" | "paid" | "closed" | null;
2637
+ "totals": Array<InvoicedReportTotal>;
2638
+ "rows": Array<InvoicedReportRow>;
2639
+ };
2640
+
2641
+ export type InvoicedReportEnvelope = {
2642
+ "data": InvoicedReport;
2643
+ "links": Links;
2644
+ };
2645
+
2646
+ export type PaymentsReceivedReportTotal = {
2647
+ "currency": string;
2648
+ "payment_count": number;
2649
+ "payment_cents"?: number;
2650
+ };
2651
+
2652
+ export type PaymentReceivedReportRow = {
2653
+ "payment_id": number;
2654
+ "payment_date": string;
2655
+ "invoice_id": number;
2656
+ "invoice_number": string;
2657
+ "client_id": number;
2658
+ "client_name": string;
2659
+ "currency": string;
2660
+ "provider": string;
2661
+ "invoice_total_cents"?: number;
2662
+ "payment_cents"?: number;
2663
+ };
2664
+
2665
+ export type PaymentsReceivedReport = {
2666
+ "from": string;
2667
+ "to": string;
2668
+ "client_id": number | null;
2669
+ "totals": Array<PaymentsReceivedReportTotal>;
2670
+ "rows": Array<PaymentReceivedReportRow>;
2671
+ };
2672
+
2673
+ export type PaymentsReceivedReportEnvelope = {
2674
+ "data": PaymentsReceivedReport;
2675
+ "links": Links;
2676
+ };
2677
+
2678
+ export type ReceivablesReportTotal = {
2679
+ "currency": string;
2680
+ "invoice_count": number;
2681
+ "invoiced_cents"?: number;
2682
+ "outstanding_cents"?: number;
2683
+ "not_due_cents"?: number;
2684
+ "days_1_to_30_cents"?: number;
2685
+ "days_31_to_60_cents"?: number;
2686
+ "days_61_to_90_cents"?: number;
2687
+ "days_90_plus_cents"?: number;
2688
+ };
2689
+
2690
+ export type ReceivablesReportRow = {
2691
+ "client_id": number;
2692
+ "client_name": string;
2693
+ "currency": string;
2694
+ "invoice_count": number;
2695
+ "invoiced_cents"?: number;
2696
+ "outstanding_cents"?: number;
2697
+ "not_due_cents"?: number;
2698
+ "days_1_to_30_cents"?: number;
2699
+ "days_31_to_60_cents"?: number;
2700
+ "days_61_to_90_cents"?: number;
2701
+ "days_90_plus_cents"?: number;
2702
+ };
2703
+
2704
+ export type ReceivablesReport = {
2705
+ "as_of": string;
2706
+ "client_id": number | null;
2707
+ "totals": Array<ReceivablesReportTotal>;
2708
+ "rows": Array<ReceivablesReportRow>;
2709
+ };
2710
+
2711
+ export type ReceivablesReportEnvelope = {
2712
+ "data": ReceivablesReport;
2713
+ "links": Links;
2714
+ };
2715
+
2716
+ export type ReportDefinitionPresentation = {
2717
+ "result": "summary" | "detailed";
2718
+ "grouped": boolean;
2719
+ "include_zero_values": boolean;
2720
+ };
2721
+
2722
+ export type SavedReportInput = {
2723
+ "name": string;
2724
+ "fields": Array<{
2725
+ [key: string]: unknown;
2726
+ }>;
2727
+ "metrics": Array<string>;
2728
+ "filters": Array<{
2729
+ [key: string]: unknown;
2730
+ }>;
2731
+ "group_by": {
2732
+ [key: string]: unknown;
2733
+ } | null;
2734
+ "presentation": ReportDefinitionPresentation;
2735
+ };
2736
+
2737
+ export type SavedReportUpdate = {
2738
+ "version": number;
2739
+ "name"?: string;
2740
+ "fields"?: Array<{
2741
+ [key: string]: unknown;
2742
+ }>;
2743
+ "metrics"?: Array<string>;
2744
+ "filters"?: Array<{
2745
+ [key: string]: unknown;
2746
+ }>;
2747
+ "group_by"?: {
2748
+ [key: string]: unknown;
2749
+ } | null;
2750
+ "presentation"?: ReportDefinitionPresentation;
2751
+ };
2752
+
2753
+ export type SavedReport = {
2754
+ "id": string;
2755
+ "name": string;
2756
+ "version": number;
2757
+ "fields": Array<{
2758
+ [key: string]: unknown;
2759
+ }>;
2760
+ "metrics": Array<string>;
2761
+ "filters": Array<{
2762
+ [key: string]: unknown;
2763
+ }>;
2764
+ "group_by": {
2765
+ [key: string]: unknown;
2766
+ } | null;
2767
+ "presentation": ReportDefinitionPresentation;
2768
+ "owner": {
2769
+ [key: string]: unknown;
2770
+ };
2771
+ "is_custom": boolean;
2772
+ "pinned": boolean;
2773
+ "shared": boolean;
2774
+ "created_at": string;
2775
+ "updated_at": string;
2776
+ };
2777
+
2778
+ export type SavedReportEnvelope = {
2779
+ "data": SavedReport;
2780
+ "links": Links;
2781
+ };
2782
+
2783
+ export type SavedReportListEnvelope = {
2784
+ "data": Array<SavedReport>;
2785
+ };
2786
+
2787
+ export type ReportRunnerResult = {
2788
+ "definitionId": string;
2789
+ "definitionVersion": number;
2790
+ "state": "ready" | "empty" | "too_many_rows";
2791
+ "rows": Array<{
2792
+ [key: string]: unknown;
2793
+ }>;
2794
+ };
2795
+
2796
+ export type ReportRunnerEnvelope = {
2797
+ "data": ReportRunnerResult;
2798
+ "links": Links;
2799
+ };
2800
+
2801
+ export type ReportDefinitionRegistry = {
2802
+ "fields": Array<{
2803
+ [key: string]: unknown;
2804
+ }>;
2805
+ "metrics": Array<{
2806
+ [key: string]: unknown;
2807
+ }>;
2808
+ };
2809
+
2810
+ export type ReportDefinitionRegistryEnvelope = {
2811
+ "data": ReportDefinitionRegistry;
2812
+ "links": Links;
2813
+ };
2814
+
1969
2815
  export type DetailedExpenseRow = {
1970
2816
  "expense_id": number;
1971
2817
  "spent_date": string;
@@ -1998,7 +2844,12 @@ export type DetailedExpenseReport = {
1998
2844
  "to": string;
1999
2845
  "client_id": number | null;
2000
2846
  "project_id": number | null;
2001
- "billable_only": boolean;
2847
+ "category_id": number | null;
2848
+ "user_id": number | null;
2849
+ "billable": boolean | null;
2850
+ "reimbursable": boolean | null;
2851
+ "invoice_state": "all" | "invoiced" | "uninvoiced";
2852
+ "active_projects_only": boolean;
2002
2853
  "totals": Array<DetailedExpenseTotal>;
2003
2854
  "rows": Array<DetailedExpenseRow>;
2004
2855
  };
@@ -2008,6 +2859,80 @@ export type DetailedExpenseReportEnvelope = {
2008
2859
  "links": Links;
2009
2860
  };
2010
2861
 
2862
+ export type MonthEndItem = {
2863
+ "subject_type": string;
2864
+ "subject_id": number;
2865
+ "description": string;
2866
+ "amount_cents": number | null;
2867
+ "currency": string | null;
2868
+ "target": string | null;
2869
+ "brand_name": string | null;
2870
+ "cost_cents": number | null;
2871
+ "margin_cents": number | null;
2872
+ };
2873
+
2874
+ export type MonthEndExclusion = {
2875
+ "invoice_id": number;
2876
+ "number": string;
2877
+ "reason": string;
2878
+ };
2879
+
2880
+ export type MonthEndManifest = {
2881
+ "period_start": string;
2882
+ "period_end": string;
2883
+ "items": Array<MonthEndItem>;
2884
+ "excluded": Array<MonthEndExclusion>;
2885
+ };
2886
+
2887
+ export type MonthEndManifestEnvelope = {
2888
+ "data": MonthEndManifest;
2889
+ "links": Links;
2890
+ };
2891
+
2892
+ export type BandedMonthRow = {
2893
+ "period_start": string;
2894
+ "period_end": string;
2895
+ "project_id": number;
2896
+ "project_name": string;
2897
+ "client_id": number;
2898
+ "client_name": string;
2899
+ "currency": string;
2900
+ "rounded_seconds": number;
2901
+ "billable_value_cents": number | null;
2902
+ "cost_value_cents": number | null;
2903
+ "entries_without_billable_rate": number;
2904
+ "entries_without_cost_rate": number;
2905
+ "claimed_in_other_currency": number;
2906
+ "billed_cents": number | null;
2907
+ "foregone_cents": number | null;
2908
+ "cost_ratio_basis_points": number | null;
2909
+ "cost_alert_basis_points": number;
2910
+ "cost_ratio_state": "within" | "over" | "unpriced" | "unbilled";
2911
+ };
2912
+
2913
+ export type BandedMonthReport = {
2914
+ "from": string;
2915
+ "to": string;
2916
+ "rows": Array<BandedMonthRow>;
2917
+ };
2918
+
2919
+ export type BandedMonthReportEnvelope = {
2920
+ "data": BandedMonthReport;
2921
+ "links": Links;
2922
+ };
2923
+
2924
+ export type BandCostAlert = {
2925
+ "basis_points": number;
2926
+ };
2927
+
2928
+ export type BandCostAlertEnvelope = {
2929
+ "data": BandCostAlert;
2930
+ };
2931
+
2932
+ export type BandCostAlertInput = {
2933
+ "basis_points": number;
2934
+ };
2935
+
2011
2936
  export type ProfitabilityRow = {
2012
2937
  "project_id": number;
2013
2938
  "project_name": string;
@@ -2019,6 +2944,9 @@ export type ProfitabilityRow = {
2019
2944
  "revenue_cents": number | null;
2020
2945
  "cost_cents": number | null;
2021
2946
  "profit_cents": number | null;
2947
+ "return_on_cost_ppm": number | null;
2948
+ "revenue_fee_cents": number;
2949
+ "fees_included_in_delivery_cost_cents": number;
2022
2950
  "entries_without_billable_rate": number;
2023
2951
  "entries_without_cost_rate": number;
2024
2952
  };
@@ -2028,17 +2956,54 @@ export type ProfitabilityTotals = {
2028
2956
  "revenue_cents": number | null;
2029
2957
  "cost_cents": number | null;
2030
2958
  "profit_cents": number | null;
2959
+ "return_on_cost_ppm": number | null;
2960
+ "revenue_fee_cents": number;
2961
+ "fees_included_in_delivery_cost_cents": number;
2031
2962
  "entries_without_billable_rate": number;
2032
2963
  "entries_without_cost_rate": number;
2033
2964
  "projects_not_converted": number;
2034
2965
  };
2035
2966
 
2967
+ export type ProfitabilityDimensionRow = {
2968
+ "dimension_id": number;
2969
+ "dimension_name": string;
2970
+ "currency": string;
2971
+ "rounded_seconds": number;
2972
+ "revenue_cents": number | null;
2973
+ "cost_cents": number | null;
2974
+ "profit_cents": number | null;
2975
+ "return_on_cost_ppm": number | null;
2976
+ "revenue_fee_cents": number;
2977
+ "fees_included_in_delivery_cost_cents": number;
2978
+ "entries_without_billable_rate": number;
2979
+ "entries_without_cost_rate": number;
2980
+ "included_in_headline": boolean;
2981
+ };
2982
+
2983
+ export type ProfitabilityTrendRow = (ProfitabilityDimensionRow) & ({
2984
+ "period_start": string;
2985
+ "period_end": string;
2986
+ "current": boolean;
2987
+ });
2988
+
2989
+ export type ProfitabilityFilters = {
2990
+ "project_status": "all" | "active" | "archived";
2991
+ "billing_method": "non_billable" | "time_materials" | "fixed_fee" | null;
2992
+ "manager_id": number | null;
2993
+ "tag_id": number | null;
2994
+ };
2995
+
2036
2996
  export type ProfitabilityReport = {
2037
2997
  "from": string;
2038
2998
  "to": string;
2039
2999
  "organization_currency": string;
2040
3000
  "rows": Array<ProfitabilityRow>;
3001
+ "clients": Array<ProfitabilityDimensionRow>;
3002
+ "teammates": Array<ProfitabilityDimensionRow>;
3003
+ "tasks": Array<ProfitabilityDimensionRow>;
3004
+ "trend": Array<ProfitabilityTrendRow>;
2041
3005
  "totals": ProfitabilityTotals;
3006
+ "filters": ProfitabilityFilters;
2042
3007
  "previous_from": string;
2043
3008
  "previous_to": string;
2044
3009
  "previous_totals": ProfitabilityTotals;
@@ -2161,7 +3126,18 @@ export type ModuleListEnvelope = {
2161
3126
  "links": Links;
2162
3127
  };
2163
3128
 
2164
- export type SsoDomain = {
3129
+ export type SignInMethodState = {
3130
+ "method": "password" | "magic_link" | "google" | "github" | "apple";
3131
+ "configured": boolean;
3132
+ "enabled": boolean;
3133
+ };
3134
+
3135
+ export type SignInMethodListEnvelope = {
3136
+ "data": Array<SignInMethodState>;
3137
+ "links": Links;
3138
+ };
3139
+
3140
+ export type SsoDomain = {
2165
3141
  "id": number;
2166
3142
  "domain": string;
2167
3143
  "verified": boolean;
@@ -2275,6 +3251,150 @@ export type InvoicePaymentLinkEnvelope = {
2275
3251
  };
2276
3252
  };
2277
3253
 
3254
+ export type IncompleteRecurringInvoiceListEnvelope = {
3255
+ "data": Array<{
3256
+ "id": number;
3257
+ "harvest_id": number;
3258
+ "client_id": number;
3259
+ "client_name": string;
3260
+ "invoice_count": number;
3261
+ "created_at": string;
3262
+ "updated_at": string;
3263
+ }>;
3264
+ };
3265
+
3266
+ export type RecurringInvoiceCompletionEnvelope = {
3267
+ "data": {
3268
+ "id": number;
3269
+ "completed": boolean;
3270
+ };
3271
+ };
3272
+
3273
+ export type InvoiceThankYouPreferenceEnvelope = {
3274
+ "data": {
3275
+ "invoice_id": number;
3276
+ "auto_thank_you": boolean;
3277
+ "organization_auto_thank_you": boolean;
3278
+ "effective": boolean;
3279
+ };
3280
+ };
3281
+
3282
+ export type OrganizationInvoiceThankYouEnvelope = {
3283
+ "data": {
3284
+ "auto_thank_you": boolean;
3285
+ };
3286
+ };
3287
+
3288
+ export type ReminderPolicy = {
3289
+ "first_after_days": number;
3290
+ "every_days": number;
3291
+ };
3292
+
3293
+ export type InvoiceReminderPreferenceInput = {
3294
+ "reminders": boolean | null;
3295
+ };
3296
+
3297
+ export type InvoiceReminderPreferenceEnvelope = {
3298
+ "data": {
3299
+ "invoice_id": number;
3300
+ "reminders": boolean | null;
3301
+ "organization_reminder_policy": ReminderPolicy | null;
3302
+ "effective": boolean;
3303
+ "next_reminder_at": string | null;
3304
+ };
3305
+ };
3306
+
3307
+ export type OrganizationInvoiceRemindersInput = {
3308
+ "reminder_policy": ReminderPolicy | null;
3309
+ };
3310
+
3311
+ export type OrganizationInvoiceRemindersEnvelope = {
3312
+ "data": {
3313
+ "reminder_policy": ReminderPolicy | null;
3314
+ "applied_to_open_invoices"?: number;
3315
+ };
3316
+ };
3317
+
3318
+ export type JournalFormats = Array<"pdf" | "csv" | "xlsx">;
3319
+
3320
+ export type InvoiceDocumentPreferenceInput = {
3321
+ "attach_pdf"?: boolean | null;
3322
+ "attach_files"?: boolean | null;
3323
+ "append_pdfs"?: boolean | null;
3324
+ "attach_journal"?: "detailed" | "summary" | false | null;
3325
+ "journal_formats"?: JournalFormats | null;
3326
+ };
3327
+
3328
+ export type OrganizationInvoiceDocumentsInput = {
3329
+ "attach_pdf"?: boolean;
3330
+ "attach_files"?: boolean;
3331
+ "append_pdfs"?: boolean;
3332
+ "attach_journal"?: "detailed" | "summary" | false;
3333
+ "journal_formats"?: JournalFormats;
3334
+ };
3335
+
3336
+ export type InvoiceDefaults = {
3337
+ "company_name": string;
3338
+ "company_address": string | null;
3339
+ "notes": string | null;
3340
+ "subject": string | null;
3341
+ };
3342
+
3343
+ export type InvoiceDefaultsEnvelope = {
3344
+ "data": InvoiceDefaults;
3345
+ "links": Links;
3346
+ };
3347
+
3348
+ export type InvoiceDefaultsInput = {
3349
+ "company_name"?: string;
3350
+ "company_address"?: string | null;
3351
+ "notes"?: string | null;
3352
+ "subject"?: string | null;
3353
+ };
3354
+
3355
+ export type InvoiceDocumentPreferenceEnvelope = {
3356
+ "data": {
3357
+ "invoice_id": number;
3358
+ "attach_pdf": boolean;
3359
+ "client_attach_pdf": boolean | null;
3360
+ "organization_attach_pdf": boolean;
3361
+ "effective": boolean;
3362
+ "attach_files": boolean;
3363
+ "client_attach_files": boolean | null;
3364
+ "organization_attach_files": boolean;
3365
+ "effective_files": boolean;
3366
+ "append_pdfs": boolean | null;
3367
+ "client_append_pdfs": boolean | null;
3368
+ "organization_append_pdfs": boolean;
3369
+ "effective_append_pdfs": boolean;
3370
+ "attach_journal": "detailed" | "summary" | boolean;
3371
+ "client_attach_journal": "detailed" | "summary" | boolean | null;
3372
+ "organization_attach_journal": "detailed" | "summary" | boolean;
3373
+ "effective_journal": "detailed" | "summary" | boolean;
3374
+ "journal_formats": JournalFormats | null;
3375
+ "client_journal_formats": JournalFormats | null;
3376
+ "organization_journal_formats": JournalFormats;
3377
+ "effective_journal_formats": JournalFormats;
3378
+ };
3379
+ };
3380
+
3381
+ export type OrganizationInvoiceDocumentsEnvelope = {
3382
+ "data": {
3383
+ "attach_pdf": boolean;
3384
+ "attach_files": boolean;
3385
+ "append_pdfs": boolean;
3386
+ "attach_journal": "detailed" | "summary" | boolean;
3387
+ "journal_formats": JournalFormats;
3388
+ };
3389
+ };
3390
+
3391
+ export type ReleasedTimeEnvelope = {
3392
+ "data": {
3393
+ "invoice_id": number;
3394
+ "released": number;
3395
+ };
3396
+ };
3397
+
2278
3398
  export type PayoutAccount = {
2279
3399
  "id": number;
2280
3400
  "user_id": number;
@@ -2332,6 +3452,31 @@ export type TwoFactorCodeInput = {
2332
3452
  "code": string;
2333
3453
  };
2334
3454
 
3455
+ export type TwoFactorChallengeIssued = {
3456
+ "status": "two_factor_required";
3457
+ "challenge": string;
3458
+ "expires_at": string;
3459
+ };
3460
+
3461
+ export type TwoFactorChallengeInput = {
3462
+ "code": string;
3463
+ "challenge"?: string;
3464
+ };
3465
+
3466
+ export type TwoFactorChallengeAccepted = {
3467
+ "status": "authenticated";
3468
+ };
3469
+
3470
+ export type TwoFactorChallengeAcceptedEnvelope = {
3471
+ "data": TwoFactorChallengeAccepted;
3472
+ };
3473
+
3474
+ export type SignInResult = AuthPrincipal | TwoFactorChallengeIssued;
3475
+
3476
+ export type SignInResultEnvelope = {
3477
+ "data": SignInResult;
3478
+ };
3479
+
2335
3480
  export type UserEmailInput = {
2336
3481
  "email": string;
2337
3482
  };
@@ -2388,7 +3533,14 @@ export class EzactoClient {
2388
3533
  ? options.baseUrl
2389
3534
  : `${options.baseUrl}/`;
2390
3535
  this.token = options.token;
2391
- this.fetchImplementation = options.fetch ?? globalThis.fetch;
3536
+ // Bound, because this is stored on the instance and later called as
3537
+ // `this.fetchImplementation(...)`. A browser's fetch is a method of
3538
+ // Window and refuses any other receiver, so the unbound form threw
3539
+ // "Failed to execute 'fetch' on 'Window': Illegal invocation" on every
3540
+ // request from a page or an extension (#772). Binding whatever we are
3541
+ // given also covers a caller who hands us a bare `globalThis.fetch`;
3542
+ // an arrow or an already-bound function ignores the receiver anyway.
3543
+ this.fetchImplementation = (options.fetch ?? globalThis.fetch).bind(globalThis);
2392
3544
  this.defaultHeaders = new Headers(options.headers);
2393
3545
  }
2394
3546
 
@@ -2455,10 +3607,20 @@ export class EzactoClient {
2455
3607
  });
2456
3608
  }
2457
3609
 
2458
- async signIn(args: { body: PasswordSignInInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<AuthPrincipalEnvelope> {
3610
+ async signIn(args: { body: PasswordSignInInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<SignInResultEnvelope> {
3611
+ const headers = new Headers(args.headers);
3612
+
3613
+ return this.request<SignInResultEnvelope>("POST", "/auth/sign-in", {
3614
+ body: args.body,
3615
+ signal: args.signal,
3616
+ headers,
3617
+ });
3618
+ }
3619
+
3620
+ async completeTwoFactorChallenge(args: { body: TwoFactorChallengeInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<TwoFactorChallengeAcceptedEnvelope> {
2459
3621
  const headers = new Headers(args.headers);
2460
3622
 
2461
- return this.request<AuthPrincipalEnvelope>("POST", "/auth/sign-in", {
3623
+ return this.request<TwoFactorChallengeAcceptedEnvelope>("POST", "/auth/two-factor/challenge", {
2462
3624
  body: args.body,
2463
3625
  signal: args.signal,
2464
3626
  headers,
@@ -2703,6 +3865,34 @@ export class EzactoClient {
2703
3865
  });
2704
3866
  }
2705
3867
 
3868
+ async getProfile(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<ProfileEnvelope> {
3869
+ const headers = new Headers(args.headers);
3870
+
3871
+ return this.request<ProfileEnvelope>("GET", "/api/v1/profile", {
3872
+ signal: args.signal,
3873
+ headers,
3874
+ });
3875
+ }
3876
+
3877
+ async updateProfile(args: { body: ProfilePatch; signal?: AbortSignal; headers?: HeadersInit }): Promise<ProfileEnvelope> {
3878
+ const headers = new Headers(args.headers);
3879
+
3880
+ return this.request<ProfileEnvelope>("PATCH", "/api/v1/profile", {
3881
+ body: args.body,
3882
+ signal: args.signal,
3883
+ headers,
3884
+ });
3885
+ }
3886
+
3887
+ async requestAccountDeletion(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<AccountDeletionRequestEnvelope> {
3888
+ const headers = new Headers(args.headers);
3889
+
3890
+ return this.request<AccountDeletionRequestEnvelope>("POST", "/api/v1/profile/deletion-request", {
3891
+ signal: args.signal,
3892
+ headers,
3893
+ });
3894
+ }
3895
+
2706
3896
  async listClients(args: { query?: { "cursor"?: string; "per_page"?: number; "is_active"?: boolean; "updated_since"?: string; "parent_client_id"?: number; "bill_to_client_id"?: number; "q"?: string }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<GeneralResourcePage> {
2707
3897
  const headers = new Headers(args.headers);
2708
3898
 
@@ -3221,10 +4411,11 @@ export class EzactoClient {
3221
4411
  });
3222
4412
  }
3223
4413
 
3224
- async listTimeEntryOptions(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<TimeEntryOptionListEnvelope> {
4414
+ async listTimeEntryOptions(args: { query?: { "user_id"?: number }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<TimeEntryOptionListEnvelope> {
3225
4415
  const headers = new Headers(args.headers);
3226
4416
 
3227
4417
  return this.request<TimeEntryOptionListEnvelope>("GET", "/api/v1/time-entry-options", {
4418
+ query: args.query,
3228
4419
  signal: args.signal,
3229
4420
  headers,
3230
4421
  });
@@ -3499,7 +4690,7 @@ export class EzactoClient {
3499
4690
  });
3500
4691
  }
3501
4692
 
3502
- async listInvoices(args: { query?: { "cursor"?: string; "per_page"?: number; "state"?: string }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<InvoicePage> {
4693
+ async listInvoices(args: { query?: { "cursor"?: string; "per_page"?: number; "state"?: string; "client_id"?: string; "number"?: string }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<InvoicePage> {
3503
4694
  const headers = new Headers(args.headers);
3504
4695
 
3505
4696
  return this.request<InvoicePage>("GET", "/api/v1/invoices", {
@@ -3566,10 +4757,10 @@ export class EzactoClient {
3566
4757
  });
3567
4758
  }
3568
4759
 
3569
- async generateInvoice(args: { "Idempotency-Key": string; body: InvoiceGenerationInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceEnvelope> {
4760
+ async generateInvoice(args: { "Idempotency-Key": string; body: InvoiceGenerationInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceGenerationEnvelope> {
3570
4761
  const headers = new Headers(args.headers);
3571
4762
  if (args["Idempotency-Key"] !== undefined) headers.set("Idempotency-Key", String(args["Idempotency-Key"]));
3572
- return this.request<InvoiceEnvelope>("POST", "/api/v1/invoice-generations", {
4763
+ return this.request<InvoiceGenerationEnvelope>("POST", "/api/v1/invoice-generations", {
3573
4764
  body: args.body,
3574
4765
  signal: args.signal,
3575
4766
  headers,
@@ -3655,6 +4846,37 @@ export class EzactoClient {
3655
4846
  });
3656
4847
  }
3657
4848
 
4849
+ async previewInvoiceEmail(args: { "id": number; body: InvoiceEmailPreviewInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceEmailPreviewEnvelope> {
4850
+ const headers = new Headers(args.headers);
4851
+
4852
+ return this.request<InvoiceEmailPreviewEnvelope>("POST", "/api/v1/invoices/:id/deliveries/preview".replace(":id", encodeURIComponent(String(args["id"]))), {
4853
+ body: args.body,
4854
+ signal: args.signal,
4855
+ headers,
4856
+ });
4857
+ }
4858
+
4859
+ async downloadInvoiceEmailPreviewDocument(args: { "id": number; query?: { "append_pdfs"?: "true" | "false" }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ArrayBuffer> {
4860
+ const headers = new Headers(args.headers);
4861
+
4862
+ return this.request<ArrayBuffer>("GET", "/api/v1/invoices/:id/deliveries/preview/document".replace(":id", encodeURIComponent(String(args["id"]))), {
4863
+ query: args.query,
4864
+ signal: args.signal,
4865
+ binary: true,
4866
+ headers,
4867
+ });
4868
+ }
4869
+
4870
+ async sendInvoiceEmailPreview(args: { "id": number; body: InvoiceEmailPreviewInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceEmailPreviewSentEnvelope> {
4871
+ const headers = new Headers(args.headers);
4872
+
4873
+ return this.request<InvoiceEmailPreviewSentEnvelope>("POST", "/api/v1/invoices/:id/deliveries/preview/send".replace(":id", encodeURIComponent(String(args["id"]))), {
4874
+ body: args.body,
4875
+ signal: args.signal,
4876
+ headers,
4877
+ });
4878
+ }
4879
+
3658
4880
  async listInvoicePayments(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoicePaymentListEnvelope> {
3659
4881
  const headers = new Headers(args.headers);
3660
4882
 
@@ -3694,7 +4916,7 @@ export class EzactoClient {
3694
4916
  });
3695
4917
  }
3696
4918
 
3697
- async listRetainers(args: { query?: { "cursor"?: string; "per_page"?: number }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<RetainerPage> {
4919
+ async listRetainers(args: { query?: { "cursor"?: string; "per_page"?: number; "client_id"?: string }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<RetainerPage> {
3698
4920
  const headers = new Headers(args.headers);
3699
4921
 
3700
4922
  return this.request<RetainerPage>("GET", "/api/v1/retainers", {
@@ -3810,6 +5032,16 @@ export class EzactoClient {
3810
5032
  });
3811
5033
  }
3812
5034
 
5035
+ async backfillRecurringInvoiceClaims(args: { "id": number; "Idempotency-Key": string; body: BandClaimBackfillInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<BandClaimBackfillEnvelope> {
5036
+ const headers = new Headers(args.headers);
5037
+ if (args["Idempotency-Key"] !== undefined) headers.set("Idempotency-Key", String(args["Idempotency-Key"]));
5038
+ return this.request<BandClaimBackfillEnvelope>("POST", "/api/v1/recurring-invoices/:id/claim-backfill".replace(":id", encodeURIComponent(String(args["id"]))), {
5039
+ body: args.body,
5040
+ signal: args.signal,
5041
+ headers,
5042
+ });
5043
+ }
5044
+
3813
5045
  async generateRecurringInvoice(args: { "id": number; "Idempotency-Key": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<RecurringGenerationEnvelope> {
3814
5046
  const headers = new Headers(args.headers);
3815
5047
  if (args["Idempotency-Key"] !== undefined) headers.set("Idempotency-Key", String(args["Idempotency-Key"]));
@@ -4014,341 +5246,1006 @@ export class EzactoClient {
4014
5246
  });
4015
5247
  }
4016
5248
 
4017
- async getMyHoursReport(args: { query: { "from": string; "to": string; "project_id"?: number }; signal?: AbortSignal; headers?: HeadersInit }): Promise<MyHoursReportEnvelope> {
5249
+ async setRecurringInvoiceAttachmentThrough(args: { "recurringInvoiceId": number; "attachmentId": number; body: RecurringAttachmentThroughInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<AttachmentEnvelope> {
4018
5250
  const headers = new Headers(args.headers);
4019
5251
 
4020
- return this.request<MyHoursReportEnvelope>("GET", "/api/v1/reports/my-hours", {
4021
- query: args.query,
5252
+ return this.request<AttachmentEnvelope>("PATCH", "/api/v1/recurring-invoices/:recurringInvoiceId/attachments/:attachmentId".replace(":recurringInvoiceId", encodeURIComponent(String(args["recurringInvoiceId"]))).replace(":attachmentId", encodeURIComponent(String(args["attachmentId"]))), {
5253
+ body: args.body,
4022
5254
  signal: args.signal,
4023
5255
  headers,
4024
5256
  });
4025
5257
  }
4026
5258
 
4027
- async getTimeReport(args: { query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<TimeReportEnvelope> {
5259
+ async removeRecurringInvoiceAttachment(args: { "recurringInvoiceId": number; "attachmentId": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4028
5260
  const headers = new Headers(args.headers);
4029
5261
 
4030
- return this.request<TimeReportEnvelope>("GET", "/api/v1/reports/time", {
4031
- query: args.query,
5262
+ return this.request<void>("DELETE", "/api/v1/recurring-invoices/:recurringInvoiceId/attachments/:attachmentId".replace(":recurringInvoiceId", encodeURIComponent(String(args["recurringInvoiceId"]))).replace(":attachmentId", encodeURIComponent(String(args["attachmentId"]))), {
4032
5263
  signal: args.signal,
4033
5264
  headers,
4034
5265
  });
4035
5266
  }
4036
5267
 
4037
- async getContractorCostReport(args: { query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ContractorCostReportEnvelope> {
5268
+ async getPaymentActuals(args: { query?: { "month"?: string }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<PaymentActualsEnvelope> {
4038
5269
  const headers = new Headers(args.headers);
4039
5270
 
4040
- return this.request<ContractorCostReportEnvelope>("GET", "/api/v1/reports/contractor", {
5271
+ return this.request<PaymentActualsEnvelope>("GET", "/api/v1/staff-payments/actuals", {
4041
5272
  query: args.query,
4042
5273
  signal: args.signal,
4043
5274
  headers,
4044
5275
  });
4045
5276
  }
4046
5277
 
4047
- async getProfitabilityReport(args: { query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ProfitabilityReportEnvelope> {
5278
+ async confirmPaymentActuals(args: { body: ConfirmPaymentActuals; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4048
5279
  const headers = new Headers(args.headers);
4049
5280
 
4050
- return this.request<ProfitabilityReportEnvelope>("GET", "/api/v1/reports/profitability", {
4051
- query: args.query,
5281
+ return this.request<void>("POST", "/api/v1/staff-payments/actuals", {
5282
+ body: args.body,
4052
5283
  signal: args.signal,
4053
5284
  headers,
4054
5285
  });
4055
5286
  }
4056
5287
 
4057
- async getDetailedExpenseReport(args: { query: { "from": string; "to": string; "client_id"?: number; "project_id"?: number; "billable_only"?: boolean }; signal?: AbortSignal; headers?: HeadersInit }): Promise<DetailedExpenseReportEnvelope> {
5288
+ async configureStaffPaymentProvider(args: { body: StaffPaymentProviderCommand; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4058
5289
  const headers = new Headers(args.headers);
4059
5290
 
4060
- return this.request<DetailedExpenseReportEnvelope>("GET", "/api/v1/reports/detailed-expense", {
4061
- query: args.query,
5291
+ return this.request<void>("POST", "/api/v1/staff-payments/provider-settings", {
5292
+ body: args.body,
4062
5293
  signal: args.signal,
4063
5294
  headers,
4064
5295
  });
4065
5296
  }
4066
5297
 
4067
- async getUninvoicedReport(args: { query: { "from": string; "to": string; "client_id"?: number; "project_id"?: number }; signal?: AbortSignal; headers?: HeadersInit }): Promise<UninvoicedReportEnvelope> {
5298
+ async getStaffPaymentReport(args: { query?: { "month"?: string }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<StaffPaymentReportEnvelope> {
4068
5299
  const headers = new Headers(args.headers);
4069
5300
 
4070
- return this.request<UninvoicedReportEnvelope>("GET", "/api/v1/reports/uninvoiced", {
5301
+ return this.request<StaffPaymentReportEnvelope>("GET", "/api/v1/staff-payments", {
4071
5302
  query: args.query,
4072
5303
  signal: args.signal,
4073
5304
  headers,
4074
5305
  });
4075
5306
  }
4076
5307
 
4077
- async getDetailedTimeReport(args: { query: { "from": string; "to": string; "client_id"?: number; "project_id"?: number; "hours"?: "all" | "billable" | "non_billable" | "uninvoiced"; "grain"?: "day" | "entry"; "active_projects_only"?: boolean }; signal?: AbortSignal; headers?: HeadersInit }): Promise<DetailedTimeReportEnvelope> {
5308
+ async recordStaffPaymentEvent(args: { body: StaffPaymentCommand; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4078
5309
  const headers = new Headers(args.headers);
4079
5310
 
4080
- return this.request<DetailedTimeReportEnvelope>("GET", "/api/v1/reports/detailed-time", {
4081
- query: args.query,
5311
+ return this.request<void>("POST", "/api/v1/staff-payments/events", {
5312
+ body: args.body,
4082
5313
  signal: args.signal,
4083
5314
  headers,
4084
5315
  });
4085
5316
  }
4086
5317
 
4087
- async getClientRollupReport(args: { "clientId": number; query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ClientRollupReportEnvelope> {
5318
+ async getPaymentRunReport(args: { query?: { "from"?: string; "to"?: string }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<PaymentRunReportEnvelope> {
4088
5319
  const headers = new Headers(args.headers);
4089
5320
 
4090
- return this.request<ClientRollupReportEnvelope>("GET", "/api/v1/reports/client-rollups/:clientId".replace(":clientId", encodeURIComponent(String(args["clientId"]))), {
5321
+ return this.request<PaymentRunReportEnvelope>("GET", "/api/v1/payment-runs/report", {
4091
5322
  query: args.query,
4092
5323
  signal: args.signal,
4093
5324
  headers,
4094
5325
  });
4095
5326
  }
4096
5327
 
4097
- async listProjectBudgetSummaries(args: { query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ProjectBudgetSummaryListEnvelope> {
5328
+ async previewPaymentRun(args: { body: PaymentRunCommand; signal?: AbortSignal; headers?: HeadersInit }): Promise<PaymentRunEnvelope> {
4098
5329
  const headers = new Headers(args.headers);
4099
5330
 
4100
- return this.request<ProjectBudgetSummaryListEnvelope>("GET", "/api/v1/reports/project-budgets", {
4101
- query: args.query,
5331
+ return this.request<PaymentRunEnvelope>("POST", "/api/v1/payment-runs/preview", {
5332
+ body: args.body,
4102
5333
  signal: args.signal,
4103
5334
  headers,
4104
5335
  });
4105
5336
  }
4106
5337
 
4107
- async getProjectBudgetReport(args: { "projectId": number; query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ProjectBudgetReportEnvelope> {
5338
+ async approvePaymentRun(args: { "id": string; body: PaymentRunApproval; signal?: AbortSignal; headers?: HeadersInit }): Promise<PaymentRunEnvelope> {
4108
5339
  const headers = new Headers(args.headers);
4109
5340
 
4110
- return this.request<ProjectBudgetReportEnvelope>("GET", "/api/v1/reports/project-budget/:projectId".replace(":projectId", encodeURIComponent(String(args["projectId"]))), {
4111
- query: args.query,
5341
+ return this.request<PaymentRunEnvelope>("POST", "/api/v1/payment-runs/:id/approve".replace(":id", encodeURIComponent(String(args["id"]))), {
5342
+ body: args.body,
4112
5343
  signal: args.signal,
4113
5344
  headers,
4114
5345
  });
4115
5346
  }
4116
5347
 
4117
- async listModules(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<ModuleListEnvelope> {
5348
+ async cancelPaymentRun(args: { "id": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<PaymentRunEnvelope> {
4118
5349
  const headers = new Headers(args.headers);
4119
5350
 
4120
- return this.request<ModuleListEnvelope>("GET", "/api/v1/admin/modules", {
5351
+ return this.request<PaymentRunEnvelope>("POST", "/api/v1/payment-runs/:id/cancel".replace(":id", encodeURIComponent(String(args["id"]))), {
4121
5352
  signal: args.signal,
4122
5353
  headers,
4123
5354
  });
4124
5355
  }
4125
5356
 
4126
- async updateModule(args: { "module": string; body: ModulePatch; signal?: AbortSignal; headers?: HeadersInit }): Promise<ModuleListEnvelope> {
5357
+ async reconcilePaymentRunItem(args: { "id": string; "itemId": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<PaymentRunEnvelope> {
4127
5358
  const headers = new Headers(args.headers);
4128
5359
 
4129
- return this.request<ModuleListEnvelope>("PATCH", "/api/v1/admin/modules/:module".replace(":module", encodeURIComponent(String(args["module"]))), {
4130
- body: args.body,
5360
+ return this.request<PaymentRunEnvelope>("POST", "/api/v1/payment-runs/:id/items/:itemId/reconcile".replace(":id", encodeURIComponent(String(args["id"]))).replace(":itemId", encodeURIComponent(String(args["itemId"]))), {
4131
5361
  signal: args.signal,
4132
5362
  headers,
4133
5363
  });
4134
5364
  }
4135
5365
 
4136
- async getBackupStatus(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BackupStatusEnvelope> {
5366
+ async getReportDefinitionRegistry(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<ReportDefinitionRegistryEnvelope> {
4137
5367
  const headers = new Headers(args.headers);
4138
5368
 
4139
- return this.request<BackupStatusEnvelope>("GET", "/api/v1/backup/status", {
5369
+ return this.request<ReportDefinitionRegistryEnvelope>("GET", "/api/v1/report-definitions/registry", {
4140
5370
  signal: args.signal,
4141
5371
  headers,
4142
5372
  });
4143
5373
  }
4144
5374
 
4145
- async getQuickBooksConnection(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<QuickBooksStatusEnvelope> {
5375
+ async listSavedReports(args: { query?: { "view"?: "all" | "yours" | "shared"; "q"?: string; "custom_only"?: boolean }; signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<SavedReportListEnvelope> {
4146
5376
  const headers = new Headers(args.headers);
4147
5377
 
4148
- return this.request<QuickBooksStatusEnvelope>("GET", "/api/v1/integrations/quickbooks", {
5378
+ return this.request<SavedReportListEnvelope>("GET", "/api/v1/report-definitions", {
5379
+ query: args.query,
4149
5380
  signal: args.signal,
4150
5381
  headers,
4151
5382
  });
4152
5383
  }
4153
5384
 
4154
- async startQuickBooksAuthorization(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<QuickBooksAuthorizeEnvelope> {
5385
+ async createSavedReport(args: { body: SavedReportInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<SavedReportEnvelope> {
4155
5386
  const headers = new Headers(args.headers);
4156
5387
 
4157
- return this.request<QuickBooksAuthorizeEnvelope>("POST", "/api/v1/integrations/quickbooks/authorize", {
5388
+ return this.request<SavedReportEnvelope>("POST", "/api/v1/report-definitions", {
5389
+ body: args.body,
4158
5390
  signal: args.signal,
4159
5391
  headers,
4160
5392
  });
4161
5393
  }
4162
5394
 
4163
- async updateQuickBooksSettings(args: { body: QuickBooksSettingsInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<QuickBooksConnectionEnvelope> {
5395
+ async previewReportDefinition(args: { body: SavedReportInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<ReportRunnerEnvelope> {
4164
5396
  const headers = new Headers(args.headers);
4165
5397
 
4166
- return this.request<QuickBooksConnectionEnvelope>("POST", "/api/v1/integrations/quickbooks/settings", {
5398
+ return this.request<ReportRunnerEnvelope>("POST", "/api/v1/report-definitions/preview", {
4167
5399
  body: args.body,
4168
5400
  signal: args.signal,
4169
5401
  headers,
4170
5402
  });
4171
5403
  }
4172
5404
 
4173
- async disconnectQuickBooks(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<void> {
5405
+ async getSavedReport(args: { "reportId": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<SavedReportEnvelope> {
4174
5406
  const headers = new Headers(args.headers);
4175
5407
 
4176
- return this.request<void>("DELETE", "/api/v1/integrations/quickbooks", {
5408
+ return this.request<SavedReportEnvelope>("GET", "/api/v1/report-definitions/:reportId".replace(":reportId", encodeURIComponent(String(args["reportId"]))), {
4177
5409
  signal: args.signal,
4178
5410
  headers,
4179
5411
  });
4180
5412
  }
4181
5413
 
4182
- async listSsoProvisioningDomains(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<SsoDomainListEnvelope> {
5414
+ async updateSavedReport(args: { "reportId": string; body: SavedReportUpdate; signal?: AbortSignal; headers?: HeadersInit }): Promise<SavedReportEnvelope> {
4183
5415
  const headers = new Headers(args.headers);
4184
5416
 
4185
- return this.request<SsoDomainListEnvelope>("GET", "/api/v1/settings/sso-domains", {
5417
+ return this.request<SavedReportEnvelope>("PATCH", "/api/v1/report-definitions/:reportId".replace(":reportId", encodeURIComponent(String(args["reportId"]))), {
5418
+ body: args.body,
4186
5419
  signal: args.signal,
4187
5420
  headers,
4188
5421
  });
4189
5422
  }
4190
5423
 
4191
- async addSsoProvisioningDomain(args: { body: SsoDomainInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<SsoDomainEnvelope> {
5424
+ async deleteSavedReport(args: { "reportId": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4192
5425
  const headers = new Headers(args.headers);
4193
5426
 
4194
- return this.request<SsoDomainEnvelope>("POST", "/api/v1/settings/sso-domains", {
4195
- body: args.body,
5427
+ return this.request<void>("DELETE", "/api/v1/report-definitions/:reportId".replace(":reportId", encodeURIComponent(String(args["reportId"]))), {
4196
5428
  signal: args.signal,
4197
5429
  headers,
4198
5430
  });
4199
5431
  }
4200
5432
 
4201
- async removeSsoProvisioningDomain(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
5433
+ async duplicateSavedReport(args: { "reportId": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<SavedReportEnvelope> {
4202
5434
  const headers = new Headers(args.headers);
4203
5435
 
4204
- return this.request<void>("DELETE", "/api/v1/settings/sso-domains/:id".replace(":id", encodeURIComponent(String(args["id"]))), {
5436
+ return this.request<SavedReportEnvelope>("POST", "/api/v1/report-definitions/:reportId/duplicate".replace(":reportId", encodeURIComponent(String(args["reportId"]))), {
4205
5437
  signal: args.signal,
4206
5438
  headers,
4207
5439
  });
4208
5440
  }
4209
5441
 
4210
- async verifySsoProvisioningDomain(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<SsoDomainCheckEnvelope> {
5442
+ async pinSavedReport(args: { "reportId": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4211
5443
  const headers = new Headers(args.headers);
4212
5444
 
4213
- return this.request<SsoDomainCheckEnvelope>("POST", "/api/v1/settings/sso-domains/:id/verify".replace(":id", encodeURIComponent(String(args["id"]))), {
5445
+ return this.request<void>("POST", "/api/v1/report-definitions/:reportId/pin".replace(":reportId", encodeURIComponent(String(args["reportId"]))), {
4214
5446
  signal: args.signal,
4215
5447
  headers,
4216
5448
  });
4217
5449
  }
4218
5450
 
4219
- async getBrand(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BrandEnvelope> {
5451
+ async unpinSavedReport(args: { "reportId": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4220
5452
  const headers = new Headers(args.headers);
4221
5453
 
4222
- return this.request<BrandEnvelope>("GET", "/api/v1/brand", {
5454
+ return this.request<void>("DELETE", "/api/v1/report-definitions/:reportId/pin".replace(":reportId", encodeURIComponent(String(args["reportId"]))), {
4223
5455
  signal: args.signal,
4224
5456
  headers,
4225
5457
  });
4226
5458
  }
4227
5459
 
4228
- async listBrandAssets(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BrandAssetListEnvelope> {
5460
+ async shareSavedReport(args: { "reportId": string; "userId": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4229
5461
  const headers = new Headers(args.headers);
4230
5462
 
4231
- return this.request<BrandAssetListEnvelope>("GET", "/api/v1/settings/brand-assets", {
5463
+ return this.request<void>("POST", "/api/v1/report-definitions/:reportId/shares/:userId".replace(":reportId", encodeURIComponent(String(args["reportId"]))).replace(":userId", encodeURIComponent(String(args["userId"]))), {
4232
5464
  signal: args.signal,
4233
5465
  headers,
4234
5466
  });
4235
5467
  }
4236
5468
 
4237
- async removeBrandAsset(args: { "slot": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
5469
+ async unshareSavedReport(args: { "reportId": string; "userId": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
4238
5470
  const headers = new Headers(args.headers);
4239
5471
 
4240
- return this.request<void>("DELETE", "/api/v1/settings/brand-assets/:slot".replace(":slot", encodeURIComponent(String(args["slot"]))), {
5472
+ return this.request<void>("DELETE", "/api/v1/report-definitions/:reportId/shares/:userId".replace(":reportId", encodeURIComponent(String(args["reportId"]))).replace(":userId", encodeURIComponent(String(args["userId"]))), {
4241
5473
  signal: args.signal,
4242
5474
  headers,
4243
5475
  });
4244
5476
  }
4245
5477
 
4246
- async getInstanceTheme(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<InstanceThemeEnvelope> {
5478
+ async runSavedReport(args: { "reportId": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<ReportRunnerEnvelope> {
4247
5479
  const headers = new Headers(args.headers);
4248
5480
 
4249
- return this.request<InstanceThemeEnvelope>("GET", "/api/v1/settings/theme", {
5481
+ return this.request<ReportRunnerEnvelope>("POST", "/api/v1/report-definitions/:reportId/run".replace(":reportId", encodeURIComponent(String(args["reportId"]))), {
4250
5482
  signal: args.signal,
4251
5483
  headers,
4252
5484
  });
4253
5485
  }
4254
5486
 
4255
- async setInstanceTheme(args: { body: InstanceThemeInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InstanceThemeEnvelope> {
5487
+ async getMyHoursReport(args: { query: { "from": string; "to": string; "project_id"?: number }; signal?: AbortSignal; headers?: HeadersInit }): Promise<MyHoursReportEnvelope> {
4256
5488
  const headers = new Headers(args.headers);
4257
5489
 
4258
- return this.request<InstanceThemeEnvelope>("POST", "/api/v1/settings/theme", {
4259
- body: args.body,
5490
+ return this.request<MyHoursReportEnvelope>("GET", "/api/v1/reports/my-hours", {
5491
+ query: args.query,
4260
5492
  signal: args.signal,
4261
5493
  headers,
4262
5494
  });
4263
5495
  }
4264
5496
 
4265
- async clearInstanceTheme(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<void> {
5497
+ async getTimeReport(args: { query: { "from": string; "to": string; "include_fixed_fee"?: boolean }; signal?: AbortSignal; headers?: HeadersInit }): Promise<TimeReportEnvelope> {
4266
5498
  const headers = new Headers(args.headers);
4267
5499
 
4268
- return this.request<void>("DELETE", "/api/v1/settings/theme", {
5500
+ return this.request<TimeReportEnvelope>("GET", "/api/v1/reports/time", {
5501
+ query: args.query,
4269
5502
  signal: args.signal,
4270
5503
  headers,
4271
5504
  });
4272
5505
  }
4273
5506
 
4274
- async getInvoicePaymentLink(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoicePaymentLinkEnvelope> {
5507
+ async getInvoicedReport(args: { query: { "from": string; "to": string; "client_id"?: number; "status"?: "draft" | "open" | "paid" | "closed" }; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoicedReportEnvelope> {
4275
5508
  const headers = new Headers(args.headers);
4276
5509
 
4277
- return this.request<InvoicePaymentLinkEnvelope>("POST", "/api/v1/invoices/:id/payment-link".replace(":id", encodeURIComponent(String(args["id"]))), {
5510
+ return this.request<InvoicedReportEnvelope>("GET", "/api/v1/reports/invoiced", {
5511
+ query: args.query,
4278
5512
  signal: args.signal,
4279
5513
  headers,
4280
5514
  });
4281
5515
  }
4282
5516
 
4283
- async listPayoutAccounts(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<PayoutAccountListEnvelope> {
5517
+ async getPaymentsReceivedReport(args: { query: { "from": string; "to": string; "client_id"?: number }; signal?: AbortSignal; headers?: HeadersInit }): Promise<PaymentsReceivedReportEnvelope> {
4284
5518
  const headers = new Headers(args.headers);
4285
5519
 
4286
- return this.request<PayoutAccountListEnvelope>("GET", "/api/v1/users/:id/payout-accounts".replace(":id", encodeURIComponent(String(args["id"]))), {
5520
+ return this.request<PaymentsReceivedReportEnvelope>("GET", "/api/v1/reports/payments-received", {
5521
+ query: args.query,
4287
5522
  signal: args.signal,
4288
5523
  headers,
4289
5524
  });
4290
5525
  }
4291
5526
 
4292
- async linkPayoutAccount(args: { "id": number; body: PayoutAccountInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<PayoutAccountEnvelope> {
5527
+ async getReceivablesReport(args: { query: { "as_of": string; "client_id"?: number }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ReceivablesReportEnvelope> {
4293
5528
  const headers = new Headers(args.headers);
4294
5529
 
4295
- return this.request<PayoutAccountEnvelope>("POST", "/api/v1/users/:id/payout-accounts".replace(":id", encodeURIComponent(String(args["id"]))), {
4296
- body: args.body,
5530
+ return this.request<ReceivablesReportEnvelope>("GET", "/api/v1/reports/receivables", {
5531
+ query: args.query,
4297
5532
  signal: args.signal,
4298
5533
  headers,
4299
5534
  });
4300
5535
  }
4301
5536
 
4302
- async detachPayoutAccount(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
5537
+ async getContractorCostReport(args: { query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ContractorCostReportEnvelope> {
4303
5538
  const headers = new Headers(args.headers);
4304
5539
 
4305
- return this.request<void>("DELETE", "/api/v1/payout-accounts/:id".replace(":id", encodeURIComponent(String(args["id"]))), {
5540
+ return this.request<ContractorCostReportEnvelope>("GET", "/api/v1/reports/contractor", {
5541
+ query: args.query,
4306
5542
  signal: args.signal,
4307
5543
  headers,
4308
5544
  });
4309
5545
  }
4310
5546
 
4311
- async getBillStatus(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BillStatusEnvelope> {
5547
+ async getMonthEndManifest(args: { query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<MonthEndManifestEnvelope> {
4312
5548
  const headers = new Headers(args.headers);
4313
5549
 
4314
- return this.request<BillStatusEnvelope>("GET", "/api/v1/integrations/bill", {
5550
+ return this.request<MonthEndManifestEnvelope>("GET", "/api/v1/reports/month-end", {
5551
+ query: args.query,
4315
5552
  signal: args.signal,
4316
5553
  headers,
4317
5554
  });
4318
5555
  }
4319
5556
 
4320
- async getBillClientDelivery(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<BillClientDeliveryEnvelope> {
5557
+ async getBandedMonthReport(args: { query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<BandedMonthReportEnvelope> {
4321
5558
  const headers = new Headers(args.headers);
4322
5559
 
4323
- return this.request<BillClientDeliveryEnvelope>("GET", "/api/v1/integrations/bill/clients/:id".replace(":id", encodeURIComponent(String(args["id"]))), {
5560
+ return this.request<BandedMonthReportEnvelope>("GET", "/api/v1/reports/banded-months", {
5561
+ query: args.query,
4324
5562
  signal: args.signal,
4325
5563
  headers,
4326
5564
  });
4327
5565
  }
4328
5566
 
4329
- async setBillClientDelivery(args: { "id": number; body: BillClientDeliveryInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<BillClientDeliveryEnvelope> {
5567
+ async getBandCostAlert(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BandCostAlertEnvelope> {
4330
5568
  const headers = new Headers(args.headers);
4331
5569
 
4332
- return this.request<BillClientDeliveryEnvelope>("POST", "/api/v1/integrations/bill/clients/:id".replace(":id", encodeURIComponent(String(args["id"]))), {
4333
- body: args.body,
5570
+ return this.request<BandCostAlertEnvelope>("GET", "/api/v1/reports/band-cost-alert", {
4334
5571
  signal: args.signal,
4335
5572
  headers,
4336
5573
  });
4337
5574
  }
4338
5575
 
4339
- async getTwoFactorStatus(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<TwoFactorStatusEnvelope> {
5576
+ async setBandCostAlert(args: { body: BandCostAlertInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<BandCostAlertEnvelope> {
4340
5577
  const headers = new Headers(args.headers);
4341
5578
 
4342
- return this.request<TwoFactorStatusEnvelope>("GET", "/api/v1/two-factor", {
5579
+ return this.request<BandCostAlertEnvelope>("POST", "/api/v1/reports/band-cost-alert", {
5580
+ body: args.body,
4343
5581
  signal: args.signal,
4344
5582
  headers,
4345
5583
  });
4346
5584
  }
4347
5585
 
4348
- async beginTwoFactorEnrolment(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<TwoFactorEnrolmentEnvelope> {
5586
+ async getProfitabilityReport(args: { query: { "from": string; "to": string; "project_status"?: "all" | "active" | "archived"; "billing_method"?: "non_billable" | "time_materials" | "fixed_fee"; "manager_id"?: number; "tag_id"?: number }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ProfitabilityReportEnvelope> {
4349
5587
  const headers = new Headers(args.headers);
4350
5588
 
4351
- return this.request<TwoFactorEnrolmentEnvelope>("POST", "/api/v1/two-factor", {
5589
+ return this.request<ProfitabilityReportEnvelope>("GET", "/api/v1/reports/profitability", {
5590
+ query: args.query,
5591
+ signal: args.signal,
5592
+ headers,
5593
+ });
5594
+ }
5595
+
5596
+ async getDetailedExpenseReport(args: { query: { "from": string; "to": string; "client_id"?: number; "project_id"?: number; "category_id"?: number; "user_id"?: number; "billable"?: boolean; "reimbursable"?: boolean; "invoice_state"?: "all" | "invoiced" | "uninvoiced"; "active_projects_only"?: boolean }; signal?: AbortSignal; headers?: HeadersInit }): Promise<DetailedExpenseReportEnvelope> {
5597
+ const headers = new Headers(args.headers);
5598
+
5599
+ return this.request<DetailedExpenseReportEnvelope>("GET", "/api/v1/reports/detailed-expense", {
5600
+ query: args.query,
5601
+ signal: args.signal,
5602
+ headers,
5603
+ });
5604
+ }
5605
+
5606
+ async getUninvoicedReport(args: { query: { "from": string; "to": string; "client_id"?: number; "project_id"?: number }; signal?: AbortSignal; headers?: HeadersInit }): Promise<UninvoicedReportEnvelope> {
5607
+ const headers = new Headers(args.headers);
5608
+
5609
+ return this.request<UninvoicedReportEnvelope>("GET", "/api/v1/reports/uninvoiced", {
5610
+ query: args.query,
5611
+ signal: args.signal,
5612
+ headers,
5613
+ });
5614
+ }
5615
+
5616
+ async getDetailedTimeReport(args: { query: { "self"?: boolean; "include_fixed_fee"?: boolean; "direct_client_only"?: boolean; "contractors_only"?: boolean; "currency"?: string; "project_status"?: "all" | "active" | "archived"; "billing_method"?: "non_billable" | "time_materials" | "fixed_fee"; "manager_id"?: number; "from": string; "to": string; "client_id"?: number; "project_id"?: number; "task_id"?: number; "user_id"?: number; "role_id"?: number; "tag_id"?: number; "hours"?: "all" | "billable" | "non_billable" | "uninvoiced" | "claimed" | "unclaimed"; "grain"?: "day" | "entry"; "audience"?: "internal" | "client"; "invoice_state"?: "all" | "invoiced" | "uninvoiced"; "active_projects_only"?: boolean }; signal?: AbortSignal; headers?: HeadersInit }): Promise<DetailedTimeReportEnvelope> {
5617
+ const headers = new Headers(args.headers);
5618
+
5619
+ return this.request<DetailedTimeReportEnvelope>("GET", "/api/v1/reports/detailed-time", {
5620
+ query: args.query,
5621
+ signal: args.signal,
5622
+ headers,
5623
+ });
5624
+ }
5625
+
5626
+ async downloadDetailedTimeReport(args: { query: { "self"?: boolean; "include_fixed_fee"?: boolean; "direct_client_only"?: boolean; "contractors_only"?: boolean; "currency"?: string; "project_status"?: "all" | "active" | "archived"; "billing_method"?: "non_billable" | "time_materials" | "fixed_fee"; "manager_id"?: number; "from": string; "to": string; "client_id"?: number; "project_id"?: number; "task_id"?: number; "user_id"?: number; "role_id"?: number; "tag_id"?: number; "hours"?: "all" | "billable" | "non_billable" | "uninvoiced" | "claimed" | "unclaimed"; "grain"?: "day" | "entry"; "audience"?: "internal" | "client"; "invoice_state"?: "all" | "invoiced" | "uninvoiced"; "active_projects_only"?: boolean; "format": "pdf" | "csv" | "xlsx" }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ArrayBuffer> {
5627
+ const headers = new Headers(args.headers);
5628
+
5629
+ return this.request<ArrayBuffer>("GET", "/api/v1/reports/detailed-time/export", {
5630
+ query: args.query,
5631
+ signal: args.signal,
5632
+ binary: true,
5633
+ headers,
5634
+ });
5635
+ }
5636
+
5637
+ async executeDetailedTimeAction(args: { body: ReportTimeActionInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<ReportTimeActionEnvelope> {
5638
+ const headers = new Headers(args.headers);
5639
+
5640
+ return this.request<ReportTimeActionEnvelope>("POST", "/api/v1/reports/detailed-time/actions", {
5641
+ body: args.body,
5642
+ signal: args.signal,
5643
+ headers,
5644
+ });
5645
+ }
5646
+
5647
+ async getClientRollupReport(args: { "clientId": number; query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ClientRollupReportEnvelope> {
5648
+ const headers = new Headers(args.headers);
5649
+
5650
+ return this.request<ClientRollupReportEnvelope>("GET", "/api/v1/reports/client-rollups/:clientId".replace(":clientId", encodeURIComponent(String(args["clientId"]))), {
5651
+ query: args.query,
5652
+ signal: args.signal,
5653
+ headers,
5654
+ });
5655
+ }
5656
+
5657
+ async listProjectBudgetSummaries(args: { query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ProjectBudgetSummaryListEnvelope> {
5658
+ const headers = new Headers(args.headers);
5659
+
5660
+ return this.request<ProjectBudgetSummaryListEnvelope>("GET", "/api/v1/reports/project-budgets", {
5661
+ query: args.query,
5662
+ signal: args.signal,
5663
+ headers,
5664
+ });
5665
+ }
5666
+
5667
+ async getProjectBudgetReport(args: { "projectId": number; query: { "from": string; "to": string }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ProjectBudgetReportEnvelope> {
5668
+ const headers = new Headers(args.headers);
5669
+
5670
+ return this.request<ProjectBudgetReportEnvelope>("GET", "/api/v1/reports/project-budget/:projectId".replace(":projectId", encodeURIComponent(String(args["projectId"]))), {
5671
+ query: args.query,
5672
+ signal: args.signal,
5673
+ headers,
5674
+ });
5675
+ }
5676
+
5677
+ async listModules(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<ModuleListEnvelope> {
5678
+ const headers = new Headers(args.headers);
5679
+
5680
+ return this.request<ModuleListEnvelope>("GET", "/api/v1/admin/modules", {
5681
+ signal: args.signal,
5682
+ headers,
5683
+ });
5684
+ }
5685
+
5686
+ async updateModule(args: { "module": string; body: ModulePatch; signal?: AbortSignal; headers?: HeadersInit }): Promise<ModuleListEnvelope> {
5687
+ const headers = new Headers(args.headers);
5688
+
5689
+ return this.request<ModuleListEnvelope>("PATCH", "/api/v1/admin/modules/:module".replace(":module", encodeURIComponent(String(args["module"]))), {
5690
+ body: args.body,
5691
+ signal: args.signal,
5692
+ headers,
5693
+ });
5694
+ }
5695
+
5696
+ async listSignInMethods(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<SignInMethodListEnvelope> {
5697
+ const headers = new Headers(args.headers);
5698
+
5699
+ return this.request<SignInMethodListEnvelope>("GET", "/api/v1/admin/sign-in-methods", {
5700
+ signal: args.signal,
5701
+ headers,
5702
+ });
5703
+ }
5704
+
5705
+ async updateSignInMethod(args: { "method": string; body: ModulePatch; signal?: AbortSignal; headers?: HeadersInit }): Promise<SignInMethodListEnvelope> {
5706
+ const headers = new Headers(args.headers);
5707
+
5708
+ return this.request<SignInMethodListEnvelope>("PATCH", "/api/v1/admin/sign-in-methods/:method".replace(":method", encodeURIComponent(String(args["method"]))), {
5709
+ body: args.body,
5710
+ signal: args.signal,
5711
+ headers,
5712
+ });
5713
+ }
5714
+
5715
+ async getBackupStatus(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BackupStatusEnvelope> {
5716
+ const headers = new Headers(args.headers);
5717
+
5718
+ return this.request<BackupStatusEnvelope>("GET", "/api/v1/backup/status", {
5719
+ signal: args.signal,
5720
+ headers,
5721
+ });
5722
+ }
5723
+
5724
+ async getQuickBooksConnection(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<QuickBooksStatusEnvelope> {
5725
+ const headers = new Headers(args.headers);
5726
+
5727
+ return this.request<QuickBooksStatusEnvelope>("GET", "/api/v1/integrations/quickbooks", {
5728
+ signal: args.signal,
5729
+ headers,
5730
+ });
5731
+ }
5732
+
5733
+ async startQuickBooksAuthorization(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<QuickBooksAuthorizeEnvelope> {
5734
+ const headers = new Headers(args.headers);
5735
+
5736
+ return this.request<QuickBooksAuthorizeEnvelope>("POST", "/api/v1/integrations/quickbooks/authorize", {
5737
+ signal: args.signal,
5738
+ headers,
5739
+ });
5740
+ }
5741
+
5742
+ async updateQuickBooksSettings(args: { body: QuickBooksSettingsInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<QuickBooksConnectionEnvelope> {
5743
+ const headers = new Headers(args.headers);
5744
+
5745
+ return this.request<QuickBooksConnectionEnvelope>("POST", "/api/v1/integrations/quickbooks/settings", {
5746
+ body: args.body,
5747
+ signal: args.signal,
5748
+ headers,
5749
+ });
5750
+ }
5751
+
5752
+ async disconnectQuickBooks(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<void> {
5753
+ const headers = new Headers(args.headers);
5754
+
5755
+ return this.request<void>("DELETE", "/api/v1/integrations/quickbooks", {
5756
+ signal: args.signal,
5757
+ headers,
5758
+ });
5759
+ }
5760
+
5761
+ async getInvoiceQuickBooks(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceQuickBooksEnvelope> {
5762
+ const headers = new Headers(args.headers);
5763
+
5764
+ return this.request<InvoiceQuickBooksEnvelope>("GET", "/api/v1/invoices/:id/quickbooks".replace(":id", encodeURIComponent(String(args["id"]))), {
5765
+ signal: args.signal,
5766
+ headers,
5767
+ });
5768
+ }
5769
+
5770
+ async syncInvoiceQuickBooks(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceQuickBooksEnvelope> {
5771
+ const headers = new Headers(args.headers);
5772
+
5773
+ return this.request<InvoiceQuickBooksEnvelope>("POST", "/api/v1/invoices/:id/quickbooks/sync".replace(":id", encodeURIComponent(String(args["id"]))), {
5774
+ signal: args.signal,
5775
+ headers,
5776
+ });
5777
+ }
5778
+
5779
+ async getWiseConnection(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<WiseStatusEnvelope> {
5780
+ const headers = new Headers(args.headers);
5781
+
5782
+ return this.request<WiseStatusEnvelope>("GET", "/api/v1/integrations/wise", {
5783
+ signal: args.signal,
5784
+ headers,
5785
+ });
5786
+ }
5787
+
5788
+ async listWiseRecipients(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<WiseRecipientListEnvelope> {
5789
+ const headers = new Headers(args.headers);
5790
+
5791
+ return this.request<WiseRecipientListEnvelope>("GET", "/api/v1/integrations/wise/recipients", {
5792
+ signal: args.signal,
5793
+ headers,
5794
+ });
5795
+ }
5796
+
5797
+ async onboardWiseRecipient(args: { body: WiseOnboardInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<WiseLinkEnvelope> {
5798
+ const headers = new Headers(args.headers);
5799
+
5800
+ return this.request<WiseLinkEnvelope>("POST", "/api/v1/integrations/wise/recipients", {
5801
+ body: args.body,
5802
+ signal: args.signal,
5803
+ headers,
5804
+ });
5805
+ }
5806
+
5807
+ async listWisePayoutProposals(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<WiseProposalListEnvelope> {
5808
+ const headers = new Headers(args.headers);
5809
+
5810
+ return this.request<WiseProposalListEnvelope>("GET", "/api/v1/integrations/wise/proposals", {
5811
+ signal: args.signal,
5812
+ headers,
5813
+ });
5814
+ }
5815
+
5816
+ async getWisePayoutDestination(args: { "userId": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<WiseDestinationEnvelope> {
5817
+ const headers = new Headers(args.headers);
5818
+
5819
+ return this.request<WiseDestinationEnvelope>("GET", "/api/v1/integrations/wise/destinations/:userId".replace(":userId", encodeURIComponent(String(args["userId"]))), {
5820
+ signal: args.signal,
5821
+ headers,
5822
+ });
5823
+ }
5824
+
5825
+ async removeWisePayoutDestination(args: { "userId": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
5826
+ const headers = new Headers(args.headers);
5827
+
5828
+ return this.request<void>("DELETE", "/api/v1/integrations/wise/destinations/:userId".replace(":userId", encodeURIComponent(String(args["userId"]))), {
5829
+ signal: args.signal,
5830
+ headers,
5831
+ });
5832
+ }
5833
+
5834
+ async shareWiseProfile(args: { body: WiseContactInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<WiseContactEnvelope> {
5835
+ const headers = new Headers(args.headers);
5836
+
5837
+ return this.request<WiseContactEnvelope>("POST", "/api/v1/integrations/wise/contacts", {
5838
+ body: args.body,
5839
+ signal: args.signal,
5840
+ headers,
5841
+ });
5842
+ }
5843
+
5844
+ async linkWiseRecipient(args: { body: WiseLinkInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<WiseLinkEnvelope> {
5845
+ const headers = new Headers(args.headers);
5846
+
5847
+ return this.request<WiseLinkEnvelope>("POST", "/api/v1/integrations/wise/recipients/link", {
5848
+ body: args.body,
5849
+ signal: args.signal,
5850
+ headers,
5851
+ });
5852
+ }
5853
+
5854
+ async unlinkWiseRecipient(args: { "accountId": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
5855
+ const headers = new Headers(args.headers);
5856
+
5857
+ return this.request<void>("DELETE", "/api/v1/integrations/wise/recipients/:accountId".replace(":accountId", encodeURIComponent(String(args["accountId"]))), {
5858
+ signal: args.signal,
5859
+ headers,
5860
+ });
5861
+ }
5862
+
5863
+ async listSsoProvisioningDomains(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<SsoDomainListEnvelope> {
5864
+ const headers = new Headers(args.headers);
5865
+
5866
+ return this.request<SsoDomainListEnvelope>("GET", "/api/v1/settings/sso-domains", {
5867
+ signal: args.signal,
5868
+ headers,
5869
+ });
5870
+ }
5871
+
5872
+ async addSsoProvisioningDomain(args: { body: SsoDomainInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<SsoDomainEnvelope> {
5873
+ const headers = new Headers(args.headers);
5874
+
5875
+ return this.request<SsoDomainEnvelope>("POST", "/api/v1/settings/sso-domains", {
5876
+ body: args.body,
5877
+ signal: args.signal,
5878
+ headers,
5879
+ });
5880
+ }
5881
+
5882
+ async removeSsoProvisioningDomain(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
5883
+ const headers = new Headers(args.headers);
5884
+
5885
+ return this.request<void>("DELETE", "/api/v1/settings/sso-domains/:id".replace(":id", encodeURIComponent(String(args["id"]))), {
5886
+ signal: args.signal,
5887
+ headers,
5888
+ });
5889
+ }
5890
+
5891
+ async verifySsoProvisioningDomain(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<SsoDomainCheckEnvelope> {
5892
+ const headers = new Headers(args.headers);
5893
+
5894
+ return this.request<SsoDomainCheckEnvelope>("POST", "/api/v1/settings/sso-domains/:id/verify".replace(":id", encodeURIComponent(String(args["id"]))), {
5895
+ signal: args.signal,
5896
+ headers,
5897
+ });
5898
+ }
5899
+
5900
+ async getBrand(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BrandEnvelope> {
5901
+ const headers = new Headers(args.headers);
5902
+
5903
+ return this.request<BrandEnvelope>("GET", "/api/v1/brand", {
5904
+ signal: args.signal,
5905
+ headers,
5906
+ });
5907
+ }
5908
+
5909
+ async listBrandAssets(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BrandAssetListEnvelope> {
5910
+ const headers = new Headers(args.headers);
5911
+
5912
+ return this.request<BrandAssetListEnvelope>("GET", "/api/v1/settings/brand-assets", {
5913
+ signal: args.signal,
5914
+ headers,
5915
+ });
5916
+ }
5917
+
5918
+ async removeBrandAsset(args: { "slot": string; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
5919
+ const headers = new Headers(args.headers);
5920
+
5921
+ return this.request<void>("DELETE", "/api/v1/settings/brand-assets/:slot".replace(":slot", encodeURIComponent(String(args["slot"]))), {
5922
+ signal: args.signal,
5923
+ headers,
5924
+ });
5925
+ }
5926
+
5927
+ async getInstanceTheme(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<InstanceThemeEnvelope> {
5928
+ const headers = new Headers(args.headers);
5929
+
5930
+ return this.request<InstanceThemeEnvelope>("GET", "/api/v1/settings/theme", {
5931
+ signal: args.signal,
5932
+ headers,
5933
+ });
5934
+ }
5935
+
5936
+ async setInstanceTheme(args: { body: InstanceThemeInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InstanceThemeEnvelope> {
5937
+ const headers = new Headers(args.headers);
5938
+
5939
+ return this.request<InstanceThemeEnvelope>("POST", "/api/v1/settings/theme", {
5940
+ body: args.body,
5941
+ signal: args.signal,
5942
+ headers,
5943
+ });
5944
+ }
5945
+
5946
+ async clearInstanceTheme(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<void> {
5947
+ const headers = new Headers(args.headers);
5948
+
5949
+ return this.request<void>("DELETE", "/api/v1/settings/theme", {
5950
+ signal: args.signal,
5951
+ headers,
5952
+ });
5953
+ }
5954
+
5955
+ async getInvoicePaymentLink(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoicePaymentLinkEnvelope> {
5956
+ const headers = new Headers(args.headers);
5957
+
5958
+ return this.request<InvoicePaymentLinkEnvelope>("POST", "/api/v1/invoices/:id/payment-link".replace(":id", encodeURIComponent(String(args["id"]))), {
5959
+ signal: args.signal,
5960
+ headers,
5961
+ });
5962
+ }
5963
+
5964
+ async releaseInvoicedTime(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<ReleasedTimeEnvelope> {
5965
+ const headers = new Headers(args.headers);
5966
+
5967
+ return this.request<ReleasedTimeEnvelope>("POST", "/api/v1/invoices/:id/released-time".replace(":id", encodeURIComponent(String(args["id"]))), {
5968
+ signal: args.signal,
5969
+ headers,
5970
+ });
5971
+ }
5972
+
5973
+ async getInvoiceDocumentPreference(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceDocumentPreferenceEnvelope> {
5974
+ const headers = new Headers(args.headers);
5975
+
5976
+ return this.request<InvoiceDocumentPreferenceEnvelope>("GET", "/api/v1/invoices/:id/document-preference".replace(":id", encodeURIComponent(String(args["id"]))), {
5977
+ signal: args.signal,
5978
+ headers,
5979
+ });
5980
+ }
5981
+
5982
+ async setInvoiceDocumentPreference(args: { "id": number; body: InvoiceDocumentPreferenceInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceDocumentPreferenceEnvelope> {
5983
+ const headers = new Headers(args.headers);
5984
+
5985
+ return this.request<InvoiceDocumentPreferenceEnvelope>("POST", "/api/v1/invoices/:id/document-preference".replace(":id", encodeURIComponent(String(args["id"]))), {
5986
+ body: args.body,
5987
+ signal: args.signal,
5988
+ headers,
5989
+ });
5990
+ }
5991
+
5992
+ async getInvoiceEmailDefaults(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceEmailDefaultsEnvelope> {
5993
+ const headers = new Headers(args.headers);
5994
+
5995
+ return this.request<InvoiceEmailDefaultsEnvelope>("GET", "/api/v1/invoices/:id/email-defaults".replace(":id", encodeURIComponent(String(args["id"]))), {
5996
+ signal: args.signal,
5997
+ headers,
5998
+ });
5999
+ }
6000
+
6001
+ async getClientInvoiceSending(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<ClientInvoiceSendingEnvelope> {
6002
+ const headers = new Headers(args.headers);
6003
+
6004
+ return this.request<ClientInvoiceSendingEnvelope>("GET", "/api/v1/clients/:id/invoice-sending".replace(":id", encodeURIComponent(String(args["id"]))), {
6005
+ signal: args.signal,
6006
+ headers,
6007
+ });
6008
+ }
6009
+
6010
+ async setClientInvoiceSending(args: { "id": number; body: ClientInvoiceSendingInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<ClientInvoiceSendingEnvelope> {
6011
+ const headers = new Headers(args.headers);
6012
+
6013
+ return this.request<ClientInvoiceSendingEnvelope>("POST", "/api/v1/clients/:id/invoice-sending".replace(":id", encodeURIComponent(String(args["id"]))), {
6014
+ body: args.body,
6015
+ signal: args.signal,
6016
+ headers,
6017
+ });
6018
+ }
6019
+
6020
+ async getOrganizationInvoiceSending(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<OrganizationInvoiceSendingEnvelope> {
6021
+ const headers = new Headers(args.headers);
6022
+
6023
+ return this.request<OrganizationInvoiceSendingEnvelope>("GET", "/api/v1/settings/invoice-sending", {
6024
+ signal: args.signal,
6025
+ headers,
6026
+ });
6027
+ }
6028
+
6029
+ async setOrganizationInvoiceSending(args: { body: OrganizationInvoiceSendingInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<OrganizationInvoiceSendingEnvelope> {
6030
+ const headers = new Headers(args.headers);
6031
+
6032
+ return this.request<OrganizationInvoiceSendingEnvelope>("POST", "/api/v1/settings/invoice-sending", {
6033
+ body: args.body,
6034
+ signal: args.signal,
6035
+ headers,
6036
+ });
6037
+ }
6038
+
6039
+ async getOrganizationInvoiceDocuments(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<OrganizationInvoiceDocumentsEnvelope> {
6040
+ const headers = new Headers(args.headers);
6041
+
6042
+ return this.request<OrganizationInvoiceDocumentsEnvelope>("GET", "/api/v1/settings/invoice-documents", {
6043
+ signal: args.signal,
6044
+ headers,
6045
+ });
6046
+ }
6047
+
6048
+ async setOrganizationInvoiceDocuments(args: { body: OrganizationInvoiceDocumentsInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<OrganizationInvoiceDocumentsEnvelope> {
6049
+ const headers = new Headers(args.headers);
6050
+
6051
+ return this.request<OrganizationInvoiceDocumentsEnvelope>("POST", "/api/v1/settings/invoice-documents", {
6052
+ body: args.body,
6053
+ signal: args.signal,
6054
+ headers,
6055
+ });
6056
+ }
6057
+
6058
+ async downloadInvoiceHoursReport(args: { "id": number; query: { "format": "pdf" | "csv" | "xlsx"; "detail"?: "detailed" | "summary" }; signal?: AbortSignal; headers?: HeadersInit }): Promise<ArrayBuffer> {
6059
+ const headers = new Headers(args.headers);
6060
+
6061
+ return this.request<ArrayBuffer>("GET", "/api/v1/invoices/:id/hours-report".replace(":id", encodeURIComponent(String(args["id"]))), {
6062
+ query: args.query,
6063
+ signal: args.signal,
6064
+ binary: true,
6065
+ headers,
6066
+ });
6067
+ }
6068
+
6069
+ async getInvoiceDefaults(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<InvoiceDefaultsEnvelope> {
6070
+ const headers = new Headers(args.headers);
6071
+
6072
+ return this.request<InvoiceDefaultsEnvelope>("GET", "/api/v1/settings/invoice-defaults", {
6073
+ signal: args.signal,
6074
+ headers,
6075
+ });
6076
+ }
6077
+
6078
+ async updateInvoiceDefaults(args: { body: InvoiceDefaultsInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceDefaultsEnvelope> {
6079
+ const headers = new Headers(args.headers);
6080
+
6081
+ return this.request<InvoiceDefaultsEnvelope>("POST", "/api/v1/settings/invoice-defaults", {
6082
+ body: args.body,
6083
+ signal: args.signal,
6084
+ headers,
6085
+ });
6086
+ }
6087
+
6088
+ async getInvoiceThankYouPreference(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceThankYouPreferenceEnvelope> {
6089
+ const headers = new Headers(args.headers);
6090
+
6091
+ return this.request<InvoiceThankYouPreferenceEnvelope>("GET", "/api/v1/invoices/:id/thank-you-preference".replace(":id", encodeURIComponent(String(args["id"]))), {
6092
+ signal: args.signal,
6093
+ headers,
6094
+ });
6095
+ }
6096
+
6097
+ async setInvoiceThankYouPreference(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceThankYouPreferenceEnvelope> {
6098
+ const headers = new Headers(args.headers);
6099
+
6100
+ return this.request<InvoiceThankYouPreferenceEnvelope>("POST", "/api/v1/invoices/:id/thank-you-preference".replace(":id", encodeURIComponent(String(args["id"]))), {
6101
+ signal: args.signal,
6102
+ headers,
6103
+ });
6104
+ }
6105
+
6106
+ async getOrganizationInvoiceThankYou(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<OrganizationInvoiceThankYouEnvelope> {
6107
+ const headers = new Headers(args.headers);
6108
+
6109
+ return this.request<OrganizationInvoiceThankYouEnvelope>("GET", "/api/v1/settings/invoice-thank-you", {
6110
+ signal: args.signal,
6111
+ headers,
6112
+ });
6113
+ }
6114
+
6115
+ async setOrganizationInvoiceThankYou(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<OrganizationInvoiceThankYouEnvelope> {
6116
+ const headers = new Headers(args.headers);
6117
+
6118
+ return this.request<OrganizationInvoiceThankYouEnvelope>("POST", "/api/v1/settings/invoice-thank-you", {
6119
+ signal: args.signal,
6120
+ headers,
6121
+ });
6122
+ }
6123
+
6124
+ async getOrganizationInvoiceReminders(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<OrganizationInvoiceRemindersEnvelope> {
6125
+ const headers = new Headers(args.headers);
6126
+
6127
+ return this.request<OrganizationInvoiceRemindersEnvelope>("GET", "/api/v1/settings/invoice-reminders", {
6128
+ signal: args.signal,
6129
+ headers,
6130
+ });
6131
+ }
6132
+
6133
+ async setOrganizationInvoiceReminders(args: { body: OrganizationInvoiceRemindersInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<OrganizationInvoiceRemindersEnvelope> {
6134
+ const headers = new Headers(args.headers);
6135
+
6136
+ return this.request<OrganizationInvoiceRemindersEnvelope>("POST", "/api/v1/settings/invoice-reminders", {
6137
+ body: args.body,
6138
+ signal: args.signal,
6139
+ headers,
6140
+ });
6141
+ }
6142
+
6143
+ async getInvoiceReminderPreference(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceReminderPreferenceEnvelope> {
6144
+ const headers = new Headers(args.headers);
6145
+
6146
+ return this.request<InvoiceReminderPreferenceEnvelope>("GET", "/api/v1/invoices/:id/reminder-preference".replace(":id", encodeURIComponent(String(args["id"]))), {
6147
+ signal: args.signal,
6148
+ headers,
6149
+ });
6150
+ }
6151
+
6152
+ async setInvoiceReminderPreference(args: { "id": number; body: InvoiceReminderPreferenceInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<InvoiceReminderPreferenceEnvelope> {
6153
+ const headers = new Headers(args.headers);
6154
+
6155
+ return this.request<InvoiceReminderPreferenceEnvelope>("POST", "/api/v1/invoices/:id/reminder-preference".replace(":id", encodeURIComponent(String(args["id"]))), {
6156
+ body: args.body,
6157
+ signal: args.signal,
6158
+ headers,
6159
+ });
6160
+ }
6161
+
6162
+ async listIncompleteRecurringInvoices(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<IncompleteRecurringInvoiceListEnvelope> {
6163
+ const headers = new Headers(args.headers);
6164
+
6165
+ return this.request<IncompleteRecurringInvoiceListEnvelope>("GET", "/api/v1/recurring-invoices/incomplete", {
6166
+ signal: args.signal,
6167
+ headers,
6168
+ });
6169
+ }
6170
+
6171
+ async completeRecurringInvoiceDefinition(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<RecurringInvoiceCompletionEnvelope> {
6172
+ const headers = new Headers(args.headers);
6173
+
6174
+ return this.request<RecurringInvoiceCompletionEnvelope>("POST", "/api/v1/recurring-invoices/:id/completion".replace(":id", encodeURIComponent(String(args["id"]))), {
6175
+ signal: args.signal,
6176
+ headers,
6177
+ });
6178
+ }
6179
+
6180
+ async listPayoutAccounts(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<PayoutAccountListEnvelope> {
6181
+ const headers = new Headers(args.headers);
6182
+
6183
+ return this.request<PayoutAccountListEnvelope>("GET", "/api/v1/users/:id/payout-accounts".replace(":id", encodeURIComponent(String(args["id"]))), {
6184
+ signal: args.signal,
6185
+ headers,
6186
+ });
6187
+ }
6188
+
6189
+ async linkPayoutAccount(args: { "id": number; body: PayoutAccountInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<PayoutAccountEnvelope> {
6190
+ const headers = new Headers(args.headers);
6191
+
6192
+ return this.request<PayoutAccountEnvelope>("POST", "/api/v1/users/:id/payout-accounts".replace(":id", encodeURIComponent(String(args["id"]))), {
6193
+ body: args.body,
6194
+ signal: args.signal,
6195
+ headers,
6196
+ });
6197
+ }
6198
+
6199
+ async detachPayoutAccount(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<void> {
6200
+ const headers = new Headers(args.headers);
6201
+
6202
+ return this.request<void>("DELETE", "/api/v1/payout-accounts/:id".replace(":id", encodeURIComponent(String(args["id"]))), {
6203
+ signal: args.signal,
6204
+ headers,
6205
+ });
6206
+ }
6207
+
6208
+ async getBillStatus(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<BillStatusEnvelope> {
6209
+ const headers = new Headers(args.headers);
6210
+
6211
+ return this.request<BillStatusEnvelope>("GET", "/api/v1/integrations/bill", {
6212
+ signal: args.signal,
6213
+ headers,
6214
+ });
6215
+ }
6216
+
6217
+ async getBillClientDelivery(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<BillClientDeliveryEnvelope> {
6218
+ const headers = new Headers(args.headers);
6219
+
6220
+ return this.request<BillClientDeliveryEnvelope>("GET", "/api/v1/integrations/bill/clients/:id".replace(":id", encodeURIComponent(String(args["id"]))), {
6221
+ signal: args.signal,
6222
+ headers,
6223
+ });
6224
+ }
6225
+
6226
+ async setBillClientDelivery(args: { "id": number; body: BillClientDeliveryInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<BillClientDeliveryEnvelope> {
6227
+ const headers = new Headers(args.headers);
6228
+
6229
+ return this.request<BillClientDeliveryEnvelope>("POST", "/api/v1/integrations/bill/clients/:id".replace(":id", encodeURIComponent(String(args["id"]))), {
6230
+ body: args.body,
6231
+ signal: args.signal,
6232
+ headers,
6233
+ });
6234
+ }
6235
+
6236
+ async getTwoFactorStatus(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<TwoFactorStatusEnvelope> {
6237
+ const headers = new Headers(args.headers);
6238
+
6239
+ return this.request<TwoFactorStatusEnvelope>("GET", "/api/v1/two-factor", {
6240
+ signal: args.signal,
6241
+ headers,
6242
+ });
6243
+ }
6244
+
6245
+ async beginTwoFactorEnrolment(args: { signal?: AbortSignal; headers?: HeadersInit } = {}): Promise<TwoFactorEnrolmentEnvelope> {
6246
+ const headers = new Headers(args.headers);
6247
+
6248
+ return this.request<TwoFactorEnrolmentEnvelope>("POST", "/api/v1/two-factor", {
4352
6249
  signal: args.signal,
4353
6250
  headers,
4354
6251
  });
@@ -4461,6 +6358,16 @@ export class EzactoClient {
4461
6358
  });
4462
6359
  }
4463
6360
 
6361
+ async removeTeamPersonRate(args: { "id": number; "rateId": number; "Idempotency-Key": string; body: TeamRateRemovalInput; signal?: AbortSignal; headers?: HeadersInit }): Promise<TeamCommandReceiptEnvelope> {
6362
+ const headers = new Headers(args.headers);
6363
+ if (args["Idempotency-Key"] !== undefined) headers.set("Idempotency-Key", String(args["Idempotency-Key"]));
6364
+ return this.request<TeamCommandReceiptEnvelope>("DELETE", "/api/v1/team/people/:id/rates/:rateId".replace(":id", encodeURIComponent(String(args["id"]))).replace(":rateId", encodeURIComponent(String(args["rateId"]))), {
6365
+ body: args.body,
6366
+ signal: args.signal,
6367
+ headers,
6368
+ });
6369
+ }
6370
+
4464
6371
  async listClientAncestors(args: { "id": number; signal?: AbortSignal; headers?: HeadersInit }): Promise<ClientHierarchyListEnvelope> {
4465
6372
  const headers = new Headers(args.headers);
4466
6373