@conflict-hq/ezacto-client 0.1.0 → 0.1.2

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.
@@ -257,6 +257,80 @@ export type QuickBooksAuthorizeEnvelope = {
257
257
  "authorize_url": string;
258
258
  };
259
259
  };
260
+ export type WiseConnection = {
261
+ "profile_id": string;
262
+ "profile_name": string | null;
263
+ "payable_recipients": number;
264
+ "webhooks_verifiable": boolean;
265
+ };
266
+ export type WiseRecipient = {
267
+ "id": string;
268
+ "holder_name": string | null;
269
+ "currency": string;
270
+ "type": string;
271
+ "masked_summary": string | null;
272
+ "email": string | null;
273
+ };
274
+ export type WiseStatusEnvelope = {
275
+ "data": {
276
+ "configured": boolean;
277
+ "connection": WiseConnection | null;
278
+ };
279
+ };
280
+ export type WiseRecipientListEnvelope = {
281
+ "data": Array<WiseRecipient>;
282
+ };
283
+ export type WiseOnboardInput = {
284
+ "user_id": number;
285
+ "email": string;
286
+ "legal_name": string;
287
+ "currency": string;
288
+ };
289
+ export type WiseDestinationEnvelope = {
290
+ "data": {
291
+ "configured": boolean;
292
+ "destination": {
293
+ "id": number;
294
+ "kind": "account" | "contact";
295
+ "linked_at": string;
296
+ "linked_by_user_id": number;
297
+ "verified_at": string | null;
298
+ } | null;
299
+ };
300
+ };
301
+ export type WiseProposal = {
302
+ "user_id": number;
303
+ "name": string;
304
+ "payroll_email": string | null;
305
+ "matches": Array<WiseRecipient>;
306
+ };
307
+ export type WiseProposalListEnvelope = {
308
+ "data": Array<WiseProposal>;
309
+ };
310
+ export type WiseContactInput = {
311
+ "user_id": number;
312
+ "identifier": string;
313
+ "currency": string;
314
+ };
315
+ export type WiseContactEnvelope = {
316
+ "data": {
317
+ "user_id": number;
318
+ "contact": {
319
+ "id": string;
320
+ "name": string | null;
321
+ };
322
+ };
323
+ };
324
+ export type WiseLinkInput = {
325
+ "user_id": number;
326
+ "recipient_id": string;
327
+ };
328
+ export type WiseLinkEnvelope = {
329
+ "data": {
330
+ "user_id": number;
331
+ "recipient": WiseRecipient;
332
+ };
333
+ };
260
334
  export type QuickBooksConnectionEnvelope = {
261
335
  "data": QuickBooksConnection | null;
262
336
  };
@@ -589,6 +663,10 @@ export type TeamRateInput = {
589
663
  "amount_cents": number;
590
664
  "start_date": string | null;
591
665
  };
666
+ export type TeamRateRemovalInput = {
667
+ "expected_version": number;
668
+ "kind": "billable" | "cost";
669
+ };
592
670
  export type TeamCommandReceipt = {
593
671
  "target_user_id": number;
594
672
  "version": number;
@@ -729,6 +807,17 @@ export type TimeEntryNoteSettingsEnvelope = {
729
807
  "data": TimeEntryNoteSettings;
730
808
  "links": Links;
731
809
  };
810
+ export type Profile = {
811
+ "user_id": number;
812
+ "timezone": string;
813
+ };
814
+ export type ProfilePatch = {
815
+ "timezone"?: string;
816
+ };
817
+ export type ProfileEnvelope = {
818
+ "data": Profile;
819
+ "links": Links;
820
+ };
732
821
  export type TimeEntryOption = {
733
822
  "project_id": number;
734
823
  "task_id": number;
@@ -1514,6 +1603,12 @@ export type RecurringInvoice = {
1514
1603
  "next_issue_on": string;
1515
1604
  "amount_config": RecurringAmountConfig;
1516
1605
  "can_draw_from_retainer_id": number | null;
1606
+ "claims_project_ids": Array<number> | null;
1607
+ "claim_mode": "all" | "ceiling";
1608
+ "claim_ceiling_seconds": number | null;
1609
+ "claim_ceiling_cents": number | null;
1610
+ "claim_scope": "billable" | "tracked";
1611
+ "cost_alert_basis_points": number | null;
1517
1612
  "created_at": string;
1518
1613
  "updated_at": string;
1519
1614
  };
@@ -1539,6 +1634,33 @@ export type RecurringInvoicePage = {
1539
1634
  "links": PageLinks;
1540
1635
  "page": PageMetadata;
1541
1636
  };
1637
+ export type BandClaimBackfillInput = {
1638
+ "invoice_ids": Array<number>;
1639
+ "project_ids"?: Array<number>;
1640
+ "apply"?: boolean;
1641
+ };
1642
+ export type BandClaimBackfillLine = {
1643
+ "invoice_id": number;
1644
+ "number": string;
1645
+ "issue_date": string;
1646
+ "state": string;
1647
+ "amount_cents": number;
1648
+ "entry_count": number;
1649
+ "seconds": number;
1650
+ "billable_value_cents": number;
1651
+ "entries_without_billable_rate": number;
1652
+ "foregone_billable_cents": number;
1653
+ };
1654
+ export type BandClaimBackfill = {
1655
+ "run_id": string;
1656
+ "applied": boolean;
1657
+ "invoices": Array<BandClaimBackfillLine>;
1658
+ "remaining_entry_count": number;
1659
+ "remaining_seconds": number;
1660
+ };
1661
+ export type BandClaimBackfillEnvelope = {
1662
+ "data": BandClaimBackfill;
1663
+ };
1542
1664
  export type RecurringInvoiceInput = {
1543
1665
  "client_id": number;
1544
1666
  "subject_template": string;
@@ -1548,6 +1670,12 @@ export type RecurringInvoiceInput = {
1548
1670
  "next_issue_on": string;
1549
1671
  "amount_config": RecurringAmountConfig;
1550
1672
  "can_draw_from_retainer_id"?: number | null;
1673
+ "claims_project_ids"?: Array<number> | null;
1674
+ "claim_mode"?: "all" | "ceiling";
1675
+ "claim_ceiling_seconds"?: number | null;
1676
+ "claim_ceiling_cents"?: number | null;
1677
+ "claim_scope"?: "billable" | "tracked";
1678
+ "cost_alert_basis_points"?: number | null;
1551
1679
  };
1552
1680
  export type MyHoursProject = {
1553
1681
  "project_id": number;
@@ -1595,8 +1723,11 @@ export type DetailedTimeRow = {
1595
1723
  "time_entry_count": number;
1596
1724
  "billable_amount_cents"?: number | null;
1597
1725
  "entries_without_billable_rate": number;
1726
+ "claimed": boolean;
1598
1727
  "time_entry_id"?: number;
1728
+ "invoice_id"?: number | null;
1599
1729
  "notes"?: string | null;
1730
+ "project_active"?: boolean;
1600
1731
  };
1601
1732
  export type DetailedTimeCurrencyTotal = {
1602
1733
  "currency": string;
@@ -1608,13 +1739,20 @@ export type DetailedTimeReport = {
1608
1739
  "to": string;
1609
1740
  "client_id": number | null;
1610
1741
  "project_id": number | null;
1611
- "hours": "all" | "billable" | "non_billable" | "uninvoiced";
1742
+ "task_id": number | null;
1743
+ "user_id": number | null;
1744
+ "role_id": number | null;
1745
+ "tag_id": number | null;
1746
+ "invoice_state": "all" | "invoiced" | "uninvoiced";
1747
+ "hours": "all" | "billable" | "non_billable" | "uninvoiced" | "claimed" | "unclaimed";
1612
1748
  "grain": "day" | "entry";
1613
1749
  "active_projects_only": boolean;
1614
1750
  "seconds": number;
1615
1751
  "rounded_seconds": number;
1616
1752
  "billable_seconds": number;
1617
1753
  "uninvoiced_billable_seconds": number;
1754
+ "claimed_seconds": number;
1755
+ "unclaimed_seconds": number;
1618
1756
  "time_entry_count": number;
1619
1757
  "currencies": Array<DetailedTimeCurrencyTotal>;
1620
1758
  "rows": Array<DetailedTimeRow>;
@@ -1623,6 +1761,27 @@ export type DetailedTimeReportEnvelope = {
1623
1761
  "data": DetailedTimeReport;
1624
1762
  "links": Links;
1625
1763
  };
1764
+ export type ReportTimeActionInput = {
1765
+ "command_id": string;
1766
+ "action": "mark_invoiced" | "mark_uninvoiced" | "move";
1767
+ "entry_ids": Array<number>;
1768
+ "confirmed": true;
1769
+ "invoice_id"?: number;
1770
+ "project_id"?: number;
1771
+ "task_id"?: number;
1772
+ };
1773
+ export type ReportTimeAction = {
1774
+ "command_id": string;
1775
+ "action": "mark_invoiced" | "mark_uninvoiced" | "move";
1776
+ "requested": number;
1777
+ "changed_entry_ids": Array<number>;
1778
+ "ineligible_entry_ids": Array<number>;
1779
+ "replayed": boolean;
1780
+ };
1781
+ export type ReportTimeActionEnvelope = {
1782
+ "data": ReportTimeAction;
1783
+ "links": Links;
1784
+ };
1626
1785
  export type TimeReportAmount = {
1627
1786
  "currency": string;
1628
1787
  "billable_cents": number;
@@ -1685,6 +1844,7 @@ export type TimeReportTeammateRow = {
1685
1844
  export type TimeReport = {
1686
1845
  "from": string;
1687
1846
  "to": string;
1847
+ "fixed_fee_included": boolean;
1688
1848
  "totals": TimeReportTotals;
1689
1849
  "clients": Array<TimeReportClientRow>;
1690
1850
  "projects": Array<TimeReportProjectRow>;
@@ -1732,7 +1892,11 @@ export type ContractorCostRow = {
1732
1892
  "is_contractor": boolean;
1733
1893
  "currency": string;
1734
1894
  "rounded_seconds": number;
1895
+ "utilization_ppm": number | null;
1735
1896
  "cost_cents": number | null;
1897
+ "cost_rate_cents": number | null;
1898
+ "cost_rate_is_mixed": boolean;
1899
+ "entry_count": number;
1736
1900
  "entries_without_rate": number;
1737
1901
  };
1738
1902
  export type ContractorCostReport = {
@@ -1744,6 +1908,191 @@ export type ContractorCostReportEnvelope = {
1744
1908
  "data": ContractorCostReport;
1745
1909
  "links": Links;
1746
1910
  };
1911
+ export type InvoicedReportTotal = {
1912
+ "currency": string;
1913
+ "invoice_count": number;
1914
+ "invoiced_cents"?: number;
1915
+ "paid_cents"?: number;
1916
+ "balance_cents"?: number;
1917
+ };
1918
+ export type InvoicedReportRow = {
1919
+ "invoice_id": number;
1920
+ "number": string;
1921
+ "state": "draft" | "open" | "paid" | "closed";
1922
+ "close_reason": "cancelled" | "written_off" | "source_closed" | null;
1923
+ "issue_date": string;
1924
+ "due_date": string;
1925
+ "client_id": number;
1926
+ "client_name": string;
1927
+ "subject": string | null;
1928
+ "currency": string;
1929
+ "invoiced_cents"?: number;
1930
+ "paid_cents"?: number;
1931
+ "balance_cents"?: number;
1932
+ };
1933
+ export type InvoicedReport = {
1934
+ "from": string;
1935
+ "to": string;
1936
+ "client_id": number | null;
1937
+ "status": "draft" | "open" | "paid" | "closed" | null;
1938
+ "totals": Array<InvoicedReportTotal>;
1939
+ "rows": Array<InvoicedReportRow>;
1940
+ };
1941
+ export type InvoicedReportEnvelope = {
1942
+ "data": InvoicedReport;
1943
+ "links": Links;
1944
+ };
1945
+ export type PaymentsReceivedReportTotal = {
1946
+ "currency": string;
1947
+ "payment_count": number;
1948
+ "payment_cents"?: number;
1949
+ };
1950
+ export type PaymentReceivedReportRow = {
1951
+ "payment_id": number;
1952
+ "payment_date": string;
1953
+ "invoice_id": number;
1954
+ "invoice_number": string;
1955
+ "client_id": number;
1956
+ "client_name": string;
1957
+ "currency": string;
1958
+ "provider": string;
1959
+ "invoice_total_cents"?: number;
1960
+ "payment_cents"?: number;
1961
+ };
1962
+ export type PaymentsReceivedReport = {
1963
+ "from": string;
1964
+ "to": string;
1965
+ "client_id": number | null;
1966
+ "totals": Array<PaymentsReceivedReportTotal>;
1967
+ "rows": Array<PaymentReceivedReportRow>;
1968
+ };
1969
+ export type PaymentsReceivedReportEnvelope = {
1970
+ "data": PaymentsReceivedReport;
1971
+ "links": Links;
1972
+ };
1973
+ export type ReceivablesReportTotal = {
1974
+ "currency": string;
1975
+ "invoice_count": number;
1976
+ "invoiced_cents"?: number;
1977
+ "outstanding_cents"?: number;
1978
+ "not_due_cents"?: number;
1979
+ "days_1_to_30_cents"?: number;
1980
+ "days_31_to_60_cents"?: number;
1981
+ "days_61_to_90_cents"?: number;
1982
+ "days_90_plus_cents"?: number;
1983
+ };
1984
+ export type ReceivablesReportRow = {
1985
+ "client_id": number;
1986
+ "client_name": string;
1987
+ "currency": string;
1988
+ "invoice_count": number;
1989
+ "invoiced_cents"?: number;
1990
+ "outstanding_cents"?: number;
1991
+ "not_due_cents"?: number;
1992
+ "days_1_to_30_cents"?: number;
1993
+ "days_31_to_60_cents"?: number;
1994
+ "days_61_to_90_cents"?: number;
1995
+ "days_90_plus_cents"?: number;
1996
+ };
1997
+ export type ReceivablesReport = {
1998
+ "as_of": string;
1999
+ "client_id": number | null;
2000
+ "totals": Array<ReceivablesReportTotal>;
2001
+ "rows": Array<ReceivablesReportRow>;
2002
+ };
2003
+ export type ReceivablesReportEnvelope = {
2004
+ "data": ReceivablesReport;
2005
+ "links": Links;
2006
+ };
2007
+ export type ReportDefinitionPresentation = {
2008
+ "result": "summary" | "detailed";
2009
+ "grouped": boolean;
2010
+ "include_zero_values": boolean;
2011
+ };
2012
+ export type SavedReportInput = {
2013
+ "name": string;
2014
+ "fields": Array<{
2015
+ [key: string]: unknown;
2016
+ }>;
2017
+ "metrics": Array<string>;
2018
+ "filters": Array<{
2019
+ [key: string]: unknown;
2020
+ }>;
2021
+ "group_by": {
2022
+ [key: string]: unknown;
2023
+ } | null;
2024
+ "presentation": ReportDefinitionPresentation;
2025
+ };
2026
+ export type SavedReportUpdate = {
2027
+ "version": number;
2028
+ "name"?: string;
2029
+ "fields"?: Array<{
2030
+ [key: string]: unknown;
2031
+ }>;
2032
+ "metrics"?: Array<string>;
2033
+ "filters"?: Array<{
2034
+ [key: string]: unknown;
2035
+ }>;
2036
+ "group_by"?: {
2037
+ [key: string]: unknown;
2038
+ } | null;
2039
+ "presentation"?: ReportDefinitionPresentation;
2040
+ };
2041
+ export type SavedReport = {
2042
+ "id": string;
2043
+ "name": string;
2044
+ "version": number;
2045
+ "fields": Array<{
2046
+ [key: string]: unknown;
2047
+ }>;
2048
+ "metrics": Array<string>;
2049
+ "filters": Array<{
2050
+ [key: string]: unknown;
2051
+ }>;
2052
+ "group_by": {
2053
+ [key: string]: unknown;
2054
+ } | null;
2055
+ "presentation": ReportDefinitionPresentation;
2056
+ "owner": {
2057
+ [key: string]: unknown;
2058
+ };
2059
+ "is_custom": boolean;
2060
+ "pinned": boolean;
2061
+ "shared": boolean;
2062
+ "created_at": string;
2063
+ "updated_at": string;
2064
+ };
2065
+ export type SavedReportEnvelope = {
2066
+ "data": SavedReport;
2067
+ "links": Links;
2068
+ };
2069
+ export type SavedReportListEnvelope = {
2070
+ "data": Array<SavedReport>;
2071
+ };
2072
+ export type ReportRunnerResult = {
2073
+ "definitionId": string;
2074
+ "definitionVersion": number;
2075
+ "state": "ready" | "empty" | "too_many_rows";
2076
+ "rows": Array<{
2077
+ [key: string]: unknown;
2078
+ }>;
2079
+ };
2080
+ export type ReportRunnerEnvelope = {
2081
+ "data": ReportRunnerResult;
2082
+ "links": Links;
2083
+ };
2084
+ export type ReportDefinitionRegistry = {
2085
+ "fields": Array<{
2086
+ [key: string]: unknown;
2087
+ }>;
2088
+ "metrics": Array<{
2089
+ [key: string]: unknown;
2090
+ }>;
2091
+ };
2092
+ export type ReportDefinitionRegistryEnvelope = {
2093
+ "data": ReportDefinitionRegistry;
2094
+ "links": Links;
2095
+ };
1747
2096
  export type DetailedExpenseRow = {
1748
2097
  "expense_id": number;
1749
2098
  "spent_date": string;
@@ -1774,7 +2123,12 @@ export type DetailedExpenseReport = {
1774
2123
  "to": string;
1775
2124
  "client_id": number | null;
1776
2125
  "project_id": number | null;
1777
- "billable_only": boolean;
2126
+ "category_id": number | null;
2127
+ "user_id": number | null;
2128
+ "billable": boolean | null;
2129
+ "reimbursable": boolean | null;
2130
+ "invoice_state": "all" | "invoiced" | "uninvoiced";
2131
+ "active_projects_only": boolean;
1778
2132
  "totals": Array<DetailedExpenseTotal>;
1779
2133
  "rows": Array<DetailedExpenseRow>;
1780
2134
  };
@@ -1782,6 +2136,70 @@ export type DetailedExpenseReportEnvelope = {
1782
2136
  "data": DetailedExpenseReport;
1783
2137
  "links": Links;
1784
2138
  };
2139
+ export type MonthEndItem = {
2140
+ "subject_type": string;
2141
+ "subject_id": number;
2142
+ "description": string;
2143
+ "amount_cents": number | null;
2144
+ "currency": string | null;
2145
+ "target": string | null;
2146
+ "brand_name": string | null;
2147
+ "cost_cents": number | null;
2148
+ "margin_cents": number | null;
2149
+ };
2150
+ export type MonthEndExclusion = {
2151
+ "invoice_id": number;
2152
+ "number": string;
2153
+ "reason": string;
2154
+ };
2155
+ export type MonthEndManifest = {
2156
+ "period_start": string;
2157
+ "period_end": string;
2158
+ "items": Array<MonthEndItem>;
2159
+ "excluded": Array<MonthEndExclusion>;
2160
+ };
2161
+ export type MonthEndManifestEnvelope = {
2162
+ "data": MonthEndManifest;
2163
+ "links": Links;
2164
+ };
2165
+ export type BandedMonthRow = {
2166
+ "period_start": string;
2167
+ "period_end": string;
2168
+ "project_id": number;
2169
+ "project_name": string;
2170
+ "client_id": number;
2171
+ "client_name": string;
2172
+ "currency": string;
2173
+ "rounded_seconds": number;
2174
+ "billable_value_cents": number | null;
2175
+ "cost_value_cents": number | null;
2176
+ "entries_without_billable_rate": number;
2177
+ "entries_without_cost_rate": number;
2178
+ "claimed_in_other_currency": number;
2179
+ "billed_cents": number | null;
2180
+ "foregone_cents": number | null;
2181
+ "cost_ratio_basis_points": number | null;
2182
+ "cost_alert_basis_points": number;
2183
+ "cost_ratio_state": "within" | "over" | "unpriced" | "unbilled";
2184
+ };
2185
+ export type BandedMonthReport = {
2186
+ "from": string;
2187
+ "to": string;
2188
+ "rows": Array<BandedMonthRow>;
2189
+ };
2190
+ export type BandedMonthReportEnvelope = {
2191
+ "data": BandedMonthReport;
2192
+ "links": Links;
2193
+ };
2194
+ export type BandCostAlert = {
2195
+ "basis_points": number;
2196
+ };
2197
+ export type BandCostAlertEnvelope = {
2198
+ "data": BandCostAlert;
2199
+ };
2200
+ export type BandCostAlertInput = {
2201
+ "basis_points": number;
2202
+ };
1785
2203
  export type ProfitabilityRow = {
1786
2204
  "project_id": number;
1787
2205
  "project_name": string;
@@ -1793,6 +2211,9 @@ export type ProfitabilityRow = {
1793
2211
  "revenue_cents": number | null;
1794
2212
  "cost_cents": number | null;
1795
2213
  "profit_cents": number | null;
2214
+ "return_on_cost_ppm": number | null;
2215
+ "revenue_fee_cents": number;
2216
+ "fees_included_in_delivery_cost_cents": number;
1796
2217
  "entries_without_billable_rate": number;
1797
2218
  "entries_without_cost_rate": number;
1798
2219
  };
@@ -1801,16 +2222,50 @@ export type ProfitabilityTotals = {
1801
2222
  "revenue_cents": number | null;
1802
2223
  "cost_cents": number | null;
1803
2224
  "profit_cents": number | null;
2225
+ "return_on_cost_ppm": number | null;
2226
+ "revenue_fee_cents": number;
2227
+ "fees_included_in_delivery_cost_cents": number;
1804
2228
  "entries_without_billable_rate": number;
1805
2229
  "entries_without_cost_rate": number;
1806
2230
  "projects_not_converted": number;
1807
2231
  };
2232
+ export type ProfitabilityDimensionRow = {
2233
+ "dimension_id": number;
2234
+ "dimension_name": string;
2235
+ "currency": string;
2236
+ "rounded_seconds": number;
2237
+ "revenue_cents": number | null;
2238
+ "cost_cents": number | null;
2239
+ "profit_cents": number | null;
2240
+ "return_on_cost_ppm": number | null;
2241
+ "revenue_fee_cents": number;
2242
+ "fees_included_in_delivery_cost_cents": number;
2243
+ "entries_without_billable_rate": number;
2244
+ "entries_without_cost_rate": number;
2245
+ "included_in_headline": boolean;
2246
+ };
2247
+ export type ProfitabilityTrendRow = (ProfitabilityDimensionRow) & ({
2248
+ "period_start": string;
2249
+ "period_end": string;
2250
+ "current": boolean;
2251
+ });
2252
+ export type ProfitabilityFilters = {
2253
+ "project_status": "all" | "active" | "archived";
2254
+ "billing_method": "non_billable" | "time_materials" | "fixed_fee" | null;
2255
+ "manager_id": number | null;
2256
+ "tag_id": number | null;
2257
+ };
1808
2258
  export type ProfitabilityReport = {
1809
2259
  "from": string;
1810
2260
  "to": string;
1811
2261
  "organization_currency": string;
1812
2262
  "rows": Array<ProfitabilityRow>;
2263
+ "clients": Array<ProfitabilityDimensionRow>;
2264
+ "teammates": Array<ProfitabilityDimensionRow>;
2265
+ "tasks": Array<ProfitabilityDimensionRow>;
2266
+ "trend": Array<ProfitabilityTrendRow>;
1813
2267
  "totals": ProfitabilityTotals;
2268
+ "filters": ProfitabilityFilters;
1814
2269
  "previous_from": string;
1815
2270
  "previous_to": string;
1816
2271
  "previous_totals": ProfitabilityTotals;
@@ -1917,6 +2372,15 @@ export type ModuleListEnvelope = {
1917
2372
  "data": Array<ModuleState>;
1918
2373
  "links": Links;
1919
2374
  };
2375
+ export type SignInMethodState = {
2376
+ "method": "password" | "magic_link" | "google" | "github" | "apple";
2377
+ "configured": boolean;
2378
+ "enabled": boolean;
2379
+ };
2380
+ export type SignInMethodListEnvelope = {
2381
+ "data": Array<SignInMethodState>;
2382
+ "links": Links;
2383
+ };
1920
2384
  export type SsoDomain = {
1921
2385
  "id": number;
1922
2386
  "domain": string;
@@ -2004,6 +2468,69 @@ export type BillClientDelivery = {
2004
2468
  export type BillClientDeliveryEnvelope = {
2005
2469
  "data": BillClientDelivery;
2006
2470
  };
2471
+ export type InvoicePaymentLinkEnvelope = {
2472
+ "data": {
2473
+ "invoice_id": number;
2474
+ "url": string;
2475
+ };
2476
+ };
2477
+ export type IncompleteRecurringInvoiceListEnvelope = {
2478
+ "data": Array<{
2479
+ "id": number;
2480
+ "harvest_id": number;
2481
+ "client_id": number;
2482
+ "client_name": string;
2483
+ "invoice_count": number;
2484
+ "created_at": string;
2485
+ "updated_at": string;
2486
+ }>;
2487
+ };
2488
+ export type RecurringInvoiceCompletionEnvelope = {
2489
+ "data": {
2490
+ "id": number;
2491
+ "completed": boolean;
2492
+ };
2493
+ };
2494
+ export type InvoiceThankYouPreferenceEnvelope = {
2495
+ "data": {
2496
+ "invoice_id": number;
2497
+ "auto_thank_you": boolean;
2498
+ "organization_auto_thank_you": boolean;
2499
+ "effective": boolean;
2500
+ };
2501
+ };
2502
+ export type OrganizationInvoiceThankYouEnvelope = {
2503
+ "data": {
2504
+ "auto_thank_you": boolean;
2505
+ };
2506
+ };
2507
+ export type InvoiceDocumentPreferenceEnvelope = {
2508
+ "data": {
2509
+ "invoice_id": number;
2510
+ "attach_pdf": boolean;
2511
+ "organization_attach_pdf": boolean;
2512
+ "effective": boolean;
2513
+ "attach_files": boolean;
2514
+ "organization_attach_files": boolean;
2515
+ "effective_files": boolean;
2516
+ "attach_journal": "detailed" | "summary" | boolean;
2517
+ "organization_attach_journal": "detailed" | "summary" | boolean;
2518
+ "effective_journal": "detailed" | "summary" | boolean;
2519
+ };
2520
+ };
2521
+ export type OrganizationInvoiceDocumentsEnvelope = {
2522
+ "data": {
2523
+ "attach_pdf": boolean;
2524
+ "attach_files": boolean;
2525
+ "attach_journal": "detailed" | "summary" | boolean;
2526
+ };
2527
+ };
2528
+ export type ReleasedTimeEnvelope = {
2529
+ "data": {
2530
+ "invoice_id": number;
2531
+ "released": number;
2532
+ };
2533
+ };
2007
2534
  export type PayoutAccount = {
2008
2535
  "id": number;
2009
2536
  "user_id": number;
@@ -2050,6 +2577,25 @@ export type TwoFactorEnrolmentEnvelope = {
2050
2577
  export type TwoFactorCodeInput = {
2051
2578
  "code": string;
2052
2579
  };
2580
+ export type TwoFactorChallengeIssued = {
2581
+ "status": "two_factor_required";
2582
+ "challenge": string;
2583
+ "expires_at": string;
2584
+ };
2585
+ export type TwoFactorChallengeInput = {
2586
+ "code": string;
2587
+ "challenge"?: string;
2588
+ };
2589
+ export type TwoFactorChallengeAccepted = {
2590
+ "status": "authenticated";
2591
+ };
2592
+ export type TwoFactorChallengeAcceptedEnvelope = {
2593
+ "data": TwoFactorChallengeAccepted;
2594
+ };
2595
+ export type SignInResult = AuthPrincipal | TwoFactorChallengeIssued;
2596
+ export type SignInResultEnvelope = {
2597
+ "data": SignInResult;
2598
+ };
2053
2599
  export type UserEmailInput = {
2054
2600
  "email": string;
2055
2601
  };
@@ -2095,7 +2641,12 @@ export declare class EzactoClient {
2095
2641
  body: PasswordSignInInput;
2096
2642
  signal?: AbortSignal;
2097
2643
  headers?: HeadersInit;
2098
- }): Promise<AuthPrincipalEnvelope>;
2644
+ }): Promise<SignInResultEnvelope>;
2645
+ completeTwoFactorChallenge(args: {
2646
+ body: TwoFactorChallengeInput;
2647
+ signal?: AbortSignal;
2648
+ headers?: HeadersInit;
2649
+ }): Promise<TwoFactorChallengeAcceptedEnvelope>;
2099
2650
  requestPasswordReset(args: {
2100
2651
  body: EmailInput;
2101
2652
  signal?: AbortSignal;
@@ -2239,6 +2790,15 @@ export declare class EzactoClient {
2239
2790
  signal?: AbortSignal;
2240
2791
  headers?: HeadersInit;
2241
2792
  }): Promise<ApiTokenEnvelope>;
2793
+ getProfile(args?: {
2794
+ signal?: AbortSignal;
2795
+ headers?: HeadersInit;
2796
+ }): Promise<ProfileEnvelope>;
2797
+ updateProfile(args: {
2798
+ body: ProfilePatch;
2799
+ signal?: AbortSignal;
2800
+ headers?: HeadersInit;
2801
+ }): Promise<ProfileEnvelope>;
2242
2802
  listClients(args?: {
2243
2803
  query?: {
2244
2804
  "cursor"?: string;
@@ -2801,6 +3361,7 @@ export declare class EzactoClient {
2801
3361
  "cursor"?: string;
2802
3362
  "per_page"?: number;
2803
3363
  "state"?: string;
3364
+ "client_id"?: string;
2804
3365
  };
2805
3366
  signal?: AbortSignal;
2806
3367
  headers?: HeadersInit;
@@ -2936,6 +3497,7 @@ export declare class EzactoClient {
2936
3497
  query?: {
2937
3498
  "cursor"?: string;
2938
3499
  "per_page"?: number;
3500
+ "client_id"?: string;
2939
3501
  };
2940
3502
  signal?: AbortSignal;
2941
3503
  headers?: HeadersInit;
@@ -3006,6 +3568,13 @@ export declare class EzactoClient {
3006
3568
  signal?: AbortSignal;
3007
3569
  headers?: HeadersInit;
3008
3570
  }): Promise<void>;
3571
+ backfillRecurringInvoiceClaims(args: {
3572
+ "id": number;
3573
+ "Idempotency-Key": string;
3574
+ body: BandClaimBackfillInput;
3575
+ signal?: AbortSignal;
3576
+ headers?: HeadersInit;
3577
+ }): Promise<BandClaimBackfillEnvelope>;
3009
3578
  generateRecurringInvoice(args: {
3010
3579
  "id": number;
3011
3580
  "Idempotency-Key": string;
@@ -3132,6 +3701,77 @@ export declare class EzactoClient {
3132
3701
  signal?: AbortSignal;
3133
3702
  headers?: HeadersInit;
3134
3703
  }): Promise<ArrayBuffer>;
3704
+ getReportDefinitionRegistry(args?: {
3705
+ signal?: AbortSignal;
3706
+ headers?: HeadersInit;
3707
+ }): Promise<ReportDefinitionRegistryEnvelope>;
3708
+ listSavedReports(args?: {
3709
+ query?: {
3710
+ "view"?: "all" | "yours" | "shared";
3711
+ "q"?: string;
3712
+ "custom_only"?: boolean;
3713
+ };
3714
+ signal?: AbortSignal;
3715
+ headers?: HeadersInit;
3716
+ }): Promise<SavedReportListEnvelope>;
3717
+ createSavedReport(args: {
3718
+ body: SavedReportInput;
3719
+ signal?: AbortSignal;
3720
+ headers?: HeadersInit;
3721
+ }): Promise<SavedReportEnvelope>;
3722
+ previewReportDefinition(args: {
3723
+ body: SavedReportInput;
3724
+ signal?: AbortSignal;
3725
+ headers?: HeadersInit;
3726
+ }): Promise<ReportRunnerEnvelope>;
3727
+ getSavedReport(args: {
3728
+ "reportId": string;
3729
+ signal?: AbortSignal;
3730
+ headers?: HeadersInit;
3731
+ }): Promise<SavedReportEnvelope>;
3732
+ updateSavedReport(args: {
3733
+ "reportId": string;
3734
+ body: SavedReportUpdate;
3735
+ signal?: AbortSignal;
3736
+ headers?: HeadersInit;
3737
+ }): Promise<SavedReportEnvelope>;
3738
+ deleteSavedReport(args: {
3739
+ "reportId": string;
3740
+ signal?: AbortSignal;
3741
+ headers?: HeadersInit;
3742
+ }): Promise<void>;
3743
+ duplicateSavedReport(args: {
3744
+ "reportId": string;
3745
+ signal?: AbortSignal;
3746
+ headers?: HeadersInit;
3747
+ }): Promise<SavedReportEnvelope>;
3748
+ pinSavedReport(args: {
3749
+ "reportId": string;
3750
+ signal?: AbortSignal;
3751
+ headers?: HeadersInit;
3752
+ }): Promise<void>;
3753
+ unpinSavedReport(args: {
3754
+ "reportId": string;
3755
+ signal?: AbortSignal;
3756
+ headers?: HeadersInit;
3757
+ }): Promise<void>;
3758
+ shareSavedReport(args: {
3759
+ "reportId": string;
3760
+ "userId": number;
3761
+ signal?: AbortSignal;
3762
+ headers?: HeadersInit;
3763
+ }): Promise<void>;
3764
+ unshareSavedReport(args: {
3765
+ "reportId": string;
3766
+ "userId": number;
3767
+ signal?: AbortSignal;
3768
+ headers?: HeadersInit;
3769
+ }): Promise<void>;
3770
+ runSavedReport(args: {
3771
+ "reportId": string;
3772
+ signal?: AbortSignal;
3773
+ headers?: HeadersInit;
3774
+ }): Promise<ReportRunnerEnvelope>;
3135
3775
  getMyHoursReport(args: {
3136
3776
  query: {
3137
3777
  "from": string;
@@ -3145,10 +3785,38 @@ export declare class EzactoClient {
3145
3785
  query: {
3146
3786
  "from": string;
3147
3787
  "to": string;
3788
+ "include_fixed_fee"?: boolean;
3148
3789
  };
3149
3790
  signal?: AbortSignal;
3150
3791
  headers?: HeadersInit;
3151
3792
  }): Promise<TimeReportEnvelope>;
3793
+ getInvoicedReport(args: {
3794
+ query: {
3795
+ "from": string;
3796
+ "to": string;
3797
+ "client_id"?: number;
3798
+ "status"?: "draft" | "open" | "paid" | "closed";
3799
+ };
3800
+ signal?: AbortSignal;
3801
+ headers?: HeadersInit;
3802
+ }): Promise<InvoicedReportEnvelope>;
3803
+ getPaymentsReceivedReport(args: {
3804
+ query: {
3805
+ "from": string;
3806
+ "to": string;
3807
+ "client_id"?: number;
3808
+ };
3809
+ signal?: AbortSignal;
3810
+ headers?: HeadersInit;
3811
+ }): Promise<PaymentsReceivedReportEnvelope>;
3812
+ getReceivablesReport(args: {
3813
+ query: {
3814
+ "as_of": string;
3815
+ "client_id"?: number;
3816
+ };
3817
+ signal?: AbortSignal;
3818
+ headers?: HeadersInit;
3819
+ }): Promise<ReceivablesReportEnvelope>;
3152
3820
  getContractorCostReport(args: {
3153
3821
  query: {
3154
3822
  "from": string;
@@ -3157,10 +3825,39 @@ export declare class EzactoClient {
3157
3825
  signal?: AbortSignal;
3158
3826
  headers?: HeadersInit;
3159
3827
  }): Promise<ContractorCostReportEnvelope>;
3828
+ getMonthEndManifest(args: {
3829
+ query: {
3830
+ "from": string;
3831
+ "to": string;
3832
+ };
3833
+ signal?: AbortSignal;
3834
+ headers?: HeadersInit;
3835
+ }): Promise<MonthEndManifestEnvelope>;
3836
+ getBandedMonthReport(args: {
3837
+ query: {
3838
+ "from": string;
3839
+ "to": string;
3840
+ };
3841
+ signal?: AbortSignal;
3842
+ headers?: HeadersInit;
3843
+ }): Promise<BandedMonthReportEnvelope>;
3844
+ getBandCostAlert(args?: {
3845
+ signal?: AbortSignal;
3846
+ headers?: HeadersInit;
3847
+ }): Promise<BandCostAlertEnvelope>;
3848
+ setBandCostAlert(args: {
3849
+ body: BandCostAlertInput;
3850
+ signal?: AbortSignal;
3851
+ headers?: HeadersInit;
3852
+ }): Promise<BandCostAlertEnvelope>;
3160
3853
  getProfitabilityReport(args: {
3161
3854
  query: {
3162
3855
  "from": string;
3163
3856
  "to": string;
3857
+ "project_status"?: "all" | "active" | "archived";
3858
+ "billing_method"?: "non_billable" | "time_materials" | "fixed_fee";
3859
+ "manager_id"?: number;
3860
+ "tag_id"?: number;
3164
3861
  };
3165
3862
  signal?: AbortSignal;
3166
3863
  headers?: HeadersInit;
@@ -3171,7 +3868,12 @@ export declare class EzactoClient {
3171
3868
  "to": string;
3172
3869
  "client_id"?: number;
3173
3870
  "project_id"?: number;
3174
- "billable_only"?: boolean;
3871
+ "category_id"?: number;
3872
+ "user_id"?: number;
3873
+ "billable"?: boolean;
3874
+ "reimbursable"?: boolean;
3875
+ "invoice_state"?: "all" | "invoiced" | "uninvoiced";
3876
+ "active_projects_only"?: boolean;
3175
3877
  };
3176
3878
  signal?: AbortSignal;
3177
3879
  headers?: HeadersInit;
@@ -3192,13 +3894,23 @@ export declare class EzactoClient {
3192
3894
  "to": string;
3193
3895
  "client_id"?: number;
3194
3896
  "project_id"?: number;
3195
- "hours"?: "all" | "billable" | "non_billable" | "uninvoiced";
3897
+ "task_id"?: number;
3898
+ "user_id"?: number;
3899
+ "role_id"?: number;
3900
+ "tag_id"?: number;
3901
+ "hours"?: "all" | "billable" | "non_billable" | "uninvoiced" | "claimed" | "unclaimed";
3196
3902
  "grain"?: "day" | "entry";
3903
+ "invoice_state"?: "all" | "invoiced" | "uninvoiced";
3197
3904
  "active_projects_only"?: boolean;
3198
3905
  };
3199
3906
  signal?: AbortSignal;
3200
3907
  headers?: HeadersInit;
3201
3908
  }): Promise<DetailedTimeReportEnvelope>;
3909
+ executeDetailedTimeAction(args: {
3910
+ body: ReportTimeActionInput;
3911
+ signal?: AbortSignal;
3912
+ headers?: HeadersInit;
3913
+ }): Promise<ReportTimeActionEnvelope>;
3202
3914
  getClientRollupReport(args: {
3203
3915
  "clientId": number;
3204
3916
  query: {
@@ -3235,6 +3947,16 @@ export declare class EzactoClient {
3235
3947
  signal?: AbortSignal;
3236
3948
  headers?: HeadersInit;
3237
3949
  }): Promise<ModuleListEnvelope>;
3950
+ listSignInMethods(args?: {
3951
+ signal?: AbortSignal;
3952
+ headers?: HeadersInit;
3953
+ }): Promise<SignInMethodListEnvelope>;
3954
+ updateSignInMethod(args: {
3955
+ "method": string;
3956
+ body: ModulePatch;
3957
+ signal?: AbortSignal;
3958
+ headers?: HeadersInit;
3959
+ }): Promise<SignInMethodListEnvelope>;
3238
3960
  getBackupStatus(args?: {
3239
3961
  signal?: AbortSignal;
3240
3962
  headers?: HeadersInit;
@@ -3256,6 +3978,48 @@ export declare class EzactoClient {
3256
3978
  signal?: AbortSignal;
3257
3979
  headers?: HeadersInit;
3258
3980
  }): Promise<void>;
3981
+ getWiseConnection(args?: {
3982
+ signal?: AbortSignal;
3983
+ headers?: HeadersInit;
3984
+ }): Promise<WiseStatusEnvelope>;
3985
+ listWiseRecipients(args?: {
3986
+ signal?: AbortSignal;
3987
+ headers?: HeadersInit;
3988
+ }): Promise<WiseRecipientListEnvelope>;
3989
+ onboardWiseRecipient(args: {
3990
+ body: WiseOnboardInput;
3991
+ signal?: AbortSignal;
3992
+ headers?: HeadersInit;
3993
+ }): Promise<WiseLinkEnvelope>;
3994
+ listWisePayoutProposals(args?: {
3995
+ signal?: AbortSignal;
3996
+ headers?: HeadersInit;
3997
+ }): Promise<WiseProposalListEnvelope>;
3998
+ getWisePayoutDestination(args: {
3999
+ "userId": number;
4000
+ signal?: AbortSignal;
4001
+ headers?: HeadersInit;
4002
+ }): Promise<WiseDestinationEnvelope>;
4003
+ removeWisePayoutDestination(args: {
4004
+ "userId": number;
4005
+ signal?: AbortSignal;
4006
+ headers?: HeadersInit;
4007
+ }): Promise<void>;
4008
+ shareWiseProfile(args: {
4009
+ body: WiseContactInput;
4010
+ signal?: AbortSignal;
4011
+ headers?: HeadersInit;
4012
+ }): Promise<WiseContactEnvelope>;
4013
+ linkWiseRecipient(args: {
4014
+ body: WiseLinkInput;
4015
+ signal?: AbortSignal;
4016
+ headers?: HeadersInit;
4017
+ }): Promise<WiseLinkEnvelope>;
4018
+ unlinkWiseRecipient(args: {
4019
+ "accountId": number;
4020
+ signal?: AbortSignal;
4021
+ headers?: HeadersInit;
4022
+ }): Promise<void>;
3259
4023
  listSsoProvisioningDomains(args?: {
3260
4024
  signal?: AbortSignal;
3261
4025
  headers?: HeadersInit;
@@ -3301,6 +4065,61 @@ export declare class EzactoClient {
3301
4065
  signal?: AbortSignal;
3302
4066
  headers?: HeadersInit;
3303
4067
  }): Promise<void>;
4068
+ getInvoicePaymentLink(args: {
4069
+ "id": number;
4070
+ signal?: AbortSignal;
4071
+ headers?: HeadersInit;
4072
+ }): Promise<InvoicePaymentLinkEnvelope>;
4073
+ releaseInvoicedTime(args: {
4074
+ "id": number;
4075
+ signal?: AbortSignal;
4076
+ headers?: HeadersInit;
4077
+ }): Promise<ReleasedTimeEnvelope>;
4078
+ getInvoiceDocumentPreference(args: {
4079
+ "id": number;
4080
+ signal?: AbortSignal;
4081
+ headers?: HeadersInit;
4082
+ }): Promise<InvoiceDocumentPreferenceEnvelope>;
4083
+ setInvoiceDocumentPreference(args: {
4084
+ "id": number;
4085
+ signal?: AbortSignal;
4086
+ headers?: HeadersInit;
4087
+ }): Promise<InvoiceDocumentPreferenceEnvelope>;
4088
+ getOrganizationInvoiceDocuments(args?: {
4089
+ signal?: AbortSignal;
4090
+ headers?: HeadersInit;
4091
+ }): Promise<OrganizationInvoiceDocumentsEnvelope>;
4092
+ setOrganizationInvoiceDocuments(args?: {
4093
+ signal?: AbortSignal;
4094
+ headers?: HeadersInit;
4095
+ }): Promise<OrganizationInvoiceDocumentsEnvelope>;
4096
+ getInvoiceThankYouPreference(args: {
4097
+ "id": number;
4098
+ signal?: AbortSignal;
4099
+ headers?: HeadersInit;
4100
+ }): Promise<InvoiceThankYouPreferenceEnvelope>;
4101
+ setInvoiceThankYouPreference(args: {
4102
+ "id": number;
4103
+ signal?: AbortSignal;
4104
+ headers?: HeadersInit;
4105
+ }): Promise<InvoiceThankYouPreferenceEnvelope>;
4106
+ getOrganizationInvoiceThankYou(args?: {
4107
+ signal?: AbortSignal;
4108
+ headers?: HeadersInit;
4109
+ }): Promise<OrganizationInvoiceThankYouEnvelope>;
4110
+ setOrganizationInvoiceThankYou(args?: {
4111
+ signal?: AbortSignal;
4112
+ headers?: HeadersInit;
4113
+ }): Promise<OrganizationInvoiceThankYouEnvelope>;
4114
+ listIncompleteRecurringInvoices(args?: {
4115
+ signal?: AbortSignal;
4116
+ headers?: HeadersInit;
4117
+ }): Promise<IncompleteRecurringInvoiceListEnvelope>;
4118
+ completeRecurringInvoiceDefinition(args: {
4119
+ "id": number;
4120
+ signal?: AbortSignal;
4121
+ headers?: HeadersInit;
4122
+ }): Promise<RecurringInvoiceCompletionEnvelope>;
3304
4123
  listPayoutAccounts(args: {
3305
4124
  "id": number;
3306
4125
  signal?: AbortSignal;
@@ -3408,6 +4227,14 @@ export declare class EzactoClient {
3408
4227
  signal?: AbortSignal;
3409
4228
  headers?: HeadersInit;
3410
4229
  }): Promise<TeamCommandReceiptEnvelope>;
4230
+ removeTeamPersonRate(args: {
4231
+ "id": number;
4232
+ "rateId": number;
4233
+ "Idempotency-Key": string;
4234
+ body: TeamRateRemovalInput;
4235
+ signal?: AbortSignal;
4236
+ headers?: HeadersInit;
4237
+ }): Promise<TeamCommandReceiptEnvelope>;
3411
4238
  listClientAncestors(args: {
3412
4239
  "id": number;
3413
4240
  signal?: AbortSignal;