@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.
- package/docs/beta-introduction.md +9 -0
- package/package.json +1 -1
- package/v2/docs/AGENTS.md +48 -0
- package/v2/docs/version-history.md +20 -19
- package/v2/spec/AGENTS.md +75 -0
- package/v2/spec/lunch-money-api-v2.yaml +460 -347
|
@@ -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
|
-
|
|
7
|
+
Welcome to the Lunch Money v2 API reference. This is the **v2.11.1** spec.
|
|
10
8
|
|
|
11
|
-
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
|
-
|
|
11
|
+
|
|
12
|
+
**Try it from these docs**
|
|
14
13
|
|
|
15
|
-
|
|
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:
|
|
43
|
-
|
|
44
|
-
|
|
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:
|
|
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:
|
|
996
|
-
|
|
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:
|
|
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
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
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
|
-
|
|
1275
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
1808
|
+
description: Monthly balance entries grouped under a single account source.
|
|
1789
1809
|
properties:
|
|
1790
1810
|
source:
|
|
1791
1811
|
description: >
|
|
1792
|
-
Identifies the account
|
|
1793
|
-
`source.type`.
|
|
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
|
|
1812
|
-
|
|
1813
|
-
|
|
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/
|
|
1839
|
+
$ref: "#/components/schemas/balanceHistoryEntry"
|
|
1816
1840
|
required:
|
|
1817
1841
|
- source
|
|
1818
1842
|
- balances
|
|
1819
1843
|
|
|
1820
|
-
|
|
1844
|
+
historicalBalanceHistoryEntry:
|
|
1821
1845
|
type: object
|
|
1822
|
-
title: balance history entry
|
|
1846
|
+
title: historical balance history entry
|
|
1823
1847
|
additionalProperties: false
|
|
1824
1848
|
x-internal: true
|
|
1825
|
-
description:
|
|
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
|
|
1831
|
-
|
|
1861
|
+
description: Unique identifier for this historical balance entry.
|
|
1862
|
+
month:
|
|
1832
1863
|
type: string
|
|
1833
|
-
|
|
1834
|
-
description:
|
|
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
|
|
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
|
|
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
|
|
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
|
-
-
|
|
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
|
-
|
|
1980
|
+
month:
|
|
1883
1981
|
type: string
|
|
1884
|
-
|
|
1885
|
-
description:
|
|
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
|
|
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:
|
|
1899
|
-
|
|
1900
|
-
|
|
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
|
|
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
|
-
-
|
|
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:
|
|
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
|
-
|
|
3302
|
-
|
|
3303
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4822
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
7068
|
-
|
|
7069
|
-
|
|
7070
|
-
|
|
7071
|
-
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
`
|
|
7077
|
-
|
|
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
|
+
- `manual`: `source.manual_account_id` with [GET /manual_accounts/{id}](#tag/manual-accounts/GET/manual_accounts/{id})<br>
|
|
7167
|
+
- `plaid`: `source.plaid_account_id` with [GET /plaid_accounts/{id}](#tag/plaid-accounts/GET/plaid_accounts/{id})<br>
|
|
7168
|
+
- `crypto_manual`: `source.crypto_manual_id` with [GET /crypto/manual/{id}](#tag/crypto-manual/GET/crypto/manual/{id})<br>
|
|
7169
|
+
- `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:
|
|
7172
|
+
- name: start_month
|
|
7087
7173
|
in: query
|
|
7088
|
-
description:
|
|
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
|
-
|
|
7182
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7093
7183
|
examples:
|
|
7094
7184
|
range start:
|
|
7095
|
-
summary: Start
|
|
7096
|
-
value: "2026-01
|
|
7097
|
-
- name:
|
|
7185
|
+
summary: Start month
|
|
7186
|
+
value: "2026-01"
|
|
7187
|
+
- name: end_month
|
|
7098
7188
|
in: query
|
|
7099
|
-
description:
|
|
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
|
-
|
|
7199
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7104
7200
|
examples:
|
|
7105
7201
|
range end:
|
|
7106
|
-
summary: End
|
|
7107
|
-
value: "2026-03
|
|
7202
|
+
summary: End month
|
|
7203
|
+
value: "2026-03"
|
|
7108
7204
|
responses:
|
|
7109
7205
|
"200":
|
|
7110
|
-
description:
|
|
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
|
-
-
|
|
7124
|
-
|
|
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
|
-
-
|
|
7130
|
-
|
|
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
|
-
-
|
|
7140
|
-
|
|
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
|
-
-
|
|
7151
|
-
|
|
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
|
-
-
|
|
7162
|
-
|
|
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
|
-
-
|
|
7179
|
-
|
|
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
|
-
-
|
|
7192
|
-
|
|
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
|
-
-
|
|
7198
|
-
|
|
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
|
-
-
|
|
7211
|
-
|
|
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
|
-
-
|
|
7225
|
-
|
|
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
|
-
-
|
|
7245
|
-
|
|
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
|
|
7385
|
+
missing paired month:
|
|
7258
7386
|
value:
|
|
7259
7387
|
message: Request Validation Failure
|
|
7260
7388
|
errors:
|
|
7261
|
-
- errMsg: "`
|
|
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: "`
|
|
7267
|
-
|
|
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: "`
|
|
7272
|
-
future
|
|
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: "`
|
|
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
|
|
7290
|
-
|
|
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:
|
|
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:
|
|
7441
|
+
- name: start_month
|
|
7316
7442
|
in: query
|
|
7317
|
-
description:
|
|
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
|
-
|
|
7322
|
-
- name:
|
|
7449
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7450
|
+
- name: end_month
|
|
7323
7451
|
in: query
|
|
7324
|
-
description:
|
|
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
|
-
|
|
7458
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7329
7459
|
responses:
|
|
7330
7460
|
"200":
|
|
7331
|
-
description:
|
|
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
|
-
-
|
|
7345
|
-
|
|
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
|
-
-
|
|
7351
|
-
|
|
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
|
-
-
|
|
7371
|
-
|
|
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
|
|
7516
|
+
missing paired month:
|
|
7384
7517
|
value:
|
|
7385
7518
|
message: Request Validation Failure
|
|
7386
7519
|
errors:
|
|
7387
|
-
- errMsg: "`
|
|
7388
|
-
invalid
|
|
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
|
|
7523
|
+
message: Invalid Request Parameters
|
|
7391
7524
|
errors:
|
|
7392
|
-
- errMsg: "
|
|
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
|
-
|
|
7423
|
-
|
|
7424
|
-
|
|
7425
|
-
`
|
|
7426
|
-
|
|
7427
|
-
|
|
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:
|
|
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
|
-
-
|
|
7587
|
+
- month: "2026-03"
|
|
7472
7588
|
balance: "41500.0000"
|
|
7473
|
-
-
|
|
7589
|
+
- month: "2026-04"
|
|
7474
7590
|
balance: "41625.5000"
|
|
7475
7591
|
crypto manual balance with symbol:
|
|
7476
7592
|
value:
|
|
7477
7593
|
balances:
|
|
7478
|
-
-
|
|
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
|
-
-
|
|
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
|
-
|
|
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:
|
|
7502
|
-
|
|
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
|
|
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
|
-
-
|
|
7516
|
-
|
|
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
|
-
-
|
|
7522
|
-
|
|
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
|
|
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
|
-
-
|
|
7536
|
-
|
|
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
|
|
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
|
-
-
|
|
7556
|
-
|
|
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:
|
|
7563
|
-
`balances` fails validation
|
|
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
|
|
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: "`
|
|
7715
|
+
- errMsg: "`month` must not be the current month."
|
|
7589
7716
|
request_balances_index: 0
|
|
7590
|
-
|
|
7591
|
-
future date:
|
|
7717
|
+
future month:
|
|
7592
7718
|
value:
|
|
7593
7719
|
message: Request Validation Failure
|
|
7594
7720
|
errors:
|
|
7595
|
-
- errMsg: "`
|
|
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
|
|
7727
|
+
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7602
7728
|
request_balances_index: 0
|
|
7603
|
-
invalid
|
|
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 `
|
|
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:
|
|
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
|
|
7676
|
-
|
|
7677
|
-
|
|
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:
|
|
7820
|
+
- name: start_month
|
|
7702
7821
|
in: query
|
|
7703
|
-
description:
|
|
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
|
-
|
|
7708
|
-
- name:
|
|
7828
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7829
|
+
- name: end_month
|
|
7709
7830
|
in: query
|
|
7710
|
-
description:
|
|
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
|
-
|
|
7837
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7715
7838
|
responses:
|
|
7716
7839
|
"200":
|
|
7717
|
-
description:
|
|
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
|
-
-
|
|
7730
|
-
|
|
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
|
|
7866
|
+
missing paired month:
|
|
7743
7867
|
value:
|
|
7744
7868
|
message: Request Validation Failure
|
|
7745
7869
|
errors:
|
|
7746
|
-
- errMsg: "`
|
|
7747
|
-
invalid
|
|
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
|
|
7873
|
+
message: Invalid Request Parameters
|
|
7750
7874
|
errors:
|
|
7751
|
-
- errMsg: "
|
|
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
|
-
|
|
7786
|
-
|
|
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
|
-
-
|
|
7938
|
+
- month: "2026-03"
|
|
7829
7939
|
balance: "6400.0000"
|
|
7830
7940
|
crypto_balance: "0.100020003000400050"
|
|
7831
|
-
-
|
|
7941
|
+
- month: "2026-04"
|
|
7832
7942
|
balance: "6500.0000"
|
|
7833
7943
|
crypto_balance: "0.100020003000400050"
|
|
7834
7944
|
responses:
|
|
7835
7945
|
"200":
|
|
7836
|
-
description:
|
|
7837
|
-
|
|
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
|
|
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
|
-
-
|
|
7852
|
-
|
|
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
|
-
-
|
|
7858
|
-
|
|
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:
|
|
7865
|
-
`balances` fails validation
|
|
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
|
|
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: "`
|
|
8005
|
+
- errMsg: "`month` must not be the current month."
|
|
7886
8006
|
request_balances_index: 0
|
|
7887
|
-
future
|
|
8007
|
+
future month:
|
|
7888
8008
|
value:
|
|
7889
8009
|
message: Request Validation Failure
|
|
7890
8010
|
errors:
|
|
7891
|
-
- errMsg: "`
|
|
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
|
|
8019
|
+
invalid entry in bulk request:
|
|
7900
8020
|
value:
|
|
7901
|
-
message: Request
|
|
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:
|
|
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:
|
|
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:
|
|
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: []
|