@firela/api-types 0.0.0-canary.da8dfd93 → 0.0.0-canary.e6edf4ac

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.
@@ -99,6 +99,14 @@ import type {
99
99
  CommodityControllerGetOrCreateResponse,
100
100
  CommodityControllerBulkCreateData,
101
101
  CommodityControllerBulkCreateResponse,
102
+ ReportingControllerGetPortfolioTrendsData,
103
+ ReportingControllerGetPortfolioTrendsResponse,
104
+ ReportingControllerGetCashFlowTrendsData,
105
+ ReportingControllerGetCashFlowTrendsResponse,
106
+ ReportingControllerGenerateSnapshotData,
107
+ ReportingControllerGenerateSnapshotResponse,
108
+ ReportingControllerBackfillSnapshotsData,
109
+ ReportingControllerBackfillSnapshotsResponse,
102
110
  PriceControllerCreateData,
103
111
  PriceControllerCreateResponse,
104
112
  PriceControllerFindAllData,
@@ -111,6 +119,28 @@ import type {
111
119
  PriceControllerDeleteResponse,
112
120
  PriceControllerBulkCreateData,
113
121
  PriceControllerBulkCreateResponse,
122
+ UserControllerDeleteOwnUserData,
123
+ UserControllerDeleteOwnUserResponse,
124
+ UserControllerGetUserData,
125
+ UserControllerGetUserResponse,
126
+ UserControllerSignupUserData,
127
+ UserControllerSignupUserResponse,
128
+ UserControllerDeleteUserData,
129
+ UserControllerDeleteUserResponse,
130
+ UserControllerGetUserInfoData,
131
+ UserControllerGetUserInfoResponse,
132
+ UserControllerUpdateUserSettingData,
133
+ UserControllerUpdateUserSettingResponse,
134
+ UserControllerGetAllUserSettingsByPageData,
135
+ UserControllerGetAllUserSettingsByPageResponse,
136
+ UserControllerGetAssetLiabilitySummaryResponse,
137
+ PropertyControllerGetAllResponse,
138
+ PropertyControllerGetByKeyData,
139
+ PropertyControllerGetByKeyResponse,
140
+ PropertyControllerUpdateData,
141
+ PropertyControllerUpdateResponse,
142
+ PropertyControllerDeleteData,
143
+ PropertyControllerDeleteResponse,
114
144
  RecurringRuleControllerCreateData,
115
145
  RecurringRuleControllerCreateResponse,
116
146
  RecurringRuleControllerFindAllData,
@@ -143,36 +173,6 @@ import type {
143
173
  ExpectedTransactionControllerEnterNowResponse,
144
174
  ForecastControllerGetForecastData,
145
175
  ForecastControllerGetForecastResponse,
146
- ReportingControllerGetPortfolioTrendsData,
147
- ReportingControllerGetPortfolioTrendsResponse,
148
- ReportingControllerGetCashFlowTrendsData,
149
- ReportingControllerGetCashFlowTrendsResponse,
150
- ReportingControllerGenerateSnapshotData,
151
- ReportingControllerGenerateSnapshotResponse,
152
- ReportingControllerBackfillSnapshotsData,
153
- ReportingControllerBackfillSnapshotsResponse,
154
- UserControllerDeleteOwnUserData,
155
- UserControllerDeleteOwnUserResponse,
156
- UserControllerGetUserData,
157
- UserControllerGetUserResponse,
158
- UserControllerSignupUserData,
159
- UserControllerSignupUserResponse,
160
- UserControllerDeleteUserData,
161
- UserControllerDeleteUserResponse,
162
- UserControllerGetUserInfoData,
163
- UserControllerGetUserInfoResponse,
164
- UserControllerUpdateUserSettingData,
165
- UserControllerUpdateUserSettingResponse,
166
- UserControllerGetAllUserSettingsByPageData,
167
- UserControllerGetAllUserSettingsByPageResponse,
168
- UserControllerGetAssetLiabilitySummaryResponse,
169
- PropertyControllerGetAllResponse,
170
- PropertyControllerGetByKeyData,
171
- PropertyControllerGetByKeyResponse,
172
- PropertyControllerUpdateData,
173
- PropertyControllerUpdateResponse,
174
- PropertyControllerDeleteData,
175
- PropertyControllerDeleteResponse,
176
176
  TransactionRuleControllerCreateData,
177
177
  TransactionRuleControllerCreateResponse,
178
178
  TransactionRuleControllerListData,
@@ -263,6 +263,8 @@ import type {
263
263
  PlatformControllerGetPlatformListResponse,
264
264
  PlatformControllerMatchPlatformsData,
265
265
  PlatformControllerMatchPlatformsResponse,
266
+ PlatformControllerGetPlatformStandardsData,
267
+ PlatformControllerGetPlatformStandardsResponse,
266
268
  PlatformControllerUpdateData,
267
269
  PlatformControllerUpdateResponse,
268
270
  PlatformControllerDeleteData,
@@ -280,6 +282,8 @@ import type {
280
282
  ApiKeysControllerCreateApiKeyResponse,
281
283
  AuthControllerAccessTokenLoginData,
282
284
  AuthControllerAccessTokenLoginResponse,
285
+ ParserContributionControllerCreateData,
286
+ ParserContributionControllerCreateResponse,
283
287
  CacheControllerFlushCacheResponse,
284
288
  ExchangeRateControllerGetExchangeRateData,
285
289
  ExchangeRateControllerGetExchangeRateResponse,
@@ -533,7 +537,7 @@ export class BeanAccountStandardsService {
533
537
  * @param data The data for the request.
534
538
  * @param data.region Region code (cn, us, de)
535
539
  * @param data.type Filter by account type
536
- * @param data.search Search term for path or description
540
+ * @param data.search Search term for path, description, aliases, or localized display name
537
541
  * @returns AccountStandardListResponseDto Account templates retrieved successfully
538
542
  * @throws ApiError
539
543
  */
@@ -638,10 +642,11 @@ export class BeanTransactionsService {
638
642
  * @param data.offset Number of items to skip (default: 0)
639
643
  * @param data.dateFrom Filter by start date (inclusive), format: YYYY-MM-DD
640
644
  * @param data.dateTo Filter by end date (inclusive), format: YYYY-MM-DD
641
- * @param data.status Filter by transaction status
645
+ * @param data.status Filter by transaction status: single value, comma-separated multi-value (e.g. VOIDED,SUPERSEDED), or ALL to include audit rows. Defaults to ACTIVE-only (ADR-0128; previously unfiltered — breaking change).
642
646
  * @param data.search Search in narration and payee fields (max 200 chars)
643
647
  * @param data.accountId Filter by account ID (transactions with postings to this account)
644
- * @param data.category Filter by ADR-0075 functional category (Group segment); matches any posting to an Expenses/Income account whose derived Group segment equals this value
648
+ * @param data.category Filter by ADR-0075 functional category (Group segment); matches any posting to an account whose derived Group segment equals this value. Must be accompanied by flow (ADR-0126).
649
+ * @param data.flow Required when category is present (400 otherwise) and vice versa (ADR-0126). Restricts the category account set to the flow root (income → Income:, expense → Expenses:) and drives the per-leg sign normalization of row viewpointAmount and the summary. OpenAPI cannot express conditional requiredness — the pairing is enforced at runtime.
645
650
  * @returns TransactionListResponseDto Transaction list
646
651
  * @throws ApiError
647
652
  */
@@ -662,7 +667,8 @@ export class BeanTransactionsService {
662
667
  status: data.status,
663
668
  search: data.search,
664
669
  accountId: data.accountId,
665
- category: data.category
670
+ category: data.category,
671
+ flow: data.flow
666
672
  },
667
673
  errors: {
668
674
  400: 'Validation failed',
@@ -1375,7 +1381,7 @@ export class AdminPayeeProfilesService {
1375
1381
  * Removes verification status by setting verifiedAt to null.
1376
1382
  * @param data The data for the request.
1377
1383
  * @param data.id Payee profile ID (UUID)
1378
- * @returns PayeeProfileResponseDto Payee profile unverified successfully
1384
+ * @returns void Payee profile unverified successfully
1379
1385
  * @throws ApiError
1380
1386
  */
1381
1387
  public static payeeProfileAdminControllerUnverify(
@@ -1571,6 +1577,163 @@ export class BeanCommoditiesService {
1571
1577
  }
1572
1578
  }
1573
1579
 
1580
+ export class ReportingService {
1581
+ /**
1582
+ * Get portfolio value trends
1583
+ *
1584
+ * Returns time series data of portfolio net worth.
1585
+ *
1586
+ * **Multi-currency Support:**
1587
+ * - `series[].byCurrency` - Currency breakdown for each data point
1588
+ * - `byCurrency` - Separate time series grouped by currency
1589
+ * - `warnings` - Exchange rate warnings if conversion failed
1590
+ *
1591
+ * **Parameters:**
1592
+ * - `period`: Time period (1m, 3m, 6m, 1y)
1593
+ * - `granularity`: Data granularity (day, week, month)
1594
+ *
1595
+ * @param data The data for the request.
1596
+ * @param data.region Region code for tenant context
1597
+ * @param data.period Time period
1598
+ * @param data.granularity Data granularity
1599
+ * @returns PortfolioTrendsResponseDto Trends retrieved successfully
1600
+ * @throws ApiError
1601
+ */
1602
+ public static reportingControllerGetPortfolioTrends(
1603
+ data: ReportingControllerGetPortfolioTrendsData
1604
+ ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
1605
+ return __request(OpenAPI, {
1606
+ method: 'GET',
1607
+ url: '/api/v1/{region}/reporting/portfolio/trends',
1608
+ path: {
1609
+ region: data.region
1610
+ },
1611
+ query: {
1612
+ period: data.period,
1613
+ granularity: data.granularity
1614
+ },
1615
+ errors: {
1616
+ 401: 'User not authenticated'
1617
+ }
1618
+ });
1619
+ }
1620
+
1621
+ /**
1622
+ * Get cash-flow trends
1623
+ *
1624
+ * Monthly income / expense / netSavings over a fixed N-month window
1625
+ * (current month + N−1 prior). Missing months are zero-filled (flow metric).
1626
+ *
1627
+ * **Parameters:**
1628
+ * - `period`: 1m | 3m | 6m | 1y (default 6m)
1629
+ * - `granularity`: accepted for API symmetry; v1 returns month buckets
1630
+ *
1631
+ * @param data The data for the request.
1632
+ * @param data.region Region code for tenant context
1633
+ * @param data.period Time period
1634
+ * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
1635
+ * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
1636
+ * @throws ApiError
1637
+ */
1638
+ public static reportingControllerGetCashFlowTrends(
1639
+ data: ReportingControllerGetCashFlowTrendsData
1640
+ ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
1641
+ return __request(OpenAPI, {
1642
+ method: 'GET',
1643
+ url: '/api/v1/{region}/reporting/cash-flow/trends',
1644
+ path: {
1645
+ region: data.region
1646
+ },
1647
+ query: {
1648
+ period: data.period,
1649
+ granularity: data.granularity
1650
+ },
1651
+ errors: {
1652
+ 401: 'User not authenticated'
1653
+ }
1654
+ });
1655
+ }
1656
+
1657
+ /**
1658
+ * Generate portfolio snapshot
1659
+ *
1660
+ * Manually generate a portfolio snapshot for a specific date.
1661
+ *
1662
+ * **Multi-currency Support:**
1663
+ * - Fetches balances grouped by currency
1664
+ * - Uses user's baseCurrency setting for conversion
1665
+ * - Stores exchange rates and warnings
1666
+ *
1667
+ * **Use Cases:**
1668
+ * - Testing snapshot generation
1669
+ * - Force regeneration after data correction
1670
+ * - Initial setup for new users
1671
+ *
1672
+ * @param data The data for the request.
1673
+ * @param data.region Region code for tenant context
1674
+ * @param data.requestBody Optional date (defaults to today)
1675
+ * @returns GenerateSnapshotResponse Snapshot generated successfully
1676
+ * @throws ApiError
1677
+ */
1678
+ public static reportingControllerGenerateSnapshot(
1679
+ data: ReportingControllerGenerateSnapshotData
1680
+ ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
1681
+ return __request(OpenAPI, {
1682
+ method: 'POST',
1683
+ url: '/api/v1/{region}/reporting/snapshots/generate',
1684
+ path: {
1685
+ region: data.region
1686
+ },
1687
+ body: data.requestBody,
1688
+ mediaType: 'application/json',
1689
+ errors: {
1690
+ 400: 'Invalid date format',
1691
+ 401: 'User not authenticated'
1692
+ }
1693
+ });
1694
+ }
1695
+
1696
+ /**
1697
+ * Backfill portfolio snapshots
1698
+ *
1699
+ * Generate snapshots for a date range (historical data backfill).
1700
+ *
1701
+ * **Multi-currency Support:**
1702
+ * - Each snapshot includes multi-currency data
1703
+ * - Uses exchange rates available at generation time
1704
+ * - Warnings stored for missing exchange rates
1705
+ *
1706
+ * **Best Practices:**
1707
+ * - Use for initial setup after account configuration
1708
+ * - Run during low-traffic periods for large date ranges
1709
+ * - Existing snapshots are skipped (not regenerated)
1710
+ *
1711
+ * @param data The data for the request.
1712
+ * @param data.region Region code for tenant context
1713
+ * @param data.requestBody
1714
+ * @returns BackfillSnapshotsResponse Backfill completed successfully
1715
+ * @throws ApiError
1716
+ */
1717
+ public static reportingControllerBackfillSnapshots(
1718
+ data: ReportingControllerBackfillSnapshotsData
1719
+ ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
1720
+ return __request(OpenAPI, {
1721
+ method: 'POST',
1722
+ url: '/api/v1/{region}/reporting/snapshots/backfill',
1723
+ path: {
1724
+ region: data.region
1725
+ },
1726
+ body: data.requestBody,
1727
+ mediaType: 'application/json',
1728
+ errors: {
1729
+ 400: 'Invalid date format or range',
1730
+ 401: 'User not authenticated',
1731
+ 409: 'Backfill already in progress for this user'
1732
+ }
1733
+ });
1734
+ }
1735
+ }
1736
+
1574
1737
  export class BeanPricesService {
1575
1738
  /**
1576
1739
  * Create a new price
@@ -1738,843 +1901,686 @@ export class BeanPricesService {
1738
1901
  }
1739
1902
  }
1740
1903
 
1741
- export class RecurringRulesService {
1904
+ export class UsersService {
1742
1905
  /**
1743
- * Create a new recurring rule
1744
- * Creates a new recurring transaction rule for the authenticated user
1906
+ * Delete own user account
1745
1907
  * @param data The data for the request.
1746
- * @param data.region Region code for tenant context
1747
1908
  * @param data.requestBody
1748
- * @returns RecurringRuleResponseDto Rule created successfully
1909
+ * @returns void User deleted successfully
1749
1910
  * @throws ApiError
1750
1911
  */
1751
- public static recurringRuleControllerCreate(
1752
- data: RecurringRuleControllerCreateData
1753
- ): CancelablePromise<RecurringRuleControllerCreateResponse> {
1912
+ public static userControllerDeleteOwnUser(
1913
+ data: UserControllerDeleteOwnUserData
1914
+ ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
1754
1915
  return __request(OpenAPI, {
1755
- method: 'POST',
1756
- url: '/api/v1/{region}/bean/recurring-rules',
1757
- path: {
1758
- region: data.region
1759
- },
1916
+ method: 'DELETE',
1917
+ url: '/api/v1/users',
1760
1918
  body: data.requestBody,
1761
1919
  mediaType: 'application/json',
1762
1920
  errors: {
1763
- 400: 'Invalid input data (e.g., autoCreate without accounts)',
1764
- 409: 'Rule with same name already exists'
1921
+ 403: 'Invalid access token'
1765
1922
  }
1766
1923
  });
1767
1924
  }
1768
1925
 
1769
1926
  /**
1770
- * List recurring rules
1771
- * Returns all recurring rules for the authenticated user with optional filtering
1927
+ * Get current authenticated user
1772
1928
  * @param data The data for the request.
1773
- * @param data.region Region code for tenant context
1774
- * @param data.isActive Filter by active status
1775
- * @param data.frequency Filter by frequency (WEEKLY, MONTHLY, etc.)
1776
- * @param data.hasAutoCreate Filter by autoCreate enabled
1777
- * @returns RecurringRuleResponseDto Rules retrieved successfully
1929
+ * @param data.acceptLanguage
1930
+ * @returns UserResponseDto User retrieved successfully
1778
1931
  * @throws ApiError
1779
1932
  */
1780
- public static recurringRuleControllerFindAll(
1781
- data: RecurringRuleControllerFindAllData
1782
- ): CancelablePromise<RecurringRuleControllerFindAllResponse> {
1933
+ public static userControllerGetUser(
1934
+ data: UserControllerGetUserData
1935
+ ): CancelablePromise<UserControllerGetUserResponse> {
1783
1936
  return __request(OpenAPI, {
1784
1937
  method: 'GET',
1785
- url: '/api/v1/{region}/bean/recurring-rules',
1786
- path: {
1787
- region: data.region
1788
- },
1789
- query: {
1790
- isActive: data.isActive,
1791
- frequency: data.frequency,
1792
- hasAutoCreate: data.hasAutoCreate
1938
+ url: '/api/v1/users',
1939
+ headers: {
1940
+ 'accept-language': data.acceptLanguage
1793
1941
  }
1794
1942
  });
1795
1943
  }
1796
1944
 
1797
1945
  /**
1798
- * Create recurring rule from transaction
1799
- * Auto-creates a recurring rule using transaction data. User only confirms frequency.
1946
+ * Sign up new user
1947
+ * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
1800
1948
  * @param data The data for the request.
1801
- * @param data.transactionId Source transaction ID
1802
- * @param data.region Region code for tenant context
1803
1949
  * @param data.requestBody
1804
- * @returns RecurringRuleResponseDto Rule created successfully
1950
+ * @returns SignupResponseDto User created successfully
1805
1951
  * @throws ApiError
1806
1952
  */
1807
- public static recurringRuleControllerCreateFromTransaction(
1808
- data: RecurringRuleControllerCreateFromTransactionData
1809
- ): CancelablePromise<RecurringRuleControllerCreateFromTransactionResponse> {
1953
+ public static userControllerSignupUser(
1954
+ data: UserControllerSignupUserData
1955
+ ): CancelablePromise<UserControllerSignupUserResponse> {
1810
1956
  return __request(OpenAPI, {
1811
1957
  method: 'POST',
1812
- url: '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}',
1813
- path: {
1814
- transactionId: data.transactionId,
1815
- region: data.region
1816
- },
1958
+ url: '/api/v1/users',
1817
1959
  body: data.requestBody,
1818
1960
  mediaType: 'application/json',
1819
1961
  errors: {
1820
- 404: 'Transaction not found',
1821
- 409: 'Rule with same name already exists or transaction already linked'
1962
+ 400: 'Invalid Turnstile token (when Turnstile is enabled)',
1963
+ 403: 'User signup is disabled'
1822
1964
  }
1823
1965
  });
1824
1966
  }
1825
1967
 
1826
1968
  /**
1827
- * Get recurring rule by ID
1828
- * Returns a specific recurring rule with its details
1969
+ * Delete user by ID (admin only)
1829
1970
  * @param data The data for the request.
1830
- * @param data.id Rule ID
1831
- * @param data.region Region code for tenant context
1832
- * @returns RecurringRuleResponseDto Rule retrieved successfully
1971
+ * @param data.id User ID to delete
1972
+ * @returns void User deleted successfully
1833
1973
  * @throws ApiError
1834
1974
  */
1835
- public static recurringRuleControllerFindOne(
1836
- data: RecurringRuleControllerFindOneData
1837
- ): CancelablePromise<RecurringRuleControllerFindOneResponse> {
1975
+ public static userControllerDeleteUser(
1976
+ data: UserControllerDeleteUserData
1977
+ ): CancelablePromise<UserControllerDeleteUserResponse> {
1838
1978
  return __request(OpenAPI, {
1839
- method: 'GET',
1840
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
1979
+ method: 'DELETE',
1980
+ url: '/api/v1/users/{id}',
1841
1981
  path: {
1842
- id: data.id,
1843
- region: data.region
1982
+ id: data.id
1844
1983
  },
1845
1984
  errors: {
1846
- 404: 'Rule not found'
1985
+ 403: 'Cannot delete own account or insufficient permissions'
1847
1986
  }
1848
1987
  });
1849
1988
  }
1850
1989
 
1851
1990
  /**
1852
- * Update recurring rule
1853
- * Updates an existing recurring rule
1991
+ * Get user info by user ID
1854
1992
  * @param data The data for the request.
1855
- * @param data.id Rule ID
1856
- * @param data.region Region code for tenant context
1857
- * @param data.requestBody
1858
- * @returns RecurringRuleResponseDto Rule updated successfully
1993
+ * @param data.id User ID
1994
+ * @returns unknown User info retrieved successfully
1859
1995
  * @throws ApiError
1860
1996
  */
1861
- public static recurringRuleControllerUpdate(
1862
- data: RecurringRuleControllerUpdateData
1863
- ): CancelablePromise<RecurringRuleControllerUpdateResponse> {
1997
+ public static userControllerGetUserInfo(
1998
+ data: UserControllerGetUserInfoData
1999
+ ): CancelablePromise<UserControllerGetUserInfoResponse> {
1864
2000
  return __request(OpenAPI, {
1865
- method: 'PATCH',
1866
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
2001
+ method: 'GET',
2002
+ url: '/api/v1/users/{id}/info',
1867
2003
  path: {
1868
- id: data.id,
1869
- region: data.region
2004
+ id: data.id
1870
2005
  },
1871
- body: data.requestBody,
1872
- mediaType: 'application/json',
1873
2006
  errors: {
1874
- 400: 'Invalid input data',
1875
- 404: 'Rule not found'
2007
+ 403: 'Cannot access other user info without admin permission'
1876
2008
  }
1877
2009
  });
1878
2010
  }
1879
2011
 
1880
2012
  /**
1881
- * Delete recurring rule
1882
- * Soft deletes a recurring rule (sets isActive to false)
2013
+ * Update user settings
1883
2014
  * @param data The data for the request.
1884
- * @param data.id Rule ID
1885
- * @param data.region Region code for tenant context
1886
- * @returns void Rule deleted successfully
2015
+ * @param data.requestBody
2016
+ * @returns unknown Settings updated successfully
1887
2017
  * @throws ApiError
1888
2018
  */
1889
- public static recurringRuleControllerDelete(
1890
- data: RecurringRuleControllerDeleteData
1891
- ): CancelablePromise<RecurringRuleControllerDeleteResponse> {
2019
+ public static userControllerUpdateUserSetting(
2020
+ data: UserControllerUpdateUserSettingData
2021
+ ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
1892
2022
  return __request(OpenAPI, {
1893
- method: 'DELETE',
1894
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
1895
- path: {
1896
- id: data.id,
1897
- region: data.region
1898
- },
2023
+ method: 'PUT',
2024
+ url: '/api/v1/users/setting',
2025
+ body: data.requestBody,
2026
+ mediaType: 'application/json',
1899
2027
  errors: {
1900
- 404: 'Rule not found'
2028
+ 403: 'Insufficient permissions'
1901
2029
  }
1902
2030
  });
1903
2031
  }
1904
2032
 
1905
2033
  /**
1906
- * Get rule with statistics
1907
- * Returns a rule with pending/overdue counts and next expected date
2034
+ * Get all user settings paginated (admin only)
1908
2035
  * @param data The data for the request.
1909
- * @param data.id Rule ID
1910
- * @param data.region Region code for tenant context
1911
- * @returns RecurringRuleWithStatsResponseDto Rule with stats retrieved successfully
2036
+ * @param data.pageNo Page number
2037
+ * @param data.pageSize Page size
2038
+ * @returns unknown Settings list retrieved successfully
1912
2039
  * @throws ApiError
1913
2040
  */
1914
- public static recurringRuleControllerGetWithStats(
1915
- data: RecurringRuleControllerGetWithStatsData
1916
- ): CancelablePromise<RecurringRuleControllerGetWithStatsResponse> {
2041
+ public static userControllerGetAllUserSettingsByPage(
2042
+ data: UserControllerGetAllUserSettingsByPageData
2043
+ ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
1917
2044
  return __request(OpenAPI, {
1918
2045
  method: 'GET',
1919
- url: '/api/v1/{region}/bean/recurring-rules/{id}/stats',
1920
- path: {
1921
- id: data.id,
1922
- region: data.region
1923
- },
1924
- errors: {
1925
- 404: 'Rule not found'
2046
+ url: '/api/v1/users/settings-by-page',
2047
+ query: {
2048
+ pageNo: data.pageNo,
2049
+ pageSize: data.pageSize
1926
2050
  }
1927
2051
  });
1928
2052
  }
1929
- }
1930
2053
 
1931
- export class ExpectedTransactionsService {
1932
2054
  /**
1933
- * List expected transactions
1934
- * Returns expected transactions for the authenticated user with optional filtering
1935
- * @param data The data for the request.
1936
- * @param data.region Region code for tenant context
1937
- * @param data.ruleId Filter by recurring rule ID
1938
- * @param data.status Filter by status (PENDING, COMPLETED, SKIPPED)
1939
- * @param data.fromDate Filter by date range start (YYYY-MM-DD)
1940
- * @param data.toDate Filter by date range end (YYYY-MM-DD)
1941
- * @returns ExpectedTransactionListResponseDto Expected transactions retrieved successfully
2055
+ * Get asset and liability summary for current user
2056
+ * @returns unknown Summary retrieved successfully
1942
2057
  * @throws ApiError
1943
2058
  */
1944
- public static expectedTransactionControllerFindAll(
1945
- data: ExpectedTransactionControllerFindAllData
1946
- ): CancelablePromise<ExpectedTransactionControllerFindAllResponse> {
2059
+ public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
1947
2060
  return __request(OpenAPI, {
1948
2061
  method: 'GET',
1949
- url: '/api/v1/{region}/bean/expected-transactions',
1950
- path: {
1951
- region: data.region
1952
- },
1953
- query: {
1954
- ruleId: data.ruleId,
1955
- status: data.status,
1956
- fromDate: data.fromDate,
1957
- toDate: data.toDate
1958
- }
2062
+ url: '/api/v1/users/asset-liability-summary'
1959
2063
  });
1960
2064
  }
2065
+ }
1961
2066
 
2067
+ export class PropertiesService {
1962
2068
  /**
1963
- * List overdue expected transactions
1964
- * Returns all overdue expected transactions (PENDING past tolerance)
1965
- * @param data The data for the request.
1966
- * @param data.region Region code for tenant context
1967
- * @returns ExpectedTransactionListResponseDto Overdue transactions retrieved successfully
2069
+ * Get all system properties
2070
+ * @returns unknown Properties retrieved successfully
1968
2071
  * @throws ApiError
1969
2072
  */
1970
- public static expectedTransactionControllerFindOverdue(
1971
- data: ExpectedTransactionControllerFindOverdueData
1972
- ): CancelablePromise<ExpectedTransactionControllerFindOverdueResponse> {
2073
+ public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
1973
2074
  return __request(OpenAPI, {
1974
2075
  method: 'GET',
1975
- url: '/api/v1/{region}/bean/expected-transactions/overdue',
1976
- path: {
1977
- region: data.region
2076
+ url: '/api/v1/admin/properties',
2077
+ errors: {
2078
+ 401: 'Unauthorized',
2079
+ 403: 'Forbidden - insufficient permissions'
1978
2080
  }
1979
2081
  });
1980
2082
  }
1981
2083
 
1982
2084
  /**
1983
- * Get expected transaction by ID
1984
- * Returns a specific expected transaction with rule details
2085
+ * Get property by key
1985
2086
  * @param data The data for the request.
1986
- * @param data.id Expected transaction ID
1987
- * @param data.region Region code for tenant context
1988
- * @returns ExpectedTransactionResponseDto Expected transaction retrieved successfully
2087
+ * @param data.key Property key
2088
+ * @returns unknown Property retrieved successfully
1989
2089
  * @throws ApiError
1990
2090
  */
1991
- public static expectedTransactionControllerFindOne(
1992
- data: ExpectedTransactionControllerFindOneData
1993
- ): CancelablePromise<ExpectedTransactionControllerFindOneResponse> {
2091
+ public static propertyControllerGetByKey(
2092
+ data: PropertyControllerGetByKeyData
2093
+ ): CancelablePromise<PropertyControllerGetByKeyResponse> {
1994
2094
  return __request(OpenAPI, {
1995
2095
  method: 'GET',
1996
- url: '/api/v1/{region}/bean/expected-transactions/{id}',
2096
+ url: '/api/v1/admin/properties/{key}',
1997
2097
  path: {
1998
- id: data.id,
1999
- region: data.region
2098
+ key: data.key
2000
2099
  },
2001
2100
  errors: {
2002
- 404: 'Expected transaction not found'
2101
+ 401: 'Unauthorized',
2102
+ 403: 'Forbidden - insufficient permissions',
2103
+ 404: 'Property not found'
2003
2104
  }
2004
2105
  });
2005
2106
  }
2006
2107
 
2007
2108
  /**
2008
- * Skip expected transaction
2009
- * Marks an expected transaction as skipped (PENDING -> SKIPPED)
2109
+ * Update a system property
2010
2110
  * @param data The data for the request.
2011
- * @param data.id Expected transaction ID
2012
- * @param data.region Region code for tenant context
2013
- * @returns ExpectedTransactionResponseDto Expected transaction skipped successfully
2111
+ * @param data.key Property key
2112
+ * @param data.requestBody
2113
+ * @returns unknown Property updated successfully
2014
2114
  * @throws ApiError
2015
2115
  */
2016
- public static expectedTransactionControllerSkip(
2017
- data: ExpectedTransactionControllerSkipData
2018
- ): CancelablePromise<ExpectedTransactionControllerSkipResponse> {
2116
+ public static propertyControllerUpdate(
2117
+ data: PropertyControllerUpdateData
2118
+ ): CancelablePromise<PropertyControllerUpdateResponse> {
2019
2119
  return __request(OpenAPI, {
2020
- method: 'POST',
2021
- url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2120
+ method: 'PUT',
2121
+ url: '/api/v1/admin/properties/{key}',
2022
2122
  path: {
2023
- id: data.id,
2024
- region: data.region
2123
+ key: data.key
2025
2124
  },
2125
+ body: data.requestBody,
2126
+ mediaType: 'application/json',
2026
2127
  errors: {
2027
- 400: 'Cannot skip - not in PENDING status',
2028
- 404: 'Expected transaction not found'
2128
+ 401: 'Unauthorized',
2129
+ 403: 'Forbidden - insufficient permissions'
2029
2130
  }
2030
2131
  });
2031
2132
  }
2032
2133
 
2033
2134
  /**
2034
- * Undo skip
2035
- * Reverses a skip operation (SKIPPED -> PENDING)
2135
+ * Delete a system property
2036
2136
  * @param data The data for the request.
2037
- * @param data.id Expected transaction ID
2038
- * @param data.region Region code for tenant context
2039
- * @returns ExpectedTransactionResponseDto Skip undone successfully
2137
+ * @param data.key Property key
2138
+ * @returns void Property deleted successfully
2040
2139
  * @throws ApiError
2041
2140
  */
2042
- public static expectedTransactionControllerUndoSkip(
2043
- data: ExpectedTransactionControllerUndoSkipData
2044
- ): CancelablePromise<ExpectedTransactionControllerUndoSkipResponse> {
2141
+ public static propertyControllerDelete(
2142
+ data: PropertyControllerDeleteData
2143
+ ): CancelablePromise<PropertyControllerDeleteResponse> {
2045
2144
  return __request(OpenAPI, {
2046
2145
  method: 'DELETE',
2047
- url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2146
+ url: '/api/v1/admin/properties/{key}',
2048
2147
  path: {
2049
- id: data.id,
2050
- region: data.region
2148
+ key: data.key
2051
2149
  },
2052
2150
  errors: {
2053
- 400: 'Cannot undo - not in SKIPPED status',
2054
- 404: 'Expected transaction not found'
2151
+ 401: 'Unauthorized',
2152
+ 403: 'Forbidden - insufficient permissions',
2153
+ 404: 'Property not found'
2055
2154
  }
2056
2155
  });
2057
2156
  }
2157
+ }
2058
2158
 
2159
+ export class RecurringRulesService {
2059
2160
  /**
2060
- * Confirm transaction match
2061
- * Manually matches an expected transaction with an actual transaction
2161
+ * Create a new recurring rule
2162
+ * Creates a new recurring transaction rule for the authenticated user
2062
2163
  * @param data The data for the request.
2063
- * @param data.id Expected transaction ID
2064
2164
  * @param data.region Region code for tenant context
2065
2165
  * @param data.requestBody
2066
- * @returns unknown Match confirmed successfully
2166
+ * @returns RecurringRuleResponseDto Rule created successfully
2067
2167
  * @throws ApiError
2068
2168
  */
2069
- public static expectedTransactionControllerConfirmMatch(
2070
- data: ExpectedTransactionControllerConfirmMatchData
2071
- ): CancelablePromise<ExpectedTransactionControllerConfirmMatchResponse> {
2169
+ public static recurringRuleControllerCreate(
2170
+ data: RecurringRuleControllerCreateData
2171
+ ): CancelablePromise<RecurringRuleControllerCreateResponse> {
2072
2172
  return __request(OpenAPI, {
2073
2173
  method: 'POST',
2074
- url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2174
+ url: '/api/v1/{region}/bean/recurring-rules',
2075
2175
  path: {
2076
- id: data.id,
2077
2176
  region: data.region
2078
2177
  },
2079
2178
  body: data.requestBody,
2080
2179
  mediaType: 'application/json',
2081
2180
  errors: {
2082
- 400: 'Cannot match - not in PENDING status',
2083
- 404: 'Expected or actual transaction not found',
2084
- 409: 'Actual transaction already matched to another rule'
2181
+ 400: 'Invalid input data (e.g., autoCreate without accounts)',
2182
+ 409: 'Rule with same name already exists'
2085
2183
  }
2086
2184
  });
2087
2185
  }
2088
2186
 
2089
2187
  /**
2090
- * Unmatch transaction
2091
- * Removes the match between expected and actual transaction (COMPLETED -> PENDING)
2188
+ * List recurring rules
2189
+ * Returns all recurring rules for the authenticated user with optional filtering
2092
2190
  * @param data The data for the request.
2093
- * @param data.id Expected transaction ID
2094
2191
  * @param data.region Region code for tenant context
2095
- * @returns unknown Match removed successfully
2192
+ * @param data.isActive Filter by active status
2193
+ * @param data.frequency Filter by frequency (WEEKLY, MONTHLY, etc.)
2194
+ * @param data.hasAutoCreate Filter by autoCreate enabled
2195
+ * @returns RecurringRuleResponseDto Rules retrieved successfully
2096
2196
  * @throws ApiError
2097
2197
  */
2098
- public static expectedTransactionControllerUnmatch(
2099
- data: ExpectedTransactionControllerUnmatchData
2100
- ): CancelablePromise<ExpectedTransactionControllerUnmatchResponse> {
2198
+ public static recurringRuleControllerFindAll(
2199
+ data: RecurringRuleControllerFindAllData
2200
+ ): CancelablePromise<RecurringRuleControllerFindAllResponse> {
2101
2201
  return __request(OpenAPI, {
2102
- method: 'DELETE',
2103
- url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2202
+ method: 'GET',
2203
+ url: '/api/v1/{region}/bean/recurring-rules',
2104
2204
  path: {
2105
- id: data.id,
2106
2205
  region: data.region
2107
2206
  },
2108
- errors: {
2109
- 400: 'Cannot unmatch - not in COMPLETED status',
2110
- 404: 'Expected transaction not found'
2207
+ query: {
2208
+ isActive: data.isActive,
2209
+ frequency: data.frequency,
2210
+ hasAutoCreate: data.hasAutoCreate
2111
2211
  }
2112
2212
  });
2113
2213
  }
2114
2214
 
2115
2215
  /**
2116
- * Enter Now
2117
- * Creates an actual transaction for an expected transaction (YNAB-style Enter Now)
2216
+ * Create recurring rule from transaction
2217
+ * Auto-creates a recurring rule using transaction data. User only confirms frequency.
2118
2218
  * @param data The data for the request.
2119
- * @param data.id Expected transaction ID
2219
+ * @param data.transactionId Source transaction ID
2120
2220
  * @param data.region Region code for tenant context
2121
2221
  * @param data.requestBody
2122
- * @returns unknown Transaction created successfully
2222
+ * @returns RecurringRuleResponseDto Rule created successfully
2123
2223
  * @throws ApiError
2124
2224
  */
2125
- public static expectedTransactionControllerEnterNow(
2126
- data: ExpectedTransactionControllerEnterNowData
2127
- ): CancelablePromise<ExpectedTransactionControllerEnterNowResponse> {
2225
+ public static recurringRuleControllerCreateFromTransaction(
2226
+ data: RecurringRuleControllerCreateFromTransactionData
2227
+ ): CancelablePromise<RecurringRuleControllerCreateFromTransactionResponse> {
2128
2228
  return __request(OpenAPI, {
2129
2229
  method: 'POST',
2130
- url: '/api/v1/{region}/bean/expected-transactions/{id}/enter',
2230
+ url: '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}',
2131
2231
  path: {
2132
- id: data.id,
2232
+ transactionId: data.transactionId,
2133
2233
  region: data.region
2134
2234
  },
2135
2235
  body: data.requestBody,
2136
2236
  mediaType: 'application/json',
2137
2237
  errors: {
2138
- 400: 'Cannot enter - not in PENDING status or missing accounts',
2139
- 404: 'Expected transaction or accounts not found'
2238
+ 404: 'Transaction not found',
2239
+ 409: 'Rule with same name already exists or transaction already linked'
2140
2240
  }
2141
2241
  });
2142
2242
  }
2143
- }
2144
2243
 
2145
- export class RecurringForecastService {
2146
2244
  /**
2147
- * Get cash flow forecast
2148
- * Returns predicted outflows for the next N months based on active recurring rules
2245
+ * Get recurring rule by ID
2246
+ * Returns a specific recurring rule with its details
2149
2247
  * @param data The data for the request.
2248
+ * @param data.id Rule ID
2150
2249
  * @param data.region Region code for tenant context
2151
- * @param data.months Number of months to forecast (1-12, default 3)
2152
- * @returns ForecastResponseDto Forecast retrieved successfully
2250
+ * @returns RecurringRuleResponseDto Rule retrieved successfully
2153
2251
  * @throws ApiError
2154
2252
  */
2155
- public static forecastControllerGetForecast(
2156
- data: ForecastControllerGetForecastData
2157
- ): CancelablePromise<ForecastControllerGetForecastResponse> {
2253
+ public static recurringRuleControllerFindOne(
2254
+ data: RecurringRuleControllerFindOneData
2255
+ ): CancelablePromise<RecurringRuleControllerFindOneResponse> {
2158
2256
  return __request(OpenAPI, {
2159
2257
  method: 'GET',
2160
- url: '/api/v1/{region}/bean/recurring/forecast',
2258
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
2161
2259
  path: {
2260
+ id: data.id,
2162
2261
  region: data.region
2163
2262
  },
2164
- query: {
2165
- months: data.months
2263
+ errors: {
2264
+ 404: 'Rule not found'
2166
2265
  }
2167
2266
  });
2168
2267
  }
2169
- }
2170
2268
 
2171
- export class ReportingService {
2172
2269
  /**
2173
- * Get portfolio value trends
2174
- *
2175
- * Returns time series data of portfolio net worth.
2176
- *
2177
- * **Multi-currency Support:**
2178
- * - `series[].byCurrency` - Currency breakdown for each data point
2179
- * - `byCurrency` - Separate time series grouped by currency
2180
- * - `warnings` - Exchange rate warnings if conversion failed
2181
- *
2182
- * **Parameters:**
2183
- * - `period`: Time period (1m, 3m, 6m, 1y)
2184
- * - `granularity`: Data granularity (day, week, month)
2185
- *
2270
+ * Update recurring rule
2271
+ * Updates an existing recurring rule
2186
2272
  * @param data The data for the request.
2273
+ * @param data.id Rule ID
2187
2274
  * @param data.region Region code for tenant context
2188
- * @param data.period Time period
2189
- * @param data.granularity Data granularity
2190
- * @returns PortfolioTrendsResponseDto Trends retrieved successfully
2275
+ * @param data.requestBody
2276
+ * @returns RecurringRuleResponseDto Rule updated successfully
2191
2277
  * @throws ApiError
2192
2278
  */
2193
- public static reportingControllerGetPortfolioTrends(
2194
- data: ReportingControllerGetPortfolioTrendsData
2195
- ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
2279
+ public static recurringRuleControllerUpdate(
2280
+ data: RecurringRuleControllerUpdateData
2281
+ ): CancelablePromise<RecurringRuleControllerUpdateResponse> {
2196
2282
  return __request(OpenAPI, {
2197
- method: 'GET',
2198
- url: '/api/v1/{region}/reporting/portfolio/trends',
2283
+ method: 'PATCH',
2284
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
2199
2285
  path: {
2286
+ id: data.id,
2200
2287
  region: data.region
2201
2288
  },
2202
- query: {
2203
- period: data.period,
2204
- granularity: data.granularity
2205
- },
2289
+ body: data.requestBody,
2290
+ mediaType: 'application/json',
2206
2291
  errors: {
2207
- 401: 'User not authenticated'
2292
+ 400: 'Invalid input data',
2293
+ 404: 'Rule not found'
2208
2294
  }
2209
2295
  });
2210
2296
  }
2211
2297
 
2212
2298
  /**
2213
- * Get cash-flow trends
2214
- *
2215
- * Monthly income / expense / netSavings over a fixed N-month window
2216
- * (current month + N−1 prior). Missing months are zero-filled (flow metric).
2217
- *
2218
- * **Parameters:**
2219
- * - `period`: 1m | 3m | 6m | 1y (default 6m)
2220
- * - `granularity`: accepted for API symmetry; v1 returns month buckets
2221
- *
2299
+ * Delete recurring rule
2300
+ * Soft deletes a recurring rule (sets isActive to false)
2222
2301
  * @param data The data for the request.
2302
+ * @param data.id Rule ID
2223
2303
  * @param data.region Region code for tenant context
2224
- * @param data.period Time period
2225
- * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
2226
- * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
2304
+ * @returns void Rule deleted successfully
2227
2305
  * @throws ApiError
2228
2306
  */
2229
- public static reportingControllerGetCashFlowTrends(
2230
- data: ReportingControllerGetCashFlowTrendsData
2231
- ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
2307
+ public static recurringRuleControllerDelete(
2308
+ data: RecurringRuleControllerDeleteData
2309
+ ): CancelablePromise<RecurringRuleControllerDeleteResponse> {
2232
2310
  return __request(OpenAPI, {
2233
- method: 'GET',
2234
- url: '/api/v1/{region}/reporting/cash-flow/trends',
2311
+ method: 'DELETE',
2312
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
2235
2313
  path: {
2314
+ id: data.id,
2236
2315
  region: data.region
2237
2316
  },
2238
- query: {
2239
- period: data.period,
2240
- granularity: data.granularity
2241
- },
2242
2317
  errors: {
2243
- 401: 'User not authenticated'
2318
+ 404: 'Rule not found'
2244
2319
  }
2245
2320
  });
2246
2321
  }
2247
2322
 
2248
2323
  /**
2249
- * Generate portfolio snapshot
2250
- *
2251
- * Manually generate a portfolio snapshot for a specific date.
2252
- *
2253
- * **Multi-currency Support:**
2254
- * - Fetches balances grouped by currency
2255
- * - Uses user's baseCurrency setting for conversion
2256
- * - Stores exchange rates and warnings
2257
- *
2258
- * **Use Cases:**
2259
- * - Testing snapshot generation
2260
- * - Force regeneration after data correction
2261
- * - Initial setup for new users
2262
- *
2324
+ * Get rule with statistics
2325
+ * Returns a rule with pending/overdue counts and next expected date
2263
2326
  * @param data The data for the request.
2327
+ * @param data.id Rule ID
2264
2328
  * @param data.region Region code for tenant context
2265
- * @param data.requestBody Optional date (defaults to today)
2266
- * @returns GenerateSnapshotResponse Snapshot generated successfully
2329
+ * @returns RecurringRuleWithStatsResponseDto Rule with stats retrieved successfully
2267
2330
  * @throws ApiError
2268
2331
  */
2269
- public static reportingControllerGenerateSnapshot(
2270
- data: ReportingControllerGenerateSnapshotData
2271
- ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
2332
+ public static recurringRuleControllerGetWithStats(
2333
+ data: RecurringRuleControllerGetWithStatsData
2334
+ ): CancelablePromise<RecurringRuleControllerGetWithStatsResponse> {
2272
2335
  return __request(OpenAPI, {
2273
- method: 'POST',
2274
- url: '/api/v1/{region}/reporting/snapshots/generate',
2336
+ method: 'GET',
2337
+ url: '/api/v1/{region}/bean/recurring-rules/{id}/stats',
2275
2338
  path: {
2339
+ id: data.id,
2276
2340
  region: data.region
2277
2341
  },
2278
- body: data.requestBody,
2279
- mediaType: 'application/json',
2280
2342
  errors: {
2281
- 400: 'Invalid date format',
2282
- 401: 'User not authenticated'
2343
+ 404: 'Rule not found'
2283
2344
  }
2284
2345
  });
2285
2346
  }
2347
+ }
2286
2348
 
2349
+ export class ExpectedTransactionsService {
2287
2350
  /**
2288
- * Backfill portfolio snapshots
2289
- *
2290
- * Generate snapshots for a date range (historical data backfill).
2291
- *
2292
- * **Multi-currency Support:**
2293
- * - Each snapshot includes multi-currency data
2294
- * - Uses exchange rates available at generation time
2295
- * - Warnings stored for missing exchange rates
2296
- *
2297
- * **Best Practices:**
2298
- * - Use for initial setup after account configuration
2299
- * - Run during low-traffic periods for large date ranges
2300
- * - Existing snapshots are skipped (not regenerated)
2301
- *
2351
+ * List expected transactions
2352
+ * Returns expected transactions for the authenticated user with optional filtering
2302
2353
  * @param data The data for the request.
2303
2354
  * @param data.region Region code for tenant context
2304
- * @param data.requestBody
2305
- * @returns BackfillSnapshotsResponse Backfill completed successfully
2355
+ * @param data.ruleId Filter by recurring rule ID
2356
+ * @param data.status Filter by status (PENDING, COMPLETED, SKIPPED)
2357
+ * @param data.fromDate Filter by date range start (YYYY-MM-DD)
2358
+ * @param data.toDate Filter by date range end (YYYY-MM-DD)
2359
+ * @returns ExpectedTransactionListResponseDto Expected transactions retrieved successfully
2306
2360
  * @throws ApiError
2307
2361
  */
2308
- public static reportingControllerBackfillSnapshots(
2309
- data: ReportingControllerBackfillSnapshotsData
2310
- ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
2362
+ public static expectedTransactionControllerFindAll(
2363
+ data: ExpectedTransactionControllerFindAllData
2364
+ ): CancelablePromise<ExpectedTransactionControllerFindAllResponse> {
2311
2365
  return __request(OpenAPI, {
2312
- method: 'POST',
2313
- url: '/api/v1/{region}/reporting/snapshots/backfill',
2366
+ method: 'GET',
2367
+ url: '/api/v1/{region}/bean/expected-transactions',
2314
2368
  path: {
2315
2369
  region: data.region
2316
2370
  },
2317
- body: data.requestBody,
2318
- mediaType: 'application/json',
2319
- errors: {
2320
- 400: 'Invalid date format or range',
2321
- 401: 'User not authenticated',
2322
- 409: 'Backfill already in progress for this user'
2323
- }
2324
- });
2325
- }
2326
- }
2327
-
2328
- export class UsersService {
2329
- /**
2330
- * Delete own user account
2331
- * @param data The data for the request.
2332
- * @param data.requestBody
2333
- * @returns void User deleted successfully
2334
- * @throws ApiError
2335
- */
2336
- public static userControllerDeleteOwnUser(
2337
- data: UserControllerDeleteOwnUserData
2338
- ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2339
- return __request(OpenAPI, {
2340
- method: 'DELETE',
2341
- url: '/api/v1/users',
2342
- body: data.requestBody,
2343
- mediaType: 'application/json',
2344
- errors: {
2345
- 403: 'Invalid access token'
2346
- }
2347
- });
2348
- }
2349
-
2350
- /**
2351
- * Get current authenticated user
2352
- * @param data The data for the request.
2353
- * @param data.acceptLanguage
2354
- * @returns UserResponseDto User retrieved successfully
2355
- * @throws ApiError
2356
- */
2357
- public static userControllerGetUser(
2358
- data: UserControllerGetUserData
2359
- ): CancelablePromise<UserControllerGetUserResponse> {
2360
- return __request(OpenAPI, {
2361
- method: 'GET',
2362
- url: '/api/v1/users',
2363
- headers: {
2364
- 'accept-language': data.acceptLanguage
2365
- }
2366
- });
2367
- }
2368
-
2369
- /**
2370
- * Sign up new user
2371
- * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
2372
- * @param data The data for the request.
2373
- * @param data.requestBody
2374
- * @returns SignupResponseDto User created successfully
2375
- * @throws ApiError
2376
- */
2377
- public static userControllerSignupUser(
2378
- data: UserControllerSignupUserData
2379
- ): CancelablePromise<UserControllerSignupUserResponse> {
2380
- return __request(OpenAPI, {
2381
- method: 'POST',
2382
- url: '/api/v1/users',
2383
- body: data.requestBody,
2384
- mediaType: 'application/json',
2385
- errors: {
2386
- 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2387
- 403: 'User signup is disabled'
2371
+ query: {
2372
+ ruleId: data.ruleId,
2373
+ status: data.status,
2374
+ fromDate: data.fromDate,
2375
+ toDate: data.toDate
2388
2376
  }
2389
2377
  });
2390
2378
  }
2391
2379
 
2392
2380
  /**
2393
- * Delete user by ID (admin only)
2381
+ * List overdue expected transactions
2382
+ * Returns all overdue expected transactions (PENDING past tolerance)
2394
2383
  * @param data The data for the request.
2395
- * @param data.id User ID to delete
2396
- * @returns void User deleted successfully
2384
+ * @param data.region Region code for tenant context
2385
+ * @returns ExpectedTransactionListResponseDto Overdue transactions retrieved successfully
2397
2386
  * @throws ApiError
2398
2387
  */
2399
- public static userControllerDeleteUser(
2400
- data: UserControllerDeleteUserData
2401
- ): CancelablePromise<UserControllerDeleteUserResponse> {
2388
+ public static expectedTransactionControllerFindOverdue(
2389
+ data: ExpectedTransactionControllerFindOverdueData
2390
+ ): CancelablePromise<ExpectedTransactionControllerFindOverdueResponse> {
2402
2391
  return __request(OpenAPI, {
2403
- method: 'DELETE',
2404
- url: '/api/v1/users/{id}',
2392
+ method: 'GET',
2393
+ url: '/api/v1/{region}/bean/expected-transactions/overdue',
2405
2394
  path: {
2406
- id: data.id
2407
- },
2408
- errors: {
2409
- 403: 'Cannot delete own account or insufficient permissions'
2395
+ region: data.region
2410
2396
  }
2411
2397
  });
2412
2398
  }
2413
2399
 
2414
2400
  /**
2415
- * Get user info by user ID
2401
+ * Get expected transaction by ID
2402
+ * Returns a specific expected transaction with rule details
2416
2403
  * @param data The data for the request.
2417
- * @param data.id User ID
2418
- * @returns unknown User info retrieved successfully
2404
+ * @param data.id Expected transaction ID
2405
+ * @param data.region Region code for tenant context
2406
+ * @returns ExpectedTransactionResponseDto Expected transaction retrieved successfully
2419
2407
  * @throws ApiError
2420
2408
  */
2421
- public static userControllerGetUserInfo(
2422
- data: UserControllerGetUserInfoData
2423
- ): CancelablePromise<UserControllerGetUserInfoResponse> {
2409
+ public static expectedTransactionControllerFindOne(
2410
+ data: ExpectedTransactionControllerFindOneData
2411
+ ): CancelablePromise<ExpectedTransactionControllerFindOneResponse> {
2424
2412
  return __request(OpenAPI, {
2425
2413
  method: 'GET',
2426
- url: '/api/v1/users/{id}/info',
2414
+ url: '/api/v1/{region}/bean/expected-transactions/{id}',
2427
2415
  path: {
2428
- id: data.id
2416
+ id: data.id,
2417
+ region: data.region
2429
2418
  },
2430
2419
  errors: {
2431
- 403: 'Cannot access other user info without admin permission'
2420
+ 404: 'Expected transaction not found'
2432
2421
  }
2433
2422
  });
2434
2423
  }
2435
2424
 
2436
2425
  /**
2437
- * Update user settings
2426
+ * Skip expected transaction
2427
+ * Marks an expected transaction as skipped (PENDING -> SKIPPED)
2438
2428
  * @param data The data for the request.
2439
- * @param data.requestBody
2440
- * @returns unknown Settings updated successfully
2429
+ * @param data.id Expected transaction ID
2430
+ * @param data.region Region code for tenant context
2431
+ * @returns ExpectedTransactionResponseDto Expected transaction skipped successfully
2441
2432
  * @throws ApiError
2442
2433
  */
2443
- public static userControllerUpdateUserSetting(
2444
- data: UserControllerUpdateUserSettingData
2445
- ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
2434
+ public static expectedTransactionControllerSkip(
2435
+ data: ExpectedTransactionControllerSkipData
2436
+ ): CancelablePromise<ExpectedTransactionControllerSkipResponse> {
2446
2437
  return __request(OpenAPI, {
2447
- method: 'PUT',
2448
- url: '/api/v1/users/setting',
2449
- body: data.requestBody,
2450
- mediaType: 'application/json',
2438
+ method: 'POST',
2439
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2440
+ path: {
2441
+ id: data.id,
2442
+ region: data.region
2443
+ },
2451
2444
  errors: {
2452
- 403: 'Insufficient permissions'
2445
+ 400: 'Cannot skip - not in PENDING status',
2446
+ 404: 'Expected transaction not found'
2453
2447
  }
2454
2448
  });
2455
2449
  }
2456
2450
 
2457
2451
  /**
2458
- * Get all user settings paginated (admin only)
2452
+ * Undo skip
2453
+ * Reverses a skip operation (SKIPPED -> PENDING)
2459
2454
  * @param data The data for the request.
2460
- * @param data.pageNo Page number
2461
- * @param data.pageSize Page size
2462
- * @returns unknown Settings list retrieved successfully
2455
+ * @param data.id Expected transaction ID
2456
+ * @param data.region Region code for tenant context
2457
+ * @returns void Skip undone successfully
2463
2458
  * @throws ApiError
2464
2459
  */
2465
- public static userControllerGetAllUserSettingsByPage(
2466
- data: UserControllerGetAllUserSettingsByPageData
2467
- ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
2460
+ public static expectedTransactionControllerUndoSkip(
2461
+ data: ExpectedTransactionControllerUndoSkipData
2462
+ ): CancelablePromise<ExpectedTransactionControllerUndoSkipResponse> {
2468
2463
  return __request(OpenAPI, {
2469
- method: 'GET',
2470
- url: '/api/v1/users/settings-by-page',
2471
- query: {
2472
- pageNo: data.pageNo,
2473
- pageSize: data.pageSize
2464
+ method: 'DELETE',
2465
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2466
+ path: {
2467
+ id: data.id,
2468
+ region: data.region
2469
+ },
2470
+ errors: {
2471
+ 400: 'Cannot undo - not in SKIPPED status',
2472
+ 404: 'Expected transaction not found'
2474
2473
  }
2475
2474
  });
2476
2475
  }
2477
2476
 
2478
2477
  /**
2479
- * Get asset and liability summary for current user
2480
- * @returns unknown Summary retrieved successfully
2481
- * @throws ApiError
2482
- */
2483
- public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2484
- return __request(OpenAPI, {
2485
- method: 'GET',
2486
- url: '/api/v1/users/asset-liability-summary'
2487
- });
2488
- }
2489
- }
2490
-
2491
- export class PropertiesService {
2492
- /**
2493
- * Get all system properties
2494
- * @returns unknown Properties retrieved successfully
2478
+ * Confirm transaction match
2479
+ * Manually matches an expected transaction with an actual transaction
2480
+ * @param data The data for the request.
2481
+ * @param data.id Expected transaction ID
2482
+ * @param data.region Region code for tenant context
2483
+ * @param data.requestBody
2484
+ * @returns unknown Match confirmed successfully
2495
2485
  * @throws ApiError
2496
2486
  */
2497
- public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2487
+ public static expectedTransactionControllerConfirmMatch(
2488
+ data: ExpectedTransactionControllerConfirmMatchData
2489
+ ): CancelablePromise<ExpectedTransactionControllerConfirmMatchResponse> {
2498
2490
  return __request(OpenAPI, {
2499
- method: 'GET',
2500
- url: '/api/v1/admin/properties',
2491
+ method: 'POST',
2492
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2493
+ path: {
2494
+ id: data.id,
2495
+ region: data.region
2496
+ },
2497
+ body: data.requestBody,
2498
+ mediaType: 'application/json',
2501
2499
  errors: {
2502
- 401: 'Unauthorized',
2503
- 403: 'Forbidden - insufficient permissions'
2500
+ 400: 'Cannot match - not in PENDING status',
2501
+ 404: 'Expected or actual transaction not found',
2502
+ 409: 'Actual transaction already matched to another rule'
2504
2503
  }
2505
2504
  });
2506
2505
  }
2507
2506
 
2508
2507
  /**
2509
- * Get property by key
2508
+ * Unmatch transaction
2509
+ * Removes the match between expected and actual transaction (COMPLETED -> PENDING)
2510
2510
  * @param data The data for the request.
2511
- * @param data.key Property key
2512
- * @returns unknown Property retrieved successfully
2511
+ * @param data.id Expected transaction ID
2512
+ * @param data.region Region code for tenant context
2513
+ * @returns void Match removed successfully
2513
2514
  * @throws ApiError
2514
2515
  */
2515
- public static propertyControllerGetByKey(
2516
- data: PropertyControllerGetByKeyData
2517
- ): CancelablePromise<PropertyControllerGetByKeyResponse> {
2516
+ public static expectedTransactionControllerUnmatch(
2517
+ data: ExpectedTransactionControllerUnmatchData
2518
+ ): CancelablePromise<ExpectedTransactionControllerUnmatchResponse> {
2518
2519
  return __request(OpenAPI, {
2519
- method: 'GET',
2520
- url: '/api/v1/admin/properties/{key}',
2520
+ method: 'DELETE',
2521
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2521
2522
  path: {
2522
- key: data.key
2523
+ id: data.id,
2524
+ region: data.region
2523
2525
  },
2524
2526
  errors: {
2525
- 401: 'Unauthorized',
2526
- 403: 'Forbidden - insufficient permissions',
2527
- 404: 'Property not found'
2527
+ 400: 'Cannot unmatch - not in COMPLETED status',
2528
+ 404: 'Expected transaction not found'
2528
2529
  }
2529
2530
  });
2530
2531
  }
2531
2532
 
2532
2533
  /**
2533
- * Update a system property
2534
+ * Enter Now
2535
+ * Creates an actual transaction for an expected transaction (YNAB-style Enter Now)
2534
2536
  * @param data The data for the request.
2535
- * @param data.key Property key
2537
+ * @param data.id Expected transaction ID
2538
+ * @param data.region Region code for tenant context
2536
2539
  * @param data.requestBody
2537
- * @returns unknown Property updated successfully
2540
+ * @returns unknown Transaction created successfully
2538
2541
  * @throws ApiError
2539
2542
  */
2540
- public static propertyControllerUpdate(
2541
- data: PropertyControllerUpdateData
2542
- ): CancelablePromise<PropertyControllerUpdateResponse> {
2543
+ public static expectedTransactionControllerEnterNow(
2544
+ data: ExpectedTransactionControllerEnterNowData
2545
+ ): CancelablePromise<ExpectedTransactionControllerEnterNowResponse> {
2543
2546
  return __request(OpenAPI, {
2544
- method: 'PUT',
2545
- url: '/api/v1/admin/properties/{key}',
2547
+ method: 'POST',
2548
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/enter',
2546
2549
  path: {
2547
- key: data.key
2550
+ id: data.id,
2551
+ region: data.region
2548
2552
  },
2549
2553
  body: data.requestBody,
2550
2554
  mediaType: 'application/json',
2551
2555
  errors: {
2552
- 401: 'Unauthorized',
2553
- 403: 'Forbidden - insufficient permissions'
2556
+ 400: 'Cannot enter - not in PENDING status or missing accounts',
2557
+ 404: 'Expected transaction or accounts not found'
2554
2558
  }
2555
2559
  });
2556
2560
  }
2561
+ }
2557
2562
 
2563
+ export class RecurringForecastService {
2558
2564
  /**
2559
- * Delete a system property
2565
+ * Get cash flow forecast
2566
+ * Returns predicted outflows for the next N months based on active recurring rules
2560
2567
  * @param data The data for the request.
2561
- * @param data.key Property key
2562
- * @returns void Property deleted successfully
2568
+ * @param data.region Region code for tenant context
2569
+ * @param data.months Number of months to forecast (1-12, default 3)
2570
+ * @returns ForecastResponseDto Forecast retrieved successfully
2563
2571
  * @throws ApiError
2564
2572
  */
2565
- public static propertyControllerDelete(
2566
- data: PropertyControllerDeleteData
2567
- ): CancelablePromise<PropertyControllerDeleteResponse> {
2573
+ public static forecastControllerGetForecast(
2574
+ data: ForecastControllerGetForecastData
2575
+ ): CancelablePromise<ForecastControllerGetForecastResponse> {
2568
2576
  return __request(OpenAPI, {
2569
- method: 'DELETE',
2570
- url: '/api/v1/admin/properties/{key}',
2577
+ method: 'GET',
2578
+ url: '/api/v1/{region}/bean/recurring/forecast',
2571
2579
  path: {
2572
- key: data.key
2580
+ region: data.region
2573
2581
  },
2574
- errors: {
2575
- 401: 'Unauthorized',
2576
- 403: 'Forbidden - insufficient permissions',
2577
- 404: 'Property not found'
2582
+ query: {
2583
+ months: data.months
2578
2584
  }
2579
2585
  });
2580
2586
  }
@@ -3198,7 +3204,7 @@ export class BeanExportService {
3198
3204
  /**
3199
3205
  * Export Beancount ledger as ZIP
3200
3206
  * Export all user Beancount data as a ZIP file containing ledger.beancount and yearly files in community format.
3201
- * @returns unknown
3207
+ * @returns binary ZIP archive (application/zip) streamed as an attachment
3202
3208
  * @throws ApiError
3203
3209
  */
3204
3210
  public static exportControllerExportBeancount(): CancelablePromise<ExportControllerExportBeancountResponse> {
@@ -3799,6 +3805,31 @@ export class BeanPlatformsService {
3799
3805
  });
3800
3806
  }
3801
3807
 
3808
+ /**
3809
+ * Get the region and candidate account standards for a platform
3810
+ * @param data The data for the request.
3811
+ * @param data.id Platform ID (from a match result)
3812
+ * @param data.region Region code (ISO 3166-1 alpha-2, case-insensitive). Required for global platforms (countryCode null) — resolved as their template region; ignored when the platform has its own countryCode.
3813
+ * @param data.type Filter templates by account type (path first segment)
3814
+ * @returns PlatformStandardsResponseDto Resolved region plus the merged account-standard catalog of that region (groupable by productCategory client-side)
3815
+ * @throws ApiError
3816
+ */
3817
+ public static platformControllerGetPlatformStandards(
3818
+ data: PlatformControllerGetPlatformStandardsData
3819
+ ): CancelablePromise<PlatformControllerGetPlatformStandardsResponse> {
3820
+ return __request(OpenAPI, {
3821
+ method: 'GET',
3822
+ url: '/api/v1/bean/platforms/{id}/standards',
3823
+ path: {
3824
+ id: data.id
3825
+ },
3826
+ query: {
3827
+ region: data.region,
3828
+ type: data.type
3829
+ }
3830
+ });
3831
+ }
3832
+
3802
3833
  /**
3803
3834
  * Update a platform
3804
3835
  * @param data The data for the request.
@@ -4042,15 +4073,52 @@ export class AuthService {
4042
4073
  }
4043
4074
  }
4044
4075
 
4045
- export class DefaultService {
4076
+ export class CommunityService {
4077
+ /**
4078
+ * Relay a sanitized parser-contribution payload
4079
+ * A server-side bot re-sanitizes the payload and opens an issue on the target repository; the issue URL is returned. The payload is never persisted or logged (forward-and-drop).
4080
+ * @param data The data for the request.
4081
+ * @param data.region Region code for tenant context (routing only; the institution region rides in the payload meta)
4082
+ * @param data.requestBody
4083
+ * @returns ParserContributionRelayResponseDto Issue created by the bot
4084
+ * @throws ApiError
4085
+ */
4086
+ public static parserContributionControllerCreate(
4087
+ data: ParserContributionControllerCreateData
4088
+ ): CancelablePromise<ParserContributionControllerCreateResponse> {
4089
+ return __request(OpenAPI, {
4090
+ method: 'POST',
4091
+ url: '/api/v1/{region}/community/parser-contributions',
4092
+ path: {
4093
+ region: data.region
4094
+ },
4095
+ body: data.requestBody,
4096
+ mediaType: 'application/json',
4097
+ errors: {
4098
+ 401: 'Unauthorized',
4099
+ 422: 'Validation failed (institution slug, empty samples, row/cell size limits)',
4100
+ 429: 'Rate limited (5 submissions per user per hour)',
4101
+ 501: 'Relay not configured on this deployment — clients fall back to the clipboard flow',
4102
+ 502: 'GitHub bot failure (upstream), safe to retry'
4103
+ }
4104
+ });
4105
+ }
4106
+ }
4107
+
4108
+ export class AdminCacheService {
4046
4109
  /**
4047
- * @returns unknown
4110
+ * Flush entire cache (L1 + L2)
4111
+ * Clears ALL cache entries across ALL namespaces and users. Use only for emergency cache corruption recovery, maintenance-window refresh, or development resets.
4112
+ * @returns unknown Cache flushed successfully
4048
4113
  * @throws ApiError
4049
4114
  */
4050
4115
  public static cacheControllerFlushCache(): CancelablePromise<CacheControllerFlushCacheResponse> {
4051
4116
  return __request(OpenAPI, {
4052
4117
  method: 'POST',
4053
- url: '/api/v1/cache/flush'
4118
+ url: '/api/v1/cache/flush',
4119
+ errors: {
4120
+ 403: 'Admin access required'
4121
+ }
4054
4122
  });
4055
4123
  }
4056
4124
  }