@lunch-money/developer-docs 2.11.0-preview.9 → 2.11.0

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.
@@ -4,13 +4,23 @@ info:
4
4
  description: |-
5
5
  ### Introduction
6
6
 
7
+ Welcome to the Lunch Money v2 API reference. This is the **v2.11.0** spec.
8
+
7
9
  The API is available at `https://api.lunchmoney.dev/v2`. Get your access token from the [Lunch Money developers page](https://my.lunchmoney.app/developers).
8
10
 
9
- <span class="red-text"><strong>The v2 API is in open alpha and is still subject to change. Use the mock server or a test budget when getting started.</strong></span>
11
+
12
+ **Try it from these docs**
10
13
 
11
- **Static Mock Server**
14
+ These docs are interactive — use **Test request** on any endpoint to call the API from this page.
15
+ Choose a LIVE or MOCK service from the Server dropdown.
16
+ Requests sent to `https://api.lunchmoney.dev/v2` can <span class="red-text"><strong>change or delete</strong></span> your data and are <span class="red-text"><strong>permanent</strong></span>.
17
+ See the [Getting Started Guide](https://lunchmoney.dev/v2/getting-started) before using the live API.
18
+
19
+ **Static mock server**
12
20
 
13
- Explore the API without an access token or risk to real data. Select **"Static Mock v2 Lunch Money API Server"** from the Server dropdown, then set your Bearer token to any string with 11 or more characters.
21
+ Explore without risk to real data. Select `http://mock.lunchmoney.dev/v2` in the Server dropdown to work with static mock data.
22
+ POST, PUT, and DELETE requests will return realistic responses, but do not change the mock data.
23
+
14
24
 
15
25
  **Client Libraries & SDKs**
16
26
 
@@ -18,15 +28,14 @@ info:
18
28
 
19
29
  **Migrating from v1**
20
30
 
21
- The v2 API is not backwards compatible with v1. See the [Migration Guide](https://alpha.lunchmoney.dev/v2/migration-guide) for details.
31
+ The v2 API is not backwards compatible with v1. See the [Migration Guide](https://lunchmoney.dev/v2/migration-guide) for details.
22
32
 
23
33
  **Useful links**
24
- - [Developer Portal](https://alpha.lunchmoney.dev/v2/introduction)
25
- - [Getting Started Guide](https://alpha.lunchmoney.dev/v2/getting-started)
26
- - [v2 API Overview](https://alpha.lunchmoney.dev/v2/overview)
27
- - [Version History](https://alpha.lunchmoney.dev/v2/version-history)
28
- - [Migration Guide](https://alpha.lunchmoney.dev/v2/migration-guide)
29
- - [Rate Limits](https://alpha.lunchmoney.dev/v2/rate-limits)
34
+ - [Getting Started Guide](https://lunchmoney.dev/v2/getting-started)
35
+ - [v2 API Overview](https://lunchmoney.dev/v2/overview)
36
+ - [Version History](https://lunchmoney.dev/v2/version-history)
37
+ - [Migration Guide](https://lunchmoney.dev/v2/migration-guide)
38
+ - [Rate Limits](https://lunchmoney.dev/v2/rate-limits)
30
39
  termsOfService: https://lunchmoney.dev/#current-status
31
40
  contact:
32
41
  email: devsupport@lunchmoney.app
@@ -37,10 +46,9 @@ info:
37
46
 
38
47
  servers:
39
48
  - url: https://api.lunchmoney.dev/v2
40
- description: v2 Lunch Money API Server - changes will affect real data!
41
- # - url: https://mock.lunchmoney.dev/v2
42
- - url: https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/
43
- description: Static mock version of the v2 Lunch Money API Server
49
+ description: ⚠ LIVE — changes real Lunch Money data
50
+ - url: http://mock.lunchmoney.dev/v2
51
+ description: MOCK — static demo data, no API key required
44
52
 
45
53
  tags:
46
54
  - name: me
@@ -71,7 +79,11 @@ tags:
71
79
  description: Learn more about crypto assets
72
80
  url: https://support.lunchmoney.app/setup/crypto
73
81
  - name: balance_history
74
- description: View and update historical account balances. Balance history is what drives the [Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app. Balance history is generated for each account's balance on the first day of each month and can be edited in the Lunch Money app or via the API.
82
+ description: >-
83
+ View and update monthly account balances used by the
84
+ [Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app.
85
+ History is monthly. The current month may be calculated on demand when
86
+ requested.
75
87
  - name: recurring_items
76
88
  description: Work with recurring items
77
89
  externalDocs:
@@ -979,16 +991,19 @@ components:
979
991
  example: Cold Wallet BTC
980
992
  display_name:
981
993
  type: string
994
+ nullable: true
982
995
  minLength: 1
983
996
  maxLength: 45
984
- description: Optional display name for the manual crypto asset. If
985
- omitted, clients may derive one from `institution_name` + `name`.
997
+ description: Display name for the manual crypto asset. If omitted or
998
+ `null`, clients may derive one from `institution_name` + `name`.
986
999
  example: Cold Storage
987
1000
  institution_name:
988
1001
  type: string
1002
+ nullable: true
989
1003
  minLength: 1
990
1004
  maxLength: 50
991
- description: Optional institution or wallet provider display name
1005
+ description: Institution or wallet provider display name. If omitted
1006
+ or `null`, no institution name is set.
992
1007
  example: Ledger
993
1008
  balance:
994
1009
  oneOf:
@@ -1244,15 +1259,19 @@ components:
1244
1259
  example: My Savings Account
1245
1260
  institution_name:
1246
1261
  type: string
1262
+ nullable: true
1247
1263
  example: Bank of the West
1248
- description: Name of institution holding the manual account
1264
+ description: Name of the institution holding the manual account. If
1265
+ omitted or `null`, no institution name is set.
1249
1266
  minLength: 1
1250
1267
  maxLength: 50
1251
1268
  display_name:
1252
1269
  type: string
1253
- description: Display name of the manual account as set by user or
1254
- derived from the `institution_name` and `name` if not explicitly
1255
- set.<br> This must be unique for the budgeting account.
1270
+ nullable: true
1271
+ description: Display name of the manual account. If omitted or
1272
+ `null`, it is derived from `institution_name` and `name`. An
1273
+ explicitly set display name must be unique for the budgeting
1274
+ account.
1256
1275
  example: Savings
1257
1276
  type:
1258
1277
  description: The type of manual account
@@ -1260,8 +1279,10 @@ components:
1260
1279
  - $ref: "#/components/schemas/accountTypeEnum"
1261
1280
  subtype:
1262
1281
  type: string
1263
- description: An optional manual account subtype. Examples include<br>
1264
- - retirement - checking - savings - prepaid credit card
1282
+ nullable: true
1283
+ description: Manual account subtype. If omitted or `null`, no subtype
1284
+ is set. Examples include retirement, checking, savings, and prepaid
1285
+ credit card.
1265
1286
  minLength: 1
1266
1287
  maxLength: 100
1267
1288
  example: prepaid credit card
@@ -1635,7 +1656,7 @@ components:
1635
1656
  type:
1636
1657
  type: string
1637
1658
  enum: [manual]
1638
- description: Identifies this entry as belonging to a manually-managed account.
1659
+ description: Identifies this entry as belonging to a manual account.
1639
1660
  manual_account_id:
1640
1661
  type: integer
1641
1662
  format: int32
@@ -1664,14 +1685,14 @@ components:
1664
1685
 
1665
1686
  balanceHistorySourceCryptoManual:
1666
1687
  type: object
1667
- description: Source information for a manually-tracked cryptocurrency balance history entry.
1688
+ description: Source information for a manual cryptocurrency balance history entry.
1668
1689
  additionalProperties: false
1669
1690
  x-internal: true
1670
1691
  properties:
1671
1692
  type:
1672
1693
  type: string
1673
1694
  enum: [crypto_manual]
1674
- description: Identifies this entry as belonging to a manually-tracked crypto account.
1695
+ description: Identifies this entry as belonging to a manual crypto account.
1675
1696
  crypto_manual_id:
1676
1697
  type: integer
1677
1698
  format: int32
@@ -1714,10 +1735,11 @@ components:
1714
1735
  type: object
1715
1736
  x-internal: true
1716
1737
  description: >
1717
- Source information for a balance history entry whose account has since been deleted.
1738
+ Source information for balance history whose account has since been deleted.
1718
1739
  Historical balances are preserved when a user chooses to keep history on account deletion.
1719
1740
  This object contains details that can be used to display the deleted account in the UI.
1720
- The `deleted_account_id` can be passed to `PUT /v2/balance_history/deleted/{account_id}/details`
1741
+ The `deleted_account_id` can be passed to
1742
+ [PUT /balance_history/deleted/{account_id}/details](#tag/balance-history/PUT/balance_history/deleted/{account_id}/details)
1721
1743
  to update the archived source metadata.
1722
1744
  additionalProperties: false
1723
1745
  properties:
@@ -1748,11 +1770,11 @@ components:
1748
1770
  subtype:
1749
1771
  type: string
1750
1772
  nullable: true
1751
- description: Archived `subtype`` of the deleted account source
1773
+ description: Archived `subtype` of the deleted account source
1752
1774
  mask:
1753
1775
  type: string
1754
1776
  nullable: true
1755
- description: Archived account `mask` for a deleted plaid account source
1777
+ description: Archived account `mask` for a deleted Plaid account source
1756
1778
  symbol:
1757
1779
  type: string
1758
1780
  nullable: true
@@ -1774,12 +1796,14 @@ components:
1774
1796
  type: object
1775
1797
  title: balance history for an account object
1776
1798
  additionalProperties: false
1777
- description: Historical balance entries grouped under a single account source.
1799
+ description: Monthly balance entries grouped under a single account source.
1778
1800
  properties:
1779
1801
  source:
1780
1802
  description: >
1781
- Identifies the account this balance entry belongs to. The shape varies by
1782
- `source.type`. Use `source.type` to determine which account id field is present.
1803
+ Identifies the account these balance entries belong to. The shape varies by
1804
+ `source.type`. Each source type exposes a type-specific account id field
1805
+ (`manual_account_id`, `plaid_account_id`, `crypto_manual_id`,
1806
+ `crypto_synced_id`, or `deleted_account_id`).
1783
1807
  oneOf:
1784
1808
  - $ref: "#/components/schemas/balanceHistorySourceManual"
1785
1809
  - $ref: "#/components/schemas/balanceHistorySourcePlaid"
@@ -1797,38 +1821,48 @@ components:
1797
1821
  balances:
1798
1822
  type: array
1799
1823
  description: >
1800
- Monthly balance history entries for the source account. On GET responses,
1801
- this includes all entries in the requested range. On PUT upsert responses,
1802
- this includes only the entries modified by that request.
1824
+ Monthly balance entries for this account source. A `historical` entry is
1825
+ a stored snapshot of a past month and includes an `id`. A `current` entry
1826
+ is an ephemeral snapshot based on the account's current balances and has
1827
+ no balance-entry `id`. On PUT upsert responses, this array includes only
1828
+ the `type: historical` entries modified by that request.
1803
1829
  items:
1804
- $ref: "#/components/schemas/balanceHistoryObject"
1830
+ $ref: "#/components/schemas/balanceHistoryEntry"
1805
1831
  required:
1806
1832
  - source
1807
1833
  - balances
1808
1834
 
1809
- balanceHistoryObject:
1835
+ historicalBalanceHistoryEntry:
1810
1836
  type: object
1811
- title: balance history entry object
1837
+ title: historical balance history entry
1812
1838
  additionalProperties: false
1813
1839
  x-internal: true
1814
- description: A historical balance entry for a single account on a single date.
1840
+ description: >
1841
+ A stored monthly balance for a past month. The `id` may be used with
1842
+ balance history entry endpoints. The balance represents the account
1843
+ balance at or around the end of `month`.
1815
1844
  properties:
1845
+ type:
1846
+ type: string
1847
+ enum: [historical]
1848
+ description: Identifies this entry as a stored snapshot of a past month.
1816
1849
  id:
1817
1850
  type: integer
1818
1851
  format: int32
1819
- description: Unique identifier of this historical balance entry.
1820
- date:
1852
+ description: Unique identifier for this historical balance entry.
1853
+ month:
1821
1854
  type: string
1822
- format: date
1823
- description: Date of this historical balance entry in YYYY-MM-DD format. This is always the first day of a month.
1855
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
1856
+ description: Calendar month for this entry in YYYY-MM format.
1857
+ example: "2026-06"
1824
1858
  balance:
1825
1859
  type: string
1826
1860
  pattern: ^-?\d+(\.\d{1,4})?$
1827
- description: Historical balance stored for this entry, as a numeric string with up to four decimal places. Trailing zeros and decimal places are not guaranteed in responses. For manual and Plaid accounts this is in the account currency. For crypto accounts this is in the user's primary currency.
1861
+ description: Historical balance for this entry, as a numeric string with up to four decimal places. Trailing zeros and decimal places are not guaranteed in responses. For manual and Plaid accounts this is in the account currency. For crypto accounts this is in the user's primary currency.
1828
1862
  currency:
1829
1863
  allOf:
1830
1864
  - $ref: "#/components/schemas/currencyEnum"
1831
- description: Currency of the stored `balance`. For crypto entries this is the user's primary currency.
1865
+ description: Currency of `balance`. For crypto entries this is the user's primary currency.
1832
1866
  to_base:
1833
1867
  type: number
1834
1868
  format: double
@@ -1837,19 +1871,82 @@ components:
1837
1871
  type: string
1838
1872
  nullable: true
1839
1873
  pattern: ^-?\d+(\.\d{1,18})?$
1840
- description: Crypto quantity stored for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
1874
+ description: Crypto quantity for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
1841
1875
  required:
1876
+ - type
1842
1877
  - id
1843
- - date
1878
+ - month
1844
1879
  - balance
1845
1880
  - currency
1846
1881
  - to_base
1847
1882
  - crypto_balance
1848
1883
 
1884
+ currentBalanceHistoryEntry:
1885
+ type: object
1886
+ title: current balance history entry
1887
+ additionalProperties: false
1888
+ x-internal: true
1889
+ description: >
1890
+ An ephemeral snapshot based on the account's current balances. It may
1891
+ change between requests.
1892
+ properties:
1893
+ type:
1894
+ type: string
1895
+ enum: [current]
1896
+ description: Identifies this entry as an ephemeral current-month snapshot.
1897
+ month:
1898
+ type: string
1899
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
1900
+ description: Calendar month for this entry in YYYY-MM format. For current entries this is the current month.
1901
+ example: "2026-07"
1902
+ balance:
1903
+ type: string
1904
+ pattern: ^-?\d+(\.\d{1,4})?$
1905
+ description: Calculated balance for the current month, as a numeric string with up to four decimal places. Trailing zeros and decimal places are not guaranteed in responses. For manual and Plaid accounts this is in the account currency. For crypto accounts this is in the user's primary currency.
1906
+ currency:
1907
+ allOf:
1908
+ - $ref: "#/components/schemas/currencyEnum"
1909
+ description: Currency of the calculated `balance`. For crypto entries this is the user's primary currency.
1910
+ to_base:
1911
+ type: number
1912
+ format: double
1913
+ description: Calculated balance converted to the user's primary currency. When the entry currency is the user's primary currency, this is the numeric value of `balance`.
1914
+ crypto_balance:
1915
+ type: string
1916
+ nullable: true
1917
+ pattern: ^-?\d+(\.\d{1,18})?$
1918
+ description: Crypto quantity for this calculated entry, when available. This may be present for crypto entries and is `null` otherwise.
1919
+ required:
1920
+ - type
1921
+ - month
1922
+ - balance
1923
+ - currency
1924
+ - to_base
1925
+ - crypto_balance
1926
+
1927
+ balanceHistoryEntry:
1928
+ title: balance history entry
1929
+ x-internal: true
1930
+ description: >
1931
+ A monthly balance history entry. Discriminated by `type`. `historical`
1932
+ entries are stored snapshots of past months with an `id`. `current`
1933
+ entries are ephemeral snapshots with no balance-entry `id`.
1934
+ oneOf:
1935
+ - $ref: "#/components/schemas/historicalBalanceHistoryEntry"
1936
+ - $ref: "#/components/schemas/currentBalanceHistoryEntry"
1937
+ discriminator:
1938
+ propertyName: type
1939
+ mapping:
1940
+ historical: "#/components/schemas/historicalBalanceHistoryEntry"
1941
+ current: "#/components/schemas/currentBalanceHistoryEntry"
1942
+
1849
1943
  balanceHistoryListResponseObject:
1850
1944
  type: object
1851
1945
  additionalProperties: false
1852
1946
  x-internal: true
1947
+ description: >
1948
+ List response for balance history GET endpoints. Entries are grouped by
1949
+ account source under `balance_history`.
1853
1950
  properties:
1854
1951
  balance_history:
1855
1952
  type: array
@@ -1862,31 +1959,39 @@ components:
1862
1959
  type: object
1863
1960
  x-internal: true
1864
1961
  additionalProperties: false
1962
+ description: >
1963
+ A single monthly balance entry to upsert. Request bodies use this shape.
1964
+ Responses return `type: historical` entries instead.
1865
1965
  properties:
1866
1966
  id:
1867
1967
  type: integer
1868
1968
  format: int32
1869
1969
  description: System-defined balance history entry id. Ignored if set.
1870
1970
  x-updatable: false
1871
- date:
1971
+ month:
1872
1972
  type: string
1873
- format: date
1874
- description: Month to update, in YYYY-MM-DD format. This must be the first day of a month and must be in a past month.
1973
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
1974
+ description: >
1975
+ Calendar month to upsert, in YYYY-MM format. Must be a past month.
1976
+ The current month cannot be written through PUT endpoints.
1977
+ example: "2026-06"
1875
1978
  balance:
1876
1979
  oneOf:
1877
1980
  - type: number
1878
1981
  format: double
1879
1982
  - type: string
1880
1983
  pattern: ^-?\d+(\.\d{1,4})?$
1881
- description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is typically in the account currency. For crypto and deleted accounts this is typically in the user's primary currency. Do not include any special characters aside from a decimal point.
1984
+ description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is in the account currency. For crypto and deleted accounts this is in the user's primary currency. Do not include any special characters aside from a decimal point.
1882
1985
  symbol:
1883
1986
  type: string
1884
1987
  nullable: true
1885
1988
  minLength: 1
1886
1989
  maxLength: 25
1887
- description: Optional for crypto balances, but if set it must match the account's symbol.
1888
- Tolerated for deleted-account balances. Do not provide this for manual or Plaid balances.
1889
- If provided when using the synced crypto path-based endpoint, this must match the symbol in the path.
1990
+ description: >
1991
+ Optional for crypto balances. If set, it must match the account's
1992
+ symbol. Tolerated for deleted-account balances. Do not provide this
1993
+ for manual or Plaid balances. On the synced crypto path endpoint, if
1994
+ provided it must match the `symbol` path parameter.
1890
1995
  x-updatable: true
1891
1996
  crypto_balance:
1892
1997
  type: string
@@ -1902,10 +2007,10 @@ components:
1902
2007
  to_base:
1903
2008
  type: number
1904
2009
  format: double
1905
- description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the stored historical balance.
2010
+ description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the historical balance.
1906
2011
  x-updatable: false
1907
2012
  required:
1908
- - date
2013
+ - month
1909
2014
  - balance
1910
2015
 
1911
2016
  upsertBalanceHistoryRequestObject:
@@ -1916,7 +2021,11 @@ components:
1916
2021
  balances:
1917
2022
  type: array
1918
2023
  minItems: 1
1919
- description: One or more monthly balance history entries to upsert
2024
+ description: >
2025
+ One or more monthly balance history entries to upsert. Each entry uses
2026
+ `month` (YYYY-MM) and `balance`. Do not include response-only fields such
2027
+ as `type`. PUT responses return only the `type: historical` entries
2028
+ modified by the request.
1920
2029
  items:
1921
2030
  $ref: "#/components/schemas/balanceHistoryUpdateItemObject"
1922
2031
  required:
@@ -1931,51 +2040,58 @@ components:
1931
2040
  name:
1932
2041
  type: string
1933
2042
  nullable: true
1934
- description: New archived account name for the deleted account source.
2043
+ description: New archived account name for the deleted account source
1935
2044
  institution_name:
1936
2045
  type: string
1937
2046
  nullable: true
1938
- description: New archived institution name for the deleted account source.
2047
+ description: New archived institution name for the deleted account source
1939
2048
  display_name:
1940
2049
  type: string
1941
2050
  nullable: true
1942
- description: New display name for the deleted account source.
2051
+ description: New display name for the deleted account source
1943
2052
  account_type:
1944
2053
  type: string
1945
2054
  nullable: true
1946
- description: New archived account type for the deleted account source.
2055
+ description: New archived account type for the deleted account source
1947
2056
  subtype:
1948
2057
  type: string
1949
2058
  nullable: true
1950
- description: New archived subtype for the deleted account source.
2059
+ description: New archived subtype for the deleted account source
1951
2060
  mask:
1952
2061
  type: string
1953
2062
  nullable: true
1954
- description: New archived account mask for the deleted account source.
2063
+ description: New archived account mask for the deleted account source
1955
2064
 
1956
2065
  updateBalanceHistoryDetailsResponseObject:
1957
2066
  type: object
1958
2067
  x-internal: true
1959
2068
  additionalProperties: false
2069
+ description: Updated archived metadata for a deleted balance history source
1960
2070
  properties:
1961
2071
  name:
1962
2072
  type: string
1963
2073
  nullable: true
2074
+ description: Archived account name for the deleted account source
1964
2075
  institution_name:
1965
2076
  type: string
1966
2077
  nullable: true
2078
+ description: Archived institution name for the deleted account source
1967
2079
  display_name:
1968
2080
  type: string
1969
2081
  nullable: true
2082
+ description: Archived display name for the deleted account source
1970
2083
  account_type:
1971
2084
  type: string
1972
2085
  nullable: true
2086
+ description: Archived account type for the deleted account source
1973
2087
  subtype:
1974
2088
  type: string
1975
2089
  nullable: true
2090
+ description: Archived subtype for the deleted account source
1976
2091
  mask:
1977
2092
  type: string
1978
2093
  nullable: true
2094
+ description: Archived account mask for the deleted account source
1979
2095
  required:
1980
2096
  - name
1981
2097
  - institution_name
@@ -2931,7 +3047,7 @@ components:
2931
3047
  currency:
2932
3048
  description: Three-letter lowercase currency code of the transaction
2933
3049
  in ISO 4217 format. Must match one of the [supported
2934
- currencies](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/currencies). If not set
3050
+ currencies](https://lunchmoney.dev/v2/currencies). If not set
2935
3051
  defaults to the user account's primary currency.
2936
3052
  allOf:
2937
3053
  - $ref: "#/components/schemas/currencyEnum"
@@ -3076,6 +3192,7 @@ components:
3076
3192
  description: |
3077
3193
  The new payee for the transaction.
3078
3194
  minLength: 0
3195
+ x-updatable: true
3079
3196
  original_name:
3080
3197
  type: string
3081
3198
  nullable: true
@@ -3287,9 +3404,10 @@ components:
3287
3404
  category_id:
3288
3405
  type: integer
3289
3406
  format: int32
3290
- description: Unique identifier for associated category_id. Category
3291
- must already exist for the account. Will inherit category from the
3292
- parent if not defined.
3407
+ nullable: true
3408
+ description: Category ID for the child transaction. The category must
3409
+ already exist for the account. If omitted, the child inherits the
3410
+ parent category. If `null`, the child has no category.
3293
3411
  tag_ids:
3294
3412
  type: array
3295
3413
  description: The IDs of any tags to apply to this split child
@@ -3299,7 +3417,10 @@ components:
3299
3417
  format: int32
3300
3418
  notes:
3301
3419
  type: string
3302
- description: Will inherit notes from parent if not defined.
3420
+ nullable: true
3421
+ description: Notes for the child transaction. If omitted, the child
3422
+ inherits the parent notes. If `null` or an empty string, the child
3423
+ has no notes.
3303
3424
  required:
3304
3425
  - amount
3305
3426
 
@@ -4442,22 +4563,10 @@ components:
4442
4563
  securitySchemes:
4443
4564
  bearerSecurity:
4444
4565
  type: http
4445
- # TODO Make this shorter?
4446
- # description: The Lunch Money API uses API keys to authenticate requests. To use
4447
- # the v1 API you can view and manage your API keys on the [developers page
4448
- # in the Lunch Money app](https://my.lunchmoney.app/developers). <p> To
4449
- # interact with the Static Mock Server simply enter an API key of 11
4450
- # characters or more. <p> To interact with the v2 service implemented on
4451
- # top of the v1 API paste in a real API token associated with a Lunch
4452
- # Money Budget.
4453
- description: To interact with the Static Mock Server simply enter an API
4454
- key of 11 characters or more.
4566
+ description: >-
4567
+ Required for the LIVE server. Optional for MOCK.
4455
4568
  scheme: bearer
4456
4569
  bearerFormat: JWT
4457
- cookieAuth:
4458
- type: apiKey
4459
- in: cookie
4460
- name: _lm_access_token
4461
4570
 
4462
4571
  paths:
4463
4572
  /me:
@@ -5737,12 +5846,9 @@ paths:
5737
5846
  tags:
5738
5847
  - crypto-manual
5739
5848
  summary: Get all supported cryptocurrencies
5740
- description: >
5849
+ description: |-
5741
5850
  Retrieve the list of cryptocurrencies currently supported for manual tracking.<p>
5742
-
5743
- When creating a new manual crypto balance via `POST /crypto/manual`, the
5744
- `symbol` you specify must match the `symbol` of one of the entries
5745
- returned by this endpoint.
5851
+ When creating a new manual crypto balance via `POST /crypto/manual`, the `symbol` you specify must match the `symbol` of one of the entries returned by this endpoint.
5746
5852
  operationId: getAllCryptocurrencies
5747
5853
  responses:
5748
5854
  "200":
@@ -5780,16 +5886,9 @@ paths:
5780
5886
  - crypto-manual
5781
5887
  summary: Add a new supported cryptocurrency
5782
5888
  operationId: createCryptocurrency
5783
- description: >-
5889
+ description: |-
5784
5890
  Adds a new cryptocurrency to the supported manual-crypto list.<br><br>
5785
-
5786
- Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum)
5787
- to convert crypto balances to the user's primary currency. Users add a
5788
- new supported cryptocurrency by submitting a CoinGecko coin-page URL.
5789
- The server validates the URL, extracts the id from `/coins/{id}`,
5790
- checks for an existing supported `coingecko_id`, validates the id
5791
- against CoinGecko, then confirms the resolved symbol is not already
5792
- supported before creating the new entry.
5891
+ Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum) to convert crypto balances to the user's primary currency. Users add a new supported cryptocurrency by submitting a CoinGecko coin-page URL. The server validates the URL, extracts the id from `/coins/{id}`, checks for an existing supported `coingecko_id`, validates the id against CoinGecko, then confirms the resolved symbol is not already supported before creating the new entry.
5793
5892
  requestBody:
5794
5893
  required: true
5795
5894
  content:
@@ -5868,8 +5967,8 @@ paths:
5868
5967
  tags:
5869
5968
  - crypto-manual
5870
5969
  summary: Get all manual crypto balances
5871
- description: Retrieve all manually managed crypto balances associated with
5872
- the user's account.
5970
+ description: |-
5971
+ Retrieve all manually managed crypto balances associated with the user's account.
5873
5972
  operationId: getAllCryptoManual
5874
5973
  responses:
5875
5974
  "200":
@@ -5903,11 +6002,9 @@ paths:
5903
6002
  tags:
5904
6003
  - crypto-manual
5905
6004
  summary: Create a manual crypto balance
5906
- description: >-
6005
+ description: |-
5907
6006
  Create a manually managed crypto asset.<br><br>
5908
-
5909
- If `display_name` is `null`, clients may derive one from
5910
- `institution_name` + `name`.
6007
+ If `display_name` is `null`, clients may derive one from `institution_name` + `name`.
5911
6008
  operationId: createCryptoManual
5912
6009
  requestBody:
5913
6010
  required: true
@@ -5992,7 +6089,8 @@ paths:
5992
6089
  tags:
5993
6090
  - crypto-manual
5994
6091
  summary: Get a single manual crypto balance
5995
- description: Retrieve a single manually managed crypto balance by ID.
6092
+ description: |-
6093
+ Retrieve a single manually managed crypto balance by ID.
5996
6094
  operationId: getCryptoManualById
5997
6095
  parameters:
5998
6096
  - name: id
@@ -6060,11 +6158,9 @@ paths:
6060
6158
  tags:
6061
6159
  - crypto-manual
6062
6160
  summary: Update a manual crypto balance
6063
- description: >-
6161
+ description: |-
6064
6162
  Modify a manually managed crypto balance.<br><br>
6065
-
6066
- You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties
6067
- are accepted according to the `x-updatable` metadata in the update schema.
6163
+ You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties are accepted according to the `x-updatable` metadata in the update schema.
6068
6164
  operationId: updateCryptoManual
6069
6165
  parameters:
6070
6166
  - name: id
@@ -6161,10 +6257,8 @@ paths:
6161
6257
  tags:
6162
6258
  - crypto-manual
6163
6259
  summary: Delete a manual crypto balance
6164
- description: Delete a single manually managed crypto asset by ID.<p> If
6165
- this crypto asset has a balance history, and you do not explicitly set
6166
- the query parameter`keep_history`, a 422 response will be returned
6167
- requesting you to explicitly set `keep_history` to `true` or `false`.
6260
+ description: |-
6261
+ Delete a single manually managed crypto asset by ID.<p> If this crypto asset has a balance history, and you do not explicitly set the query parameter`keep_history`, a 422 response will be returned requesting you to explicitly set `keep_history` to `true` or `false`.
6168
6262
  operationId: deleteCryptoManual
6169
6263
  parameters:
6170
6264
  - name: id
@@ -6229,8 +6323,8 @@ paths:
6229
6323
  tags:
6230
6324
  - crypto-synced
6231
6325
  summary: Get all synced crypto accounts
6232
- description: Retrieves all synced crypto accounts
6233
- associated with the user's account.
6326
+ description: |-
6327
+ Retrieves all synced crypto accounts associated with the user's account.
6234
6328
  operationId: getAllCryptoSynced
6235
6329
  responses:
6236
6330
  "200":
@@ -6292,8 +6386,8 @@ paths:
6292
6386
  tags:
6293
6387
  - crypto-synced
6294
6388
  summary: Get a single synced crypto account
6295
- description: Retrieves the synced crypto account and all nested balances
6296
- for the specified synced crypto account ID.
6389
+ description: |-
6390
+ Retrieves the synced crypto account and all nested balances for the specified synced crypto account ID.
6297
6391
  operationId: getCryptoSyncedById
6298
6392
  parameters:
6299
6393
  - name: id
@@ -6373,8 +6467,8 @@ paths:
6373
6467
  tags:
6374
6468
  - crypto-synced
6375
6469
  summary: Get a synced crypto balance by symbol
6376
- description: Retrieves a single balance from the specified synced crypto
6377
- account using the crypto symbol.
6470
+ description: |-
6471
+ Retrieves a single balance from the specified synced crypto account using the crypto symbol.
6378
6472
  operationId: getCryptoSyncedBalanceBySymbol
6379
6473
  parameters:
6380
6474
  - name: id
@@ -6453,8 +6547,8 @@ paths:
6453
6547
  tags:
6454
6548
  - crypto-synced
6455
6549
  summary: Refresh balances for a synced crypto account
6456
- description: Trigger a balance refresh for the specified synced crypto
6457
- account. Returns the refreshed synced crypto account.
6550
+ description: |-
6551
+ Trigger a balance refresh for the specified synced crypto account. Returns the refreshed synced crypto account.
6458
6552
  operationId: refreshCryptoSynced
6459
6553
  parameters:
6460
6554
  - name: id
@@ -6523,51 +6617,55 @@ paths:
6523
6617
  tags:
6524
6618
  - balance_history
6525
6619
  summary: Get balance history
6526
- description: >-
6527
- Retrieve historical balance entries.<br><br>
6528
-
6529
- Balance history is monthly. When `start_date` and `end_date` are both provided,
6530
- they must be first-of-month dates. `start_date` must not be in the future,
6531
- while `end_date` may be in the future. If one of `start_date` or `end_date`
6532
- is provided, the other is required. If neither is provided, all available
6533
- balance history is returned.<br><br>
6534
-
6535
- The response groups entries by source account. Each item in
6536
- `balance_history` contains a `source` object plus a `balances` array
6537
- containing one balance entry per month in the requested range, or all
6538
- stored entries when no range is provided.<br><br>
6539
-
6540
- Historical entries for accounts that have been deleted may still
6541
- be returned. These entries use `source.type: deleted` and include
6542
- `deleted_account_id`, archived display fields, and account metadata on the
6543
- `source` object.
6620
+ description: |-
6621
+ Retrieve monthly balance history for all account sources.<br><br>
6622
+ Balance history is monthly. Each entry represents the account balance at or around the end of the specified month. System-generated entries are generally captured near the boundary between months.<br><br>
6623
+ Query with optional `start_month` and `end_month` in YYYY-MM format. The range is inclusive. If either parameter is provided, both are required. `start_month` must not be in the future. `end_month` may not be earlier than `start_month` and must not be in the future. Values must be valid calendar months in exact YYYY-MM format. A full date such as `2026-06-01` is invalid. If neither is provided, all available balance history is returned, including an ephemeral `current` entry for the current month when applicable.<br><br>
6624
+ The response groups entries by source account. Each item in `balance_history` contains a `source` object plus a `balances` array. Within a requested range (or across all history when no range is provided), the array includes only months that have data — months with no data are omitted. A `current` entry is also included when the requested range includes the current month.<br><br>
6625
+ Each balance entry has a `type`:<br>
6626
+ - `historical`: stored snapshot of a past month for an active or deleted account. Includes an `id` that can be used with balance history entry endpoints<br>
6627
+ - `current`: snapshot based on the account's current balances. It is ephemeral and may change between requests. To inspect the underlying account, use the type-specific source id for the `source.type` values:<br>
6628
+ &nbsp;&nbsp;&nbsp;&nbsp;- `manual`: `source.manual_account_id` with [GET /manual_accounts/{id}](#tag/manual-accounts/GET/manual_accounts/{id})<br>
6629
+ &nbsp;&nbsp;&nbsp;&nbsp;- `plaid`: `source.plaid_account_id` with [GET /plaid_accounts/{id}](#tag/plaid-accounts/GET/plaid_accounts/{id})<br>
6630
+ &nbsp;&nbsp;&nbsp;&nbsp;- `crypto_manual`: `source.crypto_manual_id` with [GET /crypto/manual/{id}](#tag/crypto-manual/GET/crypto/manual/{id})<br>
6631
+ &nbsp;&nbsp;&nbsp;&nbsp;- `crypto_synced`: `source.crypto_synced_id` and `source.symbol` with [GET /crypto/synced/{id}/{symbol}](#tag/crypto-synced/GET/crypto/synced/{id}/{symbol})
6544
6632
  operationId: getBalanceHistory
6545
6633
  parameters:
6546
- - name: start_date
6634
+ - name: start_month
6547
6635
  in: query
6548
- description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
6636
+ description: >-
6637
+ Optional start of the requested history range as a calendar month in
6638
+ YYYY-MM format (for example `2026-06`). If set, `end_month` is also
6639
+ required. The range is inclusive. `start_month` must not be in the
6640
+ future. A full date such as `2026-06-01` is invalid.
6549
6641
  required: false
6550
6642
  schema:
6551
6643
  type: string
6552
- format: date
6644
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
6553
6645
  examples:
6554
6646
  range start:
6555
- summary: Start date
6556
- value: "2026-01-01"
6557
- - name: end_date
6647
+ summary: Start month
6648
+ value: "2026-01"
6649
+ - name: end_month
6558
6650
  in: query
6559
- description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month. For a single month, set this to the same first-of-month date as `start_date`.
6651
+ description: >-
6652
+ Optional end of the requested history range as a calendar month in
6653
+ YYYY-MM format (for example `2026-06`). If set, `start_month` is also
6654
+ required. The range is inclusive. `end_month` may not be earlier than
6655
+ `start_month` and must not be in the future. A full date such as
6656
+ `2026-06-01` is invalid. For a single month, set this to the same
6657
+ value as `start_month`.
6560
6658
  required: false
6561
6659
  schema:
6562
6660
  type: string
6563
- format: date
6661
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
6564
6662
  examples:
6565
6663
  range end:
6566
- summary: End date
6567
- value: "2026-03-01"
6664
+ summary: End month
6665
+ value: "2026-03"
6568
6666
  responses:
6569
6667
  "200":
6570
- description: Historical balance entries for the requested date range
6668
+ description: Monthly balance history for the requested month range
6571
6669
  content:
6572
6670
  application/json:
6573
6671
  schema:
@@ -6580,14 +6678,16 @@ paths:
6580
6678
  type: manual
6581
6679
  manual_account_id: 119807
6582
6680
  balances:
6583
- - id: 101
6584
- date: "2026-01-01"
6681
+ - type: historical
6682
+ id: 101
6683
+ month: "2026-01"
6585
6684
  balance: "41000.0000"
6586
6685
  currency: usd
6587
6686
  to_base: 41000
6588
6687
  crypto_balance: null
6589
- - id: 102
6590
- date: "2026-02-01"
6688
+ - type: historical
6689
+ id: 102
6690
+ month: "2026-02"
6591
6691
  balance: "41211.8000"
6592
6692
  currency: usd
6593
6693
  to_base: 41211.8
@@ -6596,8 +6696,9 @@ paths:
6596
6696
  type: plaid
6597
6697
  plaid_account_id: 119808
6598
6698
  balances:
6599
- - id: 103
6600
- date: "2026-01-01"
6699
+ - type: historical
6700
+ id: 103
6701
+ month: "2026-01"
6601
6702
  balance: "5498.2800"
6602
6703
  currency: usd
6603
6704
  to_base: 5498.28
@@ -6607,8 +6708,9 @@ paths:
6607
6708
  crypto_manual_id: 22001
6608
6709
  symbol: btc
6609
6710
  balances:
6610
- - id: 104
6611
- date: "2026-01-01"
6711
+ - type: historical
6712
+ id: 104
6713
+ month: "2026-01"
6612
6714
  balance: "53124.7200"
6613
6715
  currency: usd
6614
6716
  to_base: 53124.72
@@ -6618,8 +6720,9 @@ paths:
6618
6720
  crypto_synced_id: 33004
6619
6721
  symbol: btc
6620
6722
  balances:
6621
- - id: 105
6622
- date: "2026-01-01"
6723
+ - type: historical
6724
+ id: 105
6725
+ month: "2026-01"
6623
6726
  balance: "6231.2800"
6624
6727
  currency: usd
6625
6728
  to_base: 6231.28
@@ -6635,12 +6738,34 @@ paths:
6635
6738
  mask: "1234"
6636
6739
  symbol: null
6637
6740
  balances:
6638
- - id: 106
6639
- date: "2026-01-01"
6741
+ - type: historical
6742
+ id: 106
6743
+ month: "2026-01"
6640
6744
  balance: "1250.0000"
6641
6745
  currency: usd
6642
6746
  to_base: 1250
6643
6747
  crypto_balance: null
6748
+ historical and current:
6749
+ summary: Historical month plus ephemeral current month
6750
+ value:
6751
+ balance_history:
6752
+ - source:
6753
+ type: manual
6754
+ manual_account_id: 162003
6755
+ balances:
6756
+ - type: historical
6757
+ id: 7437356
6758
+ month: "2026-06"
6759
+ balance: "62.8"
6760
+ currency: usd
6761
+ to_base: 62.8
6762
+ crypto_balance: null
6763
+ - type: current
6764
+ month: "2026-07"
6765
+ balance: "71.2"
6766
+ currency: usd
6767
+ to_base: 71.2
6768
+ crypto_balance: null
6644
6769
  manual account history:
6645
6770
  value:
6646
6771
  balance_history:
@@ -6648,14 +6773,16 @@ paths:
6648
6773
  type: manual
6649
6774
  manual_account_id: 119807
6650
6775
  balances:
6651
- - id: 201
6652
- date: "2026-01-01"
6776
+ - type: historical
6777
+ id: 201
6778
+ month: "2026-01"
6653
6779
  balance: "41000.0000"
6654
6780
  currency: usd
6655
6781
  to_base: 41000
6656
6782
  crypto_balance: null
6657
- - id: 202
6658
- date: "2026-02-01"
6783
+ - type: historical
6784
+ id: 202
6785
+ month: "2026-02"
6659
6786
  balance: "41211.8000"
6660
6787
  currency: usd
6661
6788
  to_base: 41211.8
@@ -6667,8 +6794,9 @@ paths:
6667
6794
  type: plaid
6668
6795
  plaid_account_id: 119808
6669
6796
  balances:
6670
- - id: 301
6671
- date: "2026-02-01"
6797
+ - type: historical
6798
+ id: 301
6799
+ month: "2026-02"
6672
6800
  balance: "5498.2800"
6673
6801
  currency: usd
6674
6802
  to_base: 5498.28
@@ -6681,8 +6809,9 @@ paths:
6681
6809
  crypto_synced_id: 33004
6682
6810
  symbol: btc
6683
6811
  balances:
6684
- - id: 401
6685
- date: "2026-02-01"
6812
+ - type: historical
6813
+ id: 401
6814
+ month: "2026-02"
6686
6815
  balance: "6231.2800"
6687
6816
  currency: usd
6688
6817
  to_base: 6231.28
@@ -6701,8 +6830,9 @@ paths:
6701
6830
  mask: "1234"
6702
6831
  symbol: null
6703
6832
  balances:
6704
- - id: 501
6705
- date: "2026-01-01"
6833
+ - type: historical
6834
+ id: 501
6835
+ month: "2026-01"
6706
6836
  balance: "1250.0000"
6707
6837
  currency: usd
6708
6838
  to_base: 1250
@@ -6714,26 +6844,31 @@ paths:
6714
6844
  schema:
6715
6845
  $ref: "#/components/schemas/errorResponseObject"
6716
6846
  examples:
6717
- missing paired date:
6847
+ missing paired month:
6718
6848
  value:
6719
6849
  message: Request Validation Failure
6720
6850
  errors:
6721
- - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
6851
+ - errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
6722
6852
  invalid range:
6723
6853
  value:
6724
6854
  message: Request Validation Failure
6725
6855
  errors:
6726
- - errMsg: "`start_date` must be before or equal to `end_date`."
6727
- not first of month:
6856
+ - errMsg: "`end_month` may not be earlier than `start_month`."
6857
+ invalid month format:
6858
+ value:
6859
+ message: Invalid Request Parameters
6860
+ errors:
6861
+ - errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
6862
+ future start month:
6728
6863
  value:
6729
6864
  message: Request Validation Failure
6730
6865
  errors:
6731
- - errMsg: "`start_date` and `end_date` must both be the first day of a month."
6732
- future start date:
6866
+ - errMsg: "`start_month` must not be in the future."
6867
+ future end month:
6733
6868
  value:
6734
6869
  message: Request Validation Failure
6735
6870
  errors:
6736
- - errMsg: "`start_date` must not be in the future."
6871
+ - errMsg: "`end_month` must not be in the future."
6737
6872
  "401":
6738
6873
  $ref: "#/components/responses/unauthorizedToken"
6739
6874
  "429":
@@ -6745,23 +6880,16 @@ paths:
6745
6880
  tags:
6746
6881
  - balance_history
6747
6882
  summary: Get balance history for an account
6748
- description: >-
6749
- Retrieve historical balance entries for one manual, Plaid, manual crypto,
6750
- or deleted account. Crypto synced accounts require an additional `symbol` path parameter.<br><br>
6751
-
6752
- The `account_type` path parameter identifies the type of account and the
6753
- `account_id` path parameter identifies the specific id for that account type.<br><br>
6754
-
6755
- When `start_date` and `end_date` are both provided, they must be first-of-month
6756
- dates. `start_date` must not be in the future, while `end_date` may be in the future.
6757
- If one of `start_date` or `end_date` is provided, the other is required. If neither is
6758
- provided, all available history for the source is returned.
6883
+ description: |-
6884
+ Retrieve monthly balance history for one manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [GET /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/GET/balance_history/crypto_synced/{account_id}/{symbol}).<br><br>
6885
+ The `account_type` path parameter identifies the account family (`manual`, `plaid`, `crypto_manual`, or `deleted`) and `account_id` identifies the account within that family.<br><br>
6886
+ `start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
6759
6887
  operationId: getBalanceHistoryForAccount
6760
6888
  parameters:
6761
6889
  - name: account_type
6762
6890
  in: path
6763
6891
  required: true
6764
- description: Source family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
6892
+ description: Account family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
6765
6893
  schema:
6766
6894
  type: string
6767
6895
  enum: [manual, plaid, crypto_manual, deleted]
@@ -6772,23 +6900,27 @@ paths:
6772
6900
  schema:
6773
6901
  type: integer
6774
6902
  format: int32
6775
- - name: start_date
6903
+ - name: start_month
6776
6904
  in: query
6777
- description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
6905
+ description: >-
6906
+ Optional. Same format and constraints as `start_month` on
6907
+ [GET /balance_history](#tag/balance-history/GET/balance_history).
6778
6908
  required: false
6779
6909
  schema:
6780
6910
  type: string
6781
- format: date
6782
- - name: end_date
6911
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
6912
+ - name: end_month
6783
6913
  in: query
6784
- description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month.
6914
+ description: >-
6915
+ Optional. Same format and constraints as `end_month` on
6916
+ [GET /balance_history](#tag/balance-history/GET/balance_history).
6785
6917
  required: false
6786
6918
  schema:
6787
6919
  type: string
6788
- format: date
6920
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
6789
6921
  responses:
6790
6922
  "200":
6791
- description: Historical balance entries for the requested source
6923
+ description: Monthly balance history for the requested source
6792
6924
  content:
6793
6925
  application/json:
6794
6926
  schema:
@@ -6801,14 +6933,16 @@ paths:
6801
6933
  type: manual
6802
6934
  manual_account_id: 119807
6803
6935
  balances:
6804
- - id: 201
6805
- date: "2026-01-01"
6936
+ - type: historical
6937
+ id: 201
6938
+ month: "2026-01"
6806
6939
  balance: "41000.0000"
6807
6940
  currency: usd
6808
6941
  to_base: 41000
6809
6942
  crypto_balance: null
6810
- - id: 202
6811
- date: "2026-02-01"
6943
+ - type: historical
6944
+ id: 202
6945
+ month: "2026-02"
6812
6946
  balance: "41211.8000"
6813
6947
  currency: usd
6814
6948
  to_base: 41211.8
@@ -6827,8 +6961,9 @@ paths:
6827
6961
  mask: "1234"
6828
6962
  symbol: null
6829
6963
  balances:
6830
- - id: 501
6831
- date: "2026-01-01"
6964
+ - type: historical
6965
+ id: 501
6966
+ month: "2026-01"
6832
6967
  balance: "1250.0000"
6833
6968
  currency: usd
6834
6969
  to_base: 1250
@@ -6840,16 +6975,16 @@ paths:
6840
6975
  schema:
6841
6976
  $ref: "#/components/schemas/errorResponseObject"
6842
6977
  examples:
6843
- missing paired date:
6978
+ missing paired month:
6844
6979
  value:
6845
6980
  message: Request Validation Failure
6846
6981
  errors:
6847
- - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
6848
- invalid range:
6982
+ - errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
6983
+ invalid month format:
6849
6984
  value:
6850
- message: Request Validation Failure
6985
+ message: Invalid Request Parameters
6851
6986
  errors:
6852
- - errMsg: "`start_date` must be before or equal to `end_date`."
6987
+ - errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
6853
6988
  "401":
6854
6989
  $ref: "#/components/responses/unauthorizedToken"
6855
6990
  "404":
@@ -6877,37 +7012,20 @@ paths:
6877
7012
  tags:
6878
7013
  - balance_history
6879
7014
  summary: Upsert balance history for an account
6880
- description: >-
6881
- Upsert one or more historical balance entries for a single manual, Plaid,
6882
- manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.<br><br>
6883
-
6884
- The `account_type` path parameter identifies the type of account and the
6885
- `account_id` path parameter identifies the specific id for that account type.<br><br>
6886
-
6887
- Submit one or more entries in the `balances` array. Each entry must specify
6888
- a `date` and `balance` value.<br><br>
6889
-
6890
- Balance history is monthly. Each entry's `date` must be the first day of
6891
- a month and must be in a past month.<br><br>
6892
-
6893
- `currency` may be provided for any balance entry. If omitted, it defaults
6894
- to the account currency for manual/Plaid accounts, or the user's primary
6895
- currency for crypto/deleted accounts.<br><br>
6896
-
6897
- `symbol` may only be set when `account_type` is `crypto_manual` or
6898
- `crypto_synced`. It is optional for `crypto_manual` accounts and tolerated
6899
- for `deleted` accounts.<br><br>
6900
-
6901
- `crypto_balance` may be provided for `crypto_manual`, `crypto_synced`, and
6902
- `deleted` accounts, and is invalid for `manual` or `plaid` accounts.<br><br>
6903
-
6904
- The response contains only the balance entries that were submitted in this request.
7015
+ description: |-
7016
+ Upsert one or more historical balance entries for a single manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [PUT /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/PUT/balance_history/crypto_synced/{account_id}/{symbol}).<br><br>
7017
+ The `account_type` path parameter identifies the account family (`manual`, `plaid`, `crypto_manual`, or `deleted`) and `account_id` identifies the account within that family.<br><br>
7018
+ Submit one or more entries in the `balances` array. Each entry must specify a `month` (YYYY-MM) and `balance` value. `month` must be a past calendar month. The current month cannot be written through this endpoint.<br><br>
7019
+ `currency` may be provided for any balance entry. If omitted, it defaults to the account currency for manual/Plaid accounts, or the user's primary currency for crypto/deleted accounts.<br><br>
7020
+ `symbol` may be set for `crypto_manual` (optional) and `deleted` (tolerated) accounts. Do not provide it for `manual` or `plaid` accounts.<br><br>
7021
+ `crypto_balance` may be provided for `crypto_manual` and `deleted` accounts. It is invalid for `manual` or `plaid` accounts.<br><br>
7022
+ The response contains only the `type: historical` balance entries that were submitted in this request.
6905
7023
  operationId: upsertBalanceHistoryForAccount
6906
7024
  parameters:
6907
7025
  - name: account_type
6908
7026
  in: path
6909
7027
  required: true
6910
- description: Source family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7028
+ description: Account family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
6911
7029
  schema:
6912
7030
  type: string
6913
7031
  enum: [manual, plaid, crypto_manual, deleted]
@@ -6928,21 +7046,21 @@ paths:
6928
7046
  manual account bulk upsert:
6929
7047
  value:
6930
7048
  balances:
6931
- - date: "2026-03-01"
7049
+ - month: "2026-03"
6932
7050
  balance: "41500.0000"
6933
- - date: "2026-04-01"
7051
+ - month: "2026-04"
6934
7052
  balance: "41625.5000"
6935
7053
  crypto manual balance with symbol:
6936
7054
  value:
6937
7055
  balances:
6938
- - date: "2026-03-01"
7056
+ - month: "2026-03"
6939
7057
  balance: "56011.1200"
6940
7058
  symbol: btc
6941
7059
  crypto_balance: "0.852341920145782301"
6942
7060
  deleted account bulk upsert:
6943
7061
  value:
6944
7062
  balances:
6945
- - date: "2026-03-01"
7063
+ - month: "2026-03"
6946
7064
  symbol: btc
6947
7065
  crypto_balance: "0.020000000000000000"
6948
7066
  currency: usd
@@ -6951,55 +7069,59 @@ paths:
6951
7069
  value:
6952
7070
  balances:
6953
7071
  - id: 601
6954
- date: "2026-03-01"
7072
+ month: "2026-03"
6955
7073
  balance: "41500.0000"
6956
7074
  currency: usd
6957
7075
  to_base: 41500
6958
7076
  crypto_balance: null
6959
7077
  responses:
6960
7078
  "200":
6961
- description: Returns the modified balance entries only. Other historical
6962
- entries for the account are omitted from `balances`.
7079
+ description: >-
7080
+ Returns only the `type: historical` entries modified by this request.
7081
+ Other historical entries for the account are omitted from `balances`.
6963
7082
  content:
6964
7083
  application/json:
6965
7084
  schema:
6966
7085
  $ref: "#/components/schemas/balanceHistoryAccountObject"
6967
7086
  examples:
6968
7087
  manual account bulk upsert:
6969
- summary: Two upserted rows returned (not full account history)
7088
+ summary: Two upserted entries returned (not full account history)
6970
7089
  value:
6971
7090
  source:
6972
7091
  type: manual
6973
7092
  manual_account_id: 119807
6974
7093
  balances:
6975
- - id: 601
6976
- date: "2026-03-01"
7094
+ - type: historical
7095
+ id: 601
7096
+ month: "2026-03"
6977
7097
  balance: "41500.0000"
6978
7098
  currency: usd
6979
7099
  to_base: 41500
6980
7100
  crypto_balance: null
6981
- - id: 602
6982
- date: "2026-04-01"
7101
+ - type: historical
7102
+ id: 602
7103
+ month: "2026-04"
6983
7104
  balance: "41625.5000"
6984
7105
  currency: usd
6985
7106
  to_base: 41625.5
6986
7107
  crypto_balance: null
6987
7108
  crypto manual balance with symbol:
6988
- summary: Single upserted row returned
7109
+ summary: Single upserted entry returned
6989
7110
  value:
6990
7111
  source:
6991
7112
  type: crypto_manual
6992
7113
  crypto_manual_id: 22001
6993
7114
  symbol: btc
6994
7115
  balances:
6995
- - id: 603
6996
- date: "2026-03-01"
7116
+ - type: historical
7117
+ id: 603
7118
+ month: "2026-03"
6997
7119
  balance: "56011.1200"
6998
7120
  currency: usd
6999
7121
  to_base: 56011.12
7000
7122
  crypto_balance: "0.852341920145782301"
7001
7123
  deleted account bulk upsert:
7002
- summary: Single upserted row returned
7124
+ summary: Single upserted entry returned
7003
7125
  value:
7004
7126
  source:
7005
7127
  type: deleted
@@ -7012,15 +7134,17 @@ paths:
7012
7134
  mask: "1234"
7013
7135
  symbol: btc
7014
7136
  balances:
7015
- - id: 504
7016
- date: "2026-03-01"
7137
+ - type: historical
7138
+ id: 504
7139
+ month: "2026-03"
7017
7140
  balance: "1255"
7018
7141
  currency: usd
7019
7142
  to_base: 1255
7020
7143
  crypto_balance: "0.020000000000000000"
7021
7144
  "400":
7022
- description: Bad Request. The entire request is rejected if any row in
7023
- `balances` fails validation; no rows are updated.
7145
+ description: >-
7146
+ Bad Request. If any entry in `balances` fails validation, the entire
7147
+ request is rejected and no entries are updated.
7024
7148
  content:
7025
7149
  application/json:
7026
7150
  schema:
@@ -7041,30 +7165,34 @@ paths:
7041
7165
  message: Invalid Request Body
7042
7166
  errors:
7043
7167
  - errMsg: "Invalid property 'foo' in request body."
7044
- invalid date:
7168
+ invalid month format:
7169
+ value:
7170
+ message: Invalid Request Body
7171
+ errors:
7172
+ - errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
7173
+ current month:
7045
7174
  value:
7046
7175
  message: Request Validation Failure
7047
7176
  errors:
7048
- - errMsg: "`date` must be the first day of a month."
7177
+ - errMsg: "`month` must not be the current month."
7049
7178
  request_balances_index: 0
7050
- code: VALIDATION_ERROR
7051
- future date:
7179
+ future month:
7052
7180
  value:
7053
7181
  message: Request Validation Failure
7054
7182
  errors:
7055
- - errMsg: "`date` must be in a past month."
7183
+ - errMsg: "`month` must not be in the future."
7056
7184
  request_balances_index: 1
7057
7185
  crypto balance not allowed:
7058
7186
  value:
7059
7187
  message: Request Validation Failure
7060
7188
  errors:
7061
- - errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual`, `crypto_synced`, or `deleted`."
7189
+ - errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual` or `deleted`."
7062
7190
  request_balances_index: 0
7063
- invalid row in bulk request:
7191
+ invalid entry in bulk request:
7064
7192
  value:
7065
7193
  message: Request Validation Failure
7066
7194
  errors:
7067
- - errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `crypto_synced`."
7195
+ - errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `deleted`."
7068
7196
  request_balances_index: 1
7069
7197
  "401":
7070
7198
  $ref: "#/components/responses/unauthorizedToken"
@@ -7086,15 +7214,14 @@ paths:
7086
7214
  tags:
7087
7215
  - balance_history
7088
7216
  summary: Delete all balance history for an account
7089
- description: >-
7090
- Delete all historical balance entries for a single manual, Plaid,
7091
- manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.
7217
+ description: |-
7218
+ Delete all historical balance entries for a single manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [DELETE /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/DELETE/balance_history/crypto_synced/{account_id}/{symbol}).
7092
7219
  operationId: deleteBalanceHistoryForAccount
7093
7220
  parameters:
7094
7221
  - name: account_type
7095
7222
  in: path
7096
7223
  required: true
7097
- description: Source family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7224
+ description: Account family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7098
7225
  schema:
7099
7226
  type: string
7100
7227
  enum: [manual, plaid, crypto_manual, deleted]
@@ -7131,16 +7258,10 @@ paths:
7131
7258
  tags:
7132
7259
  - balance_history
7133
7260
  summary: Get balance history for a synced crypto symbol
7134
- description: >-
7135
- Retrieve historical balance entries for a single synced crypto symbol stream.<br><br>
7136
-
7137
- Use the `crypto_synced` account id together with a `symbol` path parameter
7138
- to select one balance stream within that synced crypto account.<br><br>
7139
-
7140
- When `start_date` and `end_date` are both provided, they must be first-of-month
7141
- dates. `start_date` must not be in the future, while `end_date` may be in the future.
7142
- If one of `start_date` or `end_date` is provided, the other is required. If neither is
7143
- provided, all available history for the symbol stream is returned.
7261
+ description: |-
7262
+ Retrieve monthly balance history for a single synced crypto symbol stream.<br><br>
7263
+ The path selects one balance stream with a synced crypto account id and `symbol`.<br><br>
7264
+ `start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
7144
7265
  operationId: getBalanceHistoryForCryptoSynced
7145
7266
  parameters:
7146
7267
  - name: account_id
@@ -7158,23 +7279,27 @@ paths:
7158
7279
  type: string
7159
7280
  minLength: 1
7160
7281
  maxLength: 25
7161
- - name: start_date
7282
+ - name: start_month
7162
7283
  in: query
7163
- description: Optional start date for the requested history range in YYYY-MM-DD format. If set, `end_date` is also required. This must be the first day of a month and must not be in the future.
7284
+ description: >-
7285
+ Optional. Same format and constraints as `start_month` on
7286
+ [GET /balance_history](#tag/balance-history/GET/balance_history).
7164
7287
  required: false
7165
7288
  schema:
7166
7289
  type: string
7167
- format: date
7168
- - name: end_date
7290
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
7291
+ - name: end_month
7169
7292
  in: query
7170
- description: Optional end date for the requested history range in YYYY-MM-DD format. If set, `start_date` is also required. This must be the first day of a month.
7293
+ description: >-
7294
+ Optional. Same format and constraints as `end_month` on
7295
+ [GET /balance_history](#tag/balance-history/GET/balance_history).
7171
7296
  required: false
7172
7297
  schema:
7173
7298
  type: string
7174
- format: date
7299
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
7175
7300
  responses:
7176
7301
  "200":
7177
- description: Historical balance entries for the synced crypto symbol stream
7302
+ description: Monthly balance history for the synced crypto symbol stream
7178
7303
  content:
7179
7304
  application/json:
7180
7305
  schema:
@@ -7186,8 +7311,9 @@ paths:
7186
7311
  crypto_synced_id: 33004
7187
7312
  symbol: btc
7188
7313
  balances:
7189
- - id: 401
7190
- date: "2026-02-01"
7314
+ - type: historical
7315
+ id: 401
7316
+ month: "2026-02"
7191
7317
  balance: "6231.2800"
7192
7318
  currency: usd
7193
7319
  to_base: 6231.28
@@ -7199,16 +7325,16 @@ paths:
7199
7325
  schema:
7200
7326
  $ref: "#/components/schemas/errorResponseObject"
7201
7327
  examples:
7202
- missing paired date:
7328
+ missing paired month:
7203
7329
  value:
7204
7330
  message: Request Validation Failure
7205
7331
  errors:
7206
- - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
7207
- invalid range:
7332
+ - errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
7333
+ invalid month format:
7208
7334
  value:
7209
- message: Request Validation Failure
7335
+ message: Invalid Request Parameters
7210
7336
  errors:
7211
- - errMsg: "`start_date` must be before or equal to `end_date`."
7337
+ - errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
7212
7338
  "401":
7213
7339
  $ref: "#/components/responses/unauthorizedToken"
7214
7340
  "404":
@@ -7236,28 +7362,14 @@ paths:
7236
7362
  tags:
7237
7363
  - balance_history
7238
7364
  summary: Upsert balance history for a synced crypto symbol
7239
- description: >-
7240
- Upsert one or more historical balance entries for a single synced crypto
7241
- symbol stream.<br><br>
7242
-
7365
+ description: |-
7366
+ Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
7243
7367
  The path identifies both the synced crypto account and the symbol being updated.<br><br>
7244
-
7245
- Submit one or more entries in the `balances` array. Each entry must specify
7246
- a `date` and `balance` value.<br><br>
7247
-
7248
- Balance history is monthly. Each entry's `date` must be the first day of
7249
- a month and must be in a past month.<br><br>
7250
-
7251
- The request body may include an optional `symbol` on each balance entry. If
7252
- provided, it must match the `symbol` path parameter. Omit `symbol` to use
7253
- the path value.<br><br>
7254
-
7255
- `currency` may be provided for any balance entry. If omitted, it defaults
7256
- to the user's primary currency for synced crypto balances.<br><br>
7257
-
7368
+ Submit one or more entries in the `balances` array. Each entry must specify a `month` (YYYY-MM) and `balance` value. `month` must be a past calendar month. The current month cannot be written through this endpoint.<br><br>
7369
+ The request body may include an optional `symbol` on each balance entry. If provided, it must match the `symbol` path parameter. Omit `symbol` to use the path value.<br><br>
7370
+ `currency` may be provided for any balance entry. If omitted, it defaults to the user's primary currency for synced crypto balances.<br><br>
7258
7371
  `crypto_balance` may be provided for synced crypto balances.<br><br>
7259
-
7260
- The response contains only the balance entries that were submitted in this request.
7372
+ The response contains only the `type: historical` balance entries that were submitted in this request.
7261
7373
  operationId: upsertBalanceHistoryForCryptoSynced
7262
7374
  parameters:
7263
7375
  - name: account_id
@@ -7285,44 +7397,49 @@ paths:
7285
7397
  synced crypto bulk upsert:
7286
7398
  value:
7287
7399
  balances:
7288
- - date: "2026-03-01"
7400
+ - month: "2026-03"
7289
7401
  balance: "6400.0000"
7290
7402
  crypto_balance: "0.100020003000400050"
7291
- - date: "2026-04-01"
7403
+ - month: "2026-04"
7292
7404
  balance: "6500.0000"
7293
7405
  crypto_balance: "0.100020003000400050"
7294
7406
  responses:
7295
7407
  "200":
7296
- description: Returns the modified balance entries only. Other historical
7297
- entries for the symbol stream are omitted from `balances`.
7408
+ description: >-
7409
+ Returns only the `type: historical` entries modified by this request.
7410
+ Other historical entries for the symbol stream are omitted from
7411
+ `balances`.
7298
7412
  content:
7299
7413
  application/json:
7300
7414
  schema:
7301
7415
  $ref: "#/components/schemas/balanceHistoryAccountObject"
7302
7416
  examples:
7303
7417
  synced crypto bulk upsert:
7304
- summary: Two upserted rows returned (not full symbol history)
7418
+ summary: Two upserted entries returned (not full symbol history)
7305
7419
  value:
7306
7420
  source:
7307
7421
  type: crypto_synced
7308
7422
  crypto_synced_id: 33004
7309
7423
  symbol: btc
7310
7424
  balances:
7311
- - id: 604
7312
- date: "2026-03-01"
7425
+ - type: historical
7426
+ id: 604
7427
+ month: "2026-03"
7313
7428
  balance: "6400.0000"
7314
7429
  currency: usd
7315
7430
  to_base: 6400
7316
7431
  crypto_balance: "0.100020003000400050"
7317
- - id: 605
7318
- date: "2026-04-01"
7432
+ - type: historical
7433
+ id: 605
7434
+ month: "2026-04"
7319
7435
  balance: "6500.0000"
7320
7436
  currency: usd
7321
7437
  to_base: 6500
7322
7438
  crypto_balance: "0.100020003000400050"
7323
7439
  "400":
7324
- description: Bad Request. The entire request is rejected if any row in
7325
- `balances` fails validation; no rows are updated.
7440
+ description: >-
7441
+ Bad Request. If any entry in `balances` fails validation, the entire
7442
+ request is rejected and no entries are updated.
7326
7443
  content:
7327
7444
  application/json:
7328
7445
  schema:
@@ -7338,17 +7455,22 @@ paths:
7338
7455
  message: Invalid Request Body
7339
7456
  errors:
7340
7457
  - errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
7341
- invalid date:
7458
+ invalid month format:
7459
+ value:
7460
+ message: Invalid Request Body
7461
+ errors:
7462
+ - errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
7463
+ current month:
7342
7464
  value:
7343
7465
  message: Request Validation Failure
7344
7466
  errors:
7345
- - errMsg: "`date` must be the first day of a month."
7467
+ - errMsg: "`month` must not be the current month."
7346
7468
  request_balances_index: 0
7347
- future date:
7469
+ future month:
7348
7470
  value:
7349
7471
  message: Request Validation Failure
7350
7472
  errors:
7351
- - errMsg: "`date` must be in a past month."
7473
+ - errMsg: "`month` must not be in the future."
7352
7474
  request_balances_index: 1
7353
7475
  symbol mismatch:
7354
7476
  value:
@@ -7356,9 +7478,9 @@ paths:
7356
7478
  errors:
7357
7479
  - errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
7358
7480
  request_balances_index: 0
7359
- invalid row in bulk request:
7481
+ invalid entry in bulk request:
7360
7482
  value:
7361
- message: Request Validation Failure
7483
+ message: Invalid Request Body
7362
7484
  errors:
7363
7485
  - errMsg: "`balance` must be a valid numeric string or number."
7364
7486
  request_balances_index: 1
@@ -7389,11 +7511,9 @@ paths:
7389
7511
  tags:
7390
7512
  - balance_history
7391
7513
  summary: Delete all balance history for a synced crypto symbol
7392
- description: >-
7514
+ description: |-
7393
7515
  Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
7394
-
7395
- The path identifies both the synced crypto account and the symbol whose
7396
- history should be deleted.
7516
+ The path identifies both the synced crypto account and the symbol whose history should be deleted.
7397
7517
  operationId: deleteBalanceHistoryForCryptoSynced
7398
7518
  parameters:
7399
7519
  - name: account_id
@@ -7435,14 +7555,14 @@ paths:
7435
7555
  tags:
7436
7556
  - balance_history
7437
7557
  summary: Delete a balance history entry
7438
- description: >-
7439
- Delete a single monthly balance history entry by its id.
7558
+ description: |-
7559
+ Delete a single stored (`type: historical`) monthly balance history entry by its id. Ephemeral `current` entries cannot be deleted this way.
7440
7560
  operationId: deleteBalanceHistoryEntry
7441
7561
  parameters:
7442
7562
  - name: id
7443
7563
  in: path
7444
7564
  required: true
7445
- description: Balance history row identifier to delete.
7565
+ description: Historical balance entry identifier to delete.
7446
7566
  schema:
7447
7567
  type: integer
7448
7568
  format: int32
@@ -7456,7 +7576,7 @@ paths:
7456
7576
  schema:
7457
7577
  $ref: "#/components/schemas/errorResponseObject"
7458
7578
  example:
7459
- message: Request Validation Failure
7579
+ message: Invalid Path Parameters
7460
7580
  errors:
7461
7581
  - errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
7462
7582
  "401":
@@ -7480,12 +7600,9 @@ paths:
7480
7600
  tags:
7481
7601
  - balance_history
7482
7602
  summary: Update details for a deleted account
7483
- description: >-
7603
+ description: |-
7484
7604
  Update archived metadata for a deleted balance history source.<br><br>
7485
-
7486
- Pass the `deleted` source id returned on `source.deleted_account_id`.
7487
- This endpoint updates the stored deleted-source metadata used for all
7488
- historical entries associated with that deleted source.
7605
+ Pass the `deleted_account_id` from a `source.type: deleted` entry. The update applies to all historical entries associated with that deleted source.
7489
7606
  operationId: updateBalanceHistoryDetails
7490
7607
  parameters:
7491
7608
  - name: account_id
@@ -8559,19 +8676,19 @@ paths:
8559
8676
  description: Sets the maximum number of transactions to return. If
8560
8677
  more match the filter criteria, the response will include a
8561
8678
  `has_more` attribute set to `true`. See
8562
- [Pagination](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/pagination)
8679
+ [Pagination](https://lunchmoney.dev/v2/pagination)
8563
8680
  - name: offset
8564
8681
  in: query
8565
8682
  schema:
8566
8683
  type: integer
8567
8684
  description: Sets the offset for the records returned. This is
8568
8685
  typically set automatically in the header. See
8569
- [Pagination](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/pagination)
8686
+ [Pagination](https://lunchmoney.dev/v2/pagination)
8570
8687
  responses:
8571
8688
  "200":
8572
8689
  description: Returns an array of transactions. <br><br>The `has_more`
8573
8690
  property is set to `true` if more transactions are available. See
8574
- [Pagination](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/pagination)
8691
+ [Pagination](https://lunchmoney.dev/v2/pagination)
8575
8692
  content:
8576
8693
  application/json:
8577
8694
  schema:
@@ -10795,9 +10912,8 @@ paths:
10795
10912
  - transactions (files)
10796
10913
  summary: Attach a file to a transaction
10797
10914
  operationId: attachFileToTransaction
10798
- description: >-
10799
- Attaches a file to a transaction. The file must be less than 10MB in size.<br><br>
10800
- The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
10915
+ description: |-
10916
+ Attaches a file to a transaction. The file must be less than 10MB in size.<br><br> The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
10801
10917
  parameters:
10802
10918
  - name: transaction_id
10803
10919
  in: path
@@ -10880,8 +10996,8 @@ paths:
10880
10996
  /transactions/attachments/{file_id}:
10881
10997
  get:
10882
10998
  summary: Get a url to download a file attachment
10883
- description: Returns a signed url that can be used to download the file
10884
- attachment.
10999
+ description: |-
11000
+ Returns a signed url that can be used to download the file attachment.
10885
11001
  operationId: getTransactionAttachmentUrl
10886
11002
  tags:
10887
11003
  - transactions (files)
@@ -11774,4 +11890,3 @@ paths:
11774
11890
 
11775
11891
  security:
11776
11892
  - bearerSecurity: []
11777
- - cookieAuth: []