@firela/api-types 0.0.0-canary.8bf286b3 → 0.0.0-canary.8c76fd39

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,
@@ -535,7 +537,7 @@ export class BeanAccountStandardsService {
535
537
  * @param data The data for the request.
536
538
  * @param data.region Region code (cn, us, de)
537
539
  * @param data.type Filter by account type
538
- * @param data.search Search term for path or description
540
+ * @param data.search Search term for path, description, aliases, or localized display name
539
541
  * @returns AccountStandardListResponseDto Account templates retrieved successfully
540
542
  * @throws ApiError
541
543
  */
@@ -640,7 +642,7 @@ export class BeanTransactionsService {
640
642
  * @param data.offset Number of items to skip (default: 0)
641
643
  * @param data.dateFrom Filter by start date (inclusive), format: YYYY-MM-DD
642
644
  * @param data.dateTo Filter by end date (inclusive), format: YYYY-MM-DD
643
- * @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).
644
646
  * @param data.search Search in narration and payee fields (max 200 chars)
645
647
  * @param data.accountId Filter by account ID (transactions with postings to this account)
646
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).
@@ -1379,7 +1381,7 @@ export class AdminPayeeProfilesService {
1379
1381
  * Removes verification status by setting verifiedAt to null.
1380
1382
  * @param data The data for the request.
1381
1383
  * @param data.id Payee profile ID (UUID)
1382
- * @returns PayeeProfileResponseDto Payee profile unverified successfully
1384
+ * @returns void Payee profile unverified successfully
1383
1385
  * @throws ApiError
1384
1386
  */
1385
1387
  public static payeeProfileAdminControllerUnverify(
@@ -1575,6 +1577,163 @@ export class BeanCommoditiesService {
1575
1577
  }
1576
1578
  }
1577
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
+
1578
1737
  export class BeanPricesService {
1579
1738
  /**
1580
1739
  * Create a new price
@@ -1742,843 +1901,686 @@ export class BeanPricesService {
1742
1901
  }
1743
1902
  }
1744
1903
 
1745
- export class RecurringRulesService {
1904
+ export class UsersService {
1746
1905
  /**
1747
- * Create a new recurring rule
1748
- * Creates a new recurring transaction rule for the authenticated user
1906
+ * Delete own user account
1749
1907
  * @param data The data for the request.
1750
- * @param data.region Region code for tenant context
1751
1908
  * @param data.requestBody
1752
- * @returns RecurringRuleResponseDto Rule created successfully
1909
+ * @returns void User deleted successfully
1753
1910
  * @throws ApiError
1754
1911
  */
1755
- public static recurringRuleControllerCreate(
1756
- data: RecurringRuleControllerCreateData
1757
- ): CancelablePromise<RecurringRuleControllerCreateResponse> {
1912
+ public static userControllerDeleteOwnUser(
1913
+ data: UserControllerDeleteOwnUserData
1914
+ ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
1758
1915
  return __request(OpenAPI, {
1759
- method: 'POST',
1760
- url: '/api/v1/{region}/bean/recurring-rules',
1761
- path: {
1762
- region: data.region
1763
- },
1916
+ method: 'DELETE',
1917
+ url: '/api/v1/users',
1764
1918
  body: data.requestBody,
1765
1919
  mediaType: 'application/json',
1766
1920
  errors: {
1767
- 400: 'Invalid input data (e.g., autoCreate without accounts)',
1768
- 409: 'Rule with same name already exists'
1921
+ 403: 'Invalid access token'
1769
1922
  }
1770
1923
  });
1771
1924
  }
1772
1925
 
1773
1926
  /**
1774
- * List recurring rules
1775
- * Returns all recurring rules for the authenticated user with optional filtering
1927
+ * Get current authenticated user
1776
1928
  * @param data The data for the request.
1777
- * @param data.region Region code for tenant context
1778
- * @param data.isActive Filter by active status
1779
- * @param data.frequency Filter by frequency (WEEKLY, MONTHLY, etc.)
1780
- * @param data.hasAutoCreate Filter by autoCreate enabled
1781
- * @returns RecurringRuleResponseDto Rules retrieved successfully
1929
+ * @param data.acceptLanguage
1930
+ * @returns UserResponseDto User retrieved successfully
1782
1931
  * @throws ApiError
1783
1932
  */
1784
- public static recurringRuleControllerFindAll(
1785
- data: RecurringRuleControllerFindAllData
1786
- ): CancelablePromise<RecurringRuleControllerFindAllResponse> {
1787
- return __request(OpenAPI, {
1788
- method: 'GET',
1789
- url: '/api/v1/{region}/bean/recurring-rules',
1790
- path: {
1791
- region: data.region
1792
- },
1793
- query: {
1794
- isActive: data.isActive,
1795
- frequency: data.frequency,
1796
- hasAutoCreate: data.hasAutoCreate
1933
+ public static userControllerGetUser(
1934
+ data: UserControllerGetUserData
1935
+ ): CancelablePromise<UserControllerGetUserResponse> {
1936
+ return __request(OpenAPI, {
1937
+ method: 'GET',
1938
+ url: '/api/v1/users',
1939
+ headers: {
1940
+ 'accept-language': data.acceptLanguage
1797
1941
  }
1798
1942
  });
1799
1943
  }
1800
1944
 
1801
1945
  /**
1802
- * Create recurring rule from transaction
1803
- * 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).
1804
1948
  * @param data The data for the request.
1805
- * @param data.transactionId Source transaction ID
1806
- * @param data.region Region code for tenant context
1807
1949
  * @param data.requestBody
1808
- * @returns RecurringRuleResponseDto Rule created successfully
1950
+ * @returns SignupResponseDto User created successfully
1809
1951
  * @throws ApiError
1810
1952
  */
1811
- public static recurringRuleControllerCreateFromTransaction(
1812
- data: RecurringRuleControllerCreateFromTransactionData
1813
- ): CancelablePromise<RecurringRuleControllerCreateFromTransactionResponse> {
1953
+ public static userControllerSignupUser(
1954
+ data: UserControllerSignupUserData
1955
+ ): CancelablePromise<UserControllerSignupUserResponse> {
1814
1956
  return __request(OpenAPI, {
1815
1957
  method: 'POST',
1816
- url: '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}',
1817
- path: {
1818
- transactionId: data.transactionId,
1819
- region: data.region
1820
- },
1958
+ url: '/api/v1/users',
1821
1959
  body: data.requestBody,
1822
1960
  mediaType: 'application/json',
1823
1961
  errors: {
1824
- 404: 'Transaction not found',
1825
- 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'
1826
1964
  }
1827
1965
  });
1828
1966
  }
1829
1967
 
1830
1968
  /**
1831
- * Get recurring rule by ID
1832
- * Returns a specific recurring rule with its details
1969
+ * Delete user by ID (admin only)
1833
1970
  * @param data The data for the request.
1834
- * @param data.id Rule ID
1835
- * @param data.region Region code for tenant context
1836
- * @returns RecurringRuleResponseDto Rule retrieved successfully
1971
+ * @param data.id User ID to delete
1972
+ * @returns void User deleted successfully
1837
1973
  * @throws ApiError
1838
1974
  */
1839
- public static recurringRuleControllerFindOne(
1840
- data: RecurringRuleControllerFindOneData
1841
- ): CancelablePromise<RecurringRuleControllerFindOneResponse> {
1975
+ public static userControllerDeleteUser(
1976
+ data: UserControllerDeleteUserData
1977
+ ): CancelablePromise<UserControllerDeleteUserResponse> {
1842
1978
  return __request(OpenAPI, {
1843
- method: 'GET',
1844
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
1979
+ method: 'DELETE',
1980
+ url: '/api/v1/users/{id}',
1845
1981
  path: {
1846
- id: data.id,
1847
- region: data.region
1982
+ id: data.id
1848
1983
  },
1849
1984
  errors: {
1850
- 404: 'Rule not found'
1985
+ 403: 'Cannot delete own account or insufficient permissions'
1851
1986
  }
1852
1987
  });
1853
1988
  }
1854
1989
 
1855
1990
  /**
1856
- * Update recurring rule
1857
- * Updates an existing recurring rule
1991
+ * Get user info by user ID
1858
1992
  * @param data The data for the request.
1859
- * @param data.id Rule ID
1860
- * @param data.region Region code for tenant context
1861
- * @param data.requestBody
1862
- * @returns RecurringRuleResponseDto Rule updated successfully
1993
+ * @param data.id User ID
1994
+ * @returns unknown User info retrieved successfully
1863
1995
  * @throws ApiError
1864
1996
  */
1865
- public static recurringRuleControllerUpdate(
1866
- data: RecurringRuleControllerUpdateData
1867
- ): CancelablePromise<RecurringRuleControllerUpdateResponse> {
1997
+ public static userControllerGetUserInfo(
1998
+ data: UserControllerGetUserInfoData
1999
+ ): CancelablePromise<UserControllerGetUserInfoResponse> {
1868
2000
  return __request(OpenAPI, {
1869
- method: 'PATCH',
1870
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
2001
+ method: 'GET',
2002
+ url: '/api/v1/users/{id}/info',
1871
2003
  path: {
1872
- id: data.id,
1873
- region: data.region
2004
+ id: data.id
1874
2005
  },
1875
- body: data.requestBody,
1876
- mediaType: 'application/json',
1877
2006
  errors: {
1878
- 400: 'Invalid input data',
1879
- 404: 'Rule not found'
2007
+ 403: 'Cannot access other user info without admin permission'
1880
2008
  }
1881
2009
  });
1882
2010
  }
1883
2011
 
1884
2012
  /**
1885
- * Delete recurring rule
1886
- * Soft deletes a recurring rule (sets isActive to false)
2013
+ * Update user settings
1887
2014
  * @param data The data for the request.
1888
- * @param data.id Rule ID
1889
- * @param data.region Region code for tenant context
1890
- * @returns void Rule deleted successfully
2015
+ * @param data.requestBody
2016
+ * @returns unknown Settings updated successfully
1891
2017
  * @throws ApiError
1892
2018
  */
1893
- public static recurringRuleControllerDelete(
1894
- data: RecurringRuleControllerDeleteData
1895
- ): CancelablePromise<RecurringRuleControllerDeleteResponse> {
2019
+ public static userControllerUpdateUserSetting(
2020
+ data: UserControllerUpdateUserSettingData
2021
+ ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
1896
2022
  return __request(OpenAPI, {
1897
- method: 'DELETE',
1898
- url: '/api/v1/{region}/bean/recurring-rules/{id}',
1899
- path: {
1900
- id: data.id,
1901
- region: data.region
1902
- },
2023
+ method: 'PUT',
2024
+ url: '/api/v1/users/setting',
2025
+ body: data.requestBody,
2026
+ mediaType: 'application/json',
1903
2027
  errors: {
1904
- 404: 'Rule not found'
2028
+ 403: 'Insufficient permissions'
1905
2029
  }
1906
2030
  });
1907
2031
  }
1908
2032
 
1909
2033
  /**
1910
- * Get rule with statistics
1911
- * Returns a rule with pending/overdue counts and next expected date
2034
+ * Get all user settings paginated (admin only)
1912
2035
  * @param data The data for the request.
1913
- * @param data.id Rule ID
1914
- * @param data.region Region code for tenant context
1915
- * @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
1916
2039
  * @throws ApiError
1917
2040
  */
1918
- public static recurringRuleControllerGetWithStats(
1919
- data: RecurringRuleControllerGetWithStatsData
1920
- ): CancelablePromise<RecurringRuleControllerGetWithStatsResponse> {
2041
+ public static userControllerGetAllUserSettingsByPage(
2042
+ data: UserControllerGetAllUserSettingsByPageData
2043
+ ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
1921
2044
  return __request(OpenAPI, {
1922
2045
  method: 'GET',
1923
- url: '/api/v1/{region}/bean/recurring-rules/{id}/stats',
1924
- path: {
1925
- id: data.id,
1926
- region: data.region
1927
- },
1928
- errors: {
1929
- 404: 'Rule not found'
2046
+ url: '/api/v1/users/settings-by-page',
2047
+ query: {
2048
+ pageNo: data.pageNo,
2049
+ pageSize: data.pageSize
1930
2050
  }
1931
2051
  });
1932
2052
  }
1933
- }
1934
2053
 
1935
- export class ExpectedTransactionsService {
1936
2054
  /**
1937
- * List expected transactions
1938
- * Returns expected transactions for the authenticated user with optional filtering
1939
- * @param data The data for the request.
1940
- * @param data.region Region code for tenant context
1941
- * @param data.ruleId Filter by recurring rule ID
1942
- * @param data.status Filter by status (PENDING, COMPLETED, SKIPPED)
1943
- * @param data.fromDate Filter by date range start (YYYY-MM-DD)
1944
- * @param data.toDate Filter by date range end (YYYY-MM-DD)
1945
- * @returns ExpectedTransactionListResponseDto Expected transactions retrieved successfully
2055
+ * Get asset and liability summary for current user
2056
+ * @returns unknown Summary retrieved successfully
1946
2057
  * @throws ApiError
1947
2058
  */
1948
- public static expectedTransactionControllerFindAll(
1949
- data: ExpectedTransactionControllerFindAllData
1950
- ): CancelablePromise<ExpectedTransactionControllerFindAllResponse> {
2059
+ public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
1951
2060
  return __request(OpenAPI, {
1952
2061
  method: 'GET',
1953
- url: '/api/v1/{region}/bean/expected-transactions',
1954
- path: {
1955
- region: data.region
1956
- },
1957
- query: {
1958
- ruleId: data.ruleId,
1959
- status: data.status,
1960
- fromDate: data.fromDate,
1961
- toDate: data.toDate
1962
- }
2062
+ url: '/api/v1/users/asset-liability-summary'
1963
2063
  });
1964
2064
  }
2065
+ }
1965
2066
 
2067
+ export class PropertiesService {
1966
2068
  /**
1967
- * List overdue expected transactions
1968
- * Returns all overdue expected transactions (PENDING past tolerance)
1969
- * @param data The data for the request.
1970
- * @param data.region Region code for tenant context
1971
- * @returns ExpectedTransactionListResponseDto Overdue transactions retrieved successfully
2069
+ * Get all system properties
2070
+ * @returns unknown Properties retrieved successfully
1972
2071
  * @throws ApiError
1973
2072
  */
1974
- public static expectedTransactionControllerFindOverdue(
1975
- data: ExpectedTransactionControllerFindOverdueData
1976
- ): CancelablePromise<ExpectedTransactionControllerFindOverdueResponse> {
2073
+ public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
1977
2074
  return __request(OpenAPI, {
1978
2075
  method: 'GET',
1979
- url: '/api/v1/{region}/bean/expected-transactions/overdue',
1980
- path: {
1981
- region: data.region
2076
+ url: '/api/v1/admin/properties',
2077
+ errors: {
2078
+ 401: 'Unauthorized',
2079
+ 403: 'Forbidden - insufficient permissions'
1982
2080
  }
1983
2081
  });
1984
2082
  }
1985
2083
 
1986
2084
  /**
1987
- * Get expected transaction by ID
1988
- * Returns a specific expected transaction with rule details
2085
+ * Get property by key
1989
2086
  * @param data The data for the request.
1990
- * @param data.id Expected transaction ID
1991
- * @param data.region Region code for tenant context
1992
- * @returns ExpectedTransactionResponseDto Expected transaction retrieved successfully
2087
+ * @param data.key Property key
2088
+ * @returns unknown Property retrieved successfully
1993
2089
  * @throws ApiError
1994
2090
  */
1995
- public static expectedTransactionControllerFindOne(
1996
- data: ExpectedTransactionControllerFindOneData
1997
- ): CancelablePromise<ExpectedTransactionControllerFindOneResponse> {
2091
+ public static propertyControllerGetByKey(
2092
+ data: PropertyControllerGetByKeyData
2093
+ ): CancelablePromise<PropertyControllerGetByKeyResponse> {
1998
2094
  return __request(OpenAPI, {
1999
2095
  method: 'GET',
2000
- url: '/api/v1/{region}/bean/expected-transactions/{id}',
2096
+ url: '/api/v1/admin/properties/{key}',
2001
2097
  path: {
2002
- id: data.id,
2003
- region: data.region
2098
+ key: data.key
2004
2099
  },
2005
2100
  errors: {
2006
- 404: 'Expected transaction not found'
2101
+ 401: 'Unauthorized',
2102
+ 403: 'Forbidden - insufficient permissions',
2103
+ 404: 'Property not found'
2007
2104
  }
2008
2105
  });
2009
2106
  }
2010
2107
 
2011
2108
  /**
2012
- * Skip expected transaction
2013
- * Marks an expected transaction as skipped (PENDING -> SKIPPED)
2109
+ * Update a system property
2014
2110
  * @param data The data for the request.
2015
- * @param data.id Expected transaction ID
2016
- * @param data.region Region code for tenant context
2017
- * @returns ExpectedTransactionResponseDto Expected transaction skipped successfully
2111
+ * @param data.key Property key
2112
+ * @param data.requestBody
2113
+ * @returns unknown Property updated successfully
2018
2114
  * @throws ApiError
2019
2115
  */
2020
- public static expectedTransactionControllerSkip(
2021
- data: ExpectedTransactionControllerSkipData
2022
- ): CancelablePromise<ExpectedTransactionControllerSkipResponse> {
2116
+ public static propertyControllerUpdate(
2117
+ data: PropertyControllerUpdateData
2118
+ ): CancelablePromise<PropertyControllerUpdateResponse> {
2023
2119
  return __request(OpenAPI, {
2024
- method: 'POST',
2025
- url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2120
+ method: 'PUT',
2121
+ url: '/api/v1/admin/properties/{key}',
2026
2122
  path: {
2027
- id: data.id,
2028
- region: data.region
2123
+ key: data.key
2029
2124
  },
2125
+ body: data.requestBody,
2126
+ mediaType: 'application/json',
2030
2127
  errors: {
2031
- 400: 'Cannot skip - not in PENDING status',
2032
- 404: 'Expected transaction not found'
2128
+ 401: 'Unauthorized',
2129
+ 403: 'Forbidden - insufficient permissions'
2033
2130
  }
2034
2131
  });
2035
2132
  }
2036
2133
 
2037
2134
  /**
2038
- * Undo skip
2039
- * Reverses a skip operation (SKIPPED -> PENDING)
2135
+ * Delete a system property
2040
2136
  * @param data The data for the request.
2041
- * @param data.id Expected transaction ID
2042
- * @param data.region Region code for tenant context
2043
- * @returns ExpectedTransactionResponseDto Skip undone successfully
2137
+ * @param data.key Property key
2138
+ * @returns void Property deleted successfully
2044
2139
  * @throws ApiError
2045
2140
  */
2046
- public static expectedTransactionControllerUndoSkip(
2047
- data: ExpectedTransactionControllerUndoSkipData
2048
- ): CancelablePromise<ExpectedTransactionControllerUndoSkipResponse> {
2141
+ public static propertyControllerDelete(
2142
+ data: PropertyControllerDeleteData
2143
+ ): CancelablePromise<PropertyControllerDeleteResponse> {
2049
2144
  return __request(OpenAPI, {
2050
2145
  method: 'DELETE',
2051
- url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2146
+ url: '/api/v1/admin/properties/{key}',
2052
2147
  path: {
2053
- id: data.id,
2054
- region: data.region
2148
+ key: data.key
2055
2149
  },
2056
2150
  errors: {
2057
- 400: 'Cannot undo - not in SKIPPED status',
2058
- 404: 'Expected transaction not found'
2151
+ 401: 'Unauthorized',
2152
+ 403: 'Forbidden - insufficient permissions',
2153
+ 404: 'Property not found'
2059
2154
  }
2060
2155
  });
2061
2156
  }
2157
+ }
2062
2158
 
2159
+ export class RecurringRulesService {
2063
2160
  /**
2064
- * Confirm transaction match
2065
- * 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
2066
2163
  * @param data The data for the request.
2067
- * @param data.id Expected transaction ID
2068
2164
  * @param data.region Region code for tenant context
2069
2165
  * @param data.requestBody
2070
- * @returns unknown Match confirmed successfully
2166
+ * @returns RecurringRuleResponseDto Rule created successfully
2071
2167
  * @throws ApiError
2072
2168
  */
2073
- public static expectedTransactionControllerConfirmMatch(
2074
- data: ExpectedTransactionControllerConfirmMatchData
2075
- ): CancelablePromise<ExpectedTransactionControllerConfirmMatchResponse> {
2169
+ public static recurringRuleControllerCreate(
2170
+ data: RecurringRuleControllerCreateData
2171
+ ): CancelablePromise<RecurringRuleControllerCreateResponse> {
2076
2172
  return __request(OpenAPI, {
2077
2173
  method: 'POST',
2078
- url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2174
+ url: '/api/v1/{region}/bean/recurring-rules',
2079
2175
  path: {
2080
- id: data.id,
2081
2176
  region: data.region
2082
2177
  },
2083
2178
  body: data.requestBody,
2084
2179
  mediaType: 'application/json',
2085
2180
  errors: {
2086
- 400: 'Cannot match - not in PENDING status',
2087
- 404: 'Expected or actual transaction not found',
2088
- 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'
2089
2183
  }
2090
2184
  });
2091
2185
  }
2092
2186
 
2093
2187
  /**
2094
- * Unmatch transaction
2095
- * 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
2096
2190
  * @param data The data for the request.
2097
- * @param data.id Expected transaction ID
2098
2191
  * @param data.region Region code for tenant context
2099
- * @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
2100
2196
  * @throws ApiError
2101
2197
  */
2102
- public static expectedTransactionControllerUnmatch(
2103
- data: ExpectedTransactionControllerUnmatchData
2104
- ): CancelablePromise<ExpectedTransactionControllerUnmatchResponse> {
2198
+ public static recurringRuleControllerFindAll(
2199
+ data: RecurringRuleControllerFindAllData
2200
+ ): CancelablePromise<RecurringRuleControllerFindAllResponse> {
2105
2201
  return __request(OpenAPI, {
2106
- method: 'DELETE',
2107
- url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2202
+ method: 'GET',
2203
+ url: '/api/v1/{region}/bean/recurring-rules',
2108
2204
  path: {
2109
- id: data.id,
2110
2205
  region: data.region
2111
2206
  },
2112
- errors: {
2113
- 400: 'Cannot unmatch - not in COMPLETED status',
2114
- 404: 'Expected transaction not found'
2207
+ query: {
2208
+ isActive: data.isActive,
2209
+ frequency: data.frequency,
2210
+ hasAutoCreate: data.hasAutoCreate
2115
2211
  }
2116
2212
  });
2117
2213
  }
2118
2214
 
2119
2215
  /**
2120
- * Enter Now
2121
- * 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.
2122
2218
  * @param data The data for the request.
2123
- * @param data.id Expected transaction ID
2219
+ * @param data.transactionId Source transaction ID
2124
2220
  * @param data.region Region code for tenant context
2125
2221
  * @param data.requestBody
2126
- * @returns unknown Transaction created successfully
2222
+ * @returns RecurringRuleResponseDto Rule created successfully
2127
2223
  * @throws ApiError
2128
2224
  */
2129
- public static expectedTransactionControllerEnterNow(
2130
- data: ExpectedTransactionControllerEnterNowData
2131
- ): CancelablePromise<ExpectedTransactionControllerEnterNowResponse> {
2225
+ public static recurringRuleControllerCreateFromTransaction(
2226
+ data: RecurringRuleControllerCreateFromTransactionData
2227
+ ): CancelablePromise<RecurringRuleControllerCreateFromTransactionResponse> {
2132
2228
  return __request(OpenAPI, {
2133
2229
  method: 'POST',
2134
- url: '/api/v1/{region}/bean/expected-transactions/{id}/enter',
2230
+ url: '/api/v1/{region}/bean/recurring-rules/from-transaction/{transactionId}',
2135
2231
  path: {
2136
- id: data.id,
2232
+ transactionId: data.transactionId,
2137
2233
  region: data.region
2138
2234
  },
2139
2235
  body: data.requestBody,
2140
2236
  mediaType: 'application/json',
2141
2237
  errors: {
2142
- 400: 'Cannot enter - not in PENDING status or missing accounts',
2143
- 404: 'Expected transaction or accounts not found'
2144
- }
2145
- });
2146
- }
2147
- }
2148
-
2149
- export class RecurringForecastService {
2150
- /**
2151
- * Get cash flow forecast
2152
- * Returns predicted outflows for the next N months based on active recurring rules
2153
- * @param data The data for the request.
2154
- * @param data.region Region code for tenant context
2155
- * @param data.months Number of months to forecast (1-12, default 3)
2156
- * @returns ForecastResponseDto Forecast retrieved successfully
2157
- * @throws ApiError
2158
- */
2159
- public static forecastControllerGetForecast(
2160
- data: ForecastControllerGetForecastData
2161
- ): CancelablePromise<ForecastControllerGetForecastResponse> {
2162
- return __request(OpenAPI, {
2163
- method: 'GET',
2164
- url: '/api/v1/{region}/bean/recurring/forecast',
2165
- path: {
2166
- region: data.region
2167
- },
2168
- query: {
2169
- months: data.months
2238
+ 404: 'Transaction not found',
2239
+ 409: 'Rule with same name already exists or transaction already linked'
2170
2240
  }
2171
2241
  });
2172
2242
  }
2173
- }
2174
2243
 
2175
- export class ReportingService {
2176
2244
  /**
2177
- * Get portfolio value trends
2178
- *
2179
- * Returns time series data of portfolio net worth.
2180
- *
2181
- * **Multi-currency Support:**
2182
- * - `series[].byCurrency` - Currency breakdown for each data point
2183
- * - `byCurrency` - Separate time series grouped by currency
2184
- * - `warnings` - Exchange rate warnings if conversion failed
2185
- *
2186
- * **Parameters:**
2187
- * - `period`: Time period (1m, 3m, 6m, 1y)
2188
- * - `granularity`: Data granularity (day, week, month)
2189
- *
2245
+ * Get recurring rule by ID
2246
+ * Returns a specific recurring rule with its details
2190
2247
  * @param data The data for the request.
2248
+ * @param data.id Rule ID
2191
2249
  * @param data.region Region code for tenant context
2192
- * @param data.period Time period
2193
- * @param data.granularity Data granularity
2194
- * @returns PortfolioTrendsResponseDto Trends retrieved successfully
2250
+ * @returns RecurringRuleResponseDto Rule retrieved successfully
2195
2251
  * @throws ApiError
2196
2252
  */
2197
- public static reportingControllerGetPortfolioTrends(
2198
- data: ReportingControllerGetPortfolioTrendsData
2199
- ): CancelablePromise<ReportingControllerGetPortfolioTrendsResponse> {
2253
+ public static recurringRuleControllerFindOne(
2254
+ data: RecurringRuleControllerFindOneData
2255
+ ): CancelablePromise<RecurringRuleControllerFindOneResponse> {
2200
2256
  return __request(OpenAPI, {
2201
2257
  method: 'GET',
2202
- url: '/api/v1/{region}/reporting/portfolio/trends',
2258
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
2203
2259
  path: {
2260
+ id: data.id,
2204
2261
  region: data.region
2205
2262
  },
2206
- query: {
2207
- period: data.period,
2208
- granularity: data.granularity
2209
- },
2210
2263
  errors: {
2211
- 401: 'User not authenticated'
2264
+ 404: 'Rule not found'
2212
2265
  }
2213
2266
  });
2214
2267
  }
2215
2268
 
2216
2269
  /**
2217
- * Get cash-flow trends
2218
- *
2219
- * Monthly income / expense / netSavings over a fixed N-month window
2220
- * (current month + N−1 prior). Missing months are zero-filled (flow metric).
2221
- *
2222
- * **Parameters:**
2223
- * - `period`: 1m | 3m | 6m | 1y (default 6m)
2224
- * - `granularity`: accepted for API symmetry; v1 returns month buckets
2225
- *
2270
+ * Update recurring rule
2271
+ * Updates an existing recurring rule
2226
2272
  * @param data The data for the request.
2273
+ * @param data.id Rule ID
2227
2274
  * @param data.region Region code for tenant context
2228
- * @param data.period Time period
2229
- * @param data.granularity Data granularity (accepted for API symmetry; v1 returns month buckets)
2230
- * @returns CashFlowTrendsResponseDto Cash-flow trends retrieved successfully
2275
+ * @param data.requestBody
2276
+ * @returns RecurringRuleResponseDto Rule updated successfully
2231
2277
  * @throws ApiError
2232
2278
  */
2233
- public static reportingControllerGetCashFlowTrends(
2234
- data: ReportingControllerGetCashFlowTrendsData
2235
- ): CancelablePromise<ReportingControllerGetCashFlowTrendsResponse> {
2279
+ public static recurringRuleControllerUpdate(
2280
+ data: RecurringRuleControllerUpdateData
2281
+ ): CancelablePromise<RecurringRuleControllerUpdateResponse> {
2236
2282
  return __request(OpenAPI, {
2237
- method: 'GET',
2238
- url: '/api/v1/{region}/reporting/cash-flow/trends',
2283
+ method: 'PATCH',
2284
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
2239
2285
  path: {
2286
+ id: data.id,
2240
2287
  region: data.region
2241
2288
  },
2242
- query: {
2243
- period: data.period,
2244
- granularity: data.granularity
2245
- },
2289
+ body: data.requestBody,
2290
+ mediaType: 'application/json',
2246
2291
  errors: {
2247
- 401: 'User not authenticated'
2292
+ 400: 'Invalid input data',
2293
+ 404: 'Rule not found'
2248
2294
  }
2249
2295
  });
2250
2296
  }
2251
2297
 
2252
2298
  /**
2253
- * Generate portfolio snapshot
2254
- *
2255
- * Manually generate a portfolio snapshot for a specific date.
2256
- *
2257
- * **Multi-currency Support:**
2258
- * - Fetches balances grouped by currency
2259
- * - Uses user's baseCurrency setting for conversion
2260
- * - Stores exchange rates and warnings
2261
- *
2262
- * **Use Cases:**
2263
- * - Testing snapshot generation
2264
- * - Force regeneration after data correction
2265
- * - Initial setup for new users
2266
- *
2299
+ * Delete recurring rule
2300
+ * Soft deletes a recurring rule (sets isActive to false)
2267
2301
  * @param data The data for the request.
2302
+ * @param data.id Rule ID
2268
2303
  * @param data.region Region code for tenant context
2269
- * @param data.requestBody Optional date (defaults to today)
2270
- * @returns GenerateSnapshotResponse Snapshot generated successfully
2304
+ * @returns void Rule deleted successfully
2271
2305
  * @throws ApiError
2272
2306
  */
2273
- public static reportingControllerGenerateSnapshot(
2274
- data: ReportingControllerGenerateSnapshotData
2275
- ): CancelablePromise<ReportingControllerGenerateSnapshotResponse> {
2307
+ public static recurringRuleControllerDelete(
2308
+ data: RecurringRuleControllerDeleteData
2309
+ ): CancelablePromise<RecurringRuleControllerDeleteResponse> {
2276
2310
  return __request(OpenAPI, {
2277
- method: 'POST',
2278
- url: '/api/v1/{region}/reporting/snapshots/generate',
2311
+ method: 'DELETE',
2312
+ url: '/api/v1/{region}/bean/recurring-rules/{id}',
2279
2313
  path: {
2314
+ id: data.id,
2280
2315
  region: data.region
2281
2316
  },
2282
- body: data.requestBody,
2283
- mediaType: 'application/json',
2284
2317
  errors: {
2285
- 400: 'Invalid date format',
2286
- 401: 'User not authenticated'
2318
+ 404: 'Rule not found'
2287
2319
  }
2288
2320
  });
2289
2321
  }
2290
2322
 
2291
2323
  /**
2292
- * Backfill portfolio snapshots
2293
- *
2294
- * Generate snapshots for a date range (historical data backfill).
2295
- *
2296
- * **Multi-currency Support:**
2297
- * - Each snapshot includes multi-currency data
2298
- * - Uses exchange rates available at generation time
2299
- * - Warnings stored for missing exchange rates
2300
- *
2301
- * **Best Practices:**
2302
- * - Use for initial setup after account configuration
2303
- * - Run during low-traffic periods for large date ranges
2304
- * - Existing snapshots are skipped (not regenerated)
2305
- *
2324
+ * Get rule with statistics
2325
+ * Returns a rule with pending/overdue counts and next expected date
2306
2326
  * @param data The data for the request.
2327
+ * @param data.id Rule ID
2307
2328
  * @param data.region Region code for tenant context
2308
- * @param data.requestBody
2309
- * @returns BackfillSnapshotsResponse Backfill completed successfully
2329
+ * @returns RecurringRuleWithStatsResponseDto Rule with stats retrieved successfully
2310
2330
  * @throws ApiError
2311
2331
  */
2312
- public static reportingControllerBackfillSnapshots(
2313
- data: ReportingControllerBackfillSnapshotsData
2314
- ): CancelablePromise<ReportingControllerBackfillSnapshotsResponse> {
2332
+ public static recurringRuleControllerGetWithStats(
2333
+ data: RecurringRuleControllerGetWithStatsData
2334
+ ): CancelablePromise<RecurringRuleControllerGetWithStatsResponse> {
2315
2335
  return __request(OpenAPI, {
2316
- method: 'POST',
2317
- url: '/api/v1/{region}/reporting/snapshots/backfill',
2336
+ method: 'GET',
2337
+ url: '/api/v1/{region}/bean/recurring-rules/{id}/stats',
2318
2338
  path: {
2339
+ id: data.id,
2319
2340
  region: data.region
2320
2341
  },
2321
- body: data.requestBody,
2322
- mediaType: 'application/json',
2323
- errors: {
2324
- 400: 'Invalid date format or range',
2325
- 401: 'User not authenticated',
2326
- 409: 'Backfill already in progress for this user'
2327
- }
2328
- });
2329
- }
2330
- }
2331
-
2332
- export class UsersService {
2333
- /**
2334
- * Delete own user account
2335
- * @param data The data for the request.
2336
- * @param data.requestBody
2337
- * @returns void User deleted successfully
2338
- * @throws ApiError
2339
- */
2340
- public static userControllerDeleteOwnUser(
2341
- data: UserControllerDeleteOwnUserData
2342
- ): CancelablePromise<UserControllerDeleteOwnUserResponse> {
2343
- return __request(OpenAPI, {
2344
- method: 'DELETE',
2345
- url: '/api/v1/users',
2346
- body: data.requestBody,
2347
- mediaType: 'application/json',
2348
2342
  errors: {
2349
- 403: 'Invalid access token'
2350
- }
2351
- });
2352
- }
2353
-
2354
- /**
2355
- * Get current authenticated user
2356
- * @param data The data for the request.
2357
- * @param data.acceptLanguage
2358
- * @returns UserResponseDto User retrieved successfully
2359
- * @throws ApiError
2360
- */
2361
- public static userControllerGetUser(
2362
- data: UserControllerGetUserData
2363
- ): CancelablePromise<UserControllerGetUserResponse> {
2364
- return __request(OpenAPI, {
2365
- method: 'GET',
2366
- url: '/api/v1/users',
2367
- headers: {
2368
- 'accept-language': data.acceptLanguage
2369
- }
2370
- });
2371
- }
2372
-
2373
- /**
2374
- * Sign up new user
2375
- * Create a new account with auto-generated access token. Protected by Cloudflare Turnstile to prevent automated signup (when enabled).
2376
- * @param data The data for the request.
2377
- * @param data.requestBody
2378
- * @returns SignupResponseDto User created successfully
2379
- * @throws ApiError
2380
- */
2381
- public static userControllerSignupUser(
2382
- data: UserControllerSignupUserData
2383
- ): CancelablePromise<UserControllerSignupUserResponse> {
2384
- return __request(OpenAPI, {
2385
- method: 'POST',
2386
- url: '/api/v1/users',
2387
- body: data.requestBody,
2388
- mediaType: 'application/json',
2389
- errors: {
2390
- 400: 'Invalid Turnstile token (when Turnstile is enabled)',
2391
- 403: 'User signup is disabled'
2343
+ 404: 'Rule not found'
2392
2344
  }
2393
2345
  });
2394
2346
  }
2347
+ }
2395
2348
 
2349
+ export class ExpectedTransactionsService {
2396
2350
  /**
2397
- * Delete user by ID (admin only)
2351
+ * List expected transactions
2352
+ * Returns expected transactions for the authenticated user with optional filtering
2398
2353
  * @param data The data for the request.
2399
- * @param data.id User ID to delete
2400
- * @returns void User deleted successfully
2354
+ * @param data.region Region code for tenant context
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
2401
2360
  * @throws ApiError
2402
2361
  */
2403
- public static userControllerDeleteUser(
2404
- data: UserControllerDeleteUserData
2405
- ): CancelablePromise<UserControllerDeleteUserResponse> {
2362
+ public static expectedTransactionControllerFindAll(
2363
+ data: ExpectedTransactionControllerFindAllData
2364
+ ): CancelablePromise<ExpectedTransactionControllerFindAllResponse> {
2406
2365
  return __request(OpenAPI, {
2407
- method: 'DELETE',
2408
- url: '/api/v1/users/{id}',
2366
+ method: 'GET',
2367
+ url: '/api/v1/{region}/bean/expected-transactions',
2409
2368
  path: {
2410
- id: data.id
2369
+ region: data.region
2411
2370
  },
2412
- errors: {
2413
- 403: 'Cannot delete own account or insufficient permissions'
2371
+ query: {
2372
+ ruleId: data.ruleId,
2373
+ status: data.status,
2374
+ fromDate: data.fromDate,
2375
+ toDate: data.toDate
2414
2376
  }
2415
2377
  });
2416
2378
  }
2417
2379
 
2418
2380
  /**
2419
- * Get user info by user ID
2381
+ * List overdue expected transactions
2382
+ * Returns all overdue expected transactions (PENDING past tolerance)
2420
2383
  * @param data The data for the request.
2421
- * @param data.id User ID
2422
- * @returns unknown User info retrieved successfully
2384
+ * @param data.region Region code for tenant context
2385
+ * @returns ExpectedTransactionListResponseDto Overdue transactions retrieved successfully
2423
2386
  * @throws ApiError
2424
2387
  */
2425
- public static userControllerGetUserInfo(
2426
- data: UserControllerGetUserInfoData
2427
- ): CancelablePromise<UserControllerGetUserInfoResponse> {
2388
+ public static expectedTransactionControllerFindOverdue(
2389
+ data: ExpectedTransactionControllerFindOverdueData
2390
+ ): CancelablePromise<ExpectedTransactionControllerFindOverdueResponse> {
2428
2391
  return __request(OpenAPI, {
2429
2392
  method: 'GET',
2430
- url: '/api/v1/users/{id}/info',
2393
+ url: '/api/v1/{region}/bean/expected-transactions/overdue',
2431
2394
  path: {
2432
- id: data.id
2433
- },
2434
- errors: {
2435
- 403: 'Cannot access other user info without admin permission'
2395
+ region: data.region
2436
2396
  }
2437
2397
  });
2438
2398
  }
2439
2399
 
2440
2400
  /**
2441
- * Update user settings
2401
+ * Get expected transaction by ID
2402
+ * Returns a specific expected transaction with rule details
2442
2403
  * @param data The data for the request.
2443
- * @param data.requestBody
2444
- * @returns unknown Settings updated successfully
2404
+ * @param data.id Expected transaction ID
2405
+ * @param data.region Region code for tenant context
2406
+ * @returns ExpectedTransactionResponseDto Expected transaction retrieved successfully
2445
2407
  * @throws ApiError
2446
2408
  */
2447
- public static userControllerUpdateUserSetting(
2448
- data: UserControllerUpdateUserSettingData
2449
- ): CancelablePromise<UserControllerUpdateUserSettingResponse> {
2409
+ public static expectedTransactionControllerFindOne(
2410
+ data: ExpectedTransactionControllerFindOneData
2411
+ ): CancelablePromise<ExpectedTransactionControllerFindOneResponse> {
2450
2412
  return __request(OpenAPI, {
2451
- method: 'PUT',
2452
- url: '/api/v1/users/setting',
2453
- body: data.requestBody,
2454
- mediaType: 'application/json',
2413
+ method: 'GET',
2414
+ url: '/api/v1/{region}/bean/expected-transactions/{id}',
2415
+ path: {
2416
+ id: data.id,
2417
+ region: data.region
2418
+ },
2455
2419
  errors: {
2456
- 403: 'Insufficient permissions'
2420
+ 404: 'Expected transaction not found'
2457
2421
  }
2458
2422
  });
2459
2423
  }
2460
2424
 
2461
2425
  /**
2462
- * Get all user settings paginated (admin only)
2426
+ * Skip expected transaction
2427
+ * Marks an expected transaction as skipped (PENDING -> SKIPPED)
2463
2428
  * @param data The data for the request.
2464
- * @param data.pageNo Page number
2465
- * @param data.pageSize Page size
2466
- * @returns unknown Settings list retrieved successfully
2429
+ * @param data.id Expected transaction ID
2430
+ * @param data.region Region code for tenant context
2431
+ * @returns ExpectedTransactionResponseDto Expected transaction skipped successfully
2467
2432
  * @throws ApiError
2468
2433
  */
2469
- public static userControllerGetAllUserSettingsByPage(
2470
- data: UserControllerGetAllUserSettingsByPageData
2471
- ): CancelablePromise<UserControllerGetAllUserSettingsByPageResponse> {
2434
+ public static expectedTransactionControllerSkip(
2435
+ data: ExpectedTransactionControllerSkipData
2436
+ ): CancelablePromise<ExpectedTransactionControllerSkipResponse> {
2472
2437
  return __request(OpenAPI, {
2473
- method: 'GET',
2474
- url: '/api/v1/users/settings-by-page',
2475
- query: {
2476
- pageNo: data.pageNo,
2477
- pageSize: data.pageSize
2438
+ method: 'POST',
2439
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/skip',
2440
+ path: {
2441
+ id: data.id,
2442
+ region: data.region
2443
+ },
2444
+ errors: {
2445
+ 400: 'Cannot skip - not in PENDING status',
2446
+ 404: 'Expected transaction not found'
2478
2447
  }
2479
2448
  });
2480
2449
  }
2481
2450
 
2482
2451
  /**
2483
- * Get asset and liability summary for current user
2484
- * @returns unknown Summary retrieved successfully
2452
+ * Undo skip
2453
+ * Reverses a skip operation (SKIPPED -> PENDING)
2454
+ * @param data The data for the request.
2455
+ * @param data.id Expected transaction ID
2456
+ * @param data.region Region code for tenant context
2457
+ * @returns void Skip undone successfully
2485
2458
  * @throws ApiError
2486
2459
  */
2487
- public static userControllerGetAssetLiabilitySummary(): CancelablePromise<UserControllerGetAssetLiabilitySummaryResponse> {
2460
+ public static expectedTransactionControllerUndoSkip(
2461
+ data: ExpectedTransactionControllerUndoSkipData
2462
+ ): CancelablePromise<ExpectedTransactionControllerUndoSkipResponse> {
2488
2463
  return __request(OpenAPI, {
2489
- method: 'GET',
2490
- url: '/api/v1/users/asset-liability-summary'
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'
2473
+ }
2491
2474
  });
2492
2475
  }
2493
- }
2494
2476
 
2495
- export class PropertiesService {
2496
2477
  /**
2497
- * Get all system properties
2498
- * @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
2499
2485
  * @throws ApiError
2500
2486
  */
2501
- public static propertyControllerGetAll(): CancelablePromise<PropertyControllerGetAllResponse> {
2487
+ public static expectedTransactionControllerConfirmMatch(
2488
+ data: ExpectedTransactionControllerConfirmMatchData
2489
+ ): CancelablePromise<ExpectedTransactionControllerConfirmMatchResponse> {
2502
2490
  return __request(OpenAPI, {
2503
- method: 'GET',
2504
- 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',
2505
2499
  errors: {
2506
- 401: 'Unauthorized',
2507
- 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'
2508
2503
  }
2509
2504
  });
2510
2505
  }
2511
2506
 
2512
2507
  /**
2513
- * Get property by key
2508
+ * Unmatch transaction
2509
+ * Removes the match between expected and actual transaction (COMPLETED -> PENDING)
2514
2510
  * @param data The data for the request.
2515
- * @param data.key Property key
2516
- * @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
2517
2514
  * @throws ApiError
2518
2515
  */
2519
- public static propertyControllerGetByKey(
2520
- data: PropertyControllerGetByKeyData
2521
- ): CancelablePromise<PropertyControllerGetByKeyResponse> {
2516
+ public static expectedTransactionControllerUnmatch(
2517
+ data: ExpectedTransactionControllerUnmatchData
2518
+ ): CancelablePromise<ExpectedTransactionControllerUnmatchResponse> {
2522
2519
  return __request(OpenAPI, {
2523
- method: 'GET',
2524
- url: '/api/v1/admin/properties/{key}',
2520
+ method: 'DELETE',
2521
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/match',
2525
2522
  path: {
2526
- key: data.key
2523
+ id: data.id,
2524
+ region: data.region
2527
2525
  },
2528
2526
  errors: {
2529
- 401: 'Unauthorized',
2530
- 403: 'Forbidden - insufficient permissions',
2531
- 404: 'Property not found'
2527
+ 400: 'Cannot unmatch - not in COMPLETED status',
2528
+ 404: 'Expected transaction not found'
2532
2529
  }
2533
2530
  });
2534
2531
  }
2535
2532
 
2536
2533
  /**
2537
- * Update a system property
2534
+ * Enter Now
2535
+ * Creates an actual transaction for an expected transaction (YNAB-style Enter Now)
2538
2536
  * @param data The data for the request.
2539
- * @param data.key Property key
2537
+ * @param data.id Expected transaction ID
2538
+ * @param data.region Region code for tenant context
2540
2539
  * @param data.requestBody
2541
- * @returns unknown Property updated successfully
2540
+ * @returns unknown Transaction created successfully
2542
2541
  * @throws ApiError
2543
2542
  */
2544
- public static propertyControllerUpdate(
2545
- data: PropertyControllerUpdateData
2546
- ): CancelablePromise<PropertyControllerUpdateResponse> {
2543
+ public static expectedTransactionControllerEnterNow(
2544
+ data: ExpectedTransactionControllerEnterNowData
2545
+ ): CancelablePromise<ExpectedTransactionControllerEnterNowResponse> {
2547
2546
  return __request(OpenAPI, {
2548
- method: 'PUT',
2549
- url: '/api/v1/admin/properties/{key}',
2547
+ method: 'POST',
2548
+ url: '/api/v1/{region}/bean/expected-transactions/{id}/enter',
2550
2549
  path: {
2551
- key: data.key
2550
+ id: data.id,
2551
+ region: data.region
2552
2552
  },
2553
2553
  body: data.requestBody,
2554
2554
  mediaType: 'application/json',
2555
2555
  errors: {
2556
- 401: 'Unauthorized',
2557
- 403: 'Forbidden - insufficient permissions'
2556
+ 400: 'Cannot enter - not in PENDING status or missing accounts',
2557
+ 404: 'Expected transaction or accounts not found'
2558
2558
  }
2559
2559
  });
2560
2560
  }
2561
+ }
2561
2562
 
2563
+ export class RecurringForecastService {
2562
2564
  /**
2563
- * Delete a system property
2565
+ * Get cash flow forecast
2566
+ * Returns predicted outflows for the next N months based on active recurring rules
2564
2567
  * @param data The data for the request.
2565
- * @param data.key Property key
2566
- * @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
2567
2571
  * @throws ApiError
2568
2572
  */
2569
- public static propertyControllerDelete(
2570
- data: PropertyControllerDeleteData
2571
- ): CancelablePromise<PropertyControllerDeleteResponse> {
2573
+ public static forecastControllerGetForecast(
2574
+ data: ForecastControllerGetForecastData
2575
+ ): CancelablePromise<ForecastControllerGetForecastResponse> {
2572
2576
  return __request(OpenAPI, {
2573
- method: 'DELETE',
2574
- url: '/api/v1/admin/properties/{key}',
2577
+ method: 'GET',
2578
+ url: '/api/v1/{region}/bean/recurring/forecast',
2575
2579
  path: {
2576
- key: data.key
2580
+ region: data.region
2577
2581
  },
2578
- errors: {
2579
- 401: 'Unauthorized',
2580
- 403: 'Forbidden - insufficient permissions',
2581
- 404: 'Property not found'
2582
+ query: {
2583
+ months: data.months
2582
2584
  }
2583
2585
  });
2584
2586
  }
@@ -3202,7 +3204,7 @@ export class BeanExportService {
3202
3204
  /**
3203
3205
  * Export Beancount ledger as ZIP
3204
3206
  * Export all user Beancount data as a ZIP file containing ledger.beancount and yearly files in community format.
3205
- * @returns unknown
3207
+ * @returns binary ZIP archive (application/zip) streamed as an attachment
3206
3208
  * @throws ApiError
3207
3209
  */
3208
3210
  public static exportControllerExportBeancount(): CancelablePromise<ExportControllerExportBeancountResponse> {
@@ -3803,6 +3805,31 @@ export class BeanPlatformsService {
3803
3805
  });
3804
3806
  }
3805
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
+
3806
3833
  /**
3807
3834
  * Update a platform
3808
3835
  * @param data The data for the request.
@@ -4078,15 +4105,20 @@ export class CommunityService {
4078
4105
  }
4079
4106
  }
4080
4107
 
4081
- export class DefaultService {
4108
+ export class AdminCacheService {
4082
4109
  /**
4083
- * @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
4084
4113
  * @throws ApiError
4085
4114
  */
4086
4115
  public static cacheControllerFlushCache(): CancelablePromise<CacheControllerFlushCacheResponse> {
4087
4116
  return __request(OpenAPI, {
4088
4117
  method: 'POST',
4089
- url: '/api/v1/cache/flush'
4118
+ url: '/api/v1/cache/flush',
4119
+ errors: {
4120
+ 403: 'Admin access required'
4121
+ }
4090
4122
  });
4091
4123
  }
4092
4124
  }