@conflict-hq/ezacto-client 0.1.3 → 0.1.4

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.
@@ -1,3 +1,426 @@
1
+ export type WebhookSubscription = {
2
+ "id": string;
3
+ "url": string;
4
+ "events": Array<"invoice.created" | "invoice.sent" | "invoice.viewed" | "invoice.updated" | "invoice.drafted" | "invoice.reopened" | "invoice.cancelled" | "invoice.written_off" | "invoice.closed" | "invoice.unpaid" | "invoice.partially_paid" | "invoice.paid" | "payment.recorded" | "payment.updated" | "payment.deleted" | "time_entry.created_on_behalf" | "time_entry.updated_on_behalf" | "time_entry.stopped_on_behalf" | "time_entry.deleted_on_behalf">;
5
+ "is_active": boolean;
6
+ "version": number;
7
+ "generation": number;
8
+ "previous_valid_until": string | null;
9
+ "created_at": string;
10
+ "updated_at": string;
11
+ "deleted_at": string | null;
12
+ };
13
+ export type WebhookSubscriptionsEnvelope = {
14
+ "data": Array<WebhookSubscription>;
15
+ "configuration": {
16
+ "ready": boolean;
17
+ "event_types": Array<"invoice.created" | "invoice.sent" | "invoice.viewed" | "invoice.updated" | "invoice.drafted" | "invoice.reopened" | "invoice.cancelled" | "invoice.written_off" | "invoice.closed" | "invoice.unpaid" | "invoice.partially_paid" | "invoice.paid" | "payment.recorded" | "payment.updated" | "payment.deleted" | "time_entry.created_on_behalf" | "time_entry.updated_on_behalf" | "time_entry.stopped_on_behalf" | "time_entry.deleted_on_behalf">;
18
+ "max_subscriptions": number;
19
+ "rotation_overlap_seconds": number;
20
+ };
21
+ "links": {
22
+ "self": string;
23
+ };
24
+ };
25
+ export type WebhookSubscriptionEnvelope = {
26
+ "data": WebhookSubscription;
27
+ };
28
+ export type WebhookSecretEnvelope = {
29
+ "data": WebhookSubscription;
30
+ "signing_secret": string;
31
+ };
32
+ export type WebhookCreateInput = {
33
+ "url": string;
34
+ "events": Array<"invoice.created" | "invoice.sent" | "invoice.viewed" | "invoice.updated" | "invoice.drafted" | "invoice.reopened" | "invoice.cancelled" | "invoice.written_off" | "invoice.closed" | "invoice.unpaid" | "invoice.partially_paid" | "invoice.paid" | "payment.recorded" | "payment.updated" | "payment.deleted" | "time_entry.created_on_behalf" | "time_entry.updated_on_behalf" | "time_entry.stopped_on_behalf" | "time_entry.deleted_on_behalf">;
35
+ };
36
+ export type WebhookActiveInput = {
37
+ "version": number;
38
+ "is_active": boolean;
39
+ };
40
+ export type WebhookRotateInput = {
41
+ "version": number;
42
+ "overlap_seconds"?: number;
43
+ };
44
+ export type WebhookVersionInput = {
45
+ "version": number;
46
+ };
47
+ export type WebhookReplayInput = Record<string, unknown>;
48
+ export type WebhookDelivery = {
49
+ "id": string;
50
+ "subscription_id": string;
51
+ "event_id": string;
52
+ "event_type": "invoice.created" | "invoice.sent" | "invoice.viewed" | "invoice.updated" | "invoice.drafted" | "invoice.reopened" | "invoice.cancelled" | "invoice.written_off" | "invoice.closed" | "invoice.unpaid" | "invoice.partially_paid" | "invoice.paid" | "payment.recorded" | "payment.updated" | "payment.deleted" | "time_entry.created_on_behalf" | "time_entry.updated_on_behalf" | "time_entry.stopped_on_behalf" | "time_entry.deleted_on_behalf";
53
+ "payload_json": string;
54
+ "status": "pending" | "processing" | "delivered" | "failed";
55
+ "attempt_count": number;
56
+ "cycle_attempts": number;
57
+ "replay_count": number;
58
+ "last_status": number | null;
59
+ "last_error_code": "timeout" | "network_error" | "destination_forbidden" | "redirect" | "http_error" | "signing_secret_unavailable" | "invalid_payload" | "subscription_deleted" | "delivery_expired" | "attempt_abandoned" | null;
60
+ "next_attempt_at": string | null;
61
+ "last_attempt_at": string | null;
62
+ "delivered_at": string | null;
63
+ "failed_at": string | null;
64
+ "created_at": string;
65
+ "updated_at": string;
66
+ };
67
+ export type WebhookDeliveryEnvelope = {
68
+ "data": WebhookDelivery;
69
+ };
70
+ export type WebhookDeliveryPage = {
71
+ "data": Array<WebhookDelivery>;
72
+ "links": {
73
+ "self": string;
74
+ "next": string | null;
75
+ };
76
+ "page": {
77
+ "per_page": number;
78
+ "next_cursor": string | null;
79
+ };
80
+ };
81
+ export type InvoiceElevationChallengeEnvelope = {
82
+ "data": InvoiceElevationChallenge;
83
+ };
84
+ export type InvoiceElevationEmailInput = {
85
+ "challenge_token": string;
86
+ };
87
+ export type InvoiceElevationInput = {
88
+ "invoice_id": number;
89
+ "email": string;
90
+ "password": string;
91
+ };
92
+ export type InvoiceElevationVerifyInput = {
93
+ "challenge_token": string;
94
+ "code": string;
95
+ };
96
+ export type InvoiceElevationIssued = {
97
+ "status": "elevated";
98
+ "credential": string;
99
+ "id": string;
100
+ "invoice_id": number;
101
+ "expires_at": string;
102
+ "scope": "invoice_drafts:write";
103
+ };
104
+ export type InvoiceElevationChallenge = {
105
+ "status": "challenge_required";
106
+ "challenge_token": string;
107
+ "expires_at": string;
108
+ "methods": Array<"totp" | "email">;
109
+ };
110
+ export type InvoiceElevationStartEnvelope = {
111
+ "data": InvoiceElevationIssued | InvoiceElevationChallenge;
112
+ };
113
+ export type InvoiceElevationIssuedEnvelope = {
114
+ "data": InvoiceElevationIssued;
115
+ };
116
+ export type ElevatedInvoiceTimeUnlinkInput = {
117
+ "expected_version": number;
118
+ "entry_ids": Array<number>;
119
+ "confirmed": true;
120
+ };
121
+ export type ElevatedInvoiceTimeUnlink = {
122
+ "invoice_id": number;
123
+ "command_id": string;
124
+ "elevation_id": string;
125
+ "released_entry_ids": Array<number>;
126
+ "recorded_at": string;
127
+ "replayed": boolean;
128
+ };
129
+ export type ElevatedInvoiceTimeUnlinkEnvelope = {
130
+ "data": ElevatedInvoiceTimeUnlink;
131
+ };
132
+ export type OrganizationHoliday = {
133
+ "id": number;
134
+ "date": string;
135
+ "name": string;
136
+ "version": number;
137
+ "created_at": string;
138
+ "updated_at": string;
139
+ };
140
+ export type OrganizationHolidayInput = {
141
+ "date": string;
142
+ "name": string;
143
+ };
144
+ export type OrganizationHolidayUpdateInput = {
145
+ "date": string;
146
+ "name": string;
147
+ "version": number;
148
+ };
149
+ export type OrganizationHolidayDeleteInput = {
150
+ "version": number;
151
+ };
152
+ export type OrganizationHolidayEnvelope = {
153
+ "data": OrganizationHoliday;
154
+ "links": {
155
+ "self": string;
156
+ };
157
+ };
158
+ export type OrganizationHolidayPage = {
159
+ "data": Array<OrganizationHoliday>;
160
+ "links": {
161
+ "self": string;
162
+ "next": string | null;
163
+ };
164
+ "page": {
165
+ "per_page": number;
166
+ "next_cursor": string | null;
167
+ };
168
+ };
169
+ export type PlanningPlaceholder = {
170
+ "id": number;
171
+ "name": string;
172
+ "is_active": boolean;
173
+ "version": number;
174
+ };
175
+ export type PlanningPlaceholderInput = {
176
+ "name": string;
177
+ };
178
+ export type PlanningPlaceholderUpdateInput = {
179
+ "name": string;
180
+ "version": number;
181
+ };
182
+ export type PlanningVersionInput = {
183
+ "version": number;
184
+ };
185
+ export type PlanningPlaceholderEnvelope = {
186
+ "data": PlanningPlaceholder;
187
+ };
188
+ export type PlanningPlaceholderPage = {
189
+ "data": Array<PlanningPlaceholder>;
190
+ "links": {
191
+ "self": string;
192
+ "next": string | null;
193
+ };
194
+ "page": {
195
+ "per_page": number;
196
+ "next_cursor": string | null;
197
+ };
198
+ };
199
+ export type PlaceholderAllocation = {
200
+ "id": number;
201
+ "placeholder_id": number;
202
+ "name": string;
203
+ "project_id": number;
204
+ "project_name": string;
205
+ "start_date": string;
206
+ "end_date": string;
207
+ "planned_seconds_per_week": number;
208
+ "state": "open" | "assigned" | "archived";
209
+ "version": number;
210
+ "assigned_allocation_id": number | null;
211
+ };
212
+ export type PlaceholderAllocationInput = {
213
+ "placeholder_id": number;
214
+ "project_id": number;
215
+ "start_date": string;
216
+ "end_date": string;
217
+ "planned_seconds_per_week": number;
218
+ };
219
+ export type PlaceholderAllocationUpdateInput = {
220
+ "version": number;
221
+ "start_date"?: string;
222
+ "end_date"?: string;
223
+ "planned_seconds_per_week"?: number;
224
+ };
225
+ export type PlaceholderAllocationEnvelope = {
226
+ "data": PlaceholderAllocation;
227
+ };
228
+ export type PlaceholderAllocationPage = {
229
+ "data": Array<PlaceholderAllocation>;
230
+ "links": {
231
+ "self": string;
232
+ "next": string | null;
233
+ };
234
+ "page": {
235
+ "per_page": number;
236
+ "next_cursor": string | null;
237
+ };
238
+ };
239
+ export type PlaceholderAssignmentInput = {
240
+ "version": number;
241
+ "user_id": number;
242
+ "idempotency_key": string;
243
+ };
244
+ export type PlaceholderAssignment = {
245
+ "allocation": {
246
+ "id": number;
247
+ "version": number;
248
+ "user_id": number;
249
+ "project_id": number;
250
+ "start_date": string;
251
+ "end_date": string;
252
+ "planned_seconds_per_week": number;
253
+ };
254
+ "placeholder": PlaceholderAllocation;
255
+ "warnings": Array<{
256
+ "code": "over_allocated";
257
+ "week_start": string;
258
+ "planned_seconds": number;
259
+ "capacity_seconds": number;
260
+ }>;
261
+ "prerequisites": Array<{
262
+ "code": "project_access_missing";
263
+ }>;
264
+ };
265
+ export type PlaceholderAssignmentEnvelope = {
266
+ "data": PlaceholderAssignment;
267
+ };
268
+ export type ResourceCalendarAllocation = {
269
+ "id": number;
270
+ "version": number;
271
+ "user_id": number;
272
+ "project_id": number;
273
+ "project_name": string;
274
+ "start_date": string;
275
+ "end_date": string;
276
+ "planned_seconds_per_week": number;
277
+ };
278
+ export type ResourceCalendarProject = {
279
+ "id": number;
280
+ "name": string;
281
+ "is_active": boolean;
282
+ };
283
+ export type ResourceCalendarAllocationPage = {
284
+ "data": Array<ResourceCalendarAllocation>;
285
+ "links": {
286
+ "self": string;
287
+ "next": string | null;
288
+ };
289
+ "page": {
290
+ "per_page": number;
291
+ "next_cursor": string | null;
292
+ };
293
+ };
294
+ export type ResourceCalendarProjectPage = {
295
+ "data": Array<ResourceCalendarProject>;
296
+ "links": {
297
+ "self": string;
298
+ "next": string | null;
299
+ };
300
+ "page": {
301
+ "per_page": number;
302
+ "next_cursor": string | null;
303
+ };
304
+ };
305
+ export type ResourceCalendarContextEnvelope = {
306
+ "data": ResourceCalendarContext;
307
+ "links": {
308
+ "self": string;
309
+ };
310
+ };
311
+ export type ResourceCalendarContext = {
312
+ "time_zone": string;
313
+ "week_start_day": "saturday" | "sunday" | "monday";
314
+ "today": string;
315
+ "current_week_start": string;
316
+ };
317
+ export type ResourceCalendarProjectHours = {
318
+ "project_id": number;
319
+ "planned_seconds": number;
320
+ };
321
+ export type ResourceCalendarWeek = {
322
+ "week_start": string;
323
+ "planned_seconds": number;
324
+ "available_seconds": number;
325
+ "tracked_seconds": number;
326
+ "person_planned_seconds": number;
327
+ "person_other_scope_planned_seconds": number;
328
+ "over_allocated": boolean;
329
+ "projects": Array<ResourceCalendarProjectHours>;
330
+ "other_scope_planned_seconds": number;
331
+ "other_scope_tracked_seconds": number;
332
+ };
333
+ export type ResourceCalendarPerson = {
334
+ "person_id": number;
335
+ "name": string;
336
+ "weeks": Array<ResourceCalendarWeek>;
337
+ };
338
+ export type ResourceCalendarUnassigned = {
339
+ "week_start": string;
340
+ "placeholder_id": number;
341
+ "name": string;
342
+ "project_id": number;
343
+ "planned_seconds": number;
344
+ };
345
+ export type ResourceCalendar = {
346
+ "context": ResourceCalendarContext;
347
+ "view": "project" | "team";
348
+ "revision": string;
349
+ "week_starts": Array<string>;
350
+ "people": Array<ResourceCalendarPerson>;
351
+ "unassigned": Array<ResourceCalendarUnassigned>;
352
+ "unassigned_truncated": boolean;
353
+ "has_other_scope": boolean;
354
+ };
355
+ export type ResourceCalendarEnvelope = {
356
+ "data": ResourceCalendar;
357
+ "links": {
358
+ "self": string;
359
+ "next": string | null;
360
+ };
361
+ "page": {
362
+ "per_page": number;
363
+ "next_cursor": string | null;
364
+ };
365
+ };
366
+ export type CalendarCleanupEnvelope = {
367
+ "data": CalendarCleanupStatus;
368
+ };
369
+ export type CalendarConnectionList = {
370
+ "data": Array<{
371
+ "provider": "google" | "microsoft";
372
+ "status": "connected" | "needs_reauth" | "disconnected";
373
+ "generation": number;
374
+ "last_synced_at": unknown;
375
+ "last_error": "credential_unavailable" | "authorization" | "unavailable" | "invalid_source" | "limit" | "changed" | null;
376
+ "syncing": boolean;
377
+ "cleanup_pending": boolean;
378
+ "available": boolean;
379
+ }>;
380
+ };
381
+ export type CalendarRefreshInput = {
382
+ "past_days"?: number;
383
+ "future_days"?: number;
384
+ };
385
+ export type CalendarDisconnectInput = {
386
+ "generation": number;
387
+ };
388
+ export type CalendarRefreshResult = {
389
+ "data": {
390
+ "state": "connected" | "needs_reauth";
391
+ "applied": number;
392
+ };
393
+ };
394
+ export type CalendarFeedInput = {
395
+ "scope": "self" | "project" | "team";
396
+ "project_id": number | null;
397
+ "from_date": string;
398
+ "through_date": string;
399
+ "include_names": boolean;
400
+ "expires_at"?: string;
401
+ };
402
+ export type CalendarFeed = {
403
+ "scope": "self" | "project" | "team";
404
+ "project_id": number | null;
405
+ "from_date": string;
406
+ "through_date": string;
407
+ "include_names": boolean;
408
+ "id": string;
409
+ "issued_at": string;
410
+ "expires_at": string;
411
+ "revoked_at": string | null;
412
+ "credential_generation": number;
413
+ };
414
+ export type CalendarFeedList = {
415
+ "data": Array<CalendarFeed>;
416
+ };
417
+ export type CalendarFeedIssued = {
418
+ "data": {
419
+ "feed": CalendarFeed;
420
+ "username": string;
421
+ "password": string;
422
+ };
423
+ };
1
424
  export type AttachmentUploadInput = {
2
425
  "file": string;
3
426
  };
@@ -43,6 +466,24 @@ export type PaymentActualsEnvelope = {
43
466
  }>;
44
467
  };
45
468
  };
469
+ export type PaymentReconciliationEnvelope = {
470
+ "data": {
471
+ "month": string;
472
+ "currency": string;
473
+ "completed": boolean;
474
+ "people": Array<{
475
+ "user_id": number;
476
+ "name": string;
477
+ "proposed_cents": number;
478
+ "confirmed_cents": number | null;
479
+ "status": "new" | "converged" | "differs" | "attention";
480
+ "exceptions": Array<{
481
+ "code": "missing_rate" | "changed_source";
482
+ "entry_ids": Array<number>;
483
+ }>;
484
+ }>;
485
+ };
486
+ };
46
487
  export type ConfirmPaymentActuals = {
47
488
  "id": string;
48
489
  "user_id": number;
@@ -112,7 +553,7 @@ export type StaffPaymentEvent = {
112
553
  "reference": string;
113
554
  "note": string;
114
555
  "payment_id": string | null;
115
- "source": "wise" | "deel" | "historical";
556
+ "source": "wise" | "deel" | "historical" | "advance_credit";
116
557
  "version": number;
117
558
  "actor_id": number;
118
559
  "actor_name": string;
@@ -120,6 +561,28 @@ export type StaffPaymentEvent = {
120
561
  "request_id": string;
121
562
  };
122
563
  export type StaffPaymentRow = {
564
+ "deel_staging"?: {
565
+ "status": "not_staged" | "partially_staged" | "staged" | "attention" | "no_hours" | "partially_paid" | "paid" | "processing";
566
+ "paid_entries": number;
567
+ "paid_seconds": number;
568
+ "processing_entries": number;
569
+ "pending_entries": number;
570
+ "approved_entries": number;
571
+ "rejected_entries": number;
572
+ "unchecked_entries": number;
573
+ "status_checked_at": string | null;
574
+ "status_check_failed": boolean;
575
+ "staged_entries": number;
576
+ "unstaged_entries": number;
577
+ "unresolved_entries": number;
578
+ "changed_entries": number;
579
+ "zero_duration_entries": number;
580
+ "unsyncable_entries": number;
581
+ "staged_seconds": number;
582
+ "unstaged_seconds": number;
583
+ "last_staged_at": string | null;
584
+ };
585
+ "is_contractor": boolean;
123
586
  "user_id": number;
124
587
  "name": string;
125
588
  "active": boolean;
@@ -144,20 +607,400 @@ export type StaffPaymentRow = {
144
607
  "overdue": boolean;
145
608
  "events": Array<StaffPaymentEvent>;
146
609
  };
147
- export type StaffPaymentReport = {
610
+ export type StaffPaymentReport = {
611
+ "month": string;
612
+ "as_of": string;
613
+ "rows": Array<StaffPaymentRow>;
614
+ "provider_settings": StaffPaymentProviderSettings;
615
+ };
616
+ export type StaffPaymentReportEnvelope = {
617
+ "data": StaffPaymentReport;
618
+ };
619
+ export type AllocatePayment = {
620
+ "id": string;
621
+ "payment_kind": "event" | "run_item";
622
+ "payment_id": string;
623
+ "user_id": number;
624
+ "month": string;
625
+ "scope": "month" | "project" | "entry";
626
+ "project_id": number | null;
627
+ "entry_id": number | null;
628
+ "seconds": number | null;
629
+ "amount_cents": number | null;
630
+ "reason": string;
631
+ };
632
+ export type ReversePaymentAllocation = {
633
+ "id": string;
634
+ "allocation_id": string;
635
+ "reason": string;
636
+ };
637
+ export type PaymentAllocationPreview = {
638
+ "scope": "month" | "project" | "entry";
639
+ "currency": string;
640
+ "seconds": number | null;
641
+ "rate_cents": number | null;
642
+ "amount_cents": number;
643
+ "payment_cents": number;
644
+ "payment_allocated_cents": number;
645
+ "payment_remaining_cents": number;
646
+ "earning_cents": number;
647
+ "earning_allocated_cents": number;
648
+ "earning_remaining_cents": number;
649
+ "earning_remaining_seconds": number | null;
650
+ };
651
+ export type PaymentAllocationPreviewEnvelope = {
652
+ "data": PaymentAllocationPreview;
653
+ };
654
+ export type PaymentAllocation = {
655
+ "id": string;
656
+ "payment_kind": "event" | "run_item";
657
+ "payment_id": string;
658
+ "user_id": number;
659
+ "month": string;
660
+ "currency": string;
661
+ "scope": "month" | "project" | "entry";
662
+ "project_id": number | null;
663
+ "project_name": string | null;
664
+ "entry_id": number | null;
665
+ "seconds": number | null;
666
+ "rate_cents": number | null;
667
+ "amount_cents": number;
668
+ "state": "applied" | "reserved" | "released" | "reversed";
669
+ "reason": string;
670
+ "actor_id": number;
671
+ "recorded_at": string;
672
+ };
673
+ export type PaymentAllocationEntry = {
674
+ "entry_id": number;
675
+ "spent_date": string;
676
+ "selected_seconds": number;
677
+ "rate_cents": number | null;
678
+ "reviewed_rounded_seconds": number;
679
+ "current_rounded_seconds": number | null;
680
+ "current_rate_cents": number | null;
681
+ "earned_cents": number;
682
+ "applied_cents": number;
683
+ "reserved_cents": number;
684
+ "applied_seconds": number;
685
+ "reserved_seconds": number;
686
+ "remaining_cents": number;
687
+ "remaining_seconds": number;
688
+ "source_changed": boolean;
689
+ "over_allocated": boolean;
690
+ };
691
+ export type PaymentAllocationProject = {
692
+ "project_id": number;
693
+ "project_name": string;
694
+ "earned_cents": number;
695
+ "applied_cents": number;
696
+ "reserved_cents": number;
697
+ "remaining_cents": number;
698
+ "entries": Array<PaymentAllocationEntry>;
699
+ };
700
+ export type UnallocatedPayment = {
701
+ "payment_kind": "event" | "run_item";
702
+ "payment_id": string;
703
+ "amount_cents": number;
704
+ "allocated_cents": number;
705
+ "unallocated_cents": number;
706
+ "state": "applied" | "reserved";
707
+ };
708
+ export type PaymentAllocationPerson = {
709
+ "user_id": number;
710
+ "name": string;
711
+ "currency": string | null;
712
+ "earned_cents": number;
713
+ "paid_cents": number;
714
+ "reserved_cents": number;
715
+ "allocated_applied_cents": number;
716
+ "allocated_reserved_cents": number;
717
+ "remaining_cents": number;
718
+ "projects": Array<PaymentAllocationProject>;
719
+ "unallocated_payments": Array<UnallocatedPayment>;
720
+ "allocations": Array<PaymentAllocation>;
721
+ };
722
+ export type PaymentAllocationReport = {
723
+ "month": string;
724
+ "people": Array<PaymentAllocationPerson>;
725
+ };
726
+ export type PaymentAllocationReportEnvelope = {
727
+ "data": PaymentAllocationReport;
728
+ };
729
+ export type MyPayments = {
730
+ "month": string;
731
+ "hours_seconds": number;
732
+ "status": "pending_review" | "in_progress" | "pending" | "partial" | "paid" | "settled";
733
+ "owed": {
734
+ "amount_cents": number;
735
+ "currency": string;
736
+ } | null;
737
+ "paid_cents": number;
738
+ "balance_cents": number | null;
739
+ "payments": Array<{
740
+ "amount_cents": number;
741
+ "currency": string;
742
+ "paid_on": string;
743
+ "kind"?: "credit_application";
744
+ }>;
745
+ "upcoming": Array<{
746
+ "kind"?: "advance";
747
+ "amount_cents": number;
748
+ "currency": string;
749
+ "scheduled_on": string;
750
+ "status": "scheduled" | "processing";
751
+ }>;
752
+ };
753
+ export type MyPaymentsEnvelope = {
754
+ "data": MyPayments;
755
+ };
756
+ export type InvoiceProviderAlert = {
757
+ "id": string;
758
+ "event_type": string;
759
+ "kind": "refund" | "dispute";
760
+ "amount_cents": number;
761
+ "currency": string;
762
+ "provider_status": string;
763
+ "occurred_at": string;
764
+ "reviewed_at": string | null;
765
+ "reviewed_by": number | null;
766
+ };
767
+ export type InvoiceProviderAlertEnvelope = {
768
+ "data": InvoiceProviderAlert;
769
+ };
770
+ export type InvoiceProviderAlertListEnvelope = {
771
+ "data": Array<InvoiceProviderAlert>;
772
+ };
773
+ export type ReviewInvoiceProviderAlertInput = Record<string, unknown>;
774
+ export type BankFeedStatusEnvelope = {
775
+ "data": Array<{
776
+ "provider": "mercury" | "wise";
777
+ "configured": boolean;
778
+ "account_name": string | null;
779
+ "last_synced_at": string | null;
780
+ "last_error": string | null;
781
+ "next_poll_at": string | null;
782
+ }>;
783
+ };
784
+ export type BankFeedSyncInput = Record<string, unknown>;
785
+ export type BankFeedSyncEnvelope = {
786
+ "data": {
787
+ "checked": number;
788
+ "failed": number;
789
+ };
790
+ };
791
+ export type BankReviewInvoice = {
792
+ "id": number;
793
+ "number": string;
794
+ "currency": string;
795
+ "due_amount_cents": number;
796
+ "version": number;
797
+ "state": string;
798
+ };
799
+ export type BankFeedAccount = {
800
+ "id": number;
801
+ "provider": "mercury" | "wise";
802
+ "name": string;
803
+ };
804
+ export type BankDeposit = {
805
+ "id": number;
806
+ "account_id": number;
807
+ "account_name": string;
808
+ "provider": "mercury" | "wise";
809
+ "provider_transaction_id": string;
810
+ "currency": string;
811
+ "posted_at": string;
812
+ "amount_cents": number;
813
+ "memo": string | null;
814
+ "counterparty": string | null;
815
+ "state": "unmatched" | "suggested" | "confirmed" | "rejected";
816
+ "version": number;
817
+ "suggested_invoice": BankReviewInvoice | null;
818
+ "source_status": "final" | "pending" | "reversed" | "ineligible" | "unknown";
819
+ "classification": "external_credit" | "internal_transfer" | "ambiguous_credit";
820
+ "source_reason": string | null;
821
+ "verified_at": string | null;
822
+ "verified_by_user_id": number | null;
823
+ "verification_reference": string | null;
824
+ "confirmation_basis": "provider" | "operator" | null;
825
+ "confirmation_ready": boolean;
826
+ "payment_id": number | null;
827
+ "confirmed_invoice_id": number | null;
828
+ };
829
+ export type BankDepositAccountsEnvelope = {
830
+ "data": Array<BankFeedAccount>;
831
+ };
832
+ export type BankDepositListEnvelope = {
833
+ "data": Array<BankDeposit>;
834
+ "page": number;
835
+ "per_page": number;
836
+ "total": number;
837
+ };
838
+ export type BankDepositInvoicesEnvelope = {
839
+ "data": Array<BankReviewInvoice>;
840
+ };
841
+ export type BankDepositEnvelope = {
842
+ "data": BankDeposit;
843
+ };
844
+ export type BankDepositAssignInput = {
845
+ "expected_version": number;
846
+ "invoice_id": number;
847
+ };
848
+ export type BankDepositDecisionInput = {
849
+ "expected_version": number;
850
+ };
851
+ export type BankDepositConfirmInput = {
852
+ "expected_version": number;
853
+ "invoice_id": number;
854
+ "expected_invoice_version": number;
855
+ "confirm_overpayment": boolean;
856
+ };
857
+ export type BankDepositVerifyInput = {
858
+ "expected_version": number;
859
+ "verification_reference": string;
860
+ "confirm_posted_funds": true;
861
+ "confirm_external_credit": true;
862
+ };
863
+ export type DeelSyncSettingsCommand = {
864
+ "mode": "manual" | "automatic";
865
+ "run_time": string;
866
+ };
867
+ export type DeelSyncWindow = {
868
+ "from": string;
869
+ "to": string;
870
+ };
871
+ export type DeelSyncRun = {
872
+ "id": number;
873
+ "started_at": string;
874
+ "finished_at": string | null;
875
+ "outcome": "running" | "completed" | "failed";
876
+ "timesheets_submitted": number;
877
+ "entries_transferred": number;
878
+ "detail": unknown | null;
879
+ };
880
+ export type DeelSyncStatus = {
881
+ "configured": boolean;
882
+ "reason": string | null;
883
+ "mode": "manual" | "automatic";
884
+ "run_time": string;
885
+ "updated_at": string;
886
+ "updated_by_user_id": number | null;
887
+ "runs": Array<DeelSyncRun>;
888
+ };
889
+ export type DeelSyncPreview = {
890
+ "status": "ready";
891
+ "window": {
892
+ "from": string;
893
+ "to": string;
894
+ };
895
+ "entry_ids": Array<number>;
896
+ "timesheets": number;
897
+ "already_transferred": number;
898
+ "conflicts": Array<unknown>;
899
+ "unsyncable": Array<unknown>;
900
+ "unmatched": Array<unknown>;
901
+ };
902
+ export type DeelSyncRunCommand = {
903
+ "from": string;
904
+ "to": string;
905
+ "entry_ids": Array<number>;
906
+ };
907
+ export type DeelSyncRunResult = {
908
+ "status": "completed" | "failed";
909
+ "run_id": number;
910
+ "timesheets_submitted": number;
911
+ "entries_transferred": number;
912
+ "failed": Array<unknown>;
913
+ "reconciliation": unknown | null;
914
+ "error": string | null;
915
+ };
916
+ export type DeelPaymentStatusMonth = {
148
917
  "month": string;
149
- "as_of": string;
150
- "rows": Array<StaffPaymentRow>;
151
- "provider_settings": StaffPaymentProviderSettings;
152
918
  };
153
- export type StaffPaymentReportEnvelope = {
154
- "data": StaffPaymentReport;
919
+ export type DeelPaymentStatusRefreshEnvelope = {
920
+ "data": {
921
+ "configured": boolean;
922
+ "checked": number;
923
+ "failed": number;
924
+ "remaining": number;
925
+ "retry_after_ms": number;
926
+ };
927
+ };
928
+ export type DeelStagingStatusEnvelope = {
929
+ "data": {
930
+ "configured": boolean;
931
+ "reason": string | null;
932
+ "start_date": string | null;
933
+ "last_complete_date": string | null;
934
+ };
935
+ };
936
+ export type DeelStageSelection = {
937
+ "from": string;
938
+ "to": string;
939
+ "user_ids": Array<number>;
940
+ };
941
+ export type DeelStageCommand = {
942
+ "from": string;
943
+ "to": string;
944
+ "user_ids": Array<number>;
945
+ "command_id": string;
946
+ "preview_fingerprint": string;
947
+ };
948
+ export type DeelStagePerson = {
949
+ "user_id": number;
950
+ "contract_id": string | null;
951
+ "seconds": number;
952
+ "entries": number;
953
+ };
954
+ export type DeelStageUnmatched = {
955
+ "user_id": number;
956
+ "reason": string;
957
+ };
958
+ export type DeelStagePreview = {
959
+ "status": "ready";
960
+ "from": string;
961
+ "to": string;
962
+ "user_ids": Array<number>;
963
+ "preview_fingerprint": string;
964
+ "entry_ids": Array<number>;
965
+ "seconds": number;
966
+ "timesheets": number;
967
+ "already_staged": number;
968
+ "already_staged_entry_ids": Array<number>;
969
+ "people": Array<DeelStagePerson>;
970
+ "conflict_entry_ids": Array<number>;
971
+ "unsyncable_entry_ids": Array<number>;
972
+ "zero_duration_entry_ids": Array<number>;
973
+ "unmatched": Array<DeelStageUnmatched>;
974
+ "unresolved_entry_ids": Array<number>;
975
+ };
976
+ export type DeelStagePreviewEnvelope = {
977
+ "data": DeelStagePreview;
978
+ };
979
+ export type DeelStageResult = {
980
+ "status": "staged" | "attention" | "running" | "stale" | "busy";
981
+ "command_id": string;
982
+ "run_id": number | null;
983
+ "timesheets_staged": number;
984
+ "entries_staged": number;
985
+ "already_staged": number;
986
+ "unresolved_entry_ids": Array<number>;
987
+ "code": string | null;
988
+ };
989
+ export type DeelStageResultEnvelope = {
990
+ "data": DeelStageResult;
991
+ };
992
+ export type DeelStageStatusEnvelope = {
993
+ "data": DeelStageResult | null;
155
994
  };
156
995
  export type PaymentSelection = {
157
996
  "user_id": number;
158
997
  "month": string;
159
998
  "amount_cents": number;
160
999
  "expected_version": number;
1000
+ "purpose"?: "earnings" | "advance";
1001
+ "currency"?: string;
1002
+ "advance_project_id"?: number | null;
1003
+ "advance_reason"?: string | null;
161
1004
  };
162
1005
  export type PaymentRunCommand = {
163
1006
  "id": string;
@@ -191,6 +1034,9 @@ export type PaymentItem = {
191
1034
  "month": string;
192
1035
  "amount_cents": number;
193
1036
  "expected_version": number;
1037
+ "purpose": "earnings" | "advance";
1038
+ "advance_project_id": number | null;
1039
+ "advance_reason": string | null;
194
1040
  "id": string;
195
1041
  "run_id": string;
196
1042
  "name": string;
@@ -242,6 +1088,399 @@ export type PaymentRunReport = {
242
1088
  export type PaymentRunReportEnvelope = {
243
1089
  "data": PaymentRunReport;
244
1090
  };
1091
+ export type ApplyAdvanceCredit = {
1092
+ "id": string;
1093
+ "reason": string;
1094
+ "advance_item_id": string;
1095
+ "user_id": number;
1096
+ "currency": string;
1097
+ "month": string;
1098
+ "amount_cents": number;
1099
+ "scope": "month" | "project" | "entry";
1100
+ "project_id": number | null;
1101
+ "entry_id": number | null;
1102
+ };
1103
+ export type ReverseAdvanceCredit = {
1104
+ "id": string;
1105
+ "reason": string;
1106
+ "application_id": string;
1107
+ };
1108
+ export type ReturnAdvanceCredit = {
1109
+ "id": string;
1110
+ "reason": string;
1111
+ "advance_item_id": string;
1112
+ "amount_cents": number;
1113
+ "reference": string;
1114
+ };
1115
+ export type AdvanceCreditApplication = {
1116
+ "id": string;
1117
+ "reason": string;
1118
+ "advance_item_id": string;
1119
+ "user_id": number;
1120
+ "currency": string;
1121
+ "month": string;
1122
+ "amount_cents": number;
1123
+ "scope": "month" | "project" | "entry";
1124
+ "project_id": number | null;
1125
+ "entry_id": number | null;
1126
+ "actor_id": number;
1127
+ "recorded_at": string;
1128
+ "reversed_at": string | null;
1129
+ "reversal_reason": string | null;
1130
+ };
1131
+ export type AdvanceCreditReturn = {
1132
+ "id": string;
1133
+ "reason": string;
1134
+ "advance_item_id": string;
1135
+ "amount_cents": number;
1136
+ "reference": string;
1137
+ "actor_id": number;
1138
+ "recorded_at": string;
1139
+ };
1140
+ export type AdvanceCredit = {
1141
+ "advance_item_id": string;
1142
+ "user_id": number;
1143
+ "name": string;
1144
+ "currency": string;
1145
+ "month": string;
1146
+ "advance_project_id": number | null;
1147
+ "advance_reason": string;
1148
+ "state": string;
1149
+ "amount_cents": number;
1150
+ "settled_cents": number;
1151
+ "settled_at": string | null;
1152
+ "applied_cents": number;
1153
+ "returned_cents": number;
1154
+ "reserved_cents": number;
1155
+ "available_cents": number;
1156
+ "opening_cents": number;
1157
+ "period_settled_cents": number;
1158
+ "period_applied_cents": number;
1159
+ "period_returned_cents": number;
1160
+ "closing_cents": number;
1161
+ "applications": Array<AdvanceCreditApplication>;
1162
+ "returns": Array<AdvanceCreditReturn>;
1163
+ };
1164
+ export type AdvanceCreditReport = {
1165
+ "from": string;
1166
+ "to": string;
1167
+ "advances": Array<AdvanceCredit>;
1168
+ };
1169
+ export type AdvanceCreditReportEnvelope = {
1170
+ "data": AdvanceCreditReport;
1171
+ };
1172
+ export type StaffInvoiceLine = {
1173
+ "description": string;
1174
+ "project_id": number | null;
1175
+ "entry_id": number | null;
1176
+ "seconds": number;
1177
+ "rate_cents": number;
1178
+ };
1179
+ export type SaveStaffInvoice = {
1180
+ "id": string;
1181
+ "invoice_id": number | null;
1182
+ "expected_version": number;
1183
+ "user_id": number;
1184
+ "month": string;
1185
+ "currency": string;
1186
+ "reference": string;
1187
+ "kind": "draft" | "received" | "void";
1188
+ "from_review": boolean;
1189
+ "lines": Array<StaffInvoiceLine>;
1190
+ "document_id": string | null;
1191
+ "reason": string;
1192
+ "acknowledge_paid_history": boolean;
1193
+ };
1194
+ export type StaffInvoiceVersion = {
1195
+ "command_id": string;
1196
+ "version": number;
1197
+ "month": string;
1198
+ "currency": string;
1199
+ "kind": "draft" | "received" | "void";
1200
+ "lines": Array<StaffInvoiceLine>;
1201
+ "amount_cents": number;
1202
+ "review_id": string | null;
1203
+ "document_id": string | null;
1204
+ "reason": string;
1205
+ "actor_id": number;
1206
+ "recorded_at": string;
1207
+ "paid_cents_at_recording": number;
1208
+ "has_payment_history": boolean;
1209
+ };
1210
+ export type StaffInvoice = {
1211
+ "id": number;
1212
+ "user_id": number;
1213
+ "month": string;
1214
+ "currency": string;
1215
+ "reference": string;
1216
+ "versions": Array<StaffInvoiceVersion>;
1217
+ "matched_cents": number;
1218
+ "flags": Array<string>;
1219
+ "line_flags": Array<Array<string>>;
1220
+ };
1221
+ export type StaffInvoicePerson = {
1222
+ "user_id": number;
1223
+ "name": string;
1224
+ "currency": string | null;
1225
+ "earned_cents": number | null;
1226
+ "paid_cents": number;
1227
+ "invoiced_cents": number;
1228
+ "matched_invoice_cents": number;
1229
+ "uninvoiced_cents": number | null;
1230
+ "invoices": Array<StaffInvoice>;
1231
+ };
1232
+ export type StaffInvoiceReport = {
1233
+ "month": string;
1234
+ "people": Array<StaffInvoicePerson>;
1235
+ };
1236
+ export type StaffInvoiceReportEnvelope = {
1237
+ "data": StaffInvoiceReport;
1238
+ };
1239
+ export type StaffInvoiceEnvelope = {
1240
+ "data": StaffInvoice;
1241
+ };
1242
+ export type StaffInvoiceDocumentInfo = {
1243
+ "id": string;
1244
+ "invoice_id": number;
1245
+ "name": string;
1246
+ "byte_size": number;
1247
+ "content_type": string;
1248
+ };
1249
+ export type StaffInvoiceDocumentEnvelope = {
1250
+ "data": StaffInvoiceDocumentInfo;
1251
+ };
1252
+ export type ContractorEarningsReview = {
1253
+ "id": string;
1254
+ "user_id": number;
1255
+ "currency": string;
1256
+ "amount_cents": number;
1257
+ "expected_version": number;
1258
+ "actor_id": number;
1259
+ "note": string;
1260
+ "recorded_at": string;
1261
+ };
1262
+ export type ContractorReviewEntry = {
1263
+ "entry_id": number;
1264
+ "project_id": number;
1265
+ "project_name": string;
1266
+ "spent_date": string;
1267
+ "rounded_seconds": number;
1268
+ "cost_rate_cents": number | null;
1269
+ "selected_seconds": number;
1270
+ };
1271
+ export type ContractorReviewEarnings = {
1272
+ "user_id": number;
1273
+ "name": string;
1274
+ "proposed_cents": number;
1275
+ "confirmed_cents": number | null;
1276
+ "status": "new" | "converged" | "differs" | "attention";
1277
+ "exceptions": Array<{
1278
+ "code": "missing_rate" | "changed_source";
1279
+ "entry_ids": Array<number>;
1280
+ }>;
1281
+ };
1282
+ export type ContractorAllocationProposal = {
1283
+ "payment_kind": "event" | "run_item";
1284
+ "payment_id": string;
1285
+ "amount_cents": number;
1286
+ "scope": "month";
1287
+ };
1288
+ export type ContractorCreditProposal = {
1289
+ "advance_item_id": string;
1290
+ "amount_cents": number;
1291
+ "scope": "month";
1292
+ };
1293
+ export type ContractorReviewItem = {
1294
+ "id": string;
1295
+ "run_id": string;
1296
+ "run_name": string;
1297
+ "purpose": "earnings" | "advance";
1298
+ "amount_cents": number;
1299
+ "state": "draft" | "queued" | "creating" | "funding" | "processing" | "paid" | "failed" | "attention" | "cancelled";
1300
+ "phase": "draft" | "queued" | "processing" | "settled" | "failed" | "attention" | "cancelled";
1301
+ "failure": string | null;
1302
+ "attempts": number;
1303
+ };
1304
+ export type ContractorCurrencyReview = {
1305
+ "currency": string;
1306
+ "recorded_earnings_cents": number | null;
1307
+ "proposed_earnings_cents": number | null;
1308
+ "paid_cents": number;
1309
+ "reserved_cents": number;
1310
+ "available_to_pay_cents": number | null;
1311
+ "available_credit_cents": number;
1312
+ "proposed_credit_cents": number;
1313
+ "remaining_after_credit_cents": number | null;
1314
+ "invoices": Array<StaffInvoice>;
1315
+ "advances": Array<AdvanceCredit>;
1316
+ "allocations": Array<PaymentAllocation>;
1317
+ "allocation_proposals": Array<ContractorAllocationProposal>;
1318
+ "credit_proposals": Array<ContractorCreditProposal>;
1319
+ "items": Array<ContractorReviewItem>;
1320
+ "proposal_blocked": boolean;
1321
+ "flags": Array<string>;
1322
+ };
1323
+ export type ContractorReviewPerson = {
1324
+ "user_id": number;
1325
+ "name": string;
1326
+ "active": boolean;
1327
+ "ledger_version": number | null;
1328
+ "settled_through": string | null;
1329
+ "ledger_events": Array<StaffPaymentEvent>;
1330
+ "phase": "review" | "queued" | "processing" | "settled" | "failed" | "attention";
1331
+ "latest_review": ContractorEarningsReview | null;
1332
+ "earnings": ContractorReviewEarnings | null;
1333
+ "entries": Array<ContractorReviewEntry>;
1334
+ "currencies": Array<ContractorCurrencyReview>;
1335
+ "source_revision"?: string;
1336
+ "review_version"?: string;
1337
+ };
1338
+ export type ContractorReview = {
1339
+ "month": string;
1340
+ "completed": boolean;
1341
+ "credit_period": {
1342
+ "from": string;
1343
+ "to": string;
1344
+ };
1345
+ "version": string;
1346
+ "people": Array<ContractorReviewPerson>;
1347
+ };
1348
+ export type AcceptContractorReview = {
1349
+ "id": string;
1350
+ "user_id": number;
1351
+ "month": string;
1352
+ "currency": string;
1353
+ "review_version": string;
1354
+ "source_revision": string;
1355
+ "apply_allocations": boolean;
1356
+ "apply_credits": boolean;
1357
+ "reason": string;
1358
+ };
1359
+ export type ContractorAcceptance = {
1360
+ "id": string;
1361
+ "user_id": number;
1362
+ "month": string;
1363
+ "currency": string;
1364
+ "review_version": string;
1365
+ "reason": string;
1366
+ "actor_id": number;
1367
+ "recorded_at": string;
1368
+ "allocation_ids": Array<string>;
1369
+ "credit_application_ids": Array<string>;
1370
+ "state": "completed";
1371
+ };
1372
+ export type ContractorAcceptanceEnvelope = {
1373
+ "data": ContractorAcceptance;
1374
+ };
1375
+ export type ContractorAcceptancesEnvelope = {
1376
+ "data": Array<ContractorAcceptance>;
1377
+ };
1378
+ export type ContractorReviewEnvelope = {
1379
+ "data": ContractorReview;
1380
+ };
1381
+ export type ScheduledReviewLinkInput = {
1382
+ "token": string;
1383
+ };
1384
+ export type ScheduledReviewLinkEnvelope = {
1385
+ "data": {
1386
+ "path": string;
1387
+ };
1388
+ };
1389
+ export type ScheduledRunConfirmInput = {
1390
+ "acknowledge_report_warnings"?: boolean;
1391
+ };
1392
+ export type ScheduledRunItem = {
1393
+ "report_people": Array<{
1394
+ "id": number;
1395
+ "name": string;
1396
+ "seconds": number;
1397
+ }>;
1398
+ "report_name": string | null;
1399
+ "report_warnings": Array<{
1400
+ "entryId": number;
1401
+ "kind": "url" | "mention" | "ticket_reference" | "teammate_name";
1402
+ "match": string;
1403
+ }>;
1404
+ "attempt_limit": number;
1405
+ "delivery_id": number | null;
1406
+ "delivery_status": string | null;
1407
+ "id": number;
1408
+ "subject_type": string;
1409
+ "subject_id": number;
1410
+ "description": string;
1411
+ "amount_cents": number | null;
1412
+ "currency": string | null;
1413
+ "target": string | null;
1414
+ "quantity_seconds": number | null;
1415
+ "client_name": string | null;
1416
+ "state": "pending" | "running" | "done" | "failed";
1417
+ "attempt_count": number;
1418
+ "failure_reason": string | null;
1419
+ "completed_at": string | null;
1420
+ };
1421
+ export type ScheduledRun = {
1422
+ "id": number;
1423
+ "job_id": number;
1424
+ "occurrence_key": string;
1425
+ "state": "proposed" | "confirmed" | "cancelled" | "expired" | "completed";
1426
+ "proposed_at": string;
1427
+ "expires_at": string;
1428
+ "confirmed_by": number | null;
1429
+ "confirmed_at": string | null;
1430
+ "settled_reason": string | null;
1431
+ "items": Array<ScheduledRunItem>;
1432
+ };
1433
+ export type ScheduledRunEnvelope = {
1434
+ "data": ScheduledRun;
1435
+ };
1436
+ export type ScheduledJobCreate = {
1437
+ "action"?: "month_end_pack";
1438
+ "name": string;
1439
+ "scope"?: {
1440
+ "client_ids"?: Array<number>;
1441
+ };
1442
+ "cadence"?: string;
1443
+ "confirmation"?: "required";
1444
+ "confirm_within_minutes"?: number;
1445
+ "is_active"?: boolean;
1446
+ };
1447
+ export type ScheduledJobPatch = {
1448
+ "action"?: "month_end_pack";
1449
+ "name"?: string;
1450
+ "scope"?: {
1451
+ "client_ids"?: Array<number>;
1452
+ };
1453
+ "cadence"?: string;
1454
+ "confirmation"?: "required";
1455
+ "confirm_within_minutes"?: number;
1456
+ "is_active"?: boolean;
1457
+ "expected_version": number;
1458
+ };
1459
+ export type ScheduledJob = {
1460
+ "action": "month_end_pack";
1461
+ "name": string;
1462
+ "scope": unknown;
1463
+ "cadence": string;
1464
+ "confirmation": "required" | "none";
1465
+ "confirm_within_minutes": number;
1466
+ "is_active": boolean;
1467
+ "id": number;
1468
+ "version": number;
1469
+ "created_by": number;
1470
+ "created_at": string;
1471
+ "updated_at": string;
1472
+ "last_checked_at": string | null;
1473
+ "last_error": string | null;
1474
+ "last_run_id": number | null;
1475
+ };
1476
+ export type ScheduledJobEnvelope = {
1477
+ "data": ScheduledJob;
1478
+ };
1479
+ export type ScheduledJobsPage = {
1480
+ "data": Array<ScheduledJob>;
1481
+ "links": PageLinks;
1482
+ "page": PageMetadata;
1483
+ };
245
1484
  export type InvoiceReminderPolicy = {
246
1485
  "first_after_days": number;
247
1486
  "every_days": number;
@@ -253,6 +1492,8 @@ export type FieldError = {
253
1492
  "minimum_length"?: number;
254
1493
  };
255
1494
  export type ErrorDetail = {
1495
+ "currentVersion"?: number;
1496
+ "current"?: Allocation | TimeOff;
256
1497
  "code": string;
257
1498
  "message": string;
258
1499
  "fields": Array<FieldError>;
@@ -336,23 +1577,65 @@ export type EmailLog = {
336
1577
  "attempt_count": number;
337
1578
  "failure_code": "queue_unavailable" | "provider_timeout" | "provider_rejected" | null;
338
1579
  "failure_reason": string | null;
1580
+ "viewed_at": string | null;
339
1581
  "created_at": string;
340
1582
  "updated_at": string;
341
1583
  };
342
- export type EmailLogPage = {
343
- "data": Array<EmailLog>;
1584
+ export type EmailLogPage = {
1585
+ "data": Array<EmailLog>;
1586
+ "links": PageLinks;
1587
+ "page": CountedPageMetadata;
1588
+ };
1589
+ export type EmailReputationSnapshot = {
1590
+ "sent": number;
1591
+ "bounced": number;
1592
+ "complained": number;
1593
+ "failed": number;
1594
+ "bounce_rate_ppm": number;
1595
+ "complaint_rate_ppm": number;
1596
+ };
1597
+ export type EmailIdentityReputation = {
1598
+ "sender": string;
1599
+ "sent": number;
1600
+ "bounced": number;
1601
+ "complained": number;
1602
+ "failed": number;
1603
+ "bounce_rate_ppm": number;
1604
+ "complaint_rate_ppm": number;
1605
+ };
1606
+ export type EmailSuppression = {
1607
+ "id": number;
1608
+ "address": string;
1609
+ "reason": "bounce" | "complaint";
1610
+ "first_seen_at": string;
1611
+ "last_seen_at": string;
1612
+ "event_count": number;
1613
+ };
1614
+ export type EmailSuppressionsPage = {
1615
+ "data": Array<EmailSuppression>;
1616
+ "links": PageLinks;
1617
+ "page": PageMetadata;
1618
+ };
1619
+ export type EmailSuppressionLiftInput = {
1620
+ "note": string;
1621
+ "confirmation"?: string;
1622
+ };
1623
+ export type EmailSuppressionLift = {
1624
+ "id": number;
1625
+ "address": string;
1626
+ "through_event_id": number;
1627
+ "actor_user_id": number;
1628
+ "note": string;
1629
+ "complaint_acknowledged": boolean;
1630
+ "lifted_at": string;
1631
+ };
1632
+ export type EmailSuppressionLiftEnvelope = {
1633
+ "data": EmailSuppressionLift;
344
1634
  "links": Links;
345
1635
  };
346
- export type EmailReputationSnapshot = {
347
- "sent": number;
348
- "bounced": number;
349
- "complained": number;
350
- "failed": number;
351
- "bounce_rate_ppm": number;
352
- "complaint_rate_ppm": number;
353
- };
354
1636
  export type EmailHealth = {
355
1637
  "reputation": EmailReputationSnapshot;
1638
+ "identities": Array<EmailIdentityReputation>;
356
1639
  };
357
1640
  export type EmailHealthEnvelope = {
358
1641
  "data": EmailHealth;
@@ -454,12 +1737,57 @@ export type BackupRun = {
454
1737
  "total_rows": number | null;
455
1738
  "error_message": string | null;
456
1739
  };
1740
+ export type BackupRunPage = {
1741
+ "data": Array<BackupRun>;
1742
+ "links": PageLinks;
1743
+ "page": CountedPageMetadata;
1744
+ };
1745
+ export type BackupDownloadLinkInput = {
1746
+ "run_id"?: number;
1747
+ "code"?: string;
1748
+ };
1749
+ export type BackupDownloadLinkEnvelope = {
1750
+ "data": {
1751
+ "id": number;
1752
+ "run_id": number;
1753
+ "url": string;
1754
+ "expires_at": string;
1755
+ };
1756
+ };
1757
+ export type OffsiteBackupRun = {
1758
+ "id": string;
1759
+ "backup_run_id": number;
1760
+ "status": "pending" | "running" | "completed" | "failed";
1761
+ "started_at": string;
1762
+ "completed_at": string | null;
1763
+ "uploaded_objects": number;
1764
+ "total_objects": number;
1765
+ "error_message": string | null;
1766
+ };
1767
+ export type OffsiteBackupStatus = {
1768
+ "configured": boolean;
1769
+ "state": "disabled" | "misconfigured" | "waiting" | "running" | "completed" | "failed";
1770
+ "destination": string | null;
1771
+ "last_completed": OffsiteBackupRun | null;
1772
+ "latest": OffsiteBackupRun | null;
1773
+ "error": {
1774
+ "code": "E14";
1775
+ "message": string;
1776
+ } | null;
1777
+ };
1778
+ export type OffsiteBackupCheckEnvelope = {
1779
+ "data": {
1780
+ "verified": true;
1781
+ "checked_at": string;
1782
+ };
1783
+ };
457
1784
  export type BackupStatusEnvelope = {
458
1785
  "data": {
459
1786
  "last_completed": BackupRun | null;
460
1787
  "last_failed": BackupRun | null;
461
1788
  "recent_runs": Array<BackupRun>;
462
1789
  "has_failure": boolean;
1790
+ "offsite"?: OffsiteBackupStatus;
463
1791
  };
464
1792
  "links": Links;
465
1793
  };
@@ -561,6 +1889,47 @@ export type QuickBooksConnectionEnvelope = {
561
1889
  export type QuickBooksSettingsInput = {
562
1890
  "allow_online_payment": boolean;
563
1891
  };
1892
+ export type QuickBooksReconciliationEnvelope = {
1893
+ "data": {
1894
+ "realm_id": string;
1895
+ "generated_at": string;
1896
+ "counts": {
1897
+ [key: string]: number;
1898
+ };
1899
+ "rows": Array<{
1900
+ "status": "matched" | "voided_in_quickbooks" | "missing_in_quickbooks" | "amount_differs" | "currency_differs" | "payments_differ" | "missing_here";
1901
+ "issues": Array<string>;
1902
+ "invoice_id": number | null;
1903
+ "number": string;
1904
+ "quickbooks_id": string | null;
1905
+ "linked": boolean;
1906
+ "ezacto_amount_cents": number | null;
1907
+ "quickbooks_amount_cents": number | null;
1908
+ "ezacto_currency": string | null;
1909
+ "quickbooks_currency": string | null;
1910
+ "ezacto_paid_cents": number | null;
1911
+ "quickbooks_paid_cents": number | null;
1912
+ "detail": string;
1913
+ }>;
1914
+ "payment_divergences": Array<{
1915
+ "quickbooks_payment_id": string;
1916
+ "kind": "voided" | "deleted";
1917
+ "quickbooks_updated_at": string;
1918
+ "detected_at": string;
1919
+ "receipts": Array<{
1920
+ "payment_id": number;
1921
+ "invoice_id": number;
1922
+ "invoice_number": string;
1923
+ "amount_cents": number;
1924
+ }>;
1925
+ }>;
1926
+ "recovery": {
1927
+ "cdc_cursor": string;
1928
+ "last_run_at": string;
1929
+ "last_outcome": "caught_up" | "failed" | "full_reconcile_needed";
1930
+ } | null;
1931
+ };
1932
+ };
564
1933
  export type InvoiceQuickBooksEnvelope = {
565
1934
  "data": {
566
1935
  "connected": boolean;
@@ -626,7 +1995,8 @@ export type ActivityLog = {
626
1995
  };
627
1996
  export type ActivityLogPage = {
628
1997
  "data": Array<ActivityLog>;
629
- "links": Links;
1998
+ "links": PageLinks;
1999
+ "page": PageMetadata;
630
2000
  };
631
2001
  export type OutboxDelivery = {
632
2002
  "subscriber_id": string;
@@ -645,7 +2015,8 @@ export type OutboxDelivery = {
645
2015
  };
646
2016
  export type OutboxDeliveryPage = {
647
2017
  "data": Array<OutboxDelivery>;
648
- "links": Links;
2018
+ "links": PageLinks;
2019
+ "page": CountedPageMetadata;
649
2020
  };
650
2021
  export type OutboxDeliveryEnvelope = {
651
2022
  "data": OutboxDelivery;
@@ -662,6 +2033,11 @@ export type PageMetadata = {
662
2033
  "per_page": number;
663
2034
  "next_cursor": string | null;
664
2035
  };
2036
+ export type CountedPageMetadata = {
2037
+ "per_page": number;
2038
+ "next_cursor": string | null;
2039
+ "total": number;
2040
+ };
665
2041
  export type Service = {
666
2042
  "service": "ezacto";
667
2043
  "version": "v1";
@@ -766,6 +2142,34 @@ export type TeamStatusEnvelope = {
766
2142
  "data": TeamStatus;
767
2143
  "links": Links;
768
2144
  };
2145
+ export type ActivityLogStatus = {
2146
+ "enabled": boolean;
2147
+ };
2148
+ export type ActivityLogStatusEnvelope = {
2149
+ "data": ActivityLogStatus;
2150
+ "links": Links;
2151
+ };
2152
+ export type RollableActivityYearsEnvelope = {
2153
+ "data": RollableActivityYears;
2154
+ "links": Links;
2155
+ };
2156
+ export type RollableActivityYears = {
2157
+ "rollable": Array<{
2158
+ "year": number;
2159
+ "entries": number;
2160
+ }>;
2161
+ };
2162
+ export type ActivityYearRolledEnvelope = {
2163
+ "data": ActivityYearRolled;
2164
+ "links": Links;
2165
+ };
2166
+ export type ActivityYearRolled = {
2167
+ "year": number;
2168
+ "rolled": boolean;
2169
+ };
2170
+ export type RollActivityYearInput = {
2171
+ "year": number;
2172
+ };
769
2173
  export type TeamNamedRelation = {
770
2174
  "id": number;
771
2175
  "name": string;
@@ -811,13 +2215,13 @@ export type TeamNotificationChannels = {
811
2215
  "desktop": boolean;
812
2216
  "slack": boolean;
813
2217
  };
814
- export type TeamInactiveNotificationChannels = {
815
- "email": false;
2218
+ export type TeamNotificationChannelsInput = {
2219
+ "email": boolean;
816
2220
  "desktop": false;
817
2221
  "slack": false;
818
2222
  };
819
2223
  export type TeamNotificationPreference = {
820
- "delivery_active": false;
2224
+ "delivery_active": true;
821
2225
  "daily_reminder_enabled": boolean;
822
2226
  "reminder_time": string | null;
823
2227
  "reminder_days": Array<"monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday">;
@@ -898,14 +2302,26 @@ export type TeamAssignmentReplaceInput = {
898
2302
  };
899
2303
  export type TeamNotificationInput = {
900
2304
  "expected_version": number;
901
- "daily_reminder_enabled": false;
2305
+ "daily_reminder_enabled": boolean;
2306
+ "reminder_time": string | null;
2307
+ "reminder_days": Array<"monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday">;
2308
+ "channels": TeamNotificationChannelsInput;
2309
+ "include_in_team_reminders": boolean;
2310
+ "weekly_digest": boolean;
2311
+ "notify_project_deleted": false;
2312
+ };
2313
+ export type ProfileNotificationInput = {
2314
+ "daily_reminder_enabled": boolean;
902
2315
  "reminder_time": string | null;
903
2316
  "reminder_days": Array<"monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday">;
904
- "channels": TeamInactiveNotificationChannels;
905
- "include_in_team_reminders": false;
906
- "weekly_digest": false;
2317
+ "channels": TeamNotificationChannelsInput;
2318
+ "include_in_team_reminders": boolean;
2319
+ "weekly_digest": boolean;
907
2320
  "notify_project_deleted": false;
908
2321
  };
2322
+ export type ProfileNotificationEnvelope = {
2323
+ "data": TeamNotificationPreference;
2324
+ };
909
2325
  export type TeamRateInput = {
910
2326
  "expected_version": number;
911
2327
  "kind": "billable" | "cost";
@@ -916,6 +2332,55 @@ export type TeamRateRemovalInput = {
916
2332
  "expected_version": number;
917
2333
  "kind": "billable" | "cost";
918
2334
  };
2335
+ export type ProjectMissingRatesInput = {
2336
+ "fingerprint"?: string;
2337
+ };
2338
+ export type ProjectMissingRatesEnvelope = {
2339
+ "data": ProjectMissingRates;
2340
+ };
2341
+ export type ProjectMissingRates = {
2342
+ "project_id": number;
2343
+ "hourly_rate_cents": number;
2344
+ "currency": string;
2345
+ "entry_count": number;
2346
+ "seconds": number;
2347
+ "earliest_date": string;
2348
+ "latest_date": string;
2349
+ "fingerprint": string;
2350
+ "applied_entries": number;
2351
+ };
2352
+ export type CostRateBackfillInput = {
2353
+ "from": string;
2354
+ "to": string;
2355
+ "cost_rate_cents": number;
2356
+ "reason": string;
2357
+ "replace_captured"?: boolean;
2358
+ "apply"?: boolean;
2359
+ };
2360
+ export type CostRateBackfillPeriod = {
2361
+ "month": string;
2362
+ "entry_count": number;
2363
+ "seconds": number;
2364
+ "cost_cents": number;
2365
+ };
2366
+ export type CostRateBackfill = {
2367
+ "run_id": string;
2368
+ "applied": boolean;
2369
+ "user_id": number;
2370
+ "from": string;
2371
+ "to": string;
2372
+ "cost_rate_cents": number;
2373
+ "entry_count": number;
2374
+ "seconds": number;
2375
+ "cost_cents": number;
2376
+ "periods": Array<CostRateBackfillPeriod>;
2377
+ "captured_entry_count": number;
2378
+ "running_entry_count": number;
2379
+ };
2380
+ export type CostRateBackfillEnvelope = {
2381
+ "data": CostRateBackfill;
2382
+ "links": Links;
2383
+ };
919
2384
  export type TeamCommandReceipt = {
920
2385
  "target_user_id": number;
921
2386
  "version": number;
@@ -1035,7 +2500,188 @@ export type TimeEntryPage = {
1035
2500
  "links": PageLinks;
1036
2501
  "page": PageMetadata;
1037
2502
  };
2503
+ export type CalendarCleanupStatus = {
2504
+ "pending": number;
2505
+ "manual_required": number;
2506
+ "revoked": number;
2507
+ };
2508
+ export type CalendarProposal = {
2509
+ "id": number;
2510
+ "provider": "google" | "microsoft";
2511
+ "calendar_id": string;
2512
+ "event_id": string;
2513
+ "occurrence": string;
2514
+ "title": string;
2515
+ "starts_at": string;
2516
+ "ends_at": string;
2517
+ "status": "proposed" | "accepted" | "discarded" | "cancelled";
2518
+ "time_entry_id": number | null;
2519
+ "decided_at": string | null;
2520
+ "source_changed_at"?: string | null;
2521
+ "source_cancelled_at"?: string | null;
2522
+ "created_at": string;
2523
+ "updated_at": string;
2524
+ };
2525
+ export type CalendarProposalAcceptInput = {
2526
+ "project_id": number;
2527
+ "task_id": number;
2528
+ "notes"?: string | null;
2529
+ "budgeted"?: boolean;
2530
+ };
2531
+ export type CalendarProposalEnvelope = {
2532
+ "data": CalendarProposal;
2533
+ "links": Links;
2534
+ };
2535
+ export type CalendarProposalPage = {
2536
+ "data": Array<CalendarProposal>;
2537
+ "links": PageLinks;
2538
+ "page": PageMetadata;
2539
+ };
2540
+ export type PlanningRevisionInput = {
2541
+ "version"?: number;
2542
+ };
2543
+ export type Allocation = {
2544
+ "version": number;
2545
+ "id": number;
2546
+ "user_id": number;
2547
+ "project_id": number;
2548
+ "start_date": string;
2549
+ "end_date": string;
2550
+ "planned_seconds_per_week": number;
2551
+ "created_at": string;
2552
+ "updated_at": string;
2553
+ };
2554
+ export type AllocationInput = {
2555
+ "user_id": number;
2556
+ "project_id": number;
2557
+ "start_date": string;
2558
+ "end_date": string;
2559
+ "planned_seconds_per_week": number;
2560
+ };
2561
+ export type AllocationPatch = {
2562
+ "version"?: number;
2563
+ "start_date"?: string;
2564
+ "end_date"?: string;
2565
+ "planned_seconds_per_week"?: number;
2566
+ };
2567
+ export type AllocationEnvelope = {
2568
+ "data": Allocation;
2569
+ "links": Links;
2570
+ };
2571
+ export type AllocationPage = {
2572
+ "data": Array<Allocation>;
2573
+ "links": PageLinks;
2574
+ "page": PageMetadata;
2575
+ };
2576
+ export type CapacityWeek = {
2577
+ "week_start": string;
2578
+ "planned_seconds": number;
2579
+ "time_off_seconds": number;
2580
+ "available_capacity_seconds": number;
2581
+ "tracked_seconds": number;
2582
+ "over_allocated": boolean;
2583
+ };
2584
+ export type CapacityPerson = {
2585
+ "user_id": number;
2586
+ "first_name": string;
2587
+ "last_name": string;
2588
+ "weekly_capacity_seconds": number;
2589
+ "weeks": Array<CapacityWeek>;
2590
+ };
2591
+ export type Capacity = {
2592
+ "week_start_day": "saturday" | "sunday" | "monday";
2593
+ "weeks": Array<string>;
2594
+ "people": Array<CapacityPerson>;
2595
+ };
2596
+ export type CapacityEnvelope = {
2597
+ "data": Capacity;
2598
+ "links": Links;
2599
+ };
2600
+ export type TimeOff = {
2601
+ "version": number;
2602
+ "id": number;
2603
+ "user_id": number;
2604
+ "start_date": string;
2605
+ "end_date": string;
2606
+ "kind": "vacation" | "sick" | "holiday" | "other";
2607
+ "seconds_per_day": number | null;
2608
+ "created_at": string;
2609
+ "updated_at": string;
2610
+ };
2611
+ export type TimeOffInput = {
2612
+ "user_id": number;
2613
+ "start_date": string;
2614
+ "end_date": string;
2615
+ "kind": "vacation" | "sick" | "holiday" | "other";
2616
+ "seconds_per_day"?: number | null;
2617
+ };
2618
+ export type TimeOffPatch = {
2619
+ "version"?: number;
2620
+ "start_date"?: string;
2621
+ "end_date"?: string;
2622
+ "kind"?: "vacation" | "sick" | "holiday" | "other";
2623
+ "seconds_per_day"?: number | null;
2624
+ };
2625
+ export type TimeOffEnvelope = {
2626
+ "data": TimeOff;
2627
+ "links": Links;
2628
+ };
2629
+ export type TimeOffPage = {
2630
+ "data": Array<TimeOff>;
2631
+ "links": PageLinks;
2632
+ "page": PageMetadata;
2633
+ };
2634
+ export type WorkItemConnection = {
2635
+ "id": number;
2636
+ "provider": "github";
2637
+ "status": "active" | "disconnected";
2638
+ "owner_user_id": number;
2639
+ "credential_configured": boolean;
2640
+ "connected_at": string;
2641
+ "disconnected_at": string | null;
2642
+ "created_at": string;
2643
+ "updated_at": string;
2644
+ };
2645
+ export type WorkItemConnectionInput = {
2646
+ "provider": "github";
2647
+ };
2648
+ export type WorkItemConnectionEnvelope = {
2649
+ "data": WorkItemConnection;
2650
+ };
2651
+ export type WorkItemConnectionListEnvelope = {
2652
+ "data": Array<WorkItemConnection>;
2653
+ "links": Links;
2654
+ };
2655
+ export type WorkItemLink = {
2656
+ "id": number;
2657
+ "connection_id": number;
2658
+ "provider": "github";
2659
+ "time_entry_id": number | null;
2660
+ "project_id": number | null;
2661
+ "item_id": string;
2662
+ "url": string | null;
2663
+ "created_by": number;
2664
+ "created_at": string;
2665
+ "updated_at": string;
2666
+ };
2667
+ export type WorkItemLinkInput = {
2668
+ "connection_id": number;
2669
+ "time_entry_id"?: number;
2670
+ "project_id"?: number;
2671
+ "item_id": string;
2672
+ "url"?: string | null;
2673
+ };
2674
+ export type WorkItemLinkEnvelope = {
2675
+ "data": WorkItemLink;
2676
+ "links": Links;
2677
+ };
2678
+ export type WorkItemLinkPage = {
2679
+ "data": Array<WorkItemLink>;
2680
+ "links": PageLinks;
2681
+ "page": PageMetadata;
2682
+ };
1038
2683
  export type TimeEntrySettings = {
2684
+ "time_rounding": TimeRounding;
1039
2685
  "time_entry_mode": "duration" | "start_end";
1040
2686
  "time_format": "decimal" | "hours_minutes";
1041
2687
  "clock": "12h" | "24h";
@@ -1045,6 +2691,71 @@ export type TimeEntrySettingsEnvelope = {
1045
2691
  "data": TimeEntrySettings;
1046
2692
  "links": Links;
1047
2693
  };
2694
+ export type TimeRounding = {
2695
+ "mode": "exact" | "up" | "down" | "nearest";
2696
+ "minutes": 6 | 10 | 15 | 20 | 30 | 60;
2697
+ };
2698
+ export type TimeRoundingPatch = {
2699
+ "mode"?: "exact" | "up" | "down" | "nearest";
2700
+ "minutes"?: 6 | 10 | 15 | 20 | 30 | 60;
2701
+ };
2702
+ export type TimeRoundingEnvelope = {
2703
+ "data": TimeRounding;
2704
+ "links": Links;
2705
+ };
2706
+ export type EffectiveTimeRounding = {
2707
+ "mode": "exact" | "up" | "down" | "nearest";
2708
+ "minutes": 6 | 10 | 15 | 20 | 30 | 60;
2709
+ "source": "organization" | "project";
2710
+ };
2711
+ export type TimeRoundingRecalculationScope = {
2712
+ "project_id": number | null;
2713
+ "from": string | null;
2714
+ "to": string | null;
2715
+ };
2716
+ export type TimeRoundingRecalculationProject = {
2717
+ "project_id": number;
2718
+ "project_name": string;
2719
+ "time_rounding": EffectiveTimeRounding;
2720
+ "changed_entries": number;
2721
+ "rounded_seconds_before": number;
2722
+ "rounded_seconds_after": number;
2723
+ };
2724
+ export type TimeRoundingRecalculationPreview = {
2725
+ "scope": TimeRoundingRecalculationScope;
2726
+ "open_entries": number;
2727
+ "changed_entries": number;
2728
+ "rounded_seconds_before": number;
2729
+ "rounded_seconds_after": number;
2730
+ "earliest_spent_date": string | null;
2731
+ "latest_spent_date": string | null;
2732
+ "projects": Array<TimeRoundingRecalculationProject>;
2733
+ "kept": {
2734
+ "invoiced": number;
2735
+ "approved": number;
2736
+ "locked": number;
2737
+ "other": number;
2738
+ };
2739
+ "fingerprint": string;
2740
+ };
2741
+ export type TimeRoundingRecalculationPreviewEnvelope = {
2742
+ "data": TimeRoundingRecalculationPreview;
2743
+ "links": Links;
2744
+ };
2745
+ export type TimeRoundingRecalculationRequest = {
2746
+ "project_id"?: number;
2747
+ "from"?: string;
2748
+ "to"?: string;
2749
+ "fingerprint": string;
2750
+ };
2751
+ export type TimeRoundingRecalculationApplied = {
2752
+ "recalculated_entries": number;
2753
+ "preview": TimeRoundingRecalculationPreview;
2754
+ };
2755
+ export type TimeRoundingRecalculationAppliedEnvelope = {
2756
+ "data": TimeRoundingRecalculationApplied;
2757
+ "links": Links;
2758
+ };
1048
2759
  export type TimeEntryNoteSettings = {
1049
2760
  "required": boolean;
1050
2761
  "minimum_length": number;
@@ -1057,20 +2768,220 @@ export type TimeEntryNoteSettingsEnvelope = {
1057
2768
  "data": TimeEntryNoteSettings;
1058
2769
  "links": Links;
1059
2770
  };
1060
- export type Profile = {
2771
+ export type Profile = {
2772
+ "user_id": number;
2773
+ "first_name"?: string;
2774
+ "last_name"?: string;
2775
+ "email"?: string | null;
2776
+ "timezone": string;
2777
+ "effective_timezone"?: string;
2778
+ "invoice_copy_to_self"?: boolean;
2779
+ };
2780
+ export type ProfilePatch = {
2781
+ "timezone"?: string;
2782
+ "invoice_copy_to_self"?: boolean;
2783
+ };
2784
+ export type ProfileEnvelope = {
2785
+ "data": Profile;
2786
+ "links": Links;
2787
+ };
2788
+ export type NativeAppleCapabilities = {
2789
+ "available": boolean;
2790
+ "lifecycle_version": 1;
2791
+ };
2792
+ export type NativeAppleSignInInput = {
2793
+ "identityToken": string;
2794
+ "bindingReceipt": string;
2795
+ "fullName"?: {
2796
+ "givenName"?: string;
2797
+ "familyName"?: string;
2798
+ };
2799
+ };
2800
+ export type NativeAppleSignInEnvelope = {
2801
+ "data": {
2802
+ "ok": true;
2803
+ };
2804
+ };
2805
+ export type AppleLifecycleProofInput = {
2806
+ "receipt": string;
2807
+ };
2808
+ export type AppleCleanupStatus = "not_linked" | "pending" | "revoked" | "manual_required";
2809
+ export type AccountClosureInventoryItem = {
2810
+ "location": string;
2811
+ "count": number;
2812
+ "category": "time_and_worker_attribution" | "billing_and_payments" | "audit_and_security" | "legal_hold";
2813
+ };
2814
+ export type AccountClosureRecord = {
2815
+ "request_id": string;
2816
+ "user_id": number;
2817
+ "actor_user_id": number;
2818
+ "closed_at": string;
2819
+ "policy_version": number;
2820
+ "policy_snapshot": AccountRetentionPolicy;
2821
+ "inventory": Array<AccountClosureInventoryItem>;
2822
+ "retained_identity": boolean;
2823
+ "calendar_cleanup"?: CalendarCleanupStatus;
2824
+ "apple_cleanup": AppleCleanupStatus;
2825
+ };
2826
+ export type AccountClosurePreview = {
2827
+ "apple_cleanup_retry_available"?: boolean;
2828
+ "request_id": string;
2829
+ "user_id": number;
2830
+ "request_version": number;
2831
+ "review_token": string;
2832
+ "policy_version": number | null;
2833
+ "policy_snapshot": AccountRetentionPolicy | null;
2834
+ "inventory": Array<AccountClosureInventoryItem>;
2835
+ "uncovered_categories": Array<"time_and_worker_attribution" | "billing_and_payments" | "audit_and_security" | "legal_hold">;
2836
+ "owner_transfer_required": boolean;
2837
+ "running_timer": boolean;
2838
+ "closure": AccountClosureRecord | null;
2839
+ };
2840
+ export type EmptyObject = Record<string, unknown>;
2841
+ export type AppleCleanupStatusEnvelope = {
2842
+ "data": {
2843
+ "apple_cleanup": AppleCleanupStatus;
2844
+ };
2845
+ };
2846
+ export type RetentionReview = {
2847
+ "request_id": string;
2848
+ "area": string;
2849
+ "kind": "retained_category" | "downstream";
2850
+ "original_reason": string;
2851
+ "original_period": string;
2852
+ "decision": "pending" | "retain" | "removed" | "not_applicable" | "failed" | "release_hold";
2853
+ "basis": string;
2854
+ "release_condition": string;
2855
+ "evidence": string;
2856
+ "next_review_at": string | null;
2857
+ "hold_active": boolean;
2858
+ "version": number;
2859
+ "reviewed_at": string | null;
2860
+ "actor_user_id": number | null;
2861
+ };
2862
+ export type RetentionReviewListEnvelope = {
2863
+ "data": Array<RetentionReview>;
2864
+ };
2865
+ export type RetentionReviewEnvelope = {
2866
+ "data": RetentionReview;
2867
+ };
2868
+ export type RetentionReviewInput = {
2869
+ "expected_version": number;
2870
+ "decision": "retain" | "removed" | "not_applicable" | "failed" | "release_hold";
2871
+ "basis": string;
2872
+ "release_condition": string;
2873
+ "evidence": string;
2874
+ "next_review_at": string | null;
2875
+ "acknowledged": true;
2876
+ };
2877
+ export type DeletionCompletionInput = {
2878
+ "apple_historical_manual_verified"?: boolean;
2879
+ "expected_request_version": number;
2880
+ "expected_reviews": {
2881
+ [key: string]: number;
2882
+ };
2883
+ "acknowledged": true;
2884
+ };
2885
+ export type DeletionCompletionEnvelope = {
2886
+ "data": {
2887
+ "completed_at": string;
2888
+ "confirmation": string;
2889
+ };
2890
+ };
2891
+ export type AccountClosureInput = {
2892
+ "expected_version": number;
2893
+ "expected_policy_version": number;
2894
+ "review_token": string;
2895
+ "acknowledged": true;
2896
+ };
2897
+ export type AccountClosurePreviewEnvelope = {
2898
+ "data": AccountClosurePreview;
2899
+ };
2900
+ export type AccountClosureRecordEnvelope = {
2901
+ "data": AccountClosureRecord;
2902
+ };
2903
+ export type AccountDeletionStatusAccess = {
2904
+ "token": string;
2905
+ "expires_at": string;
2906
+ "url": string;
2907
+ };
2908
+ export type AccountDeletionTrackingInput = {
2909
+ "token": string;
2910
+ };
2911
+ export type AccountDeletionRetainedDisclosure = {
2912
+ "category": string;
2913
+ "reason": string;
2914
+ "period": string;
2915
+ "review_after_days": number;
2916
+ "review_due": string;
2917
+ };
2918
+ export type AccountDeletionClosureDisclosure = {
2919
+ "retained_records": Array<AccountDeletionRetainedDisclosure>;
2920
+ "backup_handling": string;
2921
+ "user_notice": string;
2922
+ "operator_contact": string;
2923
+ };
2924
+ export type AccountDeletionTrackingStatus = {
2925
+ "calendar_cleanup"?: CalendarCleanupStatus;
2926
+ "apple_cleanup"?: AppleCleanupStatus;
2927
+ "request_id": string;
2928
+ "status": "pending" | "in_progress" | "action_required" | "completed";
2929
+ "requested_at": string;
2930
+ "expected_completion_at": string | null;
2931
+ "closed_at": string | null;
2932
+ "completed_at": string | null;
2933
+ "message": string;
2934
+ "completion_confirmation": string | null;
2935
+ "policy_version": number | null;
2936
+ "policy_snapshot": AccountRetentionPolicy | null;
2937
+ "policy_reviewed": boolean;
2938
+ "closure_disclosure": AccountDeletionClosureDisclosure | null;
2939
+ "operator_contact": string | null;
2940
+ "expires_at": string;
2941
+ };
2942
+ export type AccountDeletionTrackingEnvelope = {
2943
+ "data": AccountDeletionTrackingStatus;
2944
+ };
2945
+ export type AccountDeletionSubmission = {
2946
+ "expected_policy_version"?: number | null;
2947
+ };
2948
+ export type AccountDeletionUpdate = {
2949
+ "expected_version": number;
2950
+ "status": "pending" | "in_progress" | "action_required";
2951
+ "message": string;
2952
+ "expected_completion_at": string | null;
2953
+ };
2954
+ export type AccountDeletionRecord = {
2955
+ "calendar_cleanup"?: CalendarCleanupStatus;
2956
+ "apple_cleanup"?: AppleCleanupStatus;
2957
+ "id": string;
1061
2958
  "user_id": number;
1062
- "first_name"?: string;
1063
- "last_name"?: string;
1064
- "email"?: string | null;
1065
- "timezone": string;
1066
- "invoice_copy_to_self"?: boolean;
2959
+ "requested_at": string;
2960
+ "policy_version": number | null;
2961
+ "policy_snapshot": AccountRetentionPolicy | null;
2962
+ "policy_reviewed": boolean;
2963
+ "status": "pending" | "in_progress" | "action_required" | "completed";
2964
+ "version": number;
2965
+ "message": string;
2966
+ "response_target_at": string | null;
2967
+ "expected_completion_at": string | null;
2968
+ "completed_at": string | null;
2969
+ "completion_confirmation": string | null;
2970
+ "notification": "pending" | "sending" | "queued" | "failed" | "unavailable";
2971
+ "notification_updated_at": string;
2972
+ "notification_delivery_id": number | null;
2973
+ "updated_at": string;
1067
2974
  };
1068
- export type ProfilePatch = {
1069
- "timezone"?: string;
1070
- "invoice_copy_to_self"?: boolean;
2975
+ export type AccountDeletionStatusEnvelope = {
2976
+ "data": AccountDeletionRecord | null;
2977
+ "links": Links;
1071
2978
  };
1072
- export type ProfileEnvelope = {
1073
- "data": Profile;
2979
+ export type AccountDeletionDetailEnvelope = {
2980
+ "data": AccountDeletionRecord;
2981
+ "links": Links;
2982
+ };
2983
+ export type AccountDeletionListEnvelope = {
2984
+ "data": Array<AccountDeletionRecord>;
1074
2985
  "links": Links;
1075
2986
  };
1076
2987
  export type AccountDeletionRequest = {
@@ -1078,12 +2989,14 @@ export type AccountDeletionRequest = {
1078
2989
  "requested_at": string;
1079
2990
  };
1080
2991
  export type AccountDeletionRequestEnvelope = {
1081
- "data": AccountDeletionRequest;
2992
+ "data": AccountDeletionRecord | AccountDeletionRequest;
1082
2993
  "links": Links;
2994
+ "status_access"?: AccountDeletionStatusAccess;
1083
2995
  };
1084
2996
  export type TimeEntryOption = {
1085
2997
  "project_id": number;
1086
2998
  "task_id": number;
2999
+ "time_rounding": EffectiveTimeRounding;
1087
3000
  "minimum_note_length": number;
1088
3001
  };
1089
3002
  export type TimeEntryOptionListEnvelope = {
@@ -1102,6 +3015,15 @@ export type TimesheetSubmission = {
1102
3015
  "source_observed_at": string | null;
1103
3016
  "submitted_by_user_id": number | null;
1104
3017
  "submitted_at": string | null;
3018
+ "automatic_approval"?: {
3019
+ "actor": "system";
3020
+ "authorized_by_user_id": number;
3021
+ "window_days": number;
3022
+ "effective_from": string;
3023
+ "submitted_at": string;
3024
+ "approved_at": string;
3025
+ "command_id": string;
3026
+ };
1105
3027
  "reviewed_by_user_id": number | null;
1106
3028
  "reviewed_at": string | null;
1107
3029
  "rejection_reason": string | null;
@@ -1399,12 +3321,95 @@ export type Estimate = {
1399
3321
  "discount_amount_cents": number;
1400
3322
  "created_at": string;
1401
3323
  "updated_at": string;
3324
+ "expires_on": string | null;
3325
+ "effective_expires_on": string | null;
1402
3326
  "line_items": Array<EstimateLine>;
1403
3327
  };
3328
+ export type EstimateContent = {
3329
+ "subject": string | null;
3330
+ "notes": string | null;
3331
+ "currency": string;
3332
+ "tax_rate_ppm": number | null;
3333
+ "tax2_rate_ppm": number | null;
3334
+ "discount_rate_ppm": number | null;
3335
+ "lines": Array<EstimateContentLine>;
3336
+ };
3337
+ export type EstimateContentLine = {
3338
+ "kind": string;
3339
+ "description": string | null;
3340
+ "quantity": number;
3341
+ "unit_price_cents": number;
3342
+ "taxed": boolean;
3343
+ "taxed2": boolean;
3344
+ };
3345
+ export type EstimateTemplate = {
3346
+ "id": string;
3347
+ "name": string;
3348
+ "version": number;
3349
+ "archived": boolean;
3350
+ "content": EstimateContent;
3351
+ "created_at": string;
3352
+ "updated_at": string;
3353
+ };
3354
+ export type EstimateTemplateInput = {
3355
+ "name": string;
3356
+ "content": EstimateContent;
3357
+ };
3358
+ export type EstimateTemplateUpdateInput = {
3359
+ "name": string;
3360
+ "content": EstimateContent;
3361
+ "expected_version": number;
3362
+ "archived"?: boolean;
3363
+ };
3364
+ export type MigrationLoadStatus = {
3365
+ "id": string;
3366
+ "status": "ready" | "queued" | "running" | "completed" | "failed" | "cancelled";
3367
+ "snapshot_sha256": string;
3368
+ "source_rows": number;
3369
+ "resource": string | null;
3370
+ "rows_done": number;
3371
+ "sequence": number;
3372
+ "attempts": number;
3373
+ "error_code": string | null;
3374
+ "created_at": string;
3375
+ "started_at": string | null;
3376
+ "completed_at": string | null;
3377
+ "source_cleaned_at": string | null;
3378
+ "updated_at": string;
3379
+ };
3380
+ export type MigrationLoadStatusEnvelope = {
3381
+ "data": MigrationLoadStatus;
3382
+ "links": Links;
3383
+ };
3384
+ export type EstimateTemplateEnvelope = {
3385
+ "data": EstimateTemplate;
3386
+ "links": Links;
3387
+ };
3388
+ export type EstimateTemplateListEnvelope = {
3389
+ "data": Array<EstimateTemplate>;
3390
+ "truncated": boolean;
3391
+ };
3392
+ export type EstimateDraftInput = {
3393
+ "client_id": number;
3394
+ "number": string;
3395
+ "issue_date": string;
3396
+ "content": EstimateContent;
3397
+ "template_id"?: string | null;
3398
+ "template_version"?: number | null;
3399
+ };
3400
+ export type EstimateDraftEnvelope = {
3401
+ "data": {
3402
+ "id": number;
3403
+ };
3404
+ };
1404
3405
  export type EstimateEnvelope = {
1405
3406
  "data": Estimate;
1406
3407
  "links": Links;
1407
3408
  };
3409
+ export type EstimateExpiryInput = {
3410
+ "expected_version": number;
3411
+ "expires_on": string | null;
3412
+ };
1408
3413
  export type EstimatePage = {
1409
3414
  "data": Array<Estimate>;
1410
3415
  "links": PageLinks;
@@ -1424,6 +3429,9 @@ export type EstimateMessage = {
1424
3429
  "event_type": "send" | "accept" | "decline" | "re-open" | "view" | "invoice" | null;
1425
3430
  "delivery_status": "queued" | "sent" | "bounced" | "complained" | "failed" | null;
1426
3431
  "provider_message_id": string | null;
3432
+ "contact_id": number | null;
3433
+ "content_hash": string | null;
3434
+ "estimate_version": number | null;
1427
3435
  "created_at": string;
1428
3436
  "updated_at": string;
1429
3437
  };
@@ -1706,6 +3714,7 @@ export type InvoiceEmailDefaultsEnvelope = {
1706
3714
  "client_id": number;
1707
3715
  "company_name": string;
1708
3716
  "client_name": string;
3717
+ "time_zone": string;
1709
3718
  "template_version": number;
1710
3719
  "subject": string;
1711
3720
  "message": string;
@@ -2170,8 +4179,19 @@ export type DetailedTimeReport = {
2170
4179
  "unclaimed_seconds": number;
2171
4180
  "time_entry_count": number;
2172
4181
  "currencies": Array<DetailedTimeCurrencyTotal>;
4182
+ "facets": DetailedTimeFacets;
2173
4183
  "rows": Array<DetailedTimeRow>;
2174
4184
  };
4185
+ export type DetailedTimeFacet = {
4186
+ "id": number;
4187
+ "name": string;
4188
+ };
4189
+ export type DetailedTimeFacets = {
4190
+ "people": Array<DetailedTimeFacet>;
4191
+ "tasks": Array<DetailedTimeFacet>;
4192
+ "roles": Array<DetailedTimeFacet>;
4193
+ "tags": Array<DetailedTimeFacet>;
4194
+ };
2175
4195
  export type DetailedTimeReportEnvelope = {
2176
4196
  "data": DetailedTimeReport;
2177
4197
  "links": Links;
@@ -2451,8 +4471,17 @@ export type SavedReportUpdate = {
2451
4471
  "group_by"?: {
2452
4472
  [key: string]: unknown;
2453
4473
  } | null;
4474
+ "view"?: SavedReportAddress;
2454
4475
  "presentation"?: ReportDefinitionPresentation;
2455
4476
  };
4477
+ export type SavedReportAddress = {
4478
+ "report": string;
4479
+ "query": string;
4480
+ };
4481
+ export type SavedReportViewInput = {
4482
+ "name": string;
4483
+ "view": SavedReportAddress;
4484
+ };
2456
4485
  export type SavedReport = {
2457
4486
  "id": string;
2458
4487
  "name": string;
@@ -2474,6 +4503,16 @@ export type SavedReport = {
2474
4503
  "is_custom": boolean;
2475
4504
  "pinned": boolean;
2476
4505
  "shared": boolean;
4506
+ "view": SavedReportAddress | null;
4507
+ "shared_with": {
4508
+ "users": Array<{
4509
+ "user_id": number;
4510
+ "name": string;
4511
+ }>;
4512
+ "profiles": Array<"member" | "project_manager" | "people_admin" | "accounting" | "executive_manager" | "administrator">;
4513
+ };
4514
+ "owned_by_viewer": boolean;
4515
+ "can_delete": boolean;
2477
4516
  "created_at": string;
2478
4517
  "updated_at": string;
2479
4518
  };
@@ -2780,13 +4819,41 @@ export type ClientHierarchyListEnvelope = {
2780
4819
  "links": Links;
2781
4820
  };
2782
4821
  export type ModuleState = {
2783
- "module": "approval" | "expenses" | "own_money";
4822
+ "module": "approval" | "expenses" | "own_money" | "activity_log";
2784
4823
  "enabled": boolean;
2785
4824
  };
2786
4825
  export type ModuleListEnvelope = {
2787
4826
  "data": Array<ModuleState>;
2788
4827
  "links": Links;
2789
4828
  };
4829
+ export type AccountRetentionRule = {
4830
+ "category": "time_and_worker_attribution" | "billing_and_payments" | "audit_and_security" | "legal_hold";
4831
+ "reason": string;
4832
+ "period": string;
4833
+ "review_after_days": number;
4834
+ };
4835
+ export type AccountRetentionPolicy = {
4836
+ "frameworks": Array<"gdpr" | "us_florida" | "us_al" | "us_ak" | "us_az" | "us_ar" | "california_ccpa_cpra" | "colorado_cpa" | "us_ct" | "us_de" | "us_dc" | "us_fl" | "us_ga" | "us_hi" | "us_id" | "us_il" | "us_in" | "us_ia" | "us_ks" | "us_ky" | "us_la" | "us_me" | "us_md" | "us_ma" | "us_mi" | "us_mn" | "us_ms" | "us_mo" | "us_mt" | "us_ne" | "us_nv" | "us_nh" | "us_nj" | "us_nm" | "us_ny" | "us_nc" | "us_nd" | "us_oh" | "us_ok" | "us_or" | "us_pa" | "us_ri" | "us_sc" | "us_sd" | "us_tn" | "texas_tdpsa" | "us_ut" | "us_vt" | "us_va" | "us_wa" | "us_wv" | "us_wi" | "us_wy" | "other">;
4837
+ "retained_records": Array<AccountRetentionRule>;
4838
+ "response_target_days": number;
4839
+ "operator_contact": string;
4840
+ "user_notice": string;
4841
+ "backup_handling": string;
4842
+ "acknowledged": true;
4843
+ };
4844
+ export type AccountRetentionPublication = {
4845
+ "expected_version": number;
4846
+ "policy": AccountRetentionPolicy;
4847
+ };
4848
+ export type AccountRetentionRecord = {
4849
+ "version": number;
4850
+ "policy": AccountRetentionPolicy;
4851
+ "published_at": string;
4852
+ };
4853
+ export type AccountRetentionEnvelope = {
4854
+ "data": AccountRetentionRecord | null;
4855
+ "links": Links;
4856
+ };
2790
4857
  export type SignInMethodState = {
2791
4858
  "method": "password" | "magic_link" | "google" | "github" | "apple";
2792
4859
  "configured": boolean;
@@ -2944,6 +5011,33 @@ export type OrganizationInvoiceRemindersEnvelope = {
2944
5011
  "applied_to_open_invoices"?: number;
2945
5012
  };
2946
5013
  };
5014
+ export type NotificationSettingsInput = {
5015
+ "budget_alerts_include_admins"?: boolean;
5016
+ "submission_reminder"?: SubmissionReminderSchedule | null;
5017
+ };
5018
+ export type SubmissionReminderSchedule = {
5019
+ "day": "monday" | "tuesday" | "wednesday" | "thursday" | "friday" | "saturday" | "sunday";
5020
+ "time": string;
5021
+ };
5022
+ export type NotificationSettingsEnvelope = {
5023
+ "data": {
5024
+ "budget_alerts_include_admins": boolean;
5025
+ "submission_reminder": SubmissionReminderSchedule | null;
5026
+ };
5027
+ };
5028
+ export type TimesheetAutoApprovalInput = {
5029
+ "enabled"?: boolean;
5030
+ "window_days"?: number;
5031
+ };
5032
+ export type TimesheetAutoApprovalEnvelope = {
5033
+ "data": {
5034
+ "enabled": boolean;
5035
+ "window_days": number | null;
5036
+ "clock_starts_at": "submitted_at";
5037
+ "effective_from": string | null;
5038
+ "approval_module_enabled": boolean;
5039
+ };
5040
+ };
2947
5041
  export type JournalFormats = Array<"pdf" | "csv" | "xlsx">;
2948
5042
  export type InvoiceDocumentPreferenceInput = {
2949
5043
  "attach_pdf"?: boolean | null;
@@ -2964,6 +5058,8 @@ export type InvoiceDefaults = {
2964
5058
  "company_address": string | null;
2965
5059
  "notes": string | null;
2966
5060
  "subject": string | null;
5061
+ "estimate_validity_days": number | null;
5062
+ "view_receipts": boolean;
2967
5063
  };
2968
5064
  export type InvoiceDefaultsEnvelope = {
2969
5065
  "data": InvoiceDefaults;
@@ -2974,6 +5070,8 @@ export type InvoiceDefaultsInput = {
2974
5070
  "company_address"?: string | null;
2975
5071
  "notes"?: string | null;
2976
5072
  "subject"?: string | null;
5073
+ "estimate_validity_days"?: number | null;
5074
+ "view_receipts"?: boolean;
2977
5075
  };
2978
5076
  export type InvoiceDocumentPreferenceEnvelope = {
2979
5077
  "data": {
@@ -3009,6 +5107,78 @@ export type OrganizationInvoiceDocumentsEnvelope = {
3009
5107
  "journal_formats": JournalFormats;
3010
5108
  };
3011
5109
  };
5110
+ export type InvoiceHoursReconciliationEnvelope = {
5111
+ "data": {
5112
+ "invoice_id": number;
5113
+ "linked_seconds": number;
5114
+ "billed_seconds": number;
5115
+ "difference_seconds": number;
5116
+ "status": "matched" | "billed_below_linked" | "billed_above_linked" | "not_comparable";
5117
+ "tolerance_seconds": number;
5118
+ "hours_version": string | null;
5119
+ "total_tolerance_seconds": number;
5120
+ "comparison_complete": boolean;
5121
+ "has_mismatch": boolean;
5122
+ "invoice_version": number | null;
5123
+ "invoice_state": string | null;
5124
+ "not_compared_entry_ids": Array<number>;
5125
+ "lines": Array<{
5126
+ "line_id": number;
5127
+ "project_id": number | null;
5128
+ "entry_ids": Array<number>;
5129
+ "linked_seconds": number;
5130
+ "billed_seconds": number;
5131
+ "difference_seconds": number;
5132
+ "status": "matched" | "billed_below_linked" | "billed_above_linked" | "not_comparable";
5133
+ }>;
5134
+ "entries": Array<{
5135
+ "entry_id": number | null;
5136
+ "user_id": number | null;
5137
+ "user_name": string | null;
5138
+ "spent_date": string | null;
5139
+ "project_id": number;
5140
+ "project_name": string | null;
5141
+ "seconds": number;
5142
+ "eligible_for_release": boolean;
5143
+ }>;
5144
+ "projects": Array<{
5145
+ "project_id": number;
5146
+ "project_name": string | null;
5147
+ "tolerance_seconds": number;
5148
+ "linked_seconds": number;
5149
+ "billed_seconds": number;
5150
+ "difference_seconds": number;
5151
+ "status": "matched" | "billed_below_linked" | "billed_above_linked" | "not_comparable";
5152
+ }>;
5153
+ "not_compared": Array<{
5154
+ "line_id": number;
5155
+ "position": number;
5156
+ "description": string | null;
5157
+ "quantity": number;
5158
+ }>;
5159
+ };
5160
+ };
5161
+ export type InvoiceLineTimeReleaseInput = {
5162
+ "command_id": string;
5163
+ "line_id": number;
5164
+ "expected_version": number;
5165
+ "hours_version": string;
5166
+ "entry_ids": Array<number>;
5167
+ "confirmed": true;
5168
+ };
5169
+ export type InvoiceLineTimeReleaseEnvelope = {
5170
+ "data": {
5171
+ "command_id": string;
5172
+ "invoice_id": number;
5173
+ "line_id": number;
5174
+ "expected_version": number;
5175
+ "hours_version": string;
5176
+ "released_entry_ids": Array<number>;
5177
+ "released_seconds": number;
5178
+ "recorded_at": string;
5179
+ "replayed": boolean;
5180
+ };
5181
+ };
3012
5182
  export type ReleasedTimeEnvelope = {
3013
5183
  "data": {
3014
5184
  "invoice_id": number;
@@ -3024,6 +5194,45 @@ export type PayoutAccount = {
3024
5194
  "linked_at": string;
3025
5195
  "verified_at": string | null;
3026
5196
  };
5197
+ export type PayoutPreference = {
5198
+ "user_id": number;
5199
+ "provider": "deel" | "wise" | null;
5200
+ "effective_provider": "deel" | "wise";
5201
+ "organization_default": "deel" | "wise";
5202
+ "version": number;
5203
+ "set_by": "person" | "administrator" | "automatic" | null;
5204
+ "linked_providers": Array<"deel" | "wise">;
5205
+ };
5206
+ export type PayoutPreferenceEnvelope = {
5207
+ "data": PayoutPreference;
5208
+ };
5209
+ export type PayoutPreferenceInput = {
5210
+ "provider": "deel" | "wise" | null;
5211
+ "expected_version": number;
5212
+ };
5213
+ export type PayoutPreferenceRosterEnvelope = {
5214
+ "data": {
5215
+ "organization_default": "deel" | "wise";
5216
+ "people": Array<{
5217
+ "user_id": number;
5218
+ "name": string;
5219
+ "provider": "deel" | "wise" | null;
5220
+ "version": number;
5221
+ "set_by": "person" | "administrator" | "automatic" | null;
5222
+ "linked_providers": Array<"deel" | "wise">;
5223
+ }>;
5224
+ };
5225
+ };
5226
+ export type PayoutProviderListEnvelope = {
5227
+ "data": Array<PayoutProviderSetting>;
5228
+ };
5229
+ export type PayoutProviderSetting = {
5230
+ "provider": "deel" | "wise";
5231
+ "enabled": boolean;
5232
+ };
5233
+ export type PayoutProviderSettingInput = {
5234
+ "enabled": boolean;
5235
+ };
3027
5236
  export type PayoutAccountListEnvelope = {
3028
5237
  "data": Array<PayoutAccount>;
3029
5238
  };
@@ -3042,6 +5251,7 @@ export type SsoDomainInput = {
3042
5251
  };
3043
5252
  export type TwoFactorStatus = {
3044
5253
  "enrolled": boolean;
5254
+ "email_enabled": boolean;
3045
5255
  "pending_confirmation": boolean;
3046
5256
  "recovery_codes_remaining": number;
3047
5257
  };
@@ -3065,6 +5275,27 @@ export type TwoFactorChallengeIssued = {
3065
5275
  "status": "two_factor_required";
3066
5276
  "challenge": string;
3067
5277
  "expires_at": string;
5278
+ "methods": Array<"totp" | "email">;
5279
+ };
5280
+ export type TwoFactorChallengeIssuedEnvelope = {
5281
+ "data": TwoFactorChallengeIssued;
5282
+ };
5283
+ export type TwoFactorEmailCodeInput = {
5284
+ "challenge"?: string;
5285
+ };
5286
+ export type TwoFactorEmailState = {
5287
+ "user_id": number;
5288
+ "email_enabled": boolean;
5289
+ };
5290
+ export type TwoFactorEmailStateEnvelope = {
5291
+ "data": TwoFactorEmailState;
5292
+ };
5293
+ export type TwoFactorEmailDisabled = {
5294
+ "user_id": number;
5295
+ "email_enabled": false;
5296
+ };
5297
+ export type TwoFactorEmailDisabledEnvelope = {
5298
+ "data": TwoFactorEmailDisabled;
3068
5299
  };
3069
5300
  export type TwoFactorChallengeInput = {
3070
5301
  "code": string;
@@ -3092,6 +5323,261 @@ export type UserEmailAcceptedEnvelope = {
3092
5323
  export type ModulePatch = {
3093
5324
  "enabled": boolean;
3094
5325
  };
5326
+ export type ClientRateCardLine = {
5327
+ "task_id": number | null;
5328
+ "amount_cents": number;
5329
+ };
5330
+ export type ClientRateCardVersion = {
5331
+ "id": number;
5332
+ "start_date": string | null;
5333
+ "lines": Array<ClientRateCardLine>;
5334
+ "created_at": string;
5335
+ };
5336
+ export type ClientRateCard = {
5337
+ "id": number;
5338
+ "client_id": number;
5339
+ "name": string;
5340
+ "created_at": string;
5341
+ "versions": Array<ClientRateCardVersion>;
5342
+ };
5343
+ export type ClientRateCardInput = {
5344
+ "name": string;
5345
+ };
5346
+ export type ClientRateCardVersionInput = {
5347
+ "start_date": string | null;
5348
+ "lines": Array<ClientRateCardLine>;
5349
+ };
5350
+ export type ClientRateCardEnvelope = {
5351
+ "data": ClientRateCard;
5352
+ "links": Links;
5353
+ };
5354
+ export type EffectiveClientRateCard = {
5355
+ "client_id": number;
5356
+ "supplied_by_client_id": number;
5357
+ "depth": number;
5358
+ "card_id": number;
5359
+ "card_name": string;
5360
+ "version_start_date": string | null;
5361
+ "task_id": number | null;
5362
+ "amount_cents": number;
5363
+ };
5364
+ export type EffectiveClientRateCardEnvelope = {
5365
+ "data": EffectiveClientRateCard;
5366
+ "links": Links;
5367
+ };
5368
+ export type CsvImportUploadBytes = Blob | Uint8Array;
5369
+ export type CsvImportCapabilities = {
5370
+ "runtime": "container" | "worker";
5371
+ "staging_supported": boolean;
5372
+ "browser_ready": boolean;
5373
+ "apply_supported": boolean;
5374
+ "max_csv_bytes": number;
5375
+ "max_mapping_bytes": number;
5376
+ "raw_retention_hours": 24;
5377
+ };
5378
+ export type CsvImportTallies = {
5379
+ "file_rows": number;
5380
+ "selected_rows": number;
5381
+ "new_rows": number;
5382
+ "already_imported_rows": number;
5383
+ "rejected_row_count": number;
5384
+ "diagnostic_count": number;
5385
+ "file_error_count": number;
5386
+ "invalid_rows": number;
5387
+ "unsupported_rows": number;
5388
+ "source_seconds": number;
5389
+ "destination_seconds": number;
5390
+ "destination_delta_seconds": number;
5391
+ "deleted_imported_rows": number;
5392
+ "organization_currency": string;
5393
+ "unpriced": true;
5394
+ "ignored_columns": Array<string>;
5395
+ "ignored_column_count": number;
5396
+ "warning_count": number;
5397
+ "people": {
5398
+ "matched": number;
5399
+ "new": number;
5400
+ "rejected": number;
5401
+ };
5402
+ "clients": {
5403
+ "matched": number;
5404
+ "new": number;
5405
+ "rejected": number;
5406
+ };
5407
+ "projects": {
5408
+ "matched": number;
5409
+ "new": number;
5410
+ "rejected": number;
5411
+ };
5412
+ "tasks": {
5413
+ "matched": number;
5414
+ "new": number;
5415
+ "rejected": number;
5416
+ };
5417
+ "assignments": {
5418
+ "user_project": number;
5419
+ "project_task": number;
5420
+ };
5421
+ };
5422
+ export type CsvImportChoices = {
5423
+ "workspace_identity": string;
5424
+ "source_id": string;
5425
+ "adapter_id": string;
5426
+ "date_format": "iso";
5427
+ "exporter_zone": string;
5428
+ "destination_interpretation": "source_wall_time";
5429
+ "currency_policy": "destination_rates";
5430
+ "excluded_lines": Array<number>;
5431
+ "mapping": {
5432
+ [key: string]: unknown;
5433
+ };
5434
+ };
5435
+ export type CsvImportMapping = {
5436
+ "workspace_identity": string;
5437
+ "exporter_zone": string;
5438
+ "date_format": "iso";
5439
+ "destination_interpretation": "source_wall_time";
5440
+ "currency_policy": "destination_rates";
5441
+ "excluded_lines": Array<number>;
5442
+ "mapping": {
5443
+ [key: string]: unknown;
5444
+ };
5445
+ "version": number;
5446
+ };
5447
+ export type CsvImportMappingState = {
5448
+ "version": number;
5449
+ "choices": CsvImportChoices | null;
5450
+ "preview_id": string | null;
5451
+ };
5452
+ export type CsvImportRun = {
5453
+ "id": string;
5454
+ "status": "uploading" | "staged" | "previewed" | "confirmed" | "completed" | "failed" | "cancelled" | "expired" | "purged";
5455
+ "version": number;
5456
+ "file_sha256": string;
5457
+ "bytes": number;
5458
+ "staging_expires_at": string;
5459
+ "retention_deadline": string | null;
5460
+ "purge_allowed": boolean;
5461
+ "allowed_actions": Array<"map" | "preview" | "purge">;
5462
+ "retryable": boolean;
5463
+ "preview_id": string | null;
5464
+ "preview_stale": boolean;
5465
+ "source_id": string | null;
5466
+ "tallies": CsvImportTallies | null;
5467
+ };
5468
+ export type CsvImportPreviewRequest = {
5469
+ "preview_id"?: string;
5470
+ };
5471
+ export type CsvImportPreview = {
5472
+ "organization_name": string;
5473
+ "preview_id": string;
5474
+ "run": CsvImportRun;
5475
+ "choices": CsvImportChoices;
5476
+ "tallies": CsvImportTallies;
5477
+ };
5478
+ export type CsvImportLineError = {
5479
+ "line": number;
5480
+ "scope": "file" | "row";
5481
+ "excludable": boolean;
5482
+ "kind": "invalid" | "unsupported" | "warning";
5483
+ "code": string;
5484
+ "message": string;
5485
+ };
5486
+ export type CsvImportErrorPage = {
5487
+ "items": Array<CsvImportLineError>;
5488
+ "total": number;
5489
+ "next_cursor": string | null;
5490
+ "preview_id": string | null;
5491
+ };
5492
+ export type CsvImportSourceEntity = {
5493
+ "kind": "people" | "clients" | "projects" | "tasks";
5494
+ "source_key": string;
5495
+ "label": string;
5496
+ "parent_source_key": string | null;
5497
+ "parents": Array<{
5498
+ "kind": "clients" | "projects";
5499
+ "source_key": string;
5500
+ "label": string;
5501
+ }>;
5502
+ "state": "matched" | "new" | "rejected" | "excluded";
5503
+ "selected_id": number | null;
5504
+ "selected_destination": CsvImportCandidate | null;
5505
+ "ambiguous": boolean;
5506
+ };
5507
+ export type CsvImportCandidate = {
5508
+ "id": number;
5509
+ "name": string;
5510
+ "parent_id": number | null;
5511
+ "parent_name": string | null;
5512
+ "is_active": boolean;
5513
+ "selectable": boolean;
5514
+ "currency": string | null;
5515
+ };
5516
+ export type CsvImportCatalogPage = {
5517
+ "items": Array<CsvImportSourceEntity | CsvImportCandidate>;
5518
+ "total": number;
5519
+ "next_cursor": string | null;
5520
+ "preview_id": string | null;
5521
+ };
5522
+ export type CsvImportCapabilitiesEnvelope = {
5523
+ "data": CsvImportCapabilities;
5524
+ };
5525
+ export type CsvImportRunEnvelope = {
5526
+ "data": CsvImportRun;
5527
+ };
5528
+ export type CsvImportMappingStateEnvelope = {
5529
+ "data": CsvImportMappingState;
5530
+ };
5531
+ export type CsvImportPreviewEnvelope = {
5532
+ "data": CsvImportPreview;
5533
+ };
5534
+ export type CsvImportErrorPageEnvelope = {
5535
+ "data": CsvImportErrorPage;
5536
+ };
5537
+ export type CsvImportCatalogPageEnvelope = {
5538
+ "data": CsvImportCatalogPage;
5539
+ };
5540
+ export type CsvImportApplyCommand = {
5541
+ "preview_id": string;
5542
+ "command_id": string;
5543
+ "version": number;
5544
+ "expected_selected_rows": number;
5545
+ "expected_source_seconds": number;
5546
+ "expected_destination_seconds": number;
5547
+ "acknowledge_exclusions": boolean;
5548
+ "acknowledge_destination_difference": boolean;
5549
+ "acknowledge_new_people": boolean;
5550
+ };
5551
+ export type CsvImportCancelCommand = {
5552
+ "command_id": string;
5553
+ };
5554
+ export type CsvImportApplyRun = {
5555
+ "stage_id": string;
5556
+ "preview_id": string | null;
5557
+ "state": "not_confirmed" | "queued" | "running" | "paused" | "partial" | "completed" | "cancelled" | "failed" | "superseded";
5558
+ "code": "processing_budget_exceeded" | "authority_expired" | "authority_revoked" | "input_expired" | "input_unavailable" | "policy_changed" | "parse_rejected" | "storage_unavailable" | "cancelled_by_administrator" | null;
5559
+ "command_id": string | null;
5560
+ "command_known": boolean;
5561
+ "pending_command": CsvImportApplyCommand | null;
5562
+ "file_rows": number;
5563
+ "selected_rows": number;
5564
+ "excluded_rows": number;
5565
+ "committed_rows": number;
5566
+ "inserted_rows": number;
5567
+ "already_imported_rows": number;
5568
+ "created_setup": number;
5569
+ "source_seconds_total": number | null;
5570
+ "source_seconds_committed": number;
5571
+ "destination_seconds": number;
5572
+ "destination_delta_seconds": number;
5573
+ "deleted_imported_rows": number;
5574
+ "retention_deadline": string | null;
5575
+ "retryable": boolean;
5576
+ "allowed_actions": Array<"apply" | "resume" | "cancel" | "inspect" | "purge" | "reconcile">;
5577
+ };
5578
+ export type CsvImportApplyEnvelope = {
5579
+ "data": CsvImportApplyRun;
5580
+ };
3095
5581
  export interface EzactoClientOptions {
3096
5582
  baseUrl: string;
3097
5583
  token?: string;
@@ -3111,6 +5597,33 @@ export declare class EzactoClient {
3111
5597
  private readonly defaultHeaders;
3112
5598
  constructor(options: EzactoClientOptions);
3113
5599
  private request;
5600
+ recoverProjectMissingRates(args: {
5601
+ "id": number;
5602
+ body: ProjectMissingRatesInput;
5603
+ signal?: AbortSignal;
5604
+ headers?: HeadersInit;
5605
+ }): Promise<ProjectMissingRatesEnvelope>;
5606
+ getNativeAppleCapabilities(args?: {
5607
+ signal?: AbortSignal;
5608
+ headers?: HeadersInit;
5609
+ }): Promise<NativeAppleCapabilities>;
5610
+ signInNativeApple(args: {
5611
+ body: NativeAppleSignInInput;
5612
+ signal?: AbortSignal;
5613
+ headers?: HeadersInit;
5614
+ }): Promise<NativeAppleSignInEnvelope>;
5615
+ rebindAppleCleanup(args: {
5616
+ "id": string;
5617
+ body: AppleLifecycleProofInput;
5618
+ signal?: AbortSignal;
5619
+ headers?: HeadersInit;
5620
+ }): Promise<void>;
5621
+ acceptAppleRevocation(args: {
5622
+ "id": string;
5623
+ body: AppleLifecycleProofInput;
5624
+ signal?: AbortSignal;
5625
+ headers?: HeadersInit;
5626
+ }): Promise<void>;
3114
5627
  signup(args: {
3115
5628
  body: SignupInput;
3116
5629
  signal?: AbortSignal;
@@ -3131,6 +5644,11 @@ export declare class EzactoClient {
3131
5644
  signal?: AbortSignal;
3132
5645
  headers?: HeadersInit;
3133
5646
  }): Promise<TwoFactorChallengeAcceptedEnvelope>;
5647
+ sendTwoFactorEmailCode(args: {
5648
+ body: TwoFactorEmailCodeInput;
5649
+ signal?: AbortSignal;
5650
+ headers?: HeadersInit;
5651
+ }): Promise<TwoFactorChallengeIssuedEnvelope>;
3134
5652
  requestPasswordReset(args: {
3135
5653
  body: EmailInput;
3136
5654
  signal?: AbortSignal;
@@ -3147,12 +5665,32 @@ export declare class EzactoClient {
3147
5665
  }): Promise<SessionPage>;
3148
5666
  listEmailLog(args?: {
3149
5667
  query?: {
3150
- "status"?: "queued" | "sent" | "bounced" | "complained" | "failed";
5668
+ "cursor"?: string;
3151
5669
  "per_page"?: number;
5670
+ "status"?: "queued" | "sent" | "bounced" | "complained" | "failed";
5671
+ "kind"?: "invoice" | "invoice_preview" | "reminder" | "thank_you" | "sign_in" | "account";
5672
+ "from"?: string;
5673
+ "to"?: string;
5674
+ "q"?: string;
5675
+ "order"?: "newest" | "oldest";
3152
5676
  };
3153
5677
  signal?: AbortSignal;
3154
5678
  headers?: HeadersInit;
3155
5679
  }): Promise<EmailLogPage>;
5680
+ listEmailSuppressions(args?: {
5681
+ query?: {
5682
+ "cursor"?: string;
5683
+ "per_page"?: number;
5684
+ };
5685
+ signal?: AbortSignal;
5686
+ headers?: HeadersInit;
5687
+ }): Promise<EmailSuppressionsPage>;
5688
+ liftEmailSuppression(args: {
5689
+ "id": number;
5690
+ body?: EmailSuppressionLiftInput;
5691
+ signal?: AbortSignal;
5692
+ headers?: HeadersInit;
5693
+ }): Promise<EmailSuppressionLiftEnvelope>;
3156
5694
  getEmailHealth(args?: {
3157
5695
  signal?: AbortSignal;
3158
5696
  headers?: HeadersInit;
@@ -3222,21 +5760,54 @@ export declare class EzactoClient {
3222
5760
  signal?: AbortSignal;
3223
5761
  headers?: HeadersInit;
3224
5762
  }): Promise<EmailTestSendEnvelope>;
5763
+ getActivityLogStatus(args?: {
5764
+ signal?: AbortSignal;
5765
+ headers?: HeadersInit;
5766
+ }): Promise<ActivityLogStatusEnvelope>;
3225
5767
  listActivityLog(args?: {
3226
5768
  query?: {
3227
- "per_page"?: number;
5769
+ "cursor"?: string;
5770
+ "per_page"?: number;
5771
+ "from"?: string;
5772
+ "to"?: string;
5773
+ "event_type"?: string;
5774
+ "actor_id"?: number;
5775
+ "aggregate_type"?: string;
5776
+ "aggregate_id"?: number;
5777
+ };
5778
+ signal?: AbortSignal;
5779
+ headers?: HeadersInit;
5780
+ }): Promise<ActivityLogPage>;
5781
+ exportActivityLog(args?: {
5782
+ query?: {
3228
5783
  "from"?: string;
3229
5784
  "to"?: string;
3230
5785
  "event_type"?: string;
3231
5786
  "actor_id"?: number;
5787
+ "aggregate_type"?: string;
5788
+ "aggregate_id"?: number;
3232
5789
  };
3233
5790
  signal?: AbortSignal;
3234
5791
  headers?: HeadersInit;
3235
- }): Promise<ActivityLogPage>;
5792
+ }): Promise<ArrayBuffer>;
5793
+ listRollableActivityYears(args?: {
5794
+ signal?: AbortSignal;
5795
+ headers?: HeadersInit;
5796
+ }): Promise<RollableActivityYearsEnvelope>;
5797
+ rollActivityYear(args: {
5798
+ body: RollActivityYearInput;
5799
+ signal?: AbortSignal;
5800
+ headers?: HeadersInit;
5801
+ }): Promise<ActivityYearRolledEnvelope>;
3236
5802
  listOutboxDeliveries(args?: {
3237
5803
  query?: {
3238
- "status"?: "pending" | "processing" | "delivered" | "failed";
5804
+ "cursor"?: string;
3239
5805
  "per_page"?: number;
5806
+ "status"?: "pending" | "processing" | "delivered" | "failed";
5807
+ "event_type"?: string;
5808
+ "from"?: string;
5809
+ "to"?: string;
5810
+ "order"?: "newest" | "oldest";
3240
5811
  };
3241
5812
  signal?: AbortSignal;
3242
5813
  headers?: HeadersInit;
@@ -3278,12 +5849,22 @@ export declare class EzactoClient {
3278
5849
  signal?: AbortSignal;
3279
5850
  headers?: HeadersInit;
3280
5851
  }): Promise<ProfileEnvelope>;
5852
+ getProfileNotifications(args?: {
5853
+ signal?: AbortSignal;
5854
+ headers?: HeadersInit;
5855
+ }): Promise<ProfileNotificationEnvelope>;
5856
+ updateProfileNotifications(args: {
5857
+ body: ProfileNotificationInput;
5858
+ signal?: AbortSignal;
5859
+ headers?: HeadersInit;
5860
+ }): Promise<ProfileNotificationEnvelope>;
3281
5861
  updateProfile(args: {
3282
5862
  body: ProfilePatch;
3283
5863
  signal?: AbortSignal;
3284
5864
  headers?: HeadersInit;
3285
5865
  }): Promise<ProfileEnvelope>;
3286
5866
  requestAccountDeletion(args?: {
5867
+ body?: AccountDeletionSubmission;
3287
5868
  signal?: AbortSignal;
3288
5869
  headers?: HeadersInit;
3289
5870
  }): Promise<AccountDeletionRequestEnvelope>;
@@ -3619,81 +6200,414 @@ export declare class EzactoClient {
3619
6200
  "id": number;
3620
6201
  signal?: AbortSignal;
3621
6202
  headers?: HeadersInit;
3622
- }): Promise<UserRateEnvelope>;
3623
- getTimeEntrySettings(args?: {
6203
+ }): Promise<UserRateEnvelope>;
6204
+ getTimeEntrySettings(args?: {
6205
+ signal?: AbortSignal;
6206
+ headers?: HeadersInit;
6207
+ }): Promise<TimeEntrySettingsEnvelope>;
6208
+ getTimeEntryNoteSettings(args?: {
6209
+ signal?: AbortSignal;
6210
+ headers?: HeadersInit;
6211
+ }): Promise<TimeEntryNoteSettingsEnvelope>;
6212
+ updateTimeEntryNoteSettings(args: {
6213
+ body: TimeEntryNoteSettingsPatch;
6214
+ signal?: AbortSignal;
6215
+ headers?: HeadersInit;
6216
+ }): Promise<TimeEntryNoteSettingsEnvelope>;
6217
+ updateTimeEntryRoundingSettings(args: {
6218
+ body: TimeRoundingPatch;
6219
+ signal?: AbortSignal;
6220
+ headers?: HeadersInit;
6221
+ }): Promise<TimeRoundingEnvelope>;
6222
+ previewTimeRoundingRecalculation(args?: {
6223
+ query?: {
6224
+ "project_id"?: number;
6225
+ "from"?: string;
6226
+ "to"?: string;
6227
+ };
6228
+ signal?: AbortSignal;
6229
+ headers?: HeadersInit;
6230
+ }): Promise<TimeRoundingRecalculationPreviewEnvelope>;
6231
+ applyTimeRoundingRecalculation(args: {
6232
+ body: TimeRoundingRecalculationRequest;
6233
+ signal?: AbortSignal;
6234
+ headers?: HeadersInit;
6235
+ }): Promise<TimeRoundingRecalculationAppliedEnvelope>;
6236
+ listTimeEntryOptions(args?: {
6237
+ query?: {
6238
+ "user_id"?: number;
6239
+ };
6240
+ signal?: AbortSignal;
6241
+ headers?: HeadersInit;
6242
+ }): Promise<TimeEntryOptionListEnvelope>;
6243
+ listTimeEntries(args?: {
6244
+ query?: {
6245
+ "cursor"?: string;
6246
+ "per_page"?: number;
6247
+ "user_id"?: number;
6248
+ "client_id"?: number;
6249
+ "project_id"?: number;
6250
+ "spent_date"?: string;
6251
+ "from"?: string;
6252
+ "to"?: string;
6253
+ "approval_status"?: "unsubmitted" | "submitted" | "approved";
6254
+ "invoice_id"?: number;
6255
+ "is_billed"?: boolean;
6256
+ "billable"?: boolean;
6257
+ "updated_since"?: string;
6258
+ "task_id"?: number;
6259
+ "is_running"?: boolean;
6260
+ "budgeted"?: boolean;
6261
+ "external_reference_id"?: string;
6262
+ };
6263
+ signal?: AbortSignal;
6264
+ headers?: HeadersInit;
6265
+ }): Promise<TimeEntryPage>;
6266
+ createTimeEntry(args: {
6267
+ body: TimeEntryInput;
6268
+ signal?: AbortSignal;
6269
+ headers?: HeadersInit;
6270
+ }): Promise<TimeEntryEnvelope>;
6271
+ getTimeEntry(args: {
6272
+ "id": number;
6273
+ signal?: AbortSignal;
6274
+ headers?: HeadersInit;
6275
+ }): Promise<TimeEntryEnvelope>;
6276
+ updateTimeEntry(args: {
6277
+ "id": number;
6278
+ body: TimeEntryPatch;
6279
+ signal?: AbortSignal;
6280
+ headers?: HeadersInit;
6281
+ }): Promise<TimeEntryEnvelope>;
6282
+ deleteTimeEntry(args: {
6283
+ "id": number;
6284
+ signal?: AbortSignal;
6285
+ headers?: HeadersInit;
6286
+ }): Promise<TimeEntryEnvelope>;
6287
+ stopTimeEntry(args: {
6288
+ "id": number;
6289
+ signal?: AbortSignal;
6290
+ headers?: HeadersInit;
6291
+ }): Promise<TimeEntryEnvelope>;
6292
+ restartTimeEntry(args: {
6293
+ "id": number;
6294
+ signal?: AbortSignal;
6295
+ headers?: HeadersInit;
6296
+ }): Promise<TimeEntryEnvelope>;
6297
+ listCalendarProposals(args?: {
6298
+ query?: {
6299
+ "cursor"?: string;
6300
+ "per_page"?: number;
6301
+ "from"?: string;
6302
+ "to"?: string;
6303
+ "status"?: "proposed" | "accepted" | "discarded" | "cancelled";
6304
+ };
6305
+ signal?: AbortSignal;
6306
+ headers?: HeadersInit;
6307
+ }): Promise<CalendarProposalPage>;
6308
+ acceptCalendarProposal(args: {
6309
+ "id": number;
6310
+ body: CalendarProposalAcceptInput;
6311
+ signal?: AbortSignal;
6312
+ headers?: HeadersInit;
6313
+ }): Promise<CalendarProposalEnvelope>;
6314
+ discardCalendarProposal(args: {
6315
+ "id": number;
6316
+ signal?: AbortSignal;
6317
+ headers?: HeadersInit;
6318
+ }): Promise<CalendarProposalEnvelope>;
6319
+ getCalendarCleanupStatus(args?: {
6320
+ signal?: AbortSignal;
6321
+ headers?: HeadersInit;
6322
+ }): Promise<CalendarCleanupEnvelope>;
6323
+ listCalendarConnections(args?: {
6324
+ signal?: AbortSignal;
6325
+ headers?: HeadersInit;
6326
+ }): Promise<CalendarConnectionList>;
6327
+ disconnectCalendarConnection(args: {
6328
+ "provider": "google" | "microsoft";
6329
+ body: CalendarDisconnectInput;
6330
+ signal?: AbortSignal;
6331
+ headers?: HeadersInit;
6332
+ }): Promise<void>;
6333
+ refreshCalendarConnection(args: {
6334
+ "provider": "google" | "microsoft";
6335
+ body: CalendarRefreshInput;
6336
+ signal?: AbortSignal;
6337
+ headers?: HeadersInit;
6338
+ }): Promise<CalendarRefreshResult>;
6339
+ listAllocations(args?: {
6340
+ query?: {
6341
+ "cursor"?: string;
6342
+ "per_page"?: number;
6343
+ "user_id"?: number;
6344
+ "project_id"?: number;
6345
+ "from"?: string;
6346
+ "to"?: string;
6347
+ };
6348
+ signal?: AbortSignal;
6349
+ headers?: HeadersInit;
6350
+ }): Promise<AllocationPage>;
6351
+ createAllocation(args: {
6352
+ body: AllocationInput;
6353
+ signal?: AbortSignal;
6354
+ headers?: HeadersInit;
6355
+ }): Promise<AllocationEnvelope>;
6356
+ getAllocation(args: {
6357
+ "id": number;
6358
+ signal?: AbortSignal;
6359
+ headers?: HeadersInit;
6360
+ }): Promise<AllocationEnvelope>;
6361
+ updateAllocation(args: {
6362
+ "id": number;
6363
+ body: AllocationPatch;
6364
+ signal?: AbortSignal;
6365
+ headers?: HeadersInit;
6366
+ }): Promise<AllocationEnvelope>;
6367
+ deleteAllocation(args: {
6368
+ "id": number;
6369
+ body?: PlanningRevisionInput;
6370
+ signal?: AbortSignal;
6371
+ headers?: HeadersInit;
6372
+ }): Promise<AllocationEnvelope>;
6373
+ getCapacity(args: {
6374
+ query: {
6375
+ "from": string;
6376
+ "to": string;
6377
+ };
6378
+ signal?: AbortSignal;
6379
+ headers?: HeadersInit;
6380
+ }): Promise<CapacityEnvelope>;
6381
+ listTimeOff(args?: {
6382
+ query?: {
6383
+ "cursor"?: string;
6384
+ "per_page"?: number;
6385
+ "user_id"?: number;
6386
+ "from"?: string;
6387
+ "to"?: string;
6388
+ };
6389
+ signal?: AbortSignal;
6390
+ headers?: HeadersInit;
6391
+ }): Promise<TimeOffPage>;
6392
+ createTimeOff(args: {
6393
+ body: TimeOffInput;
6394
+ signal?: AbortSignal;
6395
+ headers?: HeadersInit;
6396
+ }): Promise<TimeOffEnvelope>;
6397
+ getTimeOff(args: {
6398
+ "id": number;
6399
+ signal?: AbortSignal;
6400
+ headers?: HeadersInit;
6401
+ }): Promise<TimeOffEnvelope>;
6402
+ updateTimeOff(args: {
6403
+ "id": number;
6404
+ body: TimeOffPatch;
6405
+ signal?: AbortSignal;
6406
+ headers?: HeadersInit;
6407
+ }): Promise<TimeOffEnvelope>;
6408
+ deleteTimeOff(args: {
6409
+ "id": number;
6410
+ body?: PlanningRevisionInput;
6411
+ signal?: AbortSignal;
6412
+ headers?: HeadersInit;
6413
+ }): Promise<TimeOffEnvelope>;
6414
+ listOrganizationHolidays(args?: {
6415
+ query?: {
6416
+ "from"?: string;
6417
+ "to"?: string;
6418
+ "cursor"?: string;
6419
+ "per_page"?: number;
6420
+ };
6421
+ signal?: AbortSignal;
6422
+ headers?: HeadersInit;
6423
+ }): Promise<OrganizationHolidayPage>;
6424
+ getOrganizationHoliday(args: {
6425
+ "id": number;
6426
+ signal?: AbortSignal;
6427
+ headers?: HeadersInit;
6428
+ }): Promise<OrganizationHolidayEnvelope>;
6429
+ createOrganizationHoliday(args: {
6430
+ body: OrganizationHolidayInput;
6431
+ signal?: AbortSignal;
6432
+ headers?: HeadersInit;
6433
+ }): Promise<OrganizationHolidayEnvelope>;
6434
+ updateOrganizationHoliday(args: {
6435
+ "id": number;
6436
+ body: OrganizationHolidayUpdateInput;
6437
+ signal?: AbortSignal;
6438
+ headers?: HeadersInit;
6439
+ }): Promise<OrganizationHolidayEnvelope>;
6440
+ deleteOrganizationHoliday(args: {
6441
+ "id": number;
6442
+ body: OrganizationHolidayDeleteInput;
6443
+ signal?: AbortSignal;
6444
+ headers?: HeadersInit;
6445
+ }): Promise<OrganizationHolidayEnvelope>;
6446
+ listPlanningPlaceholders(args?: {
6447
+ query?: {
6448
+ "cursor"?: string;
6449
+ "per_page"?: number;
6450
+ "is_active"?: boolean;
6451
+ };
6452
+ signal?: AbortSignal;
6453
+ headers?: HeadersInit;
6454
+ }): Promise<PlanningPlaceholderPage>;
6455
+ createPlanningPlaceholder(args: {
6456
+ body: PlanningPlaceholderInput;
6457
+ signal?: AbortSignal;
6458
+ headers?: HeadersInit;
6459
+ }): Promise<PlanningPlaceholderEnvelope>;
6460
+ updatePlanningPlaceholder(args: {
6461
+ "id": number;
6462
+ body: PlanningPlaceholderUpdateInput;
6463
+ signal?: AbortSignal;
6464
+ headers?: HeadersInit;
6465
+ }): Promise<PlanningPlaceholderEnvelope>;
6466
+ deletePlanningPlaceholder(args: {
6467
+ "id": number;
6468
+ body: PlanningVersionInput;
6469
+ signal?: AbortSignal;
6470
+ headers?: HeadersInit;
6471
+ }): Promise<PlanningPlaceholderEnvelope>;
6472
+ listPlaceholderAllocations(args?: {
6473
+ query?: {
6474
+ "cursor"?: string;
6475
+ "per_page"?: number;
6476
+ "project_id"?: number;
6477
+ "state"?: "open" | "assigned" | "archived";
6478
+ "from"?: string;
6479
+ "to"?: string;
6480
+ };
6481
+ signal?: AbortSignal;
6482
+ headers?: HeadersInit;
6483
+ }): Promise<PlaceholderAllocationPage>;
6484
+ createPlaceholderAllocation(args: {
6485
+ body: PlaceholderAllocationInput;
6486
+ signal?: AbortSignal;
6487
+ headers?: HeadersInit;
6488
+ }): Promise<PlaceholderAllocationEnvelope>;
6489
+ updatePlaceholderAllocation(args: {
6490
+ "id": number;
6491
+ body: PlaceholderAllocationUpdateInput;
6492
+ signal?: AbortSignal;
6493
+ headers?: HeadersInit;
6494
+ }): Promise<PlaceholderAllocationEnvelope>;
6495
+ deletePlaceholderAllocation(args: {
6496
+ "id": number;
6497
+ body: PlanningVersionInput;
6498
+ signal?: AbortSignal;
6499
+ headers?: HeadersInit;
6500
+ }): Promise<PlaceholderAllocationEnvelope>;
6501
+ assignPlaceholderAllocation(args: {
6502
+ "id": number;
6503
+ body: PlaceholderAssignmentInput;
6504
+ signal?: AbortSignal;
6505
+ headers?: HeadersInit;
6506
+ }): Promise<PlaceholderAssignmentEnvelope>;
6507
+ getResourceCalendarContext(args?: {
6508
+ signal?: AbortSignal;
6509
+ headers?: HeadersInit;
6510
+ }): Promise<ResourceCalendarContextEnvelope>;
6511
+ getResourceCalendar(args: {
6512
+ query: {
6513
+ "view": "project" | "team";
6514
+ "from": string;
6515
+ "to": string;
6516
+ "project_id"?: number;
6517
+ "person_id"?: number;
6518
+ "per_page"?: number;
6519
+ "cursor"?: string;
6520
+ };
6521
+ signal?: AbortSignal;
6522
+ headers?: HeadersInit;
6523
+ }): Promise<ResourceCalendarEnvelope>;
6524
+ getResourceCalendarAllocations(args: {
6525
+ query: {
6526
+ "view": "project" | "team";
6527
+ "from": string;
6528
+ "to": string;
6529
+ "project_id"?: number;
6530
+ "person_id"?: number;
6531
+ "per_page"?: number;
6532
+ "cursor"?: string;
6533
+ };
6534
+ signal?: AbortSignal;
6535
+ headers?: HeadersInit;
6536
+ }): Promise<ResourceCalendarAllocationPage>;
6537
+ listResourceCalendarProjects(args?: {
6538
+ query?: {
6539
+ "is_active"?: boolean;
6540
+ "per_page"?: number;
6541
+ "cursor"?: string;
6542
+ };
6543
+ signal?: AbortSignal;
6544
+ headers?: HeadersInit;
6545
+ }): Promise<ResourceCalendarProjectPage>;
6546
+ listCalendarFeeds(args?: {
6547
+ signal?: AbortSignal;
6548
+ headers?: HeadersInit;
6549
+ }): Promise<CalendarFeedList>;
6550
+ createCalendarFeed(args: {
6551
+ body: CalendarFeedInput;
3624
6552
  signal?: AbortSignal;
3625
6553
  headers?: HeadersInit;
3626
- }): Promise<TimeEntrySettingsEnvelope>;
3627
- getTimeEntryNoteSettings(args?: {
6554
+ }): Promise<CalendarFeedIssued>;
6555
+ rotateCalendarFeed(args: {
6556
+ "id": string;
3628
6557
  signal?: AbortSignal;
3629
6558
  headers?: HeadersInit;
3630
- }): Promise<TimeEntryNoteSettingsEnvelope>;
3631
- updateTimeEntryNoteSettings(args: {
3632
- body: TimeEntryNoteSettingsPatch;
6559
+ }): Promise<CalendarFeedIssued>;
6560
+ revokeCalendarFeed(args: {
6561
+ "id": string;
3633
6562
  signal?: AbortSignal;
3634
6563
  headers?: HeadersInit;
3635
- }): Promise<TimeEntryNoteSettingsEnvelope>;
3636
- listTimeEntryOptions(args?: {
3637
- query?: {
3638
- "user_id"?: number;
3639
- };
6564
+ }): Promise<void>;
6565
+ downloadCalendarFeed(args: {
6566
+ "id": string;
3640
6567
  signal?: AbortSignal;
3641
6568
  headers?: HeadersInit;
3642
- }): Promise<TimeEntryOptionListEnvelope>;
3643
- listTimeEntries(args?: {
3644
- query?: {
3645
- "cursor"?: string;
3646
- "per_page"?: number;
3647
- "user_id"?: number;
3648
- "client_id"?: number;
3649
- "project_id"?: number;
3650
- "spent_date"?: string;
3651
- "from"?: string;
3652
- "to"?: string;
3653
- "approval_status"?: "unsubmitted" | "submitted" | "approved";
3654
- "invoice_id"?: number;
3655
- "is_billed"?: boolean;
3656
- "billable"?: boolean;
3657
- "updated_since"?: string;
3658
- "task_id"?: number;
3659
- "is_running"?: boolean;
3660
- "budgeted"?: boolean;
3661
- "external_reference_id"?: string;
3662
- };
6569
+ }): Promise<ArrayBuffer>;
6570
+ listWorkItemConnections(args?: {
3663
6571
  signal?: AbortSignal;
3664
6572
  headers?: HeadersInit;
3665
- }): Promise<TimeEntryPage>;
3666
- createTimeEntry(args: {
3667
- body: TimeEntryInput;
6573
+ }): Promise<WorkItemConnectionListEnvelope>;
6574
+ connectWorkItemProvider(args: {
6575
+ body: WorkItemConnectionInput;
3668
6576
  signal?: AbortSignal;
3669
6577
  headers?: HeadersInit;
3670
- }): Promise<TimeEntryEnvelope>;
3671
- getTimeEntry(args: {
6578
+ }): Promise<WorkItemConnectionEnvelope>;
6579
+ disconnectWorkItemProvider(args: {
3672
6580
  "id": number;
3673
6581
  signal?: AbortSignal;
3674
6582
  headers?: HeadersInit;
3675
- }): Promise<TimeEntryEnvelope>;
3676
- updateTimeEntry(args: {
3677
- "id": number;
3678
- body: TimeEntryPatch;
6583
+ }): Promise<WorkItemConnectionEnvelope>;
6584
+ listWorkItemLinks(args?: {
6585
+ query?: {
6586
+ "cursor"?: string;
6587
+ "per_page"?: number;
6588
+ "connection_id"?: number;
6589
+ "time_entry_id"?: number;
6590
+ "project_id"?: number;
6591
+ "item_id"?: string;
6592
+ };
3679
6593
  signal?: AbortSignal;
3680
6594
  headers?: HeadersInit;
3681
- }): Promise<TimeEntryEnvelope>;
3682
- deleteTimeEntry(args: {
3683
- "id": number;
6595
+ }): Promise<WorkItemLinkPage>;
6596
+ createWorkItemLink(args: {
6597
+ body: WorkItemLinkInput;
3684
6598
  signal?: AbortSignal;
3685
6599
  headers?: HeadersInit;
3686
- }): Promise<TimeEntryEnvelope>;
3687
- stopTimeEntry(args: {
6600
+ }): Promise<WorkItemLinkEnvelope>;
6601
+ getWorkItemLink(args: {
3688
6602
  "id": number;
3689
6603
  signal?: AbortSignal;
3690
6604
  headers?: HeadersInit;
3691
- }): Promise<TimeEntryEnvelope>;
3692
- restartTimeEntry(args: {
6605
+ }): Promise<WorkItemLinkEnvelope>;
6606
+ deleteWorkItemLink(args: {
3693
6607
  "id": number;
3694
6608
  signal?: AbortSignal;
3695
6609
  headers?: HeadersInit;
3696
- }): Promise<TimeEntryEnvelope>;
6610
+ }): Promise<void>;
3697
6611
  listTimesheetSubmissions(args?: {
3698
6612
  query?: {
3699
6613
  "cursor"?: string;
@@ -3854,6 +6768,7 @@ export declare class EzactoClient {
3854
6768
  "state"?: string;
3855
6769
  "client_id"?: string;
3856
6770
  "number"?: string;
6771
+ "sort"?: string;
3857
6772
  };
3858
6773
  signal?: AbortSignal;
3859
6774
  headers?: HeadersInit;
@@ -3888,6 +6803,12 @@ export declare class EzactoClient {
3888
6803
  signal?: AbortSignal;
3889
6804
  headers?: HeadersInit;
3890
6805
  }): Promise<EstimateMessageCommandEnvelope>;
6806
+ setEstimateExpiry(args: {
6807
+ "id": number;
6808
+ body: EstimateExpiryInput;
6809
+ signal?: AbortSignal;
6810
+ headers?: HeadersInit;
6811
+ }): Promise<EstimateEnvelope>;
3891
6812
  convertEstimate(args: {
3892
6813
  "id": number;
3893
6814
  "Idempotency-Key": string;
@@ -3904,6 +6825,7 @@ export declare class EzactoClient {
3904
6825
  updateInvoice(args: {
3905
6826
  "id": number;
3906
6827
  "Idempotency-Key": string;
6828
+ "X-Ezacto-Invoice-Elevation"?: string;
3907
6829
  body: InvoiceEditInput;
3908
6830
  signal?: AbortSignal;
3909
6831
  headers?: HeadersInit;
@@ -3911,6 +6833,7 @@ export declare class EzactoClient {
3911
6833
  createInvoiceLine(args: {
3912
6834
  "id": number;
3913
6835
  "Idempotency-Key": string;
6836
+ "X-Ezacto-Invoice-Elevation"?: string;
3914
6837
  body: InvoiceLineInput;
3915
6838
  signal?: AbortSignal;
3916
6839
  headers?: HeadersInit;
@@ -3919,6 +6842,7 @@ export declare class EzactoClient {
3919
6842
  "id": number;
3920
6843
  "lineId": number;
3921
6844
  "Idempotency-Key": string;
6845
+ "X-Ezacto-Invoice-Elevation"?: string;
3922
6846
  body: InvoiceLineUpdateInput;
3923
6847
  signal?: AbortSignal;
3924
6848
  headers?: HeadersInit;
@@ -3927,6 +6851,7 @@ export declare class EzactoClient {
3927
6851
  "id": number;
3928
6852
  "lineId": number;
3929
6853
  "Idempotency-Key": string;
6854
+ "X-Ezacto-Invoice-Elevation"?: string;
3930
6855
  body: VersionedRowDeleteInput;
3931
6856
  signal?: AbortSignal;
3932
6857
  headers?: HeadersInit;
@@ -4233,6 +7158,13 @@ export declare class EzactoClient {
4233
7158
  signal?: AbortSignal;
4234
7159
  headers?: HeadersInit;
4235
7160
  }): Promise<PaymentActualsEnvelope>;
7161
+ getPaymentReconciliation(args?: {
7162
+ query?: {
7163
+ "month"?: string;
7164
+ };
7165
+ signal?: AbortSignal;
7166
+ headers?: HeadersInit;
7167
+ }): Promise<PaymentReconciliationEnvelope>;
4236
7168
  confirmPaymentActuals(args: {
4237
7169
  body: ConfirmPaymentActuals;
4238
7170
  signal?: AbortSignal;
@@ -4242,49 +7174,333 @@ export declare class EzactoClient {
4242
7174
  body: StaffPaymentProviderCommand;
4243
7175
  signal?: AbortSignal;
4244
7176
  headers?: HeadersInit;
4245
- }): Promise<void>;
4246
- getStaffPaymentReport(args?: {
4247
- query?: {
4248
- "month"?: string;
4249
- };
7177
+ }): Promise<void>;
7178
+ getStaffPaymentReport(args?: {
7179
+ query?: {
7180
+ "month"?: string;
7181
+ };
7182
+ signal?: AbortSignal;
7183
+ headers?: HeadersInit;
7184
+ }): Promise<StaffPaymentReportEnvelope>;
7185
+ recordStaffPaymentEvent(args: {
7186
+ body: StaffPaymentCommand;
7187
+ signal?: AbortSignal;
7188
+ headers?: HeadersInit;
7189
+ }): Promise<void>;
7190
+ getPaymentAllocationReport(args?: {
7191
+ query?: {
7192
+ "month"?: string;
7193
+ };
7194
+ signal?: AbortSignal;
7195
+ headers?: HeadersInit;
7196
+ }): Promise<PaymentAllocationReportEnvelope>;
7197
+ previewPaymentAllocation(args: {
7198
+ body: AllocatePayment;
7199
+ signal?: AbortSignal;
7200
+ headers?: HeadersInit;
7201
+ }): Promise<PaymentAllocationPreviewEnvelope>;
7202
+ allocatePayment(args: {
7203
+ body: AllocatePayment;
7204
+ signal?: AbortSignal;
7205
+ headers?: HeadersInit;
7206
+ }): Promise<void>;
7207
+ reversePaymentAllocation(args: {
7208
+ body: ReversePaymentAllocation;
7209
+ signal?: AbortSignal;
7210
+ headers?: HeadersInit;
7211
+ }): Promise<void>;
7212
+ getMyPayments(args?: {
7213
+ query?: {
7214
+ "month"?: string;
7215
+ };
7216
+ signal?: AbortSignal;
7217
+ headers?: HeadersInit;
7218
+ }): Promise<MyPaymentsEnvelope>;
7219
+ listInvoiceProviderAlerts(args: {
7220
+ "id": number;
7221
+ signal?: AbortSignal;
7222
+ headers?: HeadersInit;
7223
+ }): Promise<InvoiceProviderAlertListEnvelope>;
7224
+ reviewInvoiceProviderAlert(args: {
7225
+ "id": number;
7226
+ "alertId": string;
7227
+ body: ReviewInvoiceProviderAlertInput;
7228
+ signal?: AbortSignal;
7229
+ headers?: HeadersInit;
7230
+ }): Promise<InvoiceProviderAlertEnvelope>;
7231
+ getBankFeedStatus(args?: {
7232
+ signal?: AbortSignal;
7233
+ headers?: HeadersInit;
7234
+ }): Promise<BankFeedStatusEnvelope>;
7235
+ syncBankFeeds(args: {
7236
+ body: BankFeedSyncInput;
7237
+ signal?: AbortSignal;
7238
+ headers?: HeadersInit;
7239
+ }): Promise<BankFeedSyncEnvelope>;
7240
+ listBankDepositAccounts(args?: {
7241
+ signal?: AbortSignal;
7242
+ headers?: HeadersInit;
7243
+ }): Promise<BankDepositAccountsEnvelope>;
7244
+ listBankDeposits(args?: {
7245
+ query?: {
7246
+ "state"?: "unmatched" | "suggested" | "confirmed" | "rejected";
7247
+ "page"?: number;
7248
+ "per_page"?: number;
7249
+ };
7250
+ signal?: AbortSignal;
7251
+ headers?: HeadersInit;
7252
+ }): Promise<BankDepositListEnvelope>;
7253
+ listBankDepositInvoices(args: {
7254
+ "id": number;
7255
+ query?: {
7256
+ "query"?: string;
7257
+ };
7258
+ signal?: AbortSignal;
7259
+ headers?: HeadersInit;
7260
+ }): Promise<BankDepositInvoicesEnvelope>;
7261
+ assignBankDeposit(args: {
7262
+ "id": number;
7263
+ "Idempotency-Key": string;
7264
+ body: BankDepositAssignInput;
7265
+ signal?: AbortSignal;
7266
+ headers?: HeadersInit;
7267
+ }): Promise<BankDepositEnvelope>;
7268
+ rejectBankDeposit(args: {
7269
+ "id": number;
7270
+ "Idempotency-Key": string;
7271
+ body: BankDepositDecisionInput;
7272
+ signal?: AbortSignal;
7273
+ headers?: HeadersInit;
7274
+ }): Promise<BankDepositEnvelope>;
7275
+ reopenBankDeposit(args: {
7276
+ "id": number;
7277
+ "Idempotency-Key": string;
7278
+ body: BankDepositDecisionInput;
7279
+ signal?: AbortSignal;
7280
+ headers?: HeadersInit;
7281
+ }): Promise<BankDepositEnvelope>;
7282
+ confirmBankDeposit(args: {
7283
+ "id": number;
7284
+ "Idempotency-Key": string;
7285
+ body: BankDepositConfirmInput;
7286
+ signal?: AbortSignal;
7287
+ headers?: HeadersInit;
7288
+ }): Promise<BankDepositEnvelope>;
7289
+ verifyBankDepositSource(args: {
7290
+ "id": number;
7291
+ "Idempotency-Key": string;
7292
+ body: BankDepositVerifyInput;
7293
+ signal?: AbortSignal;
7294
+ headers?: HeadersInit;
7295
+ }): Promise<BankDepositEnvelope>;
7296
+ getDeelSync(args?: {
7297
+ signal?: AbortSignal;
7298
+ headers?: HeadersInit;
7299
+ }): Promise<DeelSyncStatus>;
7300
+ updateDeelSyncSettings(args: {
7301
+ body: DeelSyncSettingsCommand;
7302
+ signal?: AbortSignal;
7303
+ headers?: HeadersInit;
7304
+ }): Promise<void>;
7305
+ previewDeelSync(args: {
7306
+ body: DeelSyncWindow;
7307
+ signal?: AbortSignal;
7308
+ headers?: HeadersInit;
7309
+ }): Promise<DeelSyncPreview>;
7310
+ runDeelSync(args: {
7311
+ body: DeelSyncRunCommand;
7312
+ signal?: AbortSignal;
7313
+ headers?: HeadersInit;
7314
+ }): Promise<DeelSyncRunResult>;
7315
+ refreshDeelPaymentStatus(args: {
7316
+ body: DeelPaymentStatusMonth;
7317
+ signal?: AbortSignal;
7318
+ headers?: HeadersInit;
7319
+ }): Promise<DeelPaymentStatusRefreshEnvelope>;
7320
+ getDeelStaging(args?: {
7321
+ signal?: AbortSignal;
7322
+ headers?: HeadersInit;
7323
+ }): Promise<DeelStagingStatusEnvelope>;
7324
+ previewDeelStaging(args: {
7325
+ body: DeelStageSelection;
7326
+ signal?: AbortSignal;
7327
+ headers?: HeadersInit;
7328
+ }): Promise<DeelStagePreviewEnvelope>;
7329
+ stageDeelHours(args: {
7330
+ "Idempotency-Key": string;
7331
+ body: DeelStageCommand;
7332
+ signal?: AbortSignal;
7333
+ headers?: HeadersInit;
7334
+ }): Promise<DeelStageResultEnvelope>;
7335
+ getDeelStageStatus(args: {
7336
+ body: DeelStageCommand;
7337
+ signal?: AbortSignal;
7338
+ headers?: HeadersInit;
7339
+ }): Promise<DeelStageStatusEnvelope>;
7340
+ getPaymentRunReport(args?: {
7341
+ query?: {
7342
+ "from"?: string;
7343
+ "to"?: string;
7344
+ };
7345
+ signal?: AbortSignal;
7346
+ headers?: HeadersInit;
7347
+ }): Promise<PaymentRunReportEnvelope>;
7348
+ previewPaymentRun(args: {
7349
+ body: PaymentRunCommand;
7350
+ signal?: AbortSignal;
7351
+ headers?: HeadersInit;
7352
+ }): Promise<PaymentRunEnvelope>;
7353
+ approvePaymentRun(args: {
7354
+ "id": string;
7355
+ body: PaymentRunApproval;
7356
+ signal?: AbortSignal;
7357
+ headers?: HeadersInit;
7358
+ }): Promise<PaymentRunEnvelope>;
7359
+ cancelPaymentRun(args: {
7360
+ "id": string;
7361
+ signal?: AbortSignal;
7362
+ headers?: HeadersInit;
7363
+ }): Promise<PaymentRunEnvelope>;
7364
+ reconcilePaymentRunItem(args: {
7365
+ "id": string;
7366
+ "itemId": string;
7367
+ signal?: AbortSignal;
7368
+ headers?: HeadersInit;
7369
+ }): Promise<PaymentRunEnvelope>;
7370
+ getAdvanceCreditReport(args?: {
7371
+ query?: {
7372
+ "from"?: string;
7373
+ "to"?: string;
7374
+ };
7375
+ signal?: AbortSignal;
7376
+ headers?: HeadersInit;
7377
+ }): Promise<AdvanceCreditReportEnvelope>;
7378
+ applyAdvanceCredit(args: {
7379
+ body: ApplyAdvanceCredit;
7380
+ signal?: AbortSignal;
7381
+ headers?: HeadersInit;
7382
+ }): Promise<void>;
7383
+ reverseAdvanceCredit(args: {
7384
+ body: ReverseAdvanceCredit;
7385
+ signal?: AbortSignal;
7386
+ headers?: HeadersInit;
7387
+ }): Promise<void>;
7388
+ returnAdvanceCredit(args: {
7389
+ body: ReturnAdvanceCredit;
7390
+ signal?: AbortSignal;
7391
+ headers?: HeadersInit;
7392
+ }): Promise<void>;
7393
+ getStaffInvoiceReport(args?: {
7394
+ query?: {
7395
+ "month"?: string;
7396
+ };
7397
+ signal?: AbortSignal;
7398
+ headers?: HeadersInit;
7399
+ }): Promise<StaffInvoiceReportEnvelope>;
7400
+ getMyStaffInvoices(args?: {
7401
+ query?: {
7402
+ "month"?: string;
7403
+ };
7404
+ signal?: AbortSignal;
7405
+ headers?: HeadersInit;
7406
+ }): Promise<StaffInvoiceReportEnvelope>;
7407
+ saveStaffInvoice(args: {
7408
+ body: SaveStaffInvoice;
7409
+ signal?: AbortSignal;
7410
+ headers?: HeadersInit;
7411
+ }): Promise<StaffInvoiceEnvelope>;
7412
+ uploadStaffInvoiceDocument(args: {
7413
+ "invoiceId": number;
7414
+ "Idempotency-Key": string;
7415
+ body: FormData;
7416
+ query: {
7417
+ "month": string;
7418
+ };
7419
+ signal?: AbortSignal;
7420
+ headers?: HeadersInit;
7421
+ }): Promise<StaffInvoiceDocumentEnvelope>;
7422
+ getStaffInvoiceDocumentContent(args: {
7423
+ "invoiceId": number;
7424
+ "documentId": string;
7425
+ signal?: AbortSignal;
7426
+ headers?: HeadersInit;
7427
+ }): Promise<ArrayBuffer>;
7428
+ getContractorReview(args?: {
7429
+ query?: {
7430
+ "month"?: string;
7431
+ };
7432
+ signal?: AbortSignal;
7433
+ headers?: HeadersInit;
7434
+ }): Promise<ContractorReviewEnvelope>;
7435
+ getContractorAcceptances(args?: {
7436
+ query?: {
7437
+ "month"?: string;
7438
+ };
7439
+ signal?: AbortSignal;
7440
+ headers?: HeadersInit;
7441
+ }): Promise<ContractorAcceptancesEnvelope>;
7442
+ acceptContractorReview(args?: {
7443
+ body?: AcceptContractorReview;
7444
+ signal?: AbortSignal;
7445
+ headers?: HeadersInit;
7446
+ }): Promise<ContractorAcceptanceEnvelope>;
7447
+ consumeScheduledReviewLink(args: {
7448
+ "id": number;
7449
+ body?: ScheduledReviewLinkInput;
7450
+ signal?: AbortSignal;
7451
+ headers?: HeadersInit;
7452
+ }): Promise<ScheduledReviewLinkEnvelope>;
7453
+ downloadScheduledRunReport(args: {
7454
+ "id": number;
7455
+ "itemId": number;
7456
+ signal?: AbortSignal;
7457
+ headers?: HeadersInit;
7458
+ }): Promise<ArrayBuffer>;
7459
+ retryScheduledRun(args: {
7460
+ "id": number;
7461
+ signal?: AbortSignal;
7462
+ headers?: HeadersInit;
7463
+ }): Promise<ScheduledRunEnvelope>;
7464
+ getScheduledRun(args: {
7465
+ "id": number;
7466
+ signal?: AbortSignal;
7467
+ headers?: HeadersInit;
7468
+ }): Promise<ScheduledRunEnvelope>;
7469
+ confirmScheduledRun(args: {
7470
+ "id": number;
7471
+ body?: ScheduledRunConfirmInput;
4250
7472
  signal?: AbortSignal;
4251
7473
  headers?: HeadersInit;
4252
- }): Promise<StaffPaymentReportEnvelope>;
4253
- recordStaffPaymentEvent(args: {
4254
- body: StaffPaymentCommand;
7474
+ }): Promise<ScheduledRunEnvelope>;
7475
+ cancelScheduledRun(args: {
7476
+ "id": number;
4255
7477
  signal?: AbortSignal;
4256
7478
  headers?: HeadersInit;
4257
- }): Promise<void>;
4258
- getPaymentRunReport(args?: {
7479
+ }): Promise<ScheduledRunEnvelope>;
7480
+ listScheduledJobs(args?: {
4259
7481
  query?: {
4260
- "from"?: string;
4261
- "to"?: string;
7482
+ "cursor"?: string;
7483
+ "per_page"?: number;
4262
7484
  };
4263
7485
  signal?: AbortSignal;
4264
7486
  headers?: HeadersInit;
4265
- }): Promise<PaymentRunReportEnvelope>;
4266
- previewPaymentRun(args: {
4267
- body: PaymentRunCommand;
4268
- signal?: AbortSignal;
4269
- headers?: HeadersInit;
4270
- }): Promise<PaymentRunEnvelope>;
4271
- approvePaymentRun(args: {
4272
- "id": string;
4273
- body: PaymentRunApproval;
7487
+ }): Promise<ScheduledJobsPage>;
7488
+ getScheduledJob(args: {
7489
+ "id": number;
4274
7490
  signal?: AbortSignal;
4275
7491
  headers?: HeadersInit;
4276
- }): Promise<PaymentRunEnvelope>;
4277
- cancelPaymentRun(args: {
4278
- "id": string;
7492
+ }): Promise<ScheduledJobEnvelope>;
7493
+ createScheduledJob(args: {
7494
+ body: ScheduledJobCreate;
4279
7495
  signal?: AbortSignal;
4280
7496
  headers?: HeadersInit;
4281
- }): Promise<PaymentRunEnvelope>;
4282
- reconcilePaymentRunItem(args: {
4283
- "id": string;
4284
- "itemId": string;
7497
+ }): Promise<ScheduledJobEnvelope>;
7498
+ updateScheduledJob(args: {
7499
+ "id": number;
7500
+ body: ScheduledJobPatch;
4285
7501
  signal?: AbortSignal;
4286
7502
  headers?: HeadersInit;
4287
- }): Promise<PaymentRunEnvelope>;
7503
+ }): Promise<ScheduledJobEnvelope>;
4288
7504
  getReportDefinitionRegistry(args?: {
4289
7505
  signal?: AbortSignal;
4290
7506
  headers?: HeadersInit;
@@ -4303,6 +7519,11 @@ export declare class EzactoClient {
4303
7519
  signal?: AbortSignal;
4304
7520
  headers?: HeadersInit;
4305
7521
  }): Promise<SavedReportEnvelope>;
7522
+ createReportView(args: {
7523
+ body: SavedReportViewInput;
7524
+ signal?: AbortSignal;
7525
+ headers?: HeadersInit;
7526
+ }): Promise<SavedReportEnvelope>;
4306
7527
  previewReportDefinition(args: {
4307
7528
  body: SavedReportInput;
4308
7529
  signal?: AbortSignal;
@@ -4351,6 +7572,18 @@ export declare class EzactoClient {
4351
7572
  signal?: AbortSignal;
4352
7573
  headers?: HeadersInit;
4353
7574
  }): Promise<void>;
7575
+ shareSavedReportWithRole(args: {
7576
+ "reportId": string;
7577
+ "profile": string;
7578
+ signal?: AbortSignal;
7579
+ headers?: HeadersInit;
7580
+ }): Promise<void>;
7581
+ unshareSavedReportWithRole(args: {
7582
+ "reportId": string;
7583
+ "profile": string;
7584
+ signal?: AbortSignal;
7585
+ headers?: HeadersInit;
7586
+ }): Promise<void>;
4354
7587
  runSavedReport(args: {
4355
7588
  "reportId": string;
4356
7589
  signal?: AbortSignal;
@@ -4397,6 +7630,7 @@ export declare class EzactoClient {
4397
7630
  query: {
4398
7631
  "as_of": string;
4399
7632
  "client_id"?: number;
7633
+ "due_state"?: "not_due" | "past_due";
4400
7634
  };
4401
7635
  signal?: AbortSignal;
4402
7636
  headers?: HeadersInit;
@@ -4495,6 +7729,7 @@ export declare class EzactoClient {
4495
7729
  "audience"?: "internal" | "client";
4496
7730
  "invoice_state"?: "all" | "invoiced" | "uninvoiced";
4497
7731
  "active_projects_only"?: boolean;
7732
+ "notes"?: string;
4498
7733
  };
4499
7734
  signal?: AbortSignal;
4500
7735
  headers?: HeadersInit;
@@ -4522,6 +7757,7 @@ export declare class EzactoClient {
4522
7757
  "audience"?: "internal" | "client";
4523
7758
  "invoice_state"?: "all" | "invoiced" | "uninvoiced";
4524
7759
  "active_projects_only"?: boolean;
7760
+ "notes"?: string;
4525
7761
  "format": "pdf" | "csv" | "xlsx";
4526
7762
  };
4527
7763
  signal?: AbortSignal;
@@ -4578,10 +7814,113 @@ export declare class EzactoClient {
4578
7814
  signal?: AbortSignal;
4579
7815
  headers?: HeadersInit;
4580
7816
  }): Promise<SignInMethodListEnvelope>;
7817
+ getAccountRetentionPolicy(args?: {
7818
+ signal?: AbortSignal;
7819
+ headers?: HeadersInit;
7820
+ }): Promise<AccountRetentionEnvelope>;
7821
+ publishAccountRetentionPolicy(args: {
7822
+ body: AccountRetentionPublication;
7823
+ signal?: AbortSignal;
7824
+ headers?: HeadersInit;
7825
+ }): Promise<AccountRetentionEnvelope>;
7826
+ readAccountDeletionTrackingStatus(args: {
7827
+ "id": string;
7828
+ body: AccountDeletionTrackingInput;
7829
+ signal?: AbortSignal;
7830
+ headers?: HeadersInit;
7831
+ }): Promise<AccountDeletionTrackingEnvelope>;
7832
+ listDueRetentionReviews(args?: {
7833
+ query?: {
7834
+ "after"?: string;
7835
+ };
7836
+ signal?: AbortSignal;
7837
+ headers?: HeadersInit;
7838
+ }): Promise<RetentionReviewListEnvelope>;
7839
+ readRetentionReviews(args: {
7840
+ "id": string;
7841
+ signal?: AbortSignal;
7842
+ headers?: HeadersInit;
7843
+ }): Promise<RetentionReviewListEnvelope>;
7844
+ recordRetentionReview(args: {
7845
+ "id": string;
7846
+ "area": string;
7847
+ body: RetentionReviewInput;
7848
+ signal?: AbortSignal;
7849
+ headers?: HeadersInit;
7850
+ }): Promise<RetentionReviewEnvelope>;
7851
+ completeReviewedDeletionRequest(args: {
7852
+ "id": string;
7853
+ body: DeletionCompletionInput;
7854
+ signal?: AbortSignal;
7855
+ headers?: HeadersInit;
7856
+ }): Promise<DeletionCompletionEnvelope>;
7857
+ previewAccountClosure(args: {
7858
+ "id": string;
7859
+ signal?: AbortSignal;
7860
+ headers?: HeadersInit;
7861
+ }): Promise<AccountClosurePreviewEnvelope>;
7862
+ closeAccountAccess(args: {
7863
+ "id": string;
7864
+ body: AccountClosureInput;
7865
+ signal?: AbortSignal;
7866
+ headers?: HeadersInit;
7867
+ }): Promise<AccountClosureRecordEnvelope>;
7868
+ retryAccountAppleCleanup(args: {
7869
+ "id": string;
7870
+ body: EmptyObject;
7871
+ signal?: AbortSignal;
7872
+ headers?: HeadersInit;
7873
+ }): Promise<AppleCleanupStatusEnvelope>;
7874
+ getAccountDeletionRequest(args?: {
7875
+ signal?: AbortSignal;
7876
+ headers?: HeadersInit;
7877
+ }): Promise<AccountDeletionStatusEnvelope>;
7878
+ listAccountDeletionRequests(args?: {
7879
+ query?: {
7880
+ "after"?: string;
7881
+ };
7882
+ signal?: AbortSignal;
7883
+ headers?: HeadersInit;
7884
+ }): Promise<AccountDeletionListEnvelope>;
7885
+ getAccountDeletionRequestForAdmin(args: {
7886
+ "id": string;
7887
+ signal?: AbortSignal;
7888
+ headers?: HeadersInit;
7889
+ }): Promise<AccountDeletionDetailEnvelope>;
7890
+ updateAccountDeletionRequest(args: {
7891
+ "id": string;
7892
+ body: AccountDeletionUpdate;
7893
+ signal?: AbortSignal;
7894
+ headers?: HeadersInit;
7895
+ }): Promise<AccountDeletionDetailEnvelope>;
7896
+ retryAccountDeletionNotification(args: {
7897
+ "id": string;
7898
+ signal?: AbortSignal;
7899
+ headers?: HeadersInit;
7900
+ }): Promise<AccountDeletionDetailEnvelope>;
7901
+ checkOffsiteBackupDestination(args?: {
7902
+ signal?: AbortSignal;
7903
+ headers?: HeadersInit;
7904
+ }): Promise<OffsiteBackupCheckEnvelope>;
4581
7905
  getBackupStatus(args?: {
4582
7906
  signal?: AbortSignal;
4583
7907
  headers?: HeadersInit;
4584
7908
  }): Promise<BackupStatusEnvelope>;
7909
+ listBackupRuns(args?: {
7910
+ query?: {
7911
+ "cursor"?: string;
7912
+ "per_page"?: number;
7913
+ "status"?: "running" | "completed" | "failed";
7914
+ "trigger"?: "nightly" | "manual";
7915
+ };
7916
+ signal?: AbortSignal;
7917
+ headers?: HeadersInit;
7918
+ }): Promise<BackupRunPage>;
7919
+ createBackupDownloadLink(args: {
7920
+ body: BackupDownloadLinkInput;
7921
+ signal?: AbortSignal;
7922
+ headers?: HeadersInit;
7923
+ }): Promise<BackupDownloadLinkEnvelope>;
4585
7924
  getQuickBooksConnection(args?: {
4586
7925
  signal?: AbortSignal;
4587
7926
  headers?: HeadersInit;
@@ -4599,6 +7938,10 @@ export declare class EzactoClient {
4599
7938
  signal?: AbortSignal;
4600
7939
  headers?: HeadersInit;
4601
7940
  }): Promise<void>;
7941
+ getQuickBooksReconciliation(args?: {
7942
+ signal?: AbortSignal;
7943
+ headers?: HeadersInit;
7944
+ }): Promise<QuickBooksReconciliationEnvelope>;
4602
7945
  getInvoiceQuickBooks(args: {
4603
7946
  "id": number;
4604
7947
  signal?: AbortSignal;
@@ -4760,6 +8103,17 @@ export declare class EzactoClient {
4760
8103
  signal?: AbortSignal;
4761
8104
  headers?: HeadersInit;
4762
8105
  }): Promise<ArrayBuffer>;
8106
+ getInvoiceHoursReconciliation(args: {
8107
+ "id": number;
8108
+ signal?: AbortSignal;
8109
+ headers?: HeadersInit;
8110
+ }): Promise<InvoiceHoursReconciliationEnvelope>;
8111
+ releaseInvoiceLineTime(args: {
8112
+ "id": number;
8113
+ body?: InvoiceLineTimeReleaseInput;
8114
+ signal?: AbortSignal;
8115
+ headers?: HeadersInit;
8116
+ }): Promise<InvoiceLineTimeReleaseEnvelope>;
4763
8117
  getInvoiceDefaults(args?: {
4764
8118
  signal?: AbortSignal;
4765
8119
  headers?: HeadersInit;
@@ -4769,6 +8123,24 @@ export declare class EzactoClient {
4769
8123
  signal?: AbortSignal;
4770
8124
  headers?: HeadersInit;
4771
8125
  }): Promise<InvoiceDefaultsEnvelope>;
8126
+ getNotificationSettings(args?: {
8127
+ signal?: AbortSignal;
8128
+ headers?: HeadersInit;
8129
+ }): Promise<NotificationSettingsEnvelope>;
8130
+ setNotificationSettings(args: {
8131
+ body: NotificationSettingsInput;
8132
+ signal?: AbortSignal;
8133
+ headers?: HeadersInit;
8134
+ }): Promise<NotificationSettingsEnvelope>;
8135
+ getTimesheetAutoApproval(args?: {
8136
+ signal?: AbortSignal;
8137
+ headers?: HeadersInit;
8138
+ }): Promise<TimesheetAutoApprovalEnvelope>;
8139
+ setTimesheetAutoApproval(args: {
8140
+ body: TimesheetAutoApprovalInput;
8141
+ signal?: AbortSignal;
8142
+ headers?: HeadersInit;
8143
+ }): Promise<TimesheetAutoApprovalEnvelope>;
4772
8144
  getInvoiceThankYouPreference(args: {
4773
8145
  "id": number;
4774
8146
  signal?: AbortSignal;
@@ -4832,6 +8204,31 @@ export declare class EzactoClient {
4832
8204
  signal?: AbortSignal;
4833
8205
  headers?: HeadersInit;
4834
8206
  }): Promise<void>;
8207
+ listPayoutProviders(args?: {
8208
+ signal?: AbortSignal;
8209
+ headers?: HeadersInit;
8210
+ }): Promise<PayoutProviderListEnvelope>;
8211
+ setPayoutProviderEnabled(args: {
8212
+ "provider": "deel" | "wise";
8213
+ body: PayoutProviderSettingInput;
8214
+ signal?: AbortSignal;
8215
+ headers?: HeadersInit;
8216
+ }): Promise<void>;
8217
+ getPayoutPreference(args: {
8218
+ "id": number;
8219
+ signal?: AbortSignal;
8220
+ headers?: HeadersInit;
8221
+ }): Promise<PayoutPreferenceEnvelope>;
8222
+ setPayoutPreference(args: {
8223
+ "id": number;
8224
+ body: PayoutPreferenceInput;
8225
+ signal?: AbortSignal;
8226
+ headers?: HeadersInit;
8227
+ }): Promise<void>;
8228
+ listPayoutPreferences(args?: {
8229
+ signal?: AbortSignal;
8230
+ headers?: HeadersInit;
8231
+ }): Promise<PayoutPreferenceRosterEnvelope>;
4835
8232
  getBillStatus(args?: {
4836
8233
  signal?: AbortSignal;
4837
8234
  headers?: HeadersInit;
@@ -4865,6 +8262,24 @@ export declare class EzactoClient {
4865
8262
  signal?: AbortSignal;
4866
8263
  headers?: HeadersInit;
4867
8264
  }): Promise<TwoFactorStatusEnvelope>;
8265
+ enableTwoFactorEmail(args?: {
8266
+ signal?: AbortSignal;
8267
+ headers?: HeadersInit;
8268
+ }): Promise<TwoFactorStatusEnvelope>;
8269
+ disableTwoFactorEmail(args?: {
8270
+ signal?: AbortSignal;
8271
+ headers?: HeadersInit;
8272
+ }): Promise<TwoFactorStatusEnvelope>;
8273
+ getUserTwoFactorEmail(args: {
8274
+ "id": number;
8275
+ signal?: AbortSignal;
8276
+ headers?: HeadersInit;
8277
+ }): Promise<TwoFactorEmailStateEnvelope>;
8278
+ disableUserTwoFactorEmail(args: {
8279
+ "id": number;
8280
+ signal?: AbortSignal;
8281
+ headers?: HeadersInit;
8282
+ }): Promise<TwoFactorEmailDisabledEnvelope>;
4868
8283
  addUserEmail(args: {
4869
8284
  "id": number;
4870
8285
  body: UserEmailInput;
@@ -4931,6 +8346,13 @@ export declare class EzactoClient {
4931
8346
  signal?: AbortSignal;
4932
8347
  headers?: HeadersInit;
4933
8348
  }): Promise<TeamCommandReceiptEnvelope>;
8349
+ backfillTeamPersonCostRate(args: {
8350
+ "id": number;
8351
+ "Idempotency-Key": string;
8352
+ body: CostRateBackfillInput;
8353
+ signal?: AbortSignal;
8354
+ headers?: HeadersInit;
8355
+ }): Promise<CostRateBackfillEnvelope>;
4934
8356
  listClientAncestors(args: {
4935
8357
  "id": number;
4936
8358
  signal?: AbortSignal;
@@ -4941,4 +8363,230 @@ export declare class EzactoClient {
4941
8363
  signal?: AbortSignal;
4942
8364
  headers?: HeadersInit;
4943
8365
  }): Promise<ClientHierarchyListEnvelope>;
8366
+ getClientRateCard(args: {
8367
+ "id": number;
8368
+ signal?: AbortSignal;
8369
+ headers?: HeadersInit;
8370
+ }): Promise<ClientRateCardEnvelope>;
8371
+ createClientRateCard(args: {
8372
+ "id": number;
8373
+ body: ClientRateCardInput;
8374
+ signal?: AbortSignal;
8375
+ headers?: HeadersInit;
8376
+ }): Promise<ClientRateCardEnvelope>;
8377
+ createClientRateCardVersion(args: {
8378
+ "id": number;
8379
+ body: ClientRateCardVersionInput;
8380
+ signal?: AbortSignal;
8381
+ headers?: HeadersInit;
8382
+ }): Promise<ClientRateCardEnvelope>;
8383
+ getClientEffectiveRateCard(args: {
8384
+ "id": number;
8385
+ query: {
8386
+ "task_id": number;
8387
+ "spent_date"?: string;
8388
+ };
8389
+ signal?: AbortSignal;
8390
+ headers?: HeadersInit;
8391
+ }): Promise<EffectiveClientRateCardEnvelope>;
8392
+ listEstimateTemplates(args?: {
8393
+ signal?: AbortSignal;
8394
+ headers?: HeadersInit;
8395
+ }): Promise<EstimateTemplateListEnvelope>;
8396
+ createEstimateTemplate(args: {
8397
+ body: EstimateTemplateInput;
8398
+ signal?: AbortSignal;
8399
+ headers?: HeadersInit;
8400
+ }): Promise<EstimateTemplateEnvelope>;
8401
+ updateEstimateTemplate(args: {
8402
+ "id": string;
8403
+ body: EstimateTemplateUpdateInput;
8404
+ signal?: AbortSignal;
8405
+ headers?: HeadersInit;
8406
+ }): Promise<EstimateTemplateEnvelope>;
8407
+ createEstimateDraft(args: {
8408
+ "Idempotency-Key": string;
8409
+ body: EstimateDraftInput;
8410
+ signal?: AbortSignal;
8411
+ headers?: HeadersInit;
8412
+ }): Promise<EstimateDraftEnvelope>;
8413
+ getMigrationLoadStatus(args: {
8414
+ "id": string;
8415
+ signal?: AbortSignal;
8416
+ headers?: HeadersInit;
8417
+ }): Promise<MigrationLoadStatusEnvelope>;
8418
+ sendInvoiceElevationEmailCode(args: {
8419
+ body: InvoiceElevationEmailInput;
8420
+ signal?: AbortSignal;
8421
+ headers?: HeadersInit;
8422
+ }): Promise<InvoiceElevationChallengeEnvelope>;
8423
+ createInvoiceElevation(args: {
8424
+ body: InvoiceElevationInput;
8425
+ signal?: AbortSignal;
8426
+ headers?: HeadersInit;
8427
+ }): Promise<InvoiceElevationStartEnvelope>;
8428
+ verifyInvoiceElevation(args: {
8429
+ body: InvoiceElevationVerifyInput;
8430
+ signal?: AbortSignal;
8431
+ headers?: HeadersInit;
8432
+ }): Promise<InvoiceElevationIssuedEnvelope>;
8433
+ revokeInvoiceElevation(args: {
8434
+ "id": string;
8435
+ signal?: AbortSignal;
8436
+ headers?: HeadersInit;
8437
+ }): Promise<void>;
8438
+ unlinkElevatedInvoiceTime(args: {
8439
+ "id": number;
8440
+ "Idempotency-Key": string;
8441
+ "X-Ezacto-Invoice-Elevation": string;
8442
+ body: ElevatedInvoiceTimeUnlinkInput;
8443
+ signal?: AbortSignal;
8444
+ headers?: HeadersInit;
8445
+ }): Promise<ElevatedInvoiceTimeUnlinkEnvelope>;
8446
+ listWebhookSubscriptions(args?: {
8447
+ signal?: AbortSignal;
8448
+ headers?: HeadersInit;
8449
+ }): Promise<WebhookSubscriptionsEnvelope>;
8450
+ createWebhookSubscription(args: {
8451
+ "Idempotency-Key"?: string;
8452
+ body: WebhookCreateInput;
8453
+ signal?: AbortSignal;
8454
+ headers?: HeadersInit;
8455
+ }): Promise<WebhookSecretEnvelope>;
8456
+ setWebhookSubscriptionActive(args: {
8457
+ "id": string;
8458
+ "Idempotency-Key"?: string;
8459
+ body: WebhookActiveInput;
8460
+ signal?: AbortSignal;
8461
+ headers?: HeadersInit;
8462
+ }): Promise<WebhookSubscriptionEnvelope>;
8463
+ rotateWebhookSecret(args: {
8464
+ "id": string;
8465
+ "Idempotency-Key"?: string;
8466
+ body: WebhookRotateInput;
8467
+ signal?: AbortSignal;
8468
+ headers?: HeadersInit;
8469
+ }): Promise<WebhookSecretEnvelope>;
8470
+ deleteWebhookSubscription(args: {
8471
+ "id": string;
8472
+ "Idempotency-Key"?: string;
8473
+ body: WebhookVersionInput;
8474
+ signal?: AbortSignal;
8475
+ headers?: HeadersInit;
8476
+ }): Promise<WebhookSubscriptionEnvelope>;
8477
+ listWebhookDeliveries(args?: {
8478
+ query?: {
8479
+ "subscription_id"?: string;
8480
+ "status"?: "pending" | "processing" | "delivered" | "failed";
8481
+ "per_page"?: number;
8482
+ "cursor"?: string;
8483
+ };
8484
+ signal?: AbortSignal;
8485
+ headers?: HeadersInit;
8486
+ }): Promise<WebhookDeliveryPage>;
8487
+ replayWebhookDelivery(args: {
8488
+ "id": string;
8489
+ "Idempotency-Key"?: string;
8490
+ body: WebhookReplayInput;
8491
+ signal?: AbortSignal;
8492
+ headers?: HeadersInit;
8493
+ }): Promise<WebhookDeliveryEnvelope>;
8494
+ getCsvImportCapabilities(args?: {
8495
+ signal?: AbortSignal;
8496
+ headers?: HeadersInit;
8497
+ }): Promise<CsvImportCapabilitiesEnvelope>;
8498
+ uploadCsvImport(args: {
8499
+ "X-CSV-SHA256": string;
8500
+ "X-CSV-Bytes": number;
8501
+ body: CsvImportUploadBytes;
8502
+ signal?: AbortSignal;
8503
+ headers?: HeadersInit;
8504
+ }): Promise<CsvImportRunEnvelope>;
8505
+ getCsvImportMapping(args: {
8506
+ "runId": string;
8507
+ signal?: AbortSignal;
8508
+ headers?: HeadersInit;
8509
+ }): Promise<CsvImportMappingStateEnvelope>;
8510
+ mapCsvImport(args: {
8511
+ "runId": string;
8512
+ body: CsvImportMapping;
8513
+ signal?: AbortSignal;
8514
+ headers?: HeadersInit;
8515
+ }): Promise<CsvImportRunEnvelope>;
8516
+ previewCsvImport(args: {
8517
+ "runId": string;
8518
+ body?: CsvImportPreviewRequest;
8519
+ signal?: AbortSignal;
8520
+ headers?: HeadersInit;
8521
+ }): Promise<CsvImportPreviewEnvelope>;
8522
+ getCsvImport(args: {
8523
+ "runId": string;
8524
+ signal?: AbortSignal;
8525
+ headers?: HeadersInit;
8526
+ }): Promise<CsvImportRunEnvelope>;
8527
+ listCsvImportErrors(args: {
8528
+ "runId": string;
8529
+ query?: {
8530
+ "preview_id"?: string;
8531
+ "cursor"?: string;
8532
+ "per_page"?: number;
8533
+ "kind"?: "invalid" | "unsupported" | "warning";
8534
+ };
8535
+ signal?: AbortSignal;
8536
+ headers?: HeadersInit;
8537
+ }): Promise<CsvImportErrorPageEnvelope>;
8538
+ listCsvImportCatalog(args: {
8539
+ "runId": string;
8540
+ query: {
8541
+ "preview_id"?: string;
8542
+ "cursor"?: string;
8543
+ "per_page"?: number;
8544
+ "kind": "people" | "clients" | "projects" | "tasks";
8545
+ "source_key"?: string;
8546
+ };
8547
+ signal?: AbortSignal;
8548
+ headers?: HeadersInit;
8549
+ }): Promise<CsvImportCatalogPageEnvelope>;
8550
+ downloadCsvImportDiagnostics(args: {
8551
+ "runId": string;
8552
+ query?: {
8553
+ "preview_id"?: string;
8554
+ };
8555
+ signal?: AbortSignal;
8556
+ headers?: HeadersInit;
8557
+ }): Promise<ArrayBuffer>;
8558
+ purgeCsvImportInput(args: {
8559
+ "runId": string;
8560
+ signal?: AbortSignal;
8561
+ headers?: HeadersInit;
8562
+ }): Promise<void>;
8563
+ applyCsvImport(args: {
8564
+ "runId": string;
8565
+ "Idempotency-Key": string;
8566
+ body: CsvImportApplyCommand;
8567
+ signal?: AbortSignal;
8568
+ headers?: HeadersInit;
8569
+ }): Promise<CsvImportApplyEnvelope>;
8570
+ resumeCsvImport(args: {
8571
+ "runId": string;
8572
+ "Idempotency-Key": string;
8573
+ body: CsvImportApplyCommand;
8574
+ signal?: AbortSignal;
8575
+ headers?: HeadersInit;
8576
+ }): Promise<CsvImportApplyEnvelope>;
8577
+ cancelCsvImport(args: {
8578
+ "runId": string;
8579
+ "Idempotency-Key": string;
8580
+ body: CsvImportCancelCommand;
8581
+ signal?: AbortSignal;
8582
+ headers?: HeadersInit;
8583
+ }): Promise<CsvImportApplyEnvelope>;
8584
+ getCsvImportApply(args: {
8585
+ "runId": string;
8586
+ query?: {
8587
+ "command_id"?: string;
8588
+ };
8589
+ signal?: AbortSignal;
8590
+ headers?: HeadersInit;
8591
+ }): Promise<CsvImportApplyEnvelope>;
4944
8592
  }