@lunch-money/developer-docs 2.11.1-preview.4 → 2.11.1-preview.5

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.
@@ -2,17 +2,25 @@ openapi: 3.0.2
2
2
  info:
3
3
  title: Lunch Money API - v2
4
4
  description: |-
5
- Welcome to the Lunch Money v2 API reference. This is the **v2.11.1** spec.
6
-
7
5
  ### Introduction
8
6
 
9
- The API is available at `https://lunchmoney.dev/v2`. Get your access token from the [Lunch Money developers page](https://my.lunchmoney.app/developers).
7
+ Welcome to the Lunch Money v2 API reference. This is the **v2.11.1** spec.
10
8
 
11
- API calls can <span class="red-text"><strong>change or delete</strong></span> your data. Any changes you make are <span class="red-text"><strong>permanent</strong></span>, just like they would be if you made changes using the web or mobile app. Please refer to the [Getting Started Guide](https://lunchmoney.dev/v2/getting-started) before using the API.
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).
12
10
 
13
- **Static Mock Server**
11
+
12
+ **Try it from these docs**
14
13
 
15
- 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.
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**
20
+
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
+
16
24
 
17
25
  **Client Libraries & SDKs**
18
26
 
@@ -23,7 +31,6 @@ info:
23
31
  The v2 API is not backwards compatible with v1. See the [Migration Guide](https://lunchmoney.dev/v2/migration-guide) for details.
24
32
 
25
33
  **Useful links**
26
- - [Developer Portal](https://lunchmoney.dev/v2/introduction)
27
34
  - [Getting Started Guide](https://lunchmoney.dev/v2/getting-started)
28
35
  - [v2 API Overview](https://lunchmoney.dev/v2/overview)
29
36
  - [Version History](https://lunchmoney.dev/v2/version-history)
@@ -39,10 +46,9 @@ info:
39
46
 
40
47
  servers:
41
48
  - url: https://api.lunchmoney.dev/v2
42
- description: v2 Lunch Money API Server - changes will affect real data!
43
- # - url: https://lunchmoney.dev/v2
44
- - url: https://lunchmoney.dev/v2
45
- 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
46
52
 
47
53
  tags:
48
54
  - name: me
@@ -76,7 +82,11 @@ tags:
76
82
  description: Learn more about crypto assets
77
83
  url: https://support.lunchmoney.app/setup/crypto
78
84
  - name: balance_history
79
- 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.
85
+ description: >-
86
+ View and update monthly account balances used by the
87
+ [Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app.
88
+ History is monthly. The current month may be calculated on demand when
89
+ requested.
80
90
  - name: recurring_items
81
91
  description: Work with recurring items
82
92
  externalDocs:
@@ -990,16 +1000,19 @@ components:
990
1000
  example: Cold Wallet BTC
991
1001
  display_name:
992
1002
  type: string
1003
+ nullable: true
993
1004
  minLength: 1
994
1005
  maxLength: 45
995
- description: Optional display name for the manual crypto asset. If
996
- omitted, clients may derive one from `institution_name` + `name`.
1006
+ description: Display name for the manual crypto asset. If omitted or
1007
+ `null`, clients may derive one from `institution_name` + `name`.
997
1008
  example: Cold Storage
998
1009
  institution_name:
999
1010
  type: string
1011
+ nullable: true
1000
1012
  minLength: 1
1001
1013
  maxLength: 50
1002
- description: Optional institution or wallet provider display name
1014
+ description: Institution or wallet provider display name. If omitted
1015
+ or `null`, no institution name is set.
1003
1016
  example: Ledger
1004
1017
  balance:
1005
1018
  oneOf:
@@ -1255,15 +1268,19 @@ components:
1255
1268
  example: My Savings Account
1256
1269
  institution_name:
1257
1270
  type: string
1271
+ nullable: true
1258
1272
  example: Bank of the West
1259
- description: Name of institution holding the manual account
1273
+ description: Name of the institution holding the manual account. If
1274
+ omitted or `null`, no institution name is set.
1260
1275
  minLength: 1
1261
1276
  maxLength: 50
1262
1277
  display_name:
1263
1278
  type: string
1264
- description: Display name of the manual account as set by user or
1265
- derived from the `institution_name` and `name` if not explicitly
1266
- set.<br> This must be unique for the budgeting account.
1279
+ nullable: true
1280
+ description: Display name of the manual account. If omitted or
1281
+ `null`, it is derived from `institution_name` and `name`. An
1282
+ explicitly set display name must be unique for the budgeting
1283
+ account.
1267
1284
  example: Savings
1268
1285
  type:
1269
1286
  description: The type of manual account
@@ -1271,8 +1288,10 @@ components:
1271
1288
  - $ref: "#/components/schemas/accountTypeEnum"
1272
1289
  subtype:
1273
1290
  type: string
1274
- description: An optional manual account subtype. Examples include<br>
1275
- - retirement - checking - savings - prepaid credit card
1291
+ nullable: true
1292
+ description: Manual account subtype. If omitted or `null`, no subtype
1293
+ is set. Examples include retirement, checking, savings, and prepaid
1294
+ credit card.
1276
1295
  minLength: 1
1277
1296
  maxLength: 100
1278
1297
  example: prepaid credit card
@@ -1646,7 +1665,7 @@ components:
1646
1665
  type:
1647
1666
  type: string
1648
1667
  enum: [manual]
1649
- description: Identifies this entry as belonging to a manually-managed account.
1668
+ description: Identifies this entry as belonging to a manual account.
1650
1669
  manual_account_id:
1651
1670
  type: integer
1652
1671
  format: int32
@@ -1675,14 +1694,14 @@ components:
1675
1694
 
1676
1695
  balanceHistorySourceCryptoManual:
1677
1696
  type: object
1678
- description: Source information for a manually-tracked cryptocurrency balance history entry.
1697
+ description: Source information for a manual cryptocurrency balance history entry.
1679
1698
  additionalProperties: false
1680
1699
  x-internal: true
1681
1700
  properties:
1682
1701
  type:
1683
1702
  type: string
1684
1703
  enum: [crypto_manual]
1685
- description: Identifies this entry as belonging to a manually-tracked crypto account.
1704
+ description: Identifies this entry as belonging to a manual crypto account.
1686
1705
  crypto_manual_id:
1687
1706
  type: integer
1688
1707
  format: int32
@@ -1725,10 +1744,11 @@ components:
1725
1744
  type: object
1726
1745
  x-internal: true
1727
1746
  description: >
1728
- Source information for a balance history entry whose account has since been deleted.
1747
+ Source information for balance history whose account has since been deleted.
1729
1748
  Historical balances are preserved when a user chooses to keep history on account deletion.
1730
1749
  This object contains details that can be used to display the deleted account in the UI.
1731
- The `deleted_account_id` can be passed to `PUT /v2/balance_history/deleted/{account_id}/details`
1750
+ The `deleted_account_id` can be passed to
1751
+ [PUT /balance_history/deleted/{account_id}/details](#tag/balance-history/PUT/balance_history/deleted/{account_id}/details)
1732
1752
  to update the archived source metadata.
1733
1753
  additionalProperties: false
1734
1754
  properties:
@@ -1759,11 +1779,11 @@ components:
1759
1779
  subtype:
1760
1780
  type: string
1761
1781
  nullable: true
1762
- description: Archived `subtype`` of the deleted account source
1782
+ description: Archived `subtype` of the deleted account source
1763
1783
  mask:
1764
1784
  type: string
1765
1785
  nullable: true
1766
- description: Archived account `mask` for a deleted plaid account source
1786
+ description: Archived account `mask` for a deleted Plaid account source
1767
1787
  symbol:
1768
1788
  type: string
1769
1789
  nullable: true
@@ -1785,12 +1805,14 @@ components:
1785
1805
  type: object
1786
1806
  title: balance history for an account object
1787
1807
  additionalProperties: false
1788
- description: Historical balance entries grouped under a single account source.
1808
+ description: Monthly balance entries grouped under a single account source.
1789
1809
  properties:
1790
1810
  source:
1791
1811
  description: >
1792
- Identifies the account this balance entry belongs to. The shape varies by
1793
- `source.type`. Use `source.type` to determine which account id field is present.
1812
+ Identifies the account these balance entries belong to. The shape varies by
1813
+ `source.type`. Each source type exposes a type-specific account id field
1814
+ (`manual_account_id`, `plaid_account_id`, `crypto_manual_id`,
1815
+ `crypto_synced_id`, or `deleted_account_id`).
1794
1816
  oneOf:
1795
1817
  - $ref: "#/components/schemas/balanceHistorySourceManual"
1796
1818
  - $ref: "#/components/schemas/balanceHistorySourcePlaid"
@@ -1808,38 +1830,48 @@ components:
1808
1830
  balances:
1809
1831
  type: array
1810
1832
  description: >
1811
- Monthly balance history entries for the source account. On GET responses,
1812
- this includes all entries in the requested range. On PUT upsert responses,
1813
- this includes only the entries modified by that request.
1833
+ Monthly balance entries for this account source. A `historical` entry is
1834
+ a stored snapshot of a past month and includes an `id`. A `current` entry
1835
+ is an ephemeral snapshot based on the account's current balances and has
1836
+ no balance-entry `id`. On PUT upsert responses, this array includes only
1837
+ the `type: historical` entries modified by that request.
1814
1838
  items:
1815
- $ref: "#/components/schemas/balanceHistoryObject"
1839
+ $ref: "#/components/schemas/balanceHistoryEntry"
1816
1840
  required:
1817
1841
  - source
1818
1842
  - balances
1819
1843
 
1820
- balanceHistoryObject:
1844
+ historicalBalanceHistoryEntry:
1821
1845
  type: object
1822
- title: balance history entry object
1846
+ title: historical balance history entry
1823
1847
  additionalProperties: false
1824
1848
  x-internal: true
1825
- description: A historical balance entry for a single account on a single date.
1849
+ description: >
1850
+ A stored monthly balance for a past month. The `id` may be used with
1851
+ balance history entry endpoints. The balance represents the account
1852
+ balance at or around the end of `month`.
1826
1853
  properties:
1854
+ type:
1855
+ type: string
1856
+ enum: [historical]
1857
+ description: Identifies this entry as a stored snapshot of a past month.
1827
1858
  id:
1828
1859
  type: integer
1829
1860
  format: int32
1830
- description: Unique identifier of this historical balance entry.
1831
- date:
1861
+ description: Unique identifier for this historical balance entry.
1862
+ month:
1832
1863
  type: string
1833
- format: date
1834
- description: Date of this historical balance entry in YYYY-MM-DD format. This is always the first day of a month.
1864
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
1865
+ description: Calendar month for this entry in YYYY-MM format.
1866
+ example: "2026-06"
1835
1867
  balance:
1836
1868
  type: string
1837
1869
  pattern: ^-?\d+(\.\d{1,4})?$
1838
- 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.
1870
+ 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.
1839
1871
  currency:
1840
1872
  allOf:
1841
1873
  - $ref: "#/components/schemas/currencyEnum"
1842
- description: Currency of the stored `balance`. For crypto entries this is the user's primary currency.
1874
+ description: Currency of `balance`. For crypto entries this is the user's primary currency.
1843
1875
  to_base:
1844
1876
  type: number
1845
1877
  format: double
@@ -1848,19 +1880,82 @@ components:
1848
1880
  type: string
1849
1881
  nullable: true
1850
1882
  pattern: ^-?\d+(\.\d{1,18})?$
1851
- description: Crypto quantity stored for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
1883
+ description: Crypto quantity for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
1852
1884
  required:
1885
+ - type
1853
1886
  - id
1854
- - date
1887
+ - month
1888
+ - balance
1889
+ - currency
1890
+ - to_base
1891
+ - crypto_balance
1892
+
1893
+ currentBalanceHistoryEntry:
1894
+ type: object
1895
+ title: current balance history entry
1896
+ additionalProperties: false
1897
+ x-internal: true
1898
+ description: >
1899
+ An ephemeral snapshot based on the account's current balances. It may
1900
+ change between requests.
1901
+ properties:
1902
+ type:
1903
+ type: string
1904
+ enum: [current]
1905
+ description: Identifies this entry as an ephemeral current-month snapshot.
1906
+ month:
1907
+ type: string
1908
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
1909
+ description: Calendar month for this entry in YYYY-MM format. For current entries this is the current month.
1910
+ example: "2026-07"
1911
+ balance:
1912
+ type: string
1913
+ pattern: ^-?\d+(\.\d{1,4})?$
1914
+ 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.
1915
+ currency:
1916
+ allOf:
1917
+ - $ref: "#/components/schemas/currencyEnum"
1918
+ description: Currency of the calculated `balance`. For crypto entries this is the user's primary currency.
1919
+ to_base:
1920
+ type: number
1921
+ format: double
1922
+ 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`.
1923
+ crypto_balance:
1924
+ type: string
1925
+ nullable: true
1926
+ pattern: ^-?\d+(\.\d{1,18})?$
1927
+ description: Crypto quantity for this calculated entry, when available. This may be present for crypto entries and is `null` otherwise.
1928
+ required:
1929
+ - type
1930
+ - month
1855
1931
  - balance
1856
1932
  - currency
1857
1933
  - to_base
1858
1934
  - crypto_balance
1859
1935
 
1936
+ balanceHistoryEntry:
1937
+ title: balance history entry
1938
+ x-internal: true
1939
+ description: >
1940
+ A monthly balance history entry. Discriminated by `type`. `historical`
1941
+ entries are stored snapshots of past months with an `id`. `current`
1942
+ entries are ephemeral snapshots with no balance-entry `id`.
1943
+ oneOf:
1944
+ - $ref: "#/components/schemas/historicalBalanceHistoryEntry"
1945
+ - $ref: "#/components/schemas/currentBalanceHistoryEntry"
1946
+ discriminator:
1947
+ propertyName: type
1948
+ mapping:
1949
+ historical: "#/components/schemas/historicalBalanceHistoryEntry"
1950
+ current: "#/components/schemas/currentBalanceHistoryEntry"
1951
+
1860
1952
  balanceHistoryListResponseObject:
1861
1953
  type: object
1862
1954
  additionalProperties: false
1863
1955
  x-internal: true
1956
+ description: >
1957
+ List response for balance history GET endpoints. Entries are grouped by
1958
+ account source under `balance_history`.
1864
1959
  properties:
1865
1960
  balance_history:
1866
1961
  type: array
@@ -1873,31 +1968,39 @@ components:
1873
1968
  type: object
1874
1969
  x-internal: true
1875
1970
  additionalProperties: false
1971
+ description: >
1972
+ A single monthly balance entry to upsert. Request bodies use this shape.
1973
+ Responses return `type: historical` entries instead.
1876
1974
  properties:
1877
1975
  id:
1878
1976
  type: integer
1879
1977
  format: int32
1880
1978
  description: System-defined balance history entry id. Ignored if set.
1881
1979
  x-updatable: false
1882
- date:
1980
+ month:
1883
1981
  type: string
1884
- format: date
1885
- 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.
1982
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
1983
+ description: >
1984
+ Calendar month to upsert, in YYYY-MM format. Must be a past month.
1985
+ The current month cannot be written through PUT endpoints.
1986
+ example: "2026-06"
1886
1987
  balance:
1887
1988
  oneOf:
1888
1989
  - type: number
1889
1990
  format: double
1890
1991
  - type: string
1891
1992
  pattern: ^-?\d+(\.\d{1,4})?$
1892
- 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.
1993
+ 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.
1893
1994
  symbol:
1894
1995
  type: string
1895
1996
  nullable: true
1896
1997
  minLength: 1
1897
1998
  maxLength: 25
1898
- description: Optional for crypto balances, but if set it must match the account's symbol.
1899
- Tolerated for deleted-account balances. Do not provide this for manual or Plaid balances.
1900
- If provided when using the synced crypto path-based endpoint, this must match the symbol in the path.
1999
+ description: >
2000
+ Optional for crypto balances. If set, it must match the account's
2001
+ symbol. Tolerated for deleted-account balances. Do not provide this
2002
+ for manual or Plaid balances. On the synced crypto path endpoint, if
2003
+ provided it must match the `symbol` path parameter.
1901
2004
  x-updatable: true
1902
2005
  crypto_balance:
1903
2006
  type: string
@@ -1913,10 +2016,10 @@ components:
1913
2016
  to_base:
1914
2017
  type: number
1915
2018
  format: double
1916
- description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the stored historical balance.
2019
+ description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the historical balance.
1917
2020
  x-updatable: false
1918
2021
  required:
1919
- - date
2022
+ - month
1920
2023
  - balance
1921
2024
 
1922
2025
  upsertBalanceHistoryRequestObject:
@@ -1927,7 +2030,11 @@ components:
1927
2030
  balances:
1928
2031
  type: array
1929
2032
  minItems: 1
1930
- description: One or more monthly balance history entries to upsert
2033
+ description: >
2034
+ One or more monthly balance history entries to upsert. Each entry uses
2035
+ `month` (YYYY-MM) and `balance`. Do not include response-only fields such
2036
+ as `type`. PUT responses return only the `type: historical` entries
2037
+ modified by the request.
1931
2038
  items:
1932
2039
  $ref: "#/components/schemas/balanceHistoryUpdateItemObject"
1933
2040
  required:
@@ -1942,51 +2049,58 @@ components:
1942
2049
  name:
1943
2050
  type: string
1944
2051
  nullable: true
1945
- description: New archived account name for the deleted account source.
2052
+ description: New archived account name for the deleted account source
1946
2053
  institution_name:
1947
2054
  type: string
1948
2055
  nullable: true
1949
- description: New archived institution name for the deleted account source.
2056
+ description: New archived institution name for the deleted account source
1950
2057
  display_name:
1951
2058
  type: string
1952
2059
  nullable: true
1953
- description: New display name for the deleted account source.
2060
+ description: New display name for the deleted account source
1954
2061
  account_type:
1955
2062
  type: string
1956
2063
  nullable: true
1957
- description: New archived account type for the deleted account source.
2064
+ description: New archived account type for the deleted account source
1958
2065
  subtype:
1959
2066
  type: string
1960
2067
  nullable: true
1961
- description: New archived subtype for the deleted account source.
2068
+ description: New archived subtype for the deleted account source
1962
2069
  mask:
1963
2070
  type: string
1964
2071
  nullable: true
1965
- description: New archived account mask for the deleted account source.
2072
+ description: New archived account mask for the deleted account source
1966
2073
 
1967
2074
  updateBalanceHistoryDetailsResponseObject:
1968
2075
  type: object
1969
2076
  x-internal: true
1970
2077
  additionalProperties: false
2078
+ description: Updated archived metadata for a deleted balance history source
1971
2079
  properties:
1972
2080
  name:
1973
2081
  type: string
1974
2082
  nullable: true
2083
+ description: Archived account name for the deleted account source
1975
2084
  institution_name:
1976
2085
  type: string
1977
2086
  nullable: true
2087
+ description: Archived institution name for the deleted account source
1978
2088
  display_name:
1979
2089
  type: string
1980
2090
  nullable: true
2091
+ description: Archived display name for the deleted account source
1981
2092
  account_type:
1982
2093
  type: string
1983
2094
  nullable: true
2095
+ description: Archived account type for the deleted account source
1984
2096
  subtype:
1985
2097
  type: string
1986
2098
  nullable: true
2099
+ description: Archived subtype for the deleted account source
1987
2100
  mask:
1988
2101
  type: string
1989
2102
  nullable: true
2103
+ description: Archived account mask for the deleted account source
1990
2104
  required:
1991
2105
  - name
1992
2106
  - institution_name
@@ -3087,6 +3201,7 @@ components:
3087
3201
  description: |
3088
3202
  The new payee for the transaction.
3089
3203
  minLength: 0
3204
+ x-updatable: true
3090
3205
  original_name:
3091
3206
  type: string
3092
3207
  nullable: true
@@ -3298,9 +3413,10 @@ components:
3298
3413
  category_id:
3299
3414
  type: integer
3300
3415
  format: int32
3301
- description: Unique identifier for associated category_id. Category
3302
- must already exist for the account. Will inherit category from the
3303
- parent if not defined.
3416
+ nullable: true
3417
+ description: Category ID for the child transaction. The category must
3418
+ already exist for the account. If omitted, the child inherits the
3419
+ parent category. If `null`, the child has no category.
3304
3420
  tag_ids:
3305
3421
  type: array
3306
3422
  description: The IDs of any tags to apply to this split child
@@ -3310,7 +3426,10 @@ components:
3310
3426
  format: int32
3311
3427
  notes:
3312
3428
  type: string
3313
- description: Will inherit notes from parent if not defined.
3429
+ nullable: true
3430
+ description: Notes for the child transaction. If omitted, the child
3431
+ inherits the parent notes. If `null` or an empty string, the child
3432
+ has no notes.
3314
3433
  required:
3315
3434
  - amount
3316
3435
 
@@ -4818,22 +4937,10 @@ components:
4818
4937
  securitySchemes:
4819
4938
  bearerSecurity:
4820
4939
  type: http
4821
- # TODO Make this shorter?
4822
- # description: The Lunch Money API uses API keys to authenticate requests. To use
4823
- # the v1 API you can view and manage your API keys on the [developers page
4824
- # in the Lunch Money app](https://my.lunchmoney.app/developers). <p> To
4825
- # interact with the Static Mock Server simply enter an API key of 11
4826
- # characters or more. <p> To interact with the v2 service implemented on
4827
- # top of the v1 API paste in a real API token associated with a Lunch
4828
- # Money Budget.
4829
- description: To interact with the Static Mock Server simply enter an API
4830
- key of 11 characters or more.
4940
+ description: >-
4941
+ Required for the LIVE server. Optional for MOCK.
4831
4942
  scheme: bearer
4832
4943
  bearerFormat: JWT
4833
- cookieAuth:
4834
- type: apiKey
4835
- in: cookie
4836
- name: _lm_access_token
4837
4944
 
4838
4945
  paths:
4839
4946
  /me:
@@ -4876,8 +4983,8 @@ paths:
4876
4983
  tags:
4877
4984
  - me
4878
4985
  summary: Get account settings
4879
- description: Returns account-level settings for the budgeting
4880
- account associated with the authorized API token.
4986
+ description: |-
4987
+ Returns account-level settings for the budgeting account associated with the authorized API token.
4881
4988
  operationId: getAccountSettings
4882
4989
  responses:
4883
4990
  "200":
@@ -4954,8 +5061,8 @@ paths:
4954
5061
  tags:
4955
5062
  - me
4956
5063
  summary: Get user settings
4957
- description: Returns user-level display and formatting preferences for the
4958
- user associated with the authorized API token.
5064
+ description: |-
5065
+ Returns user-level display and formatting preferences for the user associated with the authorized API token.
4959
5066
  operationId: getUserSettings
4960
5067
  responses:
4961
5068
  "200":
@@ -6277,12 +6384,9 @@ paths:
6277
6384
  tags:
6278
6385
  - crypto-manual
6279
6386
  summary: Get all supported cryptocurrencies
6280
- description: >
6387
+ description: |-
6281
6388
  Retrieve the list of cryptocurrencies currently supported for manual tracking.<p>
6282
-
6283
- When creating a new manual crypto balance via `POST /crypto/manual`, the
6284
- `symbol` you specify must match the `symbol` of one of the entries
6285
- returned by this endpoint.
6389
+ 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.
6286
6390
  operationId: getAllCryptocurrencies
6287
6391
  responses:
6288
6392
  "200":
@@ -6320,16 +6424,9 @@ paths:
6320
6424
  - crypto-manual
6321
6425
  summary: Add a new supported cryptocurrency
6322
6426
  operationId: createCryptocurrency
6323
- description: >-
6427
+ description: |-
6324
6428
  Adds a new cryptocurrency to the supported manual-crypto list.<br><br>
6325
-
6326
- Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum)
6327
- to convert crypto balances to the user's primary currency. Users add a
6328
- new supported cryptocurrency by submitting a CoinGecko coin-page URL.
6329
- The server validates the URL, extracts the id from `/coins/{id}`,
6330
- checks for an existing supported `coingecko_id`, validates the id
6331
- against CoinGecko, then confirms the resolved symbol is not already
6332
- supported before creating the new entry.
6429
+ 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.
6333
6430
  requestBody:
6334
6431
  required: true
6335
6432
  content:
@@ -6408,8 +6505,8 @@ paths:
6408
6505
  tags:
6409
6506
  - crypto-manual
6410
6507
  summary: Get all manual crypto balances
6411
- description: Retrieve all manually managed crypto balances associated with
6412
- the user's account.
6508
+ description: |-
6509
+ Retrieve all manually managed crypto balances associated with the user's account.
6413
6510
  operationId: getAllCryptoManual
6414
6511
  responses:
6415
6512
  "200":
@@ -6443,11 +6540,9 @@ paths:
6443
6540
  tags:
6444
6541
  - crypto-manual
6445
6542
  summary: Create a manual crypto balance
6446
- description: >-
6543
+ description: |-
6447
6544
  Create a manually managed crypto asset.<br><br>
6448
-
6449
- If `display_name` is `null`, clients may derive one from
6450
- `institution_name` + `name`.
6545
+ If `display_name` is `null`, clients may derive one from `institution_name` + `name`.
6451
6546
  operationId: createCryptoManual
6452
6547
  requestBody:
6453
6548
  required: true
@@ -6532,7 +6627,8 @@ paths:
6532
6627
  tags:
6533
6628
  - crypto-manual
6534
6629
  summary: Get a single manual crypto balance
6535
- description: Retrieve a single manually managed crypto balance by ID.
6630
+ description: |-
6631
+ Retrieve a single manually managed crypto balance by ID.
6536
6632
  operationId: getCryptoManualById
6537
6633
  parameters:
6538
6634
  - name: id
@@ -6600,11 +6696,9 @@ paths:
6600
6696
  tags:
6601
6697
  - crypto-manual
6602
6698
  summary: Update a manual crypto balance
6603
- description: >-
6699
+ description: |-
6604
6700
  Modify a manually managed crypto balance.<br><br>
6605
-
6606
- You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties
6607
- are accepted according to the `x-updatable` metadata in the update schema.
6701
+ 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.
6608
6702
  operationId: updateCryptoManual
6609
6703
  parameters:
6610
6704
  - name: id
@@ -6701,10 +6795,8 @@ paths:
6701
6795
  tags:
6702
6796
  - crypto-manual
6703
6797
  summary: Delete a manual crypto balance
6704
- description: Delete a single manually managed crypto asset by ID.<p> If
6705
- this crypto asset has a balance history, and you do not explicitly set
6706
- the query parameter`keep_history`, a 422 response will be returned
6707
- requesting you to explicitly set `keep_history` to `true` or `false`.
6798
+ description: |-
6799
+ 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`.
6708
6800
  operationId: deleteCryptoManual
6709
6801
  parameters:
6710
6802
  - name: id
@@ -6769,8 +6861,8 @@ paths:
6769
6861
  tags:
6770
6862
  - crypto-synced
6771
6863
  summary: Get all synced crypto accounts
6772
- description: Retrieves all synced crypto accounts
6773
- associated with the user's account.
6864
+ description: |-
6865
+ Retrieves all synced crypto accounts associated with the user's account.
6774
6866
  operationId: getAllCryptoSynced
6775
6867
  responses:
6776
6868
  "200":
@@ -6832,8 +6924,8 @@ paths:
6832
6924
  tags:
6833
6925
  - crypto-synced
6834
6926
  summary: Get a single synced crypto account
6835
- description: Retrieves the synced crypto account and all nested balances
6836
- for the specified synced crypto account ID.
6927
+ description: |-
6928
+ Retrieves the synced crypto account and all nested balances for the specified synced crypto account ID.
6837
6929
  operationId: getCryptoSyncedById
6838
6930
  parameters:
6839
6931
  - name: id
@@ -6913,8 +7005,8 @@ paths:
6913
7005
  tags:
6914
7006
  - crypto-synced
6915
7007
  summary: Get a synced crypto balance by symbol
6916
- description: Retrieves a single balance from the specified synced crypto
6917
- account using the crypto symbol.
7008
+ description: |-
7009
+ Retrieves a single balance from the specified synced crypto account using the crypto symbol.
6918
7010
  operationId: getCryptoSyncedBalanceBySymbol
6919
7011
  parameters:
6920
7012
  - name: id
@@ -6993,8 +7085,8 @@ paths:
6993
7085
  tags:
6994
7086
  - crypto-synced
6995
7087
  summary: Refresh balances for a synced crypto account
6996
- description: Trigger a balance refresh for the specified synced crypto
6997
- account. Returns the refreshed synced crypto account.
7088
+ description: |-
7089
+ Trigger a balance refresh for the specified synced crypto account. Returns the refreshed synced crypto account.
6998
7090
  operationId: refreshCryptoSynced
6999
7091
  parameters:
7000
7092
  - name: id
@@ -7063,51 +7155,55 @@ paths:
7063
7155
  tags:
7064
7156
  - balance_history
7065
7157
  summary: Get balance history
7066
- description: >-
7067
- Retrieve historical balance entries.<br><br>
7068
-
7069
- Balance history is monthly. When `start_date` and `end_date` are both provided,
7070
- they must be first-of-month dates. `start_date` must not be in the future,
7071
- while `end_date` may be in the future. If one of `start_date` or `end_date`
7072
- is provided, the other is required. If neither is provided, all available
7073
- balance history is returned.<br><br>
7074
-
7075
- The response groups entries by source account. Each item in
7076
- `balance_history` contains a `source` object plus a `balances` array
7077
- containing one balance entry per month in the requested range, or all
7078
- stored entries when no range is provided.<br><br>
7079
-
7080
- Historical entries for accounts that have been deleted may still
7081
- be returned. These entries use `source.type: deleted` and include
7082
- `deleted_account_id`, archived display fields, and account metadata on the
7083
- `source` object.
7158
+ description: |-
7159
+ Retrieve monthly balance history for all account sources.<br><br>
7160
+ 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>
7161
+ 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>
7162
+ 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>
7163
+ Each balance entry has a `type`:<br>
7164
+ - `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>
7165
+ - `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>
7166
+ &nbsp;&nbsp;&nbsp;&nbsp;- `manual`: `source.manual_account_id` with [GET /manual_accounts/{id}](#tag/manual-accounts/GET/manual_accounts/{id})<br>
7167
+ &nbsp;&nbsp;&nbsp;&nbsp;- `plaid`: `source.plaid_account_id` with [GET /plaid_accounts/{id}](#tag/plaid-accounts/GET/plaid_accounts/{id})<br>
7168
+ &nbsp;&nbsp;&nbsp;&nbsp;- `crypto_manual`: `source.crypto_manual_id` with [GET /crypto/manual/{id}](#tag/crypto-manual/GET/crypto/manual/{id})<br>
7169
+ &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})
7084
7170
  operationId: getBalanceHistory
7085
7171
  parameters:
7086
- - name: start_date
7172
+ - name: start_month
7087
7173
  in: query
7088
- 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.
7174
+ description: >-
7175
+ Optional start of the requested history range as a calendar month in
7176
+ YYYY-MM format (for example `2026-06`). If set, `end_month` is also
7177
+ required. The range is inclusive. `start_month` must not be in the
7178
+ future. A full date such as `2026-06-01` is invalid.
7089
7179
  required: false
7090
7180
  schema:
7091
7181
  type: string
7092
- format: date
7182
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
7093
7183
  examples:
7094
7184
  range start:
7095
- summary: Start date
7096
- value: "2026-01-01"
7097
- - name: end_date
7185
+ summary: Start month
7186
+ value: "2026-01"
7187
+ - name: end_month
7098
7188
  in: query
7099
- 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`.
7189
+ description: >-
7190
+ Optional end of the requested history range as a calendar month in
7191
+ YYYY-MM format (for example `2026-06`). If set, `start_month` is also
7192
+ required. The range is inclusive. `end_month` may not be earlier than
7193
+ `start_month` and must not be in the future. A full date such as
7194
+ `2026-06-01` is invalid. For a single month, set this to the same
7195
+ value as `start_month`.
7100
7196
  required: false
7101
7197
  schema:
7102
7198
  type: string
7103
- format: date
7199
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
7104
7200
  examples:
7105
7201
  range end:
7106
- summary: End date
7107
- value: "2026-03-01"
7202
+ summary: End month
7203
+ value: "2026-03"
7108
7204
  responses:
7109
7205
  "200":
7110
- description: Historical balance entries for the requested date range
7206
+ description: Monthly balance history for the requested month range
7111
7207
  content:
7112
7208
  application/json:
7113
7209
  schema:
@@ -7120,14 +7216,16 @@ paths:
7120
7216
  type: manual
7121
7217
  manual_account_id: 119807
7122
7218
  balances:
7123
- - id: 101
7124
- date: "2026-01-01"
7219
+ - type: historical
7220
+ id: 101
7221
+ month: "2026-01"
7125
7222
  balance: "41000.0000"
7126
7223
  currency: usd
7127
7224
  to_base: 41000
7128
7225
  crypto_balance: null
7129
- - id: 102
7130
- date: "2026-02-01"
7226
+ - type: historical
7227
+ id: 102
7228
+ month: "2026-02"
7131
7229
  balance: "41211.8000"
7132
7230
  currency: usd
7133
7231
  to_base: 41211.8
@@ -7136,8 +7234,9 @@ paths:
7136
7234
  type: plaid
7137
7235
  plaid_account_id: 119808
7138
7236
  balances:
7139
- - id: 103
7140
- date: "2026-01-01"
7237
+ - type: historical
7238
+ id: 103
7239
+ month: "2026-01"
7141
7240
  balance: "5498.2800"
7142
7241
  currency: usd
7143
7242
  to_base: 5498.28
@@ -7147,8 +7246,9 @@ paths:
7147
7246
  crypto_manual_id: 22001
7148
7247
  symbol: btc
7149
7248
  balances:
7150
- - id: 104
7151
- date: "2026-01-01"
7249
+ - type: historical
7250
+ id: 104
7251
+ month: "2026-01"
7152
7252
  balance: "53124.7200"
7153
7253
  currency: usd
7154
7254
  to_base: 53124.72
@@ -7158,8 +7258,9 @@ paths:
7158
7258
  crypto_synced_id: 33004
7159
7259
  symbol: btc
7160
7260
  balances:
7161
- - id: 105
7162
- date: "2026-01-01"
7261
+ - type: historical
7262
+ id: 105
7263
+ month: "2026-01"
7163
7264
  balance: "6231.2800"
7164
7265
  currency: usd
7165
7266
  to_base: 6231.28
@@ -7175,12 +7276,34 @@ paths:
7175
7276
  mask: "1234"
7176
7277
  symbol: null
7177
7278
  balances:
7178
- - id: 106
7179
- date: "2026-01-01"
7279
+ - type: historical
7280
+ id: 106
7281
+ month: "2026-01"
7180
7282
  balance: "1250.0000"
7181
7283
  currency: usd
7182
7284
  to_base: 1250
7183
7285
  crypto_balance: null
7286
+ historical and current:
7287
+ summary: Historical month plus ephemeral current month
7288
+ value:
7289
+ balance_history:
7290
+ - source:
7291
+ type: manual
7292
+ manual_account_id: 162003
7293
+ balances:
7294
+ - type: historical
7295
+ id: 7437356
7296
+ month: "2026-06"
7297
+ balance: "62.8"
7298
+ currency: usd
7299
+ to_base: 62.8
7300
+ crypto_balance: null
7301
+ - type: current
7302
+ month: "2026-07"
7303
+ balance: "71.2"
7304
+ currency: usd
7305
+ to_base: 71.2
7306
+ crypto_balance: null
7184
7307
  manual account history:
7185
7308
  value:
7186
7309
  balance_history:
@@ -7188,14 +7311,16 @@ paths:
7188
7311
  type: manual
7189
7312
  manual_account_id: 119807
7190
7313
  balances:
7191
- - id: 201
7192
- date: "2026-01-01"
7314
+ - type: historical
7315
+ id: 201
7316
+ month: "2026-01"
7193
7317
  balance: "41000.0000"
7194
7318
  currency: usd
7195
7319
  to_base: 41000
7196
7320
  crypto_balance: null
7197
- - id: 202
7198
- date: "2026-02-01"
7321
+ - type: historical
7322
+ id: 202
7323
+ month: "2026-02"
7199
7324
  balance: "41211.8000"
7200
7325
  currency: usd
7201
7326
  to_base: 41211.8
@@ -7207,8 +7332,9 @@ paths:
7207
7332
  type: plaid
7208
7333
  plaid_account_id: 119808
7209
7334
  balances:
7210
- - id: 301
7211
- date: "2026-02-01"
7335
+ - type: historical
7336
+ id: 301
7337
+ month: "2026-02"
7212
7338
  balance: "5498.2800"
7213
7339
  currency: usd
7214
7340
  to_base: 5498.28
@@ -7221,8 +7347,9 @@ paths:
7221
7347
  crypto_synced_id: 33004
7222
7348
  symbol: btc
7223
7349
  balances:
7224
- - id: 401
7225
- date: "2026-02-01"
7350
+ - type: historical
7351
+ id: 401
7352
+ month: "2026-02"
7226
7353
  balance: "6231.2800"
7227
7354
  currency: usd
7228
7355
  to_base: 6231.28
@@ -7241,8 +7368,9 @@ paths:
7241
7368
  mask: "1234"
7242
7369
  symbol: null
7243
7370
  balances:
7244
- - id: 501
7245
- date: "2026-01-01"
7371
+ - type: historical
7372
+ id: 501
7373
+ month: "2026-01"
7246
7374
  balance: "1250.0000"
7247
7375
  currency: usd
7248
7376
  to_base: 1250
@@ -7254,26 +7382,31 @@ paths:
7254
7382
  schema:
7255
7383
  $ref: "#/components/schemas/errorResponseObject"
7256
7384
  examples:
7257
- missing paired date:
7385
+ missing paired month:
7258
7386
  value:
7259
7387
  message: Request Validation Failure
7260
7388
  errors:
7261
- - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
7389
+ - errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
7262
7390
  invalid range:
7263
7391
  value:
7264
7392
  message: Request Validation Failure
7265
7393
  errors:
7266
- - errMsg: "`start_date` must be before or equal to `end_date`."
7267
- not first of month:
7394
+ - errMsg: "`end_month` may not be earlier than `start_month`."
7395
+ invalid month format:
7396
+ value:
7397
+ message: Invalid Request Parameters
7398
+ errors:
7399
+ - errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
7400
+ future start month:
7268
7401
  value:
7269
7402
  message: Request Validation Failure
7270
7403
  errors:
7271
- - errMsg: "`start_date` and `end_date` must both be the first day of a month."
7272
- future start date:
7404
+ - errMsg: "`start_month` must not be in the future."
7405
+ future end month:
7273
7406
  value:
7274
7407
  message: Request Validation Failure
7275
7408
  errors:
7276
- - errMsg: "`start_date` must not be in the future."
7409
+ - errMsg: "`end_month` must not be in the future."
7277
7410
  "401":
7278
7411
  $ref: "#/components/responses/unauthorizedToken"
7279
7412
  "429":
@@ -7285,23 +7418,16 @@ paths:
7285
7418
  tags:
7286
7419
  - balance_history
7287
7420
  summary: Get balance history for an account
7288
- description: >-
7289
- Retrieve historical balance entries for one manual, Plaid, manual crypto,
7290
- or deleted account. Crypto synced accounts require an additional `symbol` path parameter.<br><br>
7291
-
7292
- The `account_type` path parameter identifies the type of account and the
7293
- `account_id` path parameter identifies the specific id for that account type.<br><br>
7294
-
7295
- When `start_date` and `end_date` are both provided, they must be first-of-month
7296
- dates. `start_date` must not be in the future, while `end_date` may be in the future.
7297
- If one of `start_date` or `end_date` is provided, the other is required. If neither is
7298
- provided, all available history for the source is returned.
7421
+ description: |-
7422
+ 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>
7423
+ 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>
7424
+ `start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
7299
7425
  operationId: getBalanceHistoryForAccount
7300
7426
  parameters:
7301
7427
  - name: account_type
7302
7428
  in: path
7303
7429
  required: true
7304
- description: Source family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7430
+ description: Account family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7305
7431
  schema:
7306
7432
  type: string
7307
7433
  enum: [manual, plaid, crypto_manual, deleted]
@@ -7312,23 +7438,27 @@ paths:
7312
7438
  schema:
7313
7439
  type: integer
7314
7440
  format: int32
7315
- - name: start_date
7441
+ - name: start_month
7316
7442
  in: query
7317
- 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.
7443
+ description: >-
7444
+ Optional. Same format and constraints as `start_month` on
7445
+ [GET /balance_history](#tag/balance-history/GET/balance_history).
7318
7446
  required: false
7319
7447
  schema:
7320
7448
  type: string
7321
- format: date
7322
- - name: end_date
7449
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
7450
+ - name: end_month
7323
7451
  in: query
7324
- 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.
7452
+ description: >-
7453
+ Optional. Same format and constraints as `end_month` on
7454
+ [GET /balance_history](#tag/balance-history/GET/balance_history).
7325
7455
  required: false
7326
7456
  schema:
7327
7457
  type: string
7328
- format: date
7458
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
7329
7459
  responses:
7330
7460
  "200":
7331
- description: Historical balance entries for the requested source
7461
+ description: Monthly balance history for the requested source
7332
7462
  content:
7333
7463
  application/json:
7334
7464
  schema:
@@ -7341,14 +7471,16 @@ paths:
7341
7471
  type: manual
7342
7472
  manual_account_id: 119807
7343
7473
  balances:
7344
- - id: 201
7345
- date: "2026-01-01"
7474
+ - type: historical
7475
+ id: 201
7476
+ month: "2026-01"
7346
7477
  balance: "41000.0000"
7347
7478
  currency: usd
7348
7479
  to_base: 41000
7349
7480
  crypto_balance: null
7350
- - id: 202
7351
- date: "2026-02-01"
7481
+ - type: historical
7482
+ id: 202
7483
+ month: "2026-02"
7352
7484
  balance: "41211.8000"
7353
7485
  currency: usd
7354
7486
  to_base: 41211.8
@@ -7367,8 +7499,9 @@ paths:
7367
7499
  mask: "1234"
7368
7500
  symbol: null
7369
7501
  balances:
7370
- - id: 501
7371
- date: "2026-01-01"
7502
+ - type: historical
7503
+ id: 501
7504
+ month: "2026-01"
7372
7505
  balance: "1250.0000"
7373
7506
  currency: usd
7374
7507
  to_base: 1250
@@ -7380,16 +7513,16 @@ paths:
7380
7513
  schema:
7381
7514
  $ref: "#/components/schemas/errorResponseObject"
7382
7515
  examples:
7383
- missing paired date:
7516
+ missing paired month:
7384
7517
  value:
7385
7518
  message: Request Validation Failure
7386
7519
  errors:
7387
- - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
7388
- invalid range:
7520
+ - errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
7521
+ invalid month format:
7389
7522
  value:
7390
- message: Request Validation Failure
7523
+ message: Invalid Request Parameters
7391
7524
  errors:
7392
- - errMsg: "`start_date` must be before or equal to `end_date`."
7525
+ - errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
7393
7526
  "401":
7394
7527
  $ref: "#/components/responses/unauthorizedToken"
7395
7528
  "404":
@@ -7417,37 +7550,20 @@ paths:
7417
7550
  tags:
7418
7551
  - balance_history
7419
7552
  summary: Upsert balance history for an account
7420
- description: >-
7421
- Upsert one or more historical balance entries for a single manual, Plaid,
7422
- manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.<br><br>
7423
-
7424
- The `account_type` path parameter identifies the type of account and the
7425
- `account_id` path parameter identifies the specific id for that account type.<br><br>
7426
-
7427
- Submit one or more entries in the `balances` array. Each entry must specify
7428
- a `date` and `balance` value.<br><br>
7429
-
7430
- Balance history is monthly. Each entry's `date` must be the first day of
7431
- a month and must be in a past month.<br><br>
7432
-
7433
- `currency` may be provided for any balance entry. If omitted, it defaults
7434
- to the account currency for manual/Plaid accounts, or the user's primary
7435
- currency for crypto/deleted accounts.<br><br>
7436
-
7437
- `symbol` may only be set when `account_type` is `crypto_manual` or
7438
- `crypto_synced`. It is optional for `crypto_manual` accounts and tolerated
7439
- for `deleted` accounts.<br><br>
7440
-
7441
- `crypto_balance` may be provided for `crypto_manual`, `crypto_synced`, and
7442
- `deleted` accounts, and is invalid for `manual` or `plaid` accounts.<br><br>
7443
-
7444
- The response contains only the balance entries that were submitted in this request.
7553
+ description: |-
7554
+ 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>
7555
+ 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>
7556
+ 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>
7557
+ `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>
7558
+ `symbol` may be set for `crypto_manual` (optional) and `deleted` (tolerated) accounts. Do not provide it for `manual` or `plaid` accounts.<br><br>
7559
+ `crypto_balance` may be provided for `crypto_manual` and `deleted` accounts. It is invalid for `manual` or `plaid` accounts.<br><br>
7560
+ The response contains only the `type: historical` balance entries that were submitted in this request.
7445
7561
  operationId: upsertBalanceHistoryForAccount
7446
7562
  parameters:
7447
7563
  - name: account_type
7448
7564
  in: path
7449
7565
  required: true
7450
- description: Source family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7566
+ description: Account family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7451
7567
  schema:
7452
7568
  type: string
7453
7569
  enum: [manual, plaid, crypto_manual, deleted]
@@ -7468,21 +7584,21 @@ paths:
7468
7584
  manual account bulk upsert:
7469
7585
  value:
7470
7586
  balances:
7471
- - date: "2026-03-01"
7587
+ - month: "2026-03"
7472
7588
  balance: "41500.0000"
7473
- - date: "2026-04-01"
7589
+ - month: "2026-04"
7474
7590
  balance: "41625.5000"
7475
7591
  crypto manual balance with symbol:
7476
7592
  value:
7477
7593
  balances:
7478
- - date: "2026-03-01"
7594
+ - month: "2026-03"
7479
7595
  balance: "56011.1200"
7480
7596
  symbol: btc
7481
7597
  crypto_balance: "0.852341920145782301"
7482
7598
  deleted account bulk upsert:
7483
7599
  value:
7484
7600
  balances:
7485
- - date: "2026-03-01"
7601
+ - month: "2026-03"
7486
7602
  symbol: btc
7487
7603
  crypto_balance: "0.020000000000000000"
7488
7604
  currency: usd
@@ -7491,55 +7607,59 @@ paths:
7491
7607
  value:
7492
7608
  balances:
7493
7609
  - id: 601
7494
- date: "2026-03-01"
7610
+ month: "2026-03"
7495
7611
  balance: "41500.0000"
7496
7612
  currency: usd
7497
7613
  to_base: 41500
7498
7614
  crypto_balance: null
7499
7615
  responses:
7500
7616
  "200":
7501
- description: Returns the modified balance entries only. Other historical
7502
- entries for the account are omitted from `balances`.
7617
+ description: >-
7618
+ Returns only the `type: historical` entries modified by this request.
7619
+ Other historical entries for the account are omitted from `balances`.
7503
7620
  content:
7504
7621
  application/json:
7505
7622
  schema:
7506
7623
  $ref: "#/components/schemas/balanceHistoryAccountObject"
7507
7624
  examples:
7508
7625
  manual account bulk upsert:
7509
- summary: Two upserted rows returned (not full account history)
7626
+ summary: Two upserted entries returned (not full account history)
7510
7627
  value:
7511
7628
  source:
7512
7629
  type: manual
7513
7630
  manual_account_id: 119807
7514
7631
  balances:
7515
- - id: 601
7516
- date: "2026-03-01"
7632
+ - type: historical
7633
+ id: 601
7634
+ month: "2026-03"
7517
7635
  balance: "41500.0000"
7518
7636
  currency: usd
7519
7637
  to_base: 41500
7520
7638
  crypto_balance: null
7521
- - id: 602
7522
- date: "2026-04-01"
7639
+ - type: historical
7640
+ id: 602
7641
+ month: "2026-04"
7523
7642
  balance: "41625.5000"
7524
7643
  currency: usd
7525
7644
  to_base: 41625.5
7526
7645
  crypto_balance: null
7527
7646
  crypto manual balance with symbol:
7528
- summary: Single upserted row returned
7647
+ summary: Single upserted entry returned
7529
7648
  value:
7530
7649
  source:
7531
7650
  type: crypto_manual
7532
7651
  crypto_manual_id: 22001
7533
7652
  symbol: btc
7534
7653
  balances:
7535
- - id: 603
7536
- date: "2026-03-01"
7654
+ - type: historical
7655
+ id: 603
7656
+ month: "2026-03"
7537
7657
  balance: "56011.1200"
7538
7658
  currency: usd
7539
7659
  to_base: 56011.12
7540
7660
  crypto_balance: "0.852341920145782301"
7541
7661
  deleted account bulk upsert:
7542
- summary: Single upserted row returned
7662
+ summary: Single upserted entry returned
7543
7663
  value:
7544
7664
  source:
7545
7665
  type: deleted
@@ -7552,15 +7672,17 @@ paths:
7552
7672
  mask: "1234"
7553
7673
  symbol: btc
7554
7674
  balances:
7555
- - id: 504
7556
- date: "2026-03-01"
7675
+ - type: historical
7676
+ id: 504
7677
+ month: "2026-03"
7557
7678
  balance: "1255"
7558
7679
  currency: usd
7559
7680
  to_base: 1255
7560
7681
  crypto_balance: "0.020000000000000000"
7561
7682
  "400":
7562
- description: Bad Request. The entire request is rejected if any row in
7563
- `balances` fails validation; no rows are updated.
7683
+ description: >-
7684
+ Bad Request. If any entry in `balances` fails validation, the entire
7685
+ request is rejected and no entries are updated.
7564
7686
  content:
7565
7687
  application/json:
7566
7688
  schema:
@@ -7581,30 +7703,34 @@ paths:
7581
7703
  message: Invalid Request Body
7582
7704
  errors:
7583
7705
  - errMsg: "Invalid property 'foo' in request body."
7584
- invalid date:
7706
+ invalid month format:
7707
+ value:
7708
+ message: Invalid Request Body
7709
+ errors:
7710
+ - errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
7711
+ current month:
7585
7712
  value:
7586
7713
  message: Request Validation Failure
7587
7714
  errors:
7588
- - errMsg: "`date` must be the first day of a month."
7715
+ - errMsg: "`month` must not be the current month."
7589
7716
  request_balances_index: 0
7590
- code: VALIDATION_ERROR
7591
- future date:
7717
+ future month:
7592
7718
  value:
7593
7719
  message: Request Validation Failure
7594
7720
  errors:
7595
- - errMsg: "`date` must be in a past month."
7721
+ - errMsg: "`month` must not be in the future."
7596
7722
  request_balances_index: 1
7597
7723
  crypto balance not allowed:
7598
7724
  value:
7599
7725
  message: Request Validation Failure
7600
7726
  errors:
7601
- - errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual`, `crypto_synced`, or `deleted`."
7727
+ - errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual` or `deleted`."
7602
7728
  request_balances_index: 0
7603
- invalid row in bulk request:
7729
+ invalid entry in bulk request:
7604
7730
  value:
7605
7731
  message: Request Validation Failure
7606
7732
  errors:
7607
- - errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `crypto_synced`."
7733
+ - errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `deleted`."
7608
7734
  request_balances_index: 1
7609
7735
  "401":
7610
7736
  $ref: "#/components/responses/unauthorizedToken"
@@ -7626,15 +7752,14 @@ paths:
7626
7752
  tags:
7627
7753
  - balance_history
7628
7754
  summary: Delete all balance history for an account
7629
- description: >-
7630
- Delete all historical balance entries for a single manual, Plaid,
7631
- manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.
7755
+ description: |-
7756
+ 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}).
7632
7757
  operationId: deleteBalanceHistoryForAccount
7633
7758
  parameters:
7634
7759
  - name: account_type
7635
7760
  in: path
7636
7761
  required: true
7637
- description: Source family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7762
+ description: Account family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
7638
7763
  schema:
7639
7764
  type: string
7640
7765
  enum: [manual, plaid, crypto_manual, deleted]
@@ -7671,16 +7796,10 @@ paths:
7671
7796
  tags:
7672
7797
  - balance_history
7673
7798
  summary: Get balance history for a synced crypto symbol
7674
- description: >-
7675
- Retrieve historical balance entries for a single synced crypto symbol stream.<br><br>
7676
-
7677
- Use the `crypto_synced` account id together with a `symbol` path parameter
7678
- to select one balance stream within that synced crypto account.<br><br>
7679
-
7680
- When `start_date` and `end_date` are both provided, they must be first-of-month
7681
- dates. `start_date` must not be in the future, while `end_date` may be in the future.
7682
- If one of `start_date` or `end_date` is provided, the other is required. If neither is
7683
- provided, all available history for the symbol stream is returned.
7799
+ description: |-
7800
+ Retrieve monthly balance history for a single synced crypto symbol stream.<br><br>
7801
+ The path selects one balance stream with a synced crypto account id and `symbol`.<br><br>
7802
+ `start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
7684
7803
  operationId: getBalanceHistoryForCryptoSynced
7685
7804
  parameters:
7686
7805
  - name: account_id
@@ -7698,23 +7817,27 @@ paths:
7698
7817
  type: string
7699
7818
  minLength: 1
7700
7819
  maxLength: 25
7701
- - name: start_date
7820
+ - name: start_month
7702
7821
  in: query
7703
- 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.
7822
+ description: >-
7823
+ Optional. Same format and constraints as `start_month` on
7824
+ [GET /balance_history](#tag/balance-history/GET/balance_history).
7704
7825
  required: false
7705
7826
  schema:
7706
7827
  type: string
7707
- format: date
7708
- - name: end_date
7828
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
7829
+ - name: end_month
7709
7830
  in: query
7710
- 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.
7831
+ description: >-
7832
+ Optional. Same format and constraints as `end_month` on
7833
+ [GET /balance_history](#tag/balance-history/GET/balance_history).
7711
7834
  required: false
7712
7835
  schema:
7713
7836
  type: string
7714
- format: date
7837
+ pattern: '^\d{4}-(0[1-9]|1[0-2])$'
7715
7838
  responses:
7716
7839
  "200":
7717
- description: Historical balance entries for the synced crypto symbol stream
7840
+ description: Monthly balance history for the synced crypto symbol stream
7718
7841
  content:
7719
7842
  application/json:
7720
7843
  schema:
@@ -7726,8 +7849,9 @@ paths:
7726
7849
  crypto_synced_id: 33004
7727
7850
  symbol: btc
7728
7851
  balances:
7729
- - id: 401
7730
- date: "2026-02-01"
7852
+ - type: historical
7853
+ id: 401
7854
+ month: "2026-02"
7731
7855
  balance: "6231.2800"
7732
7856
  currency: usd
7733
7857
  to_base: 6231.28
@@ -7739,16 +7863,16 @@ paths:
7739
7863
  schema:
7740
7864
  $ref: "#/components/schemas/errorResponseObject"
7741
7865
  examples:
7742
- missing paired date:
7866
+ missing paired month:
7743
7867
  value:
7744
7868
  message: Request Validation Failure
7745
7869
  errors:
7746
- - errMsg: "`start_date` and `end_date` must either both be provided or both be omitted."
7747
- invalid range:
7870
+ - errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
7871
+ invalid month format:
7748
7872
  value:
7749
- message: Request Validation Failure
7873
+ message: Invalid Request Parameters
7750
7874
  errors:
7751
- - errMsg: "`start_date` must be before or equal to `end_date`."
7875
+ - errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
7752
7876
  "401":
7753
7877
  $ref: "#/components/responses/unauthorizedToken"
7754
7878
  "404":
@@ -7776,28 +7900,14 @@ paths:
7776
7900
  tags:
7777
7901
  - balance_history
7778
7902
  summary: Upsert balance history for a synced crypto symbol
7779
- description: >-
7780
- Upsert one or more historical balance entries for a single synced crypto
7781
- symbol stream.<br><br>
7782
-
7903
+ description: |-
7904
+ Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
7783
7905
  The path identifies both the synced crypto account and the symbol being updated.<br><br>
7784
-
7785
- Submit one or more entries in the `balances` array. Each entry must specify
7786
- a `date` and `balance` value.<br><br>
7787
-
7788
- Balance history is monthly. Each entry's `date` must be the first day of
7789
- a month and must be in a past month.<br><br>
7790
-
7791
- The request body may include an optional `symbol` on each balance entry. If
7792
- provided, it must match the `symbol` path parameter. Omit `symbol` to use
7793
- the path value.<br><br>
7794
-
7795
- `currency` may be provided for any balance entry. If omitted, it defaults
7796
- to the user's primary currency for synced crypto balances.<br><br>
7797
-
7906
+ 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>
7907
+ 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>
7908
+ `currency` may be provided for any balance entry. If omitted, it defaults to the user's primary currency for synced crypto balances.<br><br>
7798
7909
  `crypto_balance` may be provided for synced crypto balances.<br><br>
7799
-
7800
- The response contains only the balance entries that were submitted in this request.
7910
+ The response contains only the `type: historical` balance entries that were submitted in this request.
7801
7911
  operationId: upsertBalanceHistoryForCryptoSynced
7802
7912
  parameters:
7803
7913
  - name: account_id
@@ -7825,44 +7935,49 @@ paths:
7825
7935
  synced crypto bulk upsert:
7826
7936
  value:
7827
7937
  balances:
7828
- - date: "2026-03-01"
7938
+ - month: "2026-03"
7829
7939
  balance: "6400.0000"
7830
7940
  crypto_balance: "0.100020003000400050"
7831
- - date: "2026-04-01"
7941
+ - month: "2026-04"
7832
7942
  balance: "6500.0000"
7833
7943
  crypto_balance: "0.100020003000400050"
7834
7944
  responses:
7835
7945
  "200":
7836
- description: Returns the modified balance entries only. Other historical
7837
- entries for the symbol stream are omitted from `balances`.
7946
+ description: >-
7947
+ Returns only the `type: historical` entries modified by this request.
7948
+ Other historical entries for the symbol stream are omitted from
7949
+ `balances`.
7838
7950
  content:
7839
7951
  application/json:
7840
7952
  schema:
7841
7953
  $ref: "#/components/schemas/balanceHistoryAccountObject"
7842
7954
  examples:
7843
7955
  synced crypto bulk upsert:
7844
- summary: Two upserted rows returned (not full symbol history)
7956
+ summary: Two upserted entries returned (not full symbol history)
7845
7957
  value:
7846
7958
  source:
7847
7959
  type: crypto_synced
7848
7960
  crypto_synced_id: 33004
7849
7961
  symbol: btc
7850
7962
  balances:
7851
- - id: 604
7852
- date: "2026-03-01"
7963
+ - type: historical
7964
+ id: 604
7965
+ month: "2026-03"
7853
7966
  balance: "6400.0000"
7854
7967
  currency: usd
7855
7968
  to_base: 6400
7856
7969
  crypto_balance: "0.100020003000400050"
7857
- - id: 605
7858
- date: "2026-04-01"
7970
+ - type: historical
7971
+ id: 605
7972
+ month: "2026-04"
7859
7973
  balance: "6500.0000"
7860
7974
  currency: usd
7861
7975
  to_base: 6500
7862
7976
  crypto_balance: "0.100020003000400050"
7863
7977
  "400":
7864
- description: Bad Request. The entire request is rejected if any row in
7865
- `balances` fails validation; no rows are updated.
7978
+ description: >-
7979
+ Bad Request. If any entry in `balances` fails validation, the entire
7980
+ request is rejected and no entries are updated.
7866
7981
  content:
7867
7982
  application/json:
7868
7983
  schema:
@@ -7878,17 +7993,22 @@ paths:
7878
7993
  message: Invalid Request Body
7879
7994
  errors:
7880
7995
  - errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
7881
- invalid date:
7996
+ invalid month format:
7997
+ value:
7998
+ message: Invalid Request Body
7999
+ errors:
8000
+ - errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
8001
+ current month:
7882
8002
  value:
7883
8003
  message: Request Validation Failure
7884
8004
  errors:
7885
- - errMsg: "`date` must be the first day of a month."
8005
+ - errMsg: "`month` must not be the current month."
7886
8006
  request_balances_index: 0
7887
- future date:
8007
+ future month:
7888
8008
  value:
7889
8009
  message: Request Validation Failure
7890
8010
  errors:
7891
- - errMsg: "`date` must be in a past month."
8011
+ - errMsg: "`month` must not be in the future."
7892
8012
  request_balances_index: 1
7893
8013
  symbol mismatch:
7894
8014
  value:
@@ -7896,9 +8016,9 @@ paths:
7896
8016
  errors:
7897
8017
  - errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
7898
8018
  request_balances_index: 0
7899
- invalid row in bulk request:
8019
+ invalid entry in bulk request:
7900
8020
  value:
7901
- message: Request Validation Failure
8021
+ message: Invalid Request Body
7902
8022
  errors:
7903
8023
  - errMsg: "`balance` must be a valid numeric string or number."
7904
8024
  request_balances_index: 1
@@ -7929,11 +8049,9 @@ paths:
7929
8049
  tags:
7930
8050
  - balance_history
7931
8051
  summary: Delete all balance history for a synced crypto symbol
7932
- description: >-
8052
+ description: |-
7933
8053
  Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
7934
-
7935
- The path identifies both the synced crypto account and the symbol whose
7936
- history should be deleted.
8054
+ The path identifies both the synced crypto account and the symbol whose history should be deleted.
7937
8055
  operationId: deleteBalanceHistoryForCryptoSynced
7938
8056
  parameters:
7939
8057
  - name: account_id
@@ -7975,14 +8093,14 @@ paths:
7975
8093
  tags:
7976
8094
  - balance_history
7977
8095
  summary: Delete a balance history entry
7978
- description: >-
7979
- Delete a single monthly balance history entry by its id.
8096
+ description: |-
8097
+ Delete a single stored (`type: historical`) monthly balance history entry by its id. Ephemeral `current` entries cannot be deleted this way.
7980
8098
  operationId: deleteBalanceHistoryEntry
7981
8099
  parameters:
7982
8100
  - name: id
7983
8101
  in: path
7984
8102
  required: true
7985
- description: Balance history row identifier to delete.
8103
+ description: Historical balance entry identifier to delete.
7986
8104
  schema:
7987
8105
  type: integer
7988
8106
  format: int32
@@ -7996,7 +8114,7 @@ paths:
7996
8114
  schema:
7997
8115
  $ref: "#/components/schemas/errorResponseObject"
7998
8116
  example:
7999
- message: Request Validation Failure
8117
+ message: Invalid Path Parameters
8000
8118
  errors:
8001
8119
  - errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
8002
8120
  "401":
@@ -8020,12 +8138,9 @@ paths:
8020
8138
  tags:
8021
8139
  - balance_history
8022
8140
  summary: Update details for a deleted account
8023
- description: >-
8141
+ description: |-
8024
8142
  Update archived metadata for a deleted balance history source.<br><br>
8025
-
8026
- Pass the `deleted` source id returned on `source.deleted_account_id`.
8027
- This endpoint updates the stored deleted-source metadata used for all
8028
- historical entries associated with that deleted source.
8143
+ Pass the `deleted_account_id` from a `source.type: deleted` entry. The update applies to all historical entries associated with that deleted source.
8029
8144
  operationId: updateBalanceHistoryDetails
8030
8145
  parameters:
8031
8146
  - name: account_id
@@ -11335,9 +11450,8 @@ paths:
11335
11450
  - transactions (files)
11336
11451
  summary: Attach a file to a transaction
11337
11452
  operationId: attachFileToTransaction
11338
- description: >-
11339
- Attaches a file to a transaction. The file must be less than 10MB in size.<br><br>
11340
- The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
11453
+ description: |-
11454
+ 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.
11341
11455
  parameters:
11342
11456
  - name: transaction_id
11343
11457
  in: path
@@ -11420,8 +11534,8 @@ paths:
11420
11534
  /transactions/attachments/{file_id}:
11421
11535
  get:
11422
11536
  summary: Get a url to download a file attachment
11423
- description: Returns a signed url that can be used to download the file
11424
- attachment.
11537
+ description: |-
11538
+ Returns a signed url that can be used to download the file attachment.
11425
11539
  operationId: getTransactionAttachmentUrl
11426
11540
  tags:
11427
11541
  - transactions (files)
@@ -12316,4 +12430,3 @@ paths:
12316
12430
 
12317
12431
  security:
12318
12432
  - bearerSecurity: []
12319
- - cookieAuth: []