@lunch-money/v2-api-spec 2.11.1-preview.1 → 2.11.1-preview.11
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/README.md +21 -66
- package/lunch-money-api-v2.yaml +760 -405
- package/oauth-client-logo/index.d.ts +27 -0
- package/oauth-client-logo/index.js +32 -0
- package/oauth-scopes/catalog.d.ts +9 -0
- package/oauth-scopes/catalog.js +500 -0
- package/oauth-scopes/index.d.ts +2 -0
- package/oauth-scopes/index.js +12 -0
- package/oauth-scopes/types.d.ts +50 -0
- package/oauth-scopes/types.js +2 -0
- package/package.json +34 -9
- package/version-history.md +25 -19
- package/update-urls.sh +0 -135
package/lunch-money-api-v2.yaml
CHANGED
|
@@ -2,37 +2,40 @@ 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. It includes previews of the proposed `/crypto` and `/balance_history` endpoints. Only the mock service works with these endpoints.<br><br>
|
|
6
|
-
The most recent stable version of the API is v2.9.4 and is available at:
|
|
7
|
-
`https://api.lunchmoney.dev/v2`
|
|
8
|
-
|
|
9
|
-
------------------------------------------------------------------------------------------------
|
|
10
|
-
|
|
11
5
|
### Introduction
|
|
12
6
|
|
|
7
|
+
Welcome to the Lunch Money v2 API reference. This is the **v2.11.1** spec.
|
|
8
|
+
|
|
13
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).
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
|
|
12
|
+
**Try it from these docs**
|
|
16
13
|
|
|
17
|
-
**
|
|
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**
|
|
18
20
|
|
|
19
|
-
Explore
|
|
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
|
+
|
|
20
24
|
|
|
21
25
|
**Client Libraries & SDKs**
|
|
22
26
|
|
|
23
|
-
An official TypeScript SDK is available on [NPM](https://www.npmjs.com/package/@lunch-money/v2-api-spec) and [GitHub](https://github.com/lunch-money/lunch-money-js-v2). For Python or other languages, see [lunchmoney-clients](https://github.com/juftin/lunchmoney-clients) or generate a client from this OpenAPI spec.
|
|
27
|
+
An official TypeScript SDK is available on [NPM](https://www.npmjs.com/package/@lunch-money/v2-api-spec) and [GitHub](https://github.com/lunch-money/lunch-money-js-v2). For Python or other languages, see [lunchmoney-clients](https://github.com/juftin/lunchmoney-clients) or generate a client from [this OpenAPI spec](/v2/openapi).
|
|
24
28
|
|
|
25
29
|
**Migrating from v1**
|
|
26
30
|
|
|
27
|
-
The v2 API is not backwards compatible with v1. See the [Migration Guide](https://
|
|
31
|
+
The v2 API is not backwards compatible with v1. See the [Migration Guide](https://lunchmoney.dev/v2/migration-guide) for details.
|
|
28
32
|
|
|
29
33
|
**Useful links**
|
|
30
|
-
- [
|
|
31
|
-
- [
|
|
32
|
-
- [
|
|
33
|
-
- [
|
|
34
|
-
- [
|
|
35
|
-
- [Rate Limits](https://alpha.lunchmoney.dev/v2/rate-limits)
|
|
34
|
+
- [Getting Started Guide](https://lunchmoney.dev/v2/getting-started)
|
|
35
|
+
- [v2 API Overview](https://lunchmoney.dev/v2/overview)
|
|
36
|
+
- [Version History](https://lunchmoney.dev/v2/version-history)
|
|
37
|
+
- [Migration Guide](https://lunchmoney.dev/v2/migration-guide)
|
|
38
|
+
- [Rate Limits](https://lunchmoney.dev/v2/rate-limits)
|
|
36
39
|
termsOfService: https://lunchmoney.dev/#current-status
|
|
37
40
|
contact:
|
|
38
41
|
email: devsupport@lunchmoney.app
|
|
@@ -43,17 +46,18 @@ info:
|
|
|
43
46
|
|
|
44
47
|
servers:
|
|
45
48
|
- url: https://api.lunchmoney.dev/v2
|
|
46
|
-
description:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
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
|
|
50
52
|
|
|
51
53
|
tags:
|
|
52
54
|
- name: me
|
|
53
55
|
description: View details and settings for the current user and account.<p>
|
|
54
|
-
Use [/me/
|
|
55
|
-
[/me/
|
|
56
|
-
|
|
56
|
+
Use [/me/user/settings](#tag/me/GET/me/user/settings) for user-wide
|
|
57
|
+
preferences, [/me/account/settings](#tag/me/GET/me/account/settings) for
|
|
58
|
+
account-wide preferences, and
|
|
59
|
+
[/me/user/account/settings](#tag/me/GET/me/user/account/settings) for
|
|
60
|
+
preferences specific to the current user and budgeting account.
|
|
57
61
|
- name: categories
|
|
58
62
|
description: Work with categories
|
|
59
63
|
externalDocs:
|
|
@@ -80,7 +84,11 @@ tags:
|
|
|
80
84
|
description: Learn more about crypto assets
|
|
81
85
|
url: https://support.lunchmoney.app/setup/crypto
|
|
82
86
|
- name: balance_history
|
|
83
|
-
description:
|
|
87
|
+
description: >-
|
|
88
|
+
View and update monthly account balances used by the
|
|
89
|
+
[Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app.
|
|
90
|
+
History is monthly. The current month may be calculated on demand when
|
|
91
|
+
requested.
|
|
84
92
|
- name: recurring_items
|
|
85
93
|
description: Work with recurring items
|
|
86
94
|
externalDocs:
|
|
@@ -994,16 +1002,19 @@ components:
|
|
|
994
1002
|
example: Cold Wallet BTC
|
|
995
1003
|
display_name:
|
|
996
1004
|
type: string
|
|
1005
|
+
nullable: true
|
|
997
1006
|
minLength: 1
|
|
998
1007
|
maxLength: 45
|
|
999
|
-
description:
|
|
1000
|
-
|
|
1008
|
+
description: Display name for the manual crypto asset. If omitted or
|
|
1009
|
+
`null`, clients may derive one from `institution_name` + `name`.
|
|
1001
1010
|
example: Cold Storage
|
|
1002
1011
|
institution_name:
|
|
1003
1012
|
type: string
|
|
1013
|
+
nullable: true
|
|
1004
1014
|
minLength: 1
|
|
1005
1015
|
maxLength: 50
|
|
1006
|
-
description:
|
|
1016
|
+
description: Institution or wallet provider display name. If omitted
|
|
1017
|
+
or `null`, no institution name is set.
|
|
1007
1018
|
example: Ledger
|
|
1008
1019
|
balance:
|
|
1009
1020
|
oneOf:
|
|
@@ -1259,15 +1270,19 @@ components:
|
|
|
1259
1270
|
example: My Savings Account
|
|
1260
1271
|
institution_name:
|
|
1261
1272
|
type: string
|
|
1273
|
+
nullable: true
|
|
1262
1274
|
example: Bank of the West
|
|
1263
|
-
description: Name of institution holding the manual account
|
|
1275
|
+
description: Name of the institution holding the manual account. If
|
|
1276
|
+
omitted or `null`, no institution name is set.
|
|
1264
1277
|
minLength: 1
|
|
1265
1278
|
maxLength: 50
|
|
1266
1279
|
display_name:
|
|
1267
1280
|
type: string
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1281
|
+
nullable: true
|
|
1282
|
+
description: Display name of the manual account. If omitted or
|
|
1283
|
+
`null`, it is derived from `institution_name` and `name`. An
|
|
1284
|
+
explicitly set display name must be unique for the budgeting
|
|
1285
|
+
account.
|
|
1271
1286
|
example: Savings
|
|
1272
1287
|
type:
|
|
1273
1288
|
description: The type of manual account
|
|
@@ -1275,8 +1290,10 @@ components:
|
|
|
1275
1290
|
- $ref: "#/components/schemas/accountTypeEnum"
|
|
1276
1291
|
subtype:
|
|
1277
1292
|
type: string
|
|
1278
|
-
|
|
1279
|
-
|
|
1293
|
+
nullable: true
|
|
1294
|
+
description: Manual account subtype. If omitted or `null`, no subtype
|
|
1295
|
+
is set. Examples include retirement, checking, savings, and prepaid
|
|
1296
|
+
credit card.
|
|
1280
1297
|
minLength: 1
|
|
1281
1298
|
maxLength: 100
|
|
1282
1299
|
example: prepaid credit card
|
|
@@ -1650,7 +1667,7 @@ components:
|
|
|
1650
1667
|
type:
|
|
1651
1668
|
type: string
|
|
1652
1669
|
enum: [manual]
|
|
1653
|
-
description: Identifies this entry as belonging to a
|
|
1670
|
+
description: Identifies this entry as belonging to a manual account.
|
|
1654
1671
|
manual_account_id:
|
|
1655
1672
|
type: integer
|
|
1656
1673
|
format: int32
|
|
@@ -1679,14 +1696,14 @@ components:
|
|
|
1679
1696
|
|
|
1680
1697
|
balanceHistorySourceCryptoManual:
|
|
1681
1698
|
type: object
|
|
1682
|
-
description: Source information for a
|
|
1699
|
+
description: Source information for a manual cryptocurrency balance history entry.
|
|
1683
1700
|
additionalProperties: false
|
|
1684
1701
|
x-internal: true
|
|
1685
1702
|
properties:
|
|
1686
1703
|
type:
|
|
1687
1704
|
type: string
|
|
1688
1705
|
enum: [crypto_manual]
|
|
1689
|
-
description: Identifies this entry as belonging to a
|
|
1706
|
+
description: Identifies this entry as belonging to a manual crypto account.
|
|
1690
1707
|
crypto_manual_id:
|
|
1691
1708
|
type: integer
|
|
1692
1709
|
format: int32
|
|
@@ -1729,10 +1746,11 @@ components:
|
|
|
1729
1746
|
type: object
|
|
1730
1747
|
x-internal: true
|
|
1731
1748
|
description: >
|
|
1732
|
-
Source information for
|
|
1749
|
+
Source information for balance history whose account has since been deleted.
|
|
1733
1750
|
Historical balances are preserved when a user chooses to keep history on account deletion.
|
|
1734
1751
|
This object contains details that can be used to display the deleted account in the UI.
|
|
1735
|
-
The `deleted_account_id` can be passed to
|
|
1752
|
+
The `deleted_account_id` can be passed to
|
|
1753
|
+
[PUT /balance_history/deleted/{account_id}/details](#tag/balance-history/PUT/balance_history/deleted/{account_id}/details)
|
|
1736
1754
|
to update the archived source metadata.
|
|
1737
1755
|
additionalProperties: false
|
|
1738
1756
|
properties:
|
|
@@ -1763,11 +1781,11 @@ components:
|
|
|
1763
1781
|
subtype:
|
|
1764
1782
|
type: string
|
|
1765
1783
|
nullable: true
|
|
1766
|
-
description: Archived `subtype
|
|
1784
|
+
description: Archived `subtype` of the deleted account source
|
|
1767
1785
|
mask:
|
|
1768
1786
|
type: string
|
|
1769
1787
|
nullable: true
|
|
1770
|
-
description: Archived account `mask` for a deleted
|
|
1788
|
+
description: Archived account `mask` for a deleted Plaid account source
|
|
1771
1789
|
symbol:
|
|
1772
1790
|
type: string
|
|
1773
1791
|
nullable: true
|
|
@@ -1789,12 +1807,14 @@ components:
|
|
|
1789
1807
|
type: object
|
|
1790
1808
|
title: balance history for an account object
|
|
1791
1809
|
additionalProperties: false
|
|
1792
|
-
description:
|
|
1810
|
+
description: Monthly balance entries grouped under a single account source.
|
|
1793
1811
|
properties:
|
|
1794
1812
|
source:
|
|
1795
1813
|
description: >
|
|
1796
|
-
Identifies the account
|
|
1797
|
-
`source.type`.
|
|
1814
|
+
Identifies the account these balance entries belong to. The shape varies by
|
|
1815
|
+
`source.type`. Each source type exposes a type-specific account id field
|
|
1816
|
+
(`manual_account_id`, `plaid_account_id`, `crypto_manual_id`,
|
|
1817
|
+
`crypto_synced_id`, or `deleted_account_id`).
|
|
1798
1818
|
oneOf:
|
|
1799
1819
|
- $ref: "#/components/schemas/balanceHistorySourceManual"
|
|
1800
1820
|
- $ref: "#/components/schemas/balanceHistorySourcePlaid"
|
|
@@ -1812,38 +1832,48 @@ components:
|
|
|
1812
1832
|
balances:
|
|
1813
1833
|
type: array
|
|
1814
1834
|
description: >
|
|
1815
|
-
Monthly balance
|
|
1816
|
-
|
|
1817
|
-
|
|
1835
|
+
Monthly balance entries for this account source. A `historical` entry is
|
|
1836
|
+
a stored snapshot of a past month and includes an `id`. A `current` entry
|
|
1837
|
+
is an ephemeral snapshot based on the account's current balances and has
|
|
1838
|
+
no balance-entry `id`. On PUT upsert responses, this array includes only
|
|
1839
|
+
the `type: historical` entries modified by that request.
|
|
1818
1840
|
items:
|
|
1819
|
-
$ref: "#/components/schemas/
|
|
1841
|
+
$ref: "#/components/schemas/balanceHistoryEntry"
|
|
1820
1842
|
required:
|
|
1821
1843
|
- source
|
|
1822
1844
|
- balances
|
|
1823
1845
|
|
|
1824
|
-
|
|
1846
|
+
historicalBalanceHistoryEntry:
|
|
1825
1847
|
type: object
|
|
1826
|
-
title: balance history entry
|
|
1848
|
+
title: historical balance history entry
|
|
1827
1849
|
additionalProperties: false
|
|
1828
1850
|
x-internal: true
|
|
1829
|
-
description:
|
|
1851
|
+
description: >
|
|
1852
|
+
A stored monthly balance for a past month. The `id` may be used with
|
|
1853
|
+
balance history entry endpoints. The balance represents the account
|
|
1854
|
+
balance at or around the end of `month`.
|
|
1830
1855
|
properties:
|
|
1856
|
+
type:
|
|
1857
|
+
type: string
|
|
1858
|
+
enum: [historical]
|
|
1859
|
+
description: Identifies this entry as a stored snapshot of a past month.
|
|
1831
1860
|
id:
|
|
1832
1861
|
type: integer
|
|
1833
1862
|
format: int32
|
|
1834
|
-
description: Unique identifier
|
|
1835
|
-
|
|
1863
|
+
description: Unique identifier for this historical balance entry.
|
|
1864
|
+
month:
|
|
1836
1865
|
type: string
|
|
1837
|
-
|
|
1838
|
-
description:
|
|
1866
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1867
|
+
description: Calendar month for this entry in YYYY-MM format.
|
|
1868
|
+
example: "2026-06"
|
|
1839
1869
|
balance:
|
|
1840
1870
|
type: string
|
|
1841
1871
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1842
|
-
description: Historical balance
|
|
1872
|
+
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.
|
|
1843
1873
|
currency:
|
|
1844
1874
|
allOf:
|
|
1845
1875
|
- $ref: "#/components/schemas/currencyEnum"
|
|
1846
|
-
description: Currency of
|
|
1876
|
+
description: Currency of `balance`. For crypto entries this is the user's primary currency.
|
|
1847
1877
|
to_base:
|
|
1848
1878
|
type: number
|
|
1849
1879
|
format: double
|
|
@@ -1852,19 +1882,82 @@ components:
|
|
|
1852
1882
|
type: string
|
|
1853
1883
|
nullable: true
|
|
1854
1884
|
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1855
|
-
description: Crypto quantity
|
|
1885
|
+
description: Crypto quantity for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
|
|
1856
1886
|
required:
|
|
1887
|
+
- type
|
|
1857
1888
|
- id
|
|
1858
|
-
-
|
|
1889
|
+
- month
|
|
1890
|
+
- balance
|
|
1891
|
+
- currency
|
|
1892
|
+
- to_base
|
|
1893
|
+
- crypto_balance
|
|
1894
|
+
|
|
1895
|
+
currentBalanceHistoryEntry:
|
|
1896
|
+
type: object
|
|
1897
|
+
title: current balance history entry
|
|
1898
|
+
additionalProperties: false
|
|
1899
|
+
x-internal: true
|
|
1900
|
+
description: >
|
|
1901
|
+
An ephemeral snapshot based on the account's current balances. It may
|
|
1902
|
+
change between requests.
|
|
1903
|
+
properties:
|
|
1904
|
+
type:
|
|
1905
|
+
type: string
|
|
1906
|
+
enum: [current]
|
|
1907
|
+
description: Identifies this entry as an ephemeral current-month snapshot.
|
|
1908
|
+
month:
|
|
1909
|
+
type: string
|
|
1910
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1911
|
+
description: Calendar month for this entry in YYYY-MM format. For current entries this is the current month.
|
|
1912
|
+
example: "2026-07"
|
|
1913
|
+
balance:
|
|
1914
|
+
type: string
|
|
1915
|
+
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1916
|
+
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.
|
|
1917
|
+
currency:
|
|
1918
|
+
allOf:
|
|
1919
|
+
- $ref: "#/components/schemas/currencyEnum"
|
|
1920
|
+
description: Currency of the calculated `balance`. For crypto entries this is the user's primary currency.
|
|
1921
|
+
to_base:
|
|
1922
|
+
type: number
|
|
1923
|
+
format: double
|
|
1924
|
+
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`.
|
|
1925
|
+
crypto_balance:
|
|
1926
|
+
type: string
|
|
1927
|
+
nullable: true
|
|
1928
|
+
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1929
|
+
description: Crypto quantity for this calculated entry, when available. This may be present for crypto entries and is `null` otherwise.
|
|
1930
|
+
required:
|
|
1931
|
+
- type
|
|
1932
|
+
- month
|
|
1859
1933
|
- balance
|
|
1860
1934
|
- currency
|
|
1861
1935
|
- to_base
|
|
1862
1936
|
- crypto_balance
|
|
1863
1937
|
|
|
1938
|
+
balanceHistoryEntry:
|
|
1939
|
+
title: balance history entry
|
|
1940
|
+
x-internal: true
|
|
1941
|
+
description: >
|
|
1942
|
+
A monthly balance history entry. Discriminated by `type`. `historical`
|
|
1943
|
+
entries are stored snapshots of past months with an `id`. `current`
|
|
1944
|
+
entries are ephemeral snapshots with no balance-entry `id`.
|
|
1945
|
+
oneOf:
|
|
1946
|
+
- $ref: "#/components/schemas/historicalBalanceHistoryEntry"
|
|
1947
|
+
- $ref: "#/components/schemas/currentBalanceHistoryEntry"
|
|
1948
|
+
discriminator:
|
|
1949
|
+
propertyName: type
|
|
1950
|
+
mapping:
|
|
1951
|
+
historical: "#/components/schemas/historicalBalanceHistoryEntry"
|
|
1952
|
+
current: "#/components/schemas/currentBalanceHistoryEntry"
|
|
1953
|
+
|
|
1864
1954
|
balanceHistoryListResponseObject:
|
|
1865
1955
|
type: object
|
|
1866
1956
|
additionalProperties: false
|
|
1867
1957
|
x-internal: true
|
|
1958
|
+
description: >
|
|
1959
|
+
List response for balance history GET endpoints. Entries are grouped by
|
|
1960
|
+
account source under `balance_history`.
|
|
1868
1961
|
properties:
|
|
1869
1962
|
balance_history:
|
|
1870
1963
|
type: array
|
|
@@ -1877,31 +1970,39 @@ components:
|
|
|
1877
1970
|
type: object
|
|
1878
1971
|
x-internal: true
|
|
1879
1972
|
additionalProperties: false
|
|
1973
|
+
description: >
|
|
1974
|
+
A single monthly balance entry to upsert. Request bodies use this shape.
|
|
1975
|
+
Responses return `type: historical` entries instead.
|
|
1880
1976
|
properties:
|
|
1881
1977
|
id:
|
|
1882
1978
|
type: integer
|
|
1883
1979
|
format: int32
|
|
1884
1980
|
description: System-defined balance history entry id. Ignored if set.
|
|
1885
1981
|
x-updatable: false
|
|
1886
|
-
|
|
1982
|
+
month:
|
|
1887
1983
|
type: string
|
|
1888
|
-
|
|
1889
|
-
description:
|
|
1984
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1985
|
+
description: >
|
|
1986
|
+
Calendar month to upsert, in YYYY-MM format. Must be a past month.
|
|
1987
|
+
The current month cannot be written through PUT endpoints.
|
|
1988
|
+
example: "2026-06"
|
|
1890
1989
|
balance:
|
|
1891
1990
|
oneOf:
|
|
1892
1991
|
- type: number
|
|
1893
1992
|
format: double
|
|
1894
1993
|
- type: string
|
|
1895
1994
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1896
|
-
description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is
|
|
1995
|
+
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.
|
|
1897
1996
|
symbol:
|
|
1898
1997
|
type: string
|
|
1899
1998
|
nullable: true
|
|
1900
1999
|
minLength: 1
|
|
1901
2000
|
maxLength: 25
|
|
1902
|
-
description:
|
|
1903
|
-
|
|
1904
|
-
|
|
2001
|
+
description: >
|
|
2002
|
+
Optional for crypto balances. If set, it must match the account's
|
|
2003
|
+
symbol. Tolerated for deleted-account balances. Do not provide this
|
|
2004
|
+
for manual or Plaid balances. On the synced crypto path endpoint, if
|
|
2005
|
+
provided it must match the `symbol` path parameter.
|
|
1905
2006
|
x-updatable: true
|
|
1906
2007
|
crypto_balance:
|
|
1907
2008
|
type: string
|
|
@@ -1917,10 +2018,10 @@ components:
|
|
|
1917
2018
|
to_base:
|
|
1918
2019
|
type: number
|
|
1919
2020
|
format: double
|
|
1920
|
-
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the
|
|
2021
|
+
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the historical balance.
|
|
1921
2022
|
x-updatable: false
|
|
1922
2023
|
required:
|
|
1923
|
-
-
|
|
2024
|
+
- month
|
|
1924
2025
|
- balance
|
|
1925
2026
|
|
|
1926
2027
|
upsertBalanceHistoryRequestObject:
|
|
@@ -1931,7 +2032,11 @@ components:
|
|
|
1931
2032
|
balances:
|
|
1932
2033
|
type: array
|
|
1933
2034
|
minItems: 1
|
|
1934
|
-
description:
|
|
2035
|
+
description: >
|
|
2036
|
+
One or more monthly balance history entries to upsert. Each entry uses
|
|
2037
|
+
`month` (YYYY-MM) and `balance`. Do not include response-only fields such
|
|
2038
|
+
as `type`. PUT responses return only the `type: historical` entries
|
|
2039
|
+
modified by the request.
|
|
1935
2040
|
items:
|
|
1936
2041
|
$ref: "#/components/schemas/balanceHistoryUpdateItemObject"
|
|
1937
2042
|
required:
|
|
@@ -1946,51 +2051,58 @@ components:
|
|
|
1946
2051
|
name:
|
|
1947
2052
|
type: string
|
|
1948
2053
|
nullable: true
|
|
1949
|
-
description: New archived account name for the deleted account source
|
|
2054
|
+
description: New archived account name for the deleted account source
|
|
1950
2055
|
institution_name:
|
|
1951
2056
|
type: string
|
|
1952
2057
|
nullable: true
|
|
1953
|
-
description: New archived institution name for the deleted account source
|
|
2058
|
+
description: New archived institution name for the deleted account source
|
|
1954
2059
|
display_name:
|
|
1955
2060
|
type: string
|
|
1956
2061
|
nullable: true
|
|
1957
|
-
description: New display name for the deleted account source
|
|
2062
|
+
description: New display name for the deleted account source
|
|
1958
2063
|
account_type:
|
|
1959
2064
|
type: string
|
|
1960
2065
|
nullable: true
|
|
1961
|
-
description: New archived account type for the deleted account source
|
|
2066
|
+
description: New archived account type for the deleted account source
|
|
1962
2067
|
subtype:
|
|
1963
2068
|
type: string
|
|
1964
2069
|
nullable: true
|
|
1965
|
-
description: New archived subtype for the deleted account source
|
|
2070
|
+
description: New archived subtype for the deleted account source
|
|
1966
2071
|
mask:
|
|
1967
2072
|
type: string
|
|
1968
2073
|
nullable: true
|
|
1969
|
-
description: New archived account mask for the deleted account source
|
|
2074
|
+
description: New archived account mask for the deleted account source
|
|
1970
2075
|
|
|
1971
2076
|
updateBalanceHistoryDetailsResponseObject:
|
|
1972
2077
|
type: object
|
|
1973
2078
|
x-internal: true
|
|
1974
2079
|
additionalProperties: false
|
|
2080
|
+
description: Updated archived metadata for a deleted balance history source
|
|
1975
2081
|
properties:
|
|
1976
2082
|
name:
|
|
1977
2083
|
type: string
|
|
1978
2084
|
nullable: true
|
|
2085
|
+
description: Archived account name for the deleted account source
|
|
1979
2086
|
institution_name:
|
|
1980
2087
|
type: string
|
|
1981
2088
|
nullable: true
|
|
2089
|
+
description: Archived institution name for the deleted account source
|
|
1982
2090
|
display_name:
|
|
1983
2091
|
type: string
|
|
1984
2092
|
nullable: true
|
|
2093
|
+
description: Archived display name for the deleted account source
|
|
1985
2094
|
account_type:
|
|
1986
2095
|
type: string
|
|
1987
2096
|
nullable: true
|
|
2097
|
+
description: Archived account type for the deleted account source
|
|
1988
2098
|
subtype:
|
|
1989
2099
|
type: string
|
|
1990
2100
|
nullable: true
|
|
2101
|
+
description: Archived subtype for the deleted account source
|
|
1991
2102
|
mask:
|
|
1992
2103
|
type: string
|
|
1993
2104
|
nullable: true
|
|
2105
|
+
description: Archived account mask for the deleted account source
|
|
1994
2106
|
required:
|
|
1995
2107
|
- name
|
|
1996
2108
|
- institution_name
|
|
@@ -2946,7 +3058,7 @@ components:
|
|
|
2946
3058
|
currency:
|
|
2947
3059
|
description: Three-letter lowercase currency code of the transaction
|
|
2948
3060
|
in ISO 4217 format. Must match one of the [supported
|
|
2949
|
-
currencies](https://
|
|
3061
|
+
currencies](https://lunchmoney.dev/v2/currencies). If not set
|
|
2950
3062
|
defaults to the user account's primary currency.
|
|
2951
3063
|
allOf:
|
|
2952
3064
|
- $ref: "#/components/schemas/currencyEnum"
|
|
@@ -3091,6 +3203,7 @@ components:
|
|
|
3091
3203
|
description: |
|
|
3092
3204
|
The new payee for the transaction.
|
|
3093
3205
|
minLength: 0
|
|
3206
|
+
x-updatable: true
|
|
3094
3207
|
original_name:
|
|
3095
3208
|
type: string
|
|
3096
3209
|
nullable: true
|
|
@@ -3302,9 +3415,10 @@ components:
|
|
|
3302
3415
|
category_id:
|
|
3303
3416
|
type: integer
|
|
3304
3417
|
format: int32
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
|
|
3418
|
+
nullable: true
|
|
3419
|
+
description: Category ID for the child transaction. The category must
|
|
3420
|
+
already exist for the account. If omitted, the child inherits the
|
|
3421
|
+
parent category. If `null`, the child has no category.
|
|
3308
3422
|
tag_ids:
|
|
3309
3423
|
type: array
|
|
3310
3424
|
description: The IDs of any tags to apply to this split child
|
|
@@ -3314,7 +3428,10 @@ components:
|
|
|
3314
3428
|
format: int32
|
|
3315
3429
|
notes:
|
|
3316
3430
|
type: string
|
|
3317
|
-
|
|
3431
|
+
nullable: true
|
|
3432
|
+
description: Notes for the child transaction. If omitted, the child
|
|
3433
|
+
inherits the parent notes. If `null` or an empty string, the child
|
|
3434
|
+
has no notes.
|
|
3318
3435
|
required:
|
|
3319
3436
|
- amount
|
|
3320
3437
|
|
|
@@ -3683,6 +3800,7 @@ components:
|
|
|
3683
3800
|
- budget_rollover_left_to_budget
|
|
3684
3801
|
|
|
3685
3802
|
weekStartsOnEnum:
|
|
3803
|
+
x-internal: true
|
|
3686
3804
|
type: string
|
|
3687
3805
|
title: week starts on enum
|
|
3688
3806
|
enum:
|
|
@@ -3691,6 +3809,7 @@ components:
|
|
|
3691
3809
|
description: The day on which a calendar week begins.
|
|
3692
3810
|
|
|
3693
3811
|
monthYearFormatEnum:
|
|
3812
|
+
x-internal: true
|
|
3694
3813
|
type: string
|
|
3695
3814
|
title: month and year format enum
|
|
3696
3815
|
description: Format string for displaying month and year values
|
|
@@ -3717,6 +3836,7 @@ components:
|
|
|
3717
3836
|
- "YYYY/MM"
|
|
3718
3837
|
|
|
3719
3838
|
monthDayYearFormatEnum:
|
|
3839
|
+
x-internal: true
|
|
3720
3840
|
type: string
|
|
3721
3841
|
title: month, day and year format enum
|
|
3722
3842
|
description: Format string for displaying full dates in the
|
|
@@ -3774,6 +3894,7 @@ components:
|
|
|
3774
3894
|
- "M/DD/YYYY"
|
|
3775
3895
|
|
|
3776
3896
|
monthDayFormatEnum:
|
|
3897
|
+
x-internal: true
|
|
3777
3898
|
type: string
|
|
3778
3899
|
title: month and day format enum
|
|
3779
3900
|
description: Format string for displaying month and day values
|
|
@@ -3816,6 +3937,98 @@ components:
|
|
|
3816
3937
|
- "DD.M"
|
|
3817
3938
|
- "DD/M"
|
|
3818
3939
|
|
|
3940
|
+
localeEnum:
|
|
3941
|
+
type: string
|
|
3942
|
+
title: locale enum
|
|
3943
|
+
description: Locale used for formatting numbers and currency amounts in
|
|
3944
|
+
the Lunch Money app.
|
|
3945
|
+
example: en-US
|
|
3946
|
+
enum:
|
|
3947
|
+
- sq-AL # Albanian (Albania)
|
|
3948
|
+
- be-BY # Belarusian (Belarus)
|
|
3949
|
+
- bg-BG # Bulgarian (Bulgaria)
|
|
3950
|
+
- ca-ES # Catalan (Spain)
|
|
3951
|
+
- zh-CN # Chinese (Simplified) (China)
|
|
3952
|
+
- zh-HK # Chinese (Traditional) (Hong Kong)
|
|
3953
|
+
- zh-TW # Chinese (Traditional) (Taiwan)
|
|
3954
|
+
- hr-HR # Croatian (Croatia)
|
|
3955
|
+
- cs-CZ # Czech (Czech Republic)
|
|
3956
|
+
- da-DK # Danish (Denmark)
|
|
3957
|
+
- nl-BE # Dutch (Belgium)
|
|
3958
|
+
- nl-NL # Dutch (Netherlands)
|
|
3959
|
+
- en-AU # English (Australia)
|
|
3960
|
+
- en-CA # English (Canada)
|
|
3961
|
+
- en-IN # English (India)
|
|
3962
|
+
- en-IE # English (Ireland)
|
|
3963
|
+
- en-MT # English (Malta)
|
|
3964
|
+
- en-NZ # English (New Zealand)
|
|
3965
|
+
- en-PH # English (Philippines)
|
|
3966
|
+
- en-SG # English (Singapore)
|
|
3967
|
+
- en-ZA # English (South Africa)
|
|
3968
|
+
- en-GB # English (United Kingdom)
|
|
3969
|
+
- en-US # English (United States)
|
|
3970
|
+
- et-EE # Estonian (Estonia)
|
|
3971
|
+
- fi-FI # Finnish (Finland)
|
|
3972
|
+
- fr-BE # French (Belgium)
|
|
3973
|
+
- fr-CA # French (Canada)
|
|
3974
|
+
- fr-FR # French (France)
|
|
3975
|
+
- fr-LU # French (Luxembourg)
|
|
3976
|
+
- fr-CH # French (Switzerland)
|
|
3977
|
+
- de-AT # German (Austria)
|
|
3978
|
+
- de-DE # German (Germany)
|
|
3979
|
+
- de-LU # German (Luxembourg)
|
|
3980
|
+
- de-CH # German (Switzerland)
|
|
3981
|
+
- el-CY # Greek (Cyprus)
|
|
3982
|
+
- el-GR # Greek (Greece)
|
|
3983
|
+
- iw-IL # Hebrew (Israel); modern replacement: he-IL
|
|
3984
|
+
- hi-IN # Hindi (India)
|
|
3985
|
+
- hu-HU # Hungarian (Hungary)
|
|
3986
|
+
- is-IS # Icelandic (Iceland)
|
|
3987
|
+
- in-ID # Indonesian (Indonesia); modern replacement: id-ID
|
|
3988
|
+
- ga-IE # Irish (Ireland)
|
|
3989
|
+
- it-IT # Italian (Italy)
|
|
3990
|
+
- it-CH # Italian (Switzerland)
|
|
3991
|
+
- ja-JP # Japanese (Japan)
|
|
3992
|
+
- ko-KR # Korean (South Korea)
|
|
3993
|
+
- lv-LV # Latvian (Latvia)
|
|
3994
|
+
- lt-LT # Lithuanian (Lithuania)
|
|
3995
|
+
- mk-MK # Macedonian (Macedonia)
|
|
3996
|
+
- ms-MY # Malay (Malaysia)
|
|
3997
|
+
- mt-MT # Maltese (Malta)
|
|
3998
|
+
- no-NO # Norwegian (Norway)
|
|
3999
|
+
- pl-PL # Polish (Poland)
|
|
4000
|
+
- pt-BR # Portuguese (Brazil)
|
|
4001
|
+
- pt-PT # Portuguese (Portugal)
|
|
4002
|
+
- ro-RO # Romanian (Romania)
|
|
4003
|
+
- ru-RU # Russian (Russia)
|
|
4004
|
+
- sk-SK # Slovak (Slovakia)
|
|
4005
|
+
- sl-SI # Slovenian (Slovenia)
|
|
4006
|
+
- es-AR # Spanish (Argentina)
|
|
4007
|
+
- es-BO # Spanish (Bolivia)
|
|
4008
|
+
- es-CL # Spanish (Chile)
|
|
4009
|
+
- es-CO # Spanish (Colombia)
|
|
4010
|
+
- es-CR # Spanish (Costa Rica)
|
|
4011
|
+
- es-DO # Spanish (Dominican Republic)
|
|
4012
|
+
- es-EC # Spanish (Ecuador)
|
|
4013
|
+
- es-SV # Spanish (El Salvador)
|
|
4014
|
+
- es-GT # Spanish (Guatemala)
|
|
4015
|
+
- es-HN # Spanish (Honduras)
|
|
4016
|
+
- es-MX # Spanish (Mexico)
|
|
4017
|
+
- es-NI # Spanish (Nicaragua)
|
|
4018
|
+
- es-PA # Spanish (Panama)
|
|
4019
|
+
- es-PY # Spanish (Paraguay)
|
|
4020
|
+
- es-PE # Spanish (Peru)
|
|
4021
|
+
- es-PR # Spanish (Puerto Rico)
|
|
4022
|
+
- es-ES # Spanish (Spain)
|
|
4023
|
+
- es-US # Spanish (United States)
|
|
4024
|
+
- es-UY # Spanish (Uruguay)
|
|
4025
|
+
- es-VE # Spanish (Venezuela)
|
|
4026
|
+
- sv-SE # Swedish (Sweden)
|
|
4027
|
+
- th-TH # Thai (Thailand)
|
|
4028
|
+
- tr-TR # Turkish (Turkey)
|
|
4029
|
+
- uk-UA # Ukrainian (Ukraine)
|
|
4030
|
+
- vi-VN # Vietnamese (Vietnam)
|
|
4031
|
+
|
|
3819
4032
|
accountSettingsObject:
|
|
3820
4033
|
type: object
|
|
3821
4034
|
title: account settings object
|
|
@@ -3839,13 +4052,19 @@ components:
|
|
|
3839
4052
|
description: Display name of the budgeting account in the Lunch Money
|
|
3840
4053
|
app.
|
|
3841
4054
|
locale:
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
4055
|
+
allOf:
|
|
4056
|
+
- $ref: "#/components/schemas/localeEnum"
|
|
4057
|
+
example: en-US
|
|
4058
|
+
description: Locale used for formatting numbers and currency amounts
|
|
4059
|
+
in the Lunch Money app (for example, `en-US`). See
|
|
4060
|
+
[Supported Locales](https://lunchmoney.dev/v2/locales) for accepted
|
|
4061
|
+
values. Date presentation is configured separately through
|
|
4062
|
+
[GET /me/user/settings](#tag/me/GET/me/user/settings) and
|
|
4063
|
+
[PUT /me/user/settings](#tag/me/PUT/me/user/settings). When no
|
|
4064
|
+
locale is explicitly stored for the account, the effective locale
|
|
4065
|
+
is derived from the `default_locale` associated with
|
|
4066
|
+
`primary_currency` in the currencies table (for example, `usd` →
|
|
4067
|
+
`en-US`, `cad` → `en-CA`, `gbp` → `en-GB`).
|
|
3849
4068
|
auto_create_category_rules:
|
|
3850
4069
|
type: boolean
|
|
3851
4070
|
default: true
|
|
@@ -3856,16 +4075,11 @@ components:
|
|
|
3856
4075
|
default: true
|
|
3857
4076
|
description: If `true`, suggested transaction rules are created
|
|
3858
4077
|
automatically.
|
|
3859
|
-
|
|
3860
|
-
type: boolean
|
|
3861
|
-
default: true
|
|
3862
|
-
description: If `true`, transactions are marked as reviewed when
|
|
3863
|
-
updated.
|
|
3864
|
-
auto_review_transaction_on_creation:
|
|
4078
|
+
include_pending_in_totals:
|
|
3865
4079
|
type: boolean
|
|
3866
4080
|
default: true
|
|
3867
|
-
description: If `true`, transactions are
|
|
3868
|
-
|
|
4081
|
+
description: If `true`, pending transactions are included in account
|
|
4082
|
+
totals.
|
|
3869
4083
|
required:
|
|
3870
4084
|
- primary_currency
|
|
3871
4085
|
- supported_currencies
|
|
@@ -3873,13 +4087,13 @@ components:
|
|
|
3873
4087
|
- locale
|
|
3874
4088
|
- auto_create_category_rules
|
|
3875
4089
|
- auto_create_suggested_transaction_rules
|
|
3876
|
-
-
|
|
3877
|
-
- auto_review_transaction_on_creation
|
|
4090
|
+
- include_pending_in_totals
|
|
3878
4091
|
|
|
3879
4092
|
updateAccountSettingsRequestObject:
|
|
3880
4093
|
x-internal: true
|
|
3881
4094
|
type: object
|
|
3882
4095
|
additionalProperties: false
|
|
4096
|
+
minProperties: 1
|
|
3883
4097
|
description: Request body for updating account settings. Include at least
|
|
3884
4098
|
one property to update.
|
|
3885
4099
|
properties:
|
|
@@ -3901,9 +4115,15 @@ components:
|
|
|
3901
4115
|
description: If set, updates the display name of the budgeting account.
|
|
3902
4116
|
x-updatable: true
|
|
3903
4117
|
locale:
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
4118
|
+
allOf:
|
|
4119
|
+
- $ref: "#/components/schemas/localeEnum"
|
|
4120
|
+
example: en-US
|
|
4121
|
+
description: If set, updates the locale used for formatting numbers
|
|
4122
|
+
and currency amounts in the Lunch Money app. See
|
|
4123
|
+
[Supported Locales](https://lunchmoney.dev/v2/locales) for accepted
|
|
4124
|
+
values. Date presentation is configured separately through
|
|
4125
|
+
[GET /me/user/settings](#tag/me/GET/me/user/settings) and
|
|
4126
|
+
[PUT /me/user/settings](#tag/me/PUT/me/user/settings).
|
|
3907
4127
|
x-updatable: true
|
|
3908
4128
|
auto_create_category_rules:
|
|
3909
4129
|
type: boolean
|
|
@@ -3915,15 +4135,70 @@ components:
|
|
|
3915
4135
|
description: If set, updates whether suggested transaction rules are
|
|
3916
4136
|
created automatically.
|
|
3917
4137
|
x-updatable: true
|
|
4138
|
+
include_pending_in_totals:
|
|
4139
|
+
type: boolean
|
|
4140
|
+
description: If set, updates whether pending transactions are included
|
|
4141
|
+
in account totals.
|
|
4142
|
+
x-updatable: true
|
|
4143
|
+
|
|
4144
|
+
userAccountSettingsObject:
|
|
4145
|
+
type: object
|
|
4146
|
+
title: user account settings object
|
|
4147
|
+
additionalProperties: false
|
|
4148
|
+
description: Settings specific to the authorized user within the current
|
|
4149
|
+
budgeting account.
|
|
4150
|
+
properties:
|
|
4151
|
+
auto_review_transaction_on_update:
|
|
4152
|
+
type: boolean
|
|
4153
|
+
default: true
|
|
4154
|
+
description: If `true`, transactions are marked as reviewed when their
|
|
4155
|
+
date, category, payee, amount, account, or notes are changed.
|
|
4156
|
+
auto_review_transaction_on_creation:
|
|
4157
|
+
type: boolean
|
|
4158
|
+
default: true
|
|
4159
|
+
description: If `true`, new manual transactions start as reviewed. If
|
|
4160
|
+
`false`, they start as unreviewed.
|
|
4161
|
+
default_manual_account_id:
|
|
4162
|
+
type: integer
|
|
4163
|
+
nullable: true
|
|
4164
|
+
description: Manual account selected by default when the user creates a
|
|
4165
|
+
manual transaction in the current budgeting account. Must identify a
|
|
4166
|
+
manual account returned by
|
|
4167
|
+
[GET /manual_accounts](#tag/manual_accounts/GET/manual_accounts) for
|
|
4168
|
+
the current budgeting account. Set to `null` to clear the selection.
|
|
4169
|
+
required:
|
|
4170
|
+
- auto_review_transaction_on_update
|
|
4171
|
+
- auto_review_transaction_on_creation
|
|
4172
|
+
- default_manual_account_id
|
|
4173
|
+
|
|
4174
|
+
updateUserAccountSettingsRequestObject:
|
|
4175
|
+
x-internal: true
|
|
4176
|
+
type: object
|
|
4177
|
+
additionalProperties: false
|
|
4178
|
+
minProperties: 1
|
|
4179
|
+
description: Request body for updating settings specific to the authorized
|
|
4180
|
+
user within the current budgeting account. Include at least one property
|
|
4181
|
+
to update.
|
|
4182
|
+
properties:
|
|
3918
4183
|
auto_review_transaction_on_update:
|
|
3919
4184
|
type: boolean
|
|
3920
4185
|
description: If set, updates whether transactions are marked as reviewed
|
|
3921
|
-
when
|
|
4186
|
+
when their date, category, payee, amount, account, or notes are
|
|
4187
|
+
changed.
|
|
3922
4188
|
x-updatable: true
|
|
3923
4189
|
auto_review_transaction_on_creation:
|
|
3924
4190
|
type: boolean
|
|
3925
|
-
description: If set, updates whether transactions
|
|
3926
|
-
|
|
4191
|
+
description: If set, updates whether new manual transactions start as
|
|
4192
|
+
reviewed or unreviewed.
|
|
4193
|
+
x-updatable: true
|
|
4194
|
+
default_manual_account_id:
|
|
4195
|
+
type: integer
|
|
4196
|
+
nullable: true
|
|
4197
|
+
description: If set, updates the manual account selected by default when
|
|
4198
|
+
the user creates a manual transaction in the current budgeting
|
|
4199
|
+
account. Must identify a manual account returned by
|
|
4200
|
+
[GET /manual_accounts](#tag/manual_accounts/GET/manual_accounts) for
|
|
4201
|
+
the current budgeting account. Set to `null` to clear the selection.
|
|
3927
4202
|
x-updatable: true
|
|
3928
4203
|
|
|
3929
4204
|
userSettingsObject:
|
|
@@ -3999,6 +4274,7 @@ components:
|
|
|
3999
4274
|
x-internal: true
|
|
4000
4275
|
type: object
|
|
4001
4276
|
additionalProperties: false
|
|
4277
|
+
minProperties: 1
|
|
4002
4278
|
description: Request body for updating user settings. Include at least one
|
|
4003
4279
|
property to update.
|
|
4004
4280
|
properties:
|
|
@@ -4822,22 +5098,10 @@ components:
|
|
|
4822
5098
|
securitySchemes:
|
|
4823
5099
|
bearerSecurity:
|
|
4824
5100
|
type: http
|
|
4825
|
-
|
|
4826
|
-
|
|
4827
|
-
# the v1 API you can view and manage your API keys on the [developers page
|
|
4828
|
-
# in the Lunch Money app](https://my.lunchmoney.app/developers). <p> To
|
|
4829
|
-
# interact with the Static Mock Server simply enter an API key of 11
|
|
4830
|
-
# characters or more. <p> To interact with the v2 service implemented on
|
|
4831
|
-
# top of the v1 API paste in a real API token associated with a Lunch
|
|
4832
|
-
# Money Budget.
|
|
4833
|
-
description: To interact with the Static Mock Server simply enter an API
|
|
4834
|
-
key of 11 characters or more.
|
|
5101
|
+
description: >-
|
|
5102
|
+
Required for the LIVE server. Optional for MOCK.
|
|
4835
5103
|
scheme: bearer
|
|
4836
5104
|
bearerFormat: JWT
|
|
4837
|
-
cookieAuth:
|
|
4838
|
-
type: apiKey
|
|
4839
|
-
in: cookie
|
|
4840
|
-
name: _lm_access_token
|
|
4841
5105
|
|
|
4842
5106
|
paths:
|
|
4843
5107
|
/me:
|
|
@@ -4847,11 +5111,14 @@ paths:
|
|
|
4847
5111
|
summary: Get current user
|
|
4848
5112
|
description: |-
|
|
4849
5113
|
Get details about the user associated with the supplied authorization
|
|
4850
|
-
token.<p>
|
|
4851
|
-
|
|
4852
|
-
[/me/
|
|
4853
|
-
|
|
4854
|
-
|
|
5114
|
+
token.<p> Use [/me/user/settings](#tag/me/GET/me/user/settings) for
|
|
5115
|
+
user-wide preferences,
|
|
5116
|
+
[/me/account/settings](#tag/me/GET/me/account/settings) for account-wide
|
|
5117
|
+
preferences, and
|
|
5118
|
+
[/me/user/account/settings](#tag/me/GET/me/user/account/settings) for
|
|
5119
|
+
preferences specific to the current user and budgeting account.
|
|
5120
|
+
Properties such as `primary_currency` and `budget_name` remain on this
|
|
5121
|
+
response for backwards compatibility.
|
|
4855
5122
|
operationId: getMe
|
|
4856
5123
|
parameters: []
|
|
4857
5124
|
responses:
|
|
@@ -4880,8 +5147,9 @@ paths:
|
|
|
4880
5147
|
tags:
|
|
4881
5148
|
- me
|
|
4882
5149
|
summary: Get account settings
|
|
4883
|
-
description:
|
|
4884
|
-
|
|
5150
|
+
description: >-
|
|
5151
|
+
Returns settings for the current budgeting account. These settings apply
|
|
5152
|
+
regardless of which user is accessing the account.
|
|
4885
5153
|
operationId: getAccountSettings
|
|
4886
5154
|
responses:
|
|
4887
5155
|
"200":
|
|
@@ -4900,8 +5168,7 @@ paths:
|
|
|
4900
5168
|
locale: en-US
|
|
4901
5169
|
auto_create_category_rules: true
|
|
4902
5170
|
auto_create_suggested_transaction_rules: true
|
|
4903
|
-
|
|
4904
|
-
auto_review_transaction_on_creation: true
|
|
5171
|
+
include_pending_in_totals: true
|
|
4905
5172
|
"401":
|
|
4906
5173
|
$ref: "#/components/responses/unauthorizedToken"
|
|
4907
5174
|
"429":
|
|
@@ -4914,11 +5181,10 @@ paths:
|
|
|
4914
5181
|
summary: Update account settings
|
|
4915
5182
|
description: |-
|
|
4916
5183
|
Updates account-level settings for the budgeting account
|
|
4917
|
-
associated with the authorized API token
|
|
4918
|
-
`GET /me/account/settings`
|
|
4919
|
-
|
|
4920
|
-
|
|
4921
|
-
includes at least one updatable property.
|
|
5184
|
+
associated with the authorized API token. Submit the full response from
|
|
5185
|
+
`GET /me/account/settings` with one or more properties changed, or
|
|
5186
|
+
provide only the properties to update. The request body must include at
|
|
5187
|
+
least one property.
|
|
4922
5188
|
operationId: updateAccountSettings
|
|
4923
5189
|
requestBody:
|
|
4924
5190
|
required: true
|
|
@@ -4933,7 +5199,7 @@ paths:
|
|
|
4933
5199
|
Update automation preferences:
|
|
4934
5200
|
value:
|
|
4935
5201
|
auto_create_category_rules: false
|
|
4936
|
-
|
|
5202
|
+
include_pending_in_totals: false
|
|
4937
5203
|
responses:
|
|
4938
5204
|
"200":
|
|
4939
5205
|
description: Account settings updated successfully
|
|
@@ -4958,8 +5224,10 @@ paths:
|
|
|
4958
5224
|
tags:
|
|
4959
5225
|
- me
|
|
4960
5226
|
summary: Get user settings
|
|
4961
|
-
description:
|
|
4962
|
-
|
|
5227
|
+
description: >-
|
|
5228
|
+
Returns display and formatting preferences for the authorized user.
|
|
5229
|
+
These settings apply across every budgeting account the user owns or
|
|
5230
|
+
collaborates on.
|
|
4963
5231
|
operationId: getUserSettings
|
|
4964
5232
|
responses:
|
|
4965
5233
|
"200":
|
|
@@ -4990,11 +5258,10 @@ paths:
|
|
|
4990
5258
|
summary: Update user settings
|
|
4991
5259
|
description: |-
|
|
4992
5260
|
Updates user-level display and formatting preferences for the user
|
|
4993
|
-
associated with the authorized API token
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
request includes at least one updatable property.<p> Updating
|
|
5261
|
+
associated with the authorized API token. Submit the full response from
|
|
5262
|
+
`GET /me/user/settings` with one or more properties changed, or provide
|
|
5263
|
+
only the properties to update. The request body must include at least
|
|
5264
|
+
one property.<p> Updating
|
|
4998
5265
|
`show_debits_as_negative` affects display in the Lunch Money app only.
|
|
4999
5266
|
Amount fields in API responses always use positive values for debits and
|
|
5000
5267
|
negative values for credits.
|
|
@@ -5034,6 +5301,88 @@ paths:
|
|
|
5034
5301
|
$ref: "#/components/responses/rateLimited"
|
|
5035
5302
|
"500":
|
|
5036
5303
|
$ref: "#/components/responses/serverError"
|
|
5304
|
+
/me/user/account/settings:
|
|
5305
|
+
get:
|
|
5306
|
+
tags:
|
|
5307
|
+
- me
|
|
5308
|
+
summary: Get user account settings
|
|
5309
|
+
description: >-
|
|
5310
|
+
Returns settings specific to the authorized user within the current
|
|
5311
|
+
budgeting account. These settings do not affect other users or the
|
|
5312
|
+
authorized user's settings in other budgeting accounts.
|
|
5313
|
+
operationId: getUserAccountSettings
|
|
5314
|
+
responses:
|
|
5315
|
+
"200":
|
|
5316
|
+
description: Settings for the authorized user in the current budgeting
|
|
5317
|
+
account
|
|
5318
|
+
content:
|
|
5319
|
+
application/json:
|
|
5320
|
+
schema:
|
|
5321
|
+
$ref: "#/components/schemas/userAccountSettingsObject"
|
|
5322
|
+
example:
|
|
5323
|
+
auto_review_transaction_on_update: true
|
|
5324
|
+
auto_review_transaction_on_creation: true
|
|
5325
|
+
default_manual_account_id: null
|
|
5326
|
+
"401":
|
|
5327
|
+
$ref: "#/components/responses/unauthorizedToken"
|
|
5328
|
+
"429":
|
|
5329
|
+
$ref: "#/components/responses/rateLimited"
|
|
5330
|
+
"500":
|
|
5331
|
+
$ref: "#/components/responses/serverError"
|
|
5332
|
+
put:
|
|
5333
|
+
tags:
|
|
5334
|
+
- me
|
|
5335
|
+
summary: Update user account settings
|
|
5336
|
+
description: |-
|
|
5337
|
+
Updates settings specific to the authorized user within the current
|
|
5338
|
+
budgeting account. Submit the full response from
|
|
5339
|
+
`GET /me/user/account/settings` with one or more properties changed, or
|
|
5340
|
+
provide only the properties to update. The request body must include at
|
|
5341
|
+
least one property.
|
|
5342
|
+
operationId: updateUserAccountSettings
|
|
5343
|
+
requestBody:
|
|
5344
|
+
required: true
|
|
5345
|
+
content:
|
|
5346
|
+
application/json:
|
|
5347
|
+
schema:
|
|
5348
|
+
$ref: "#/components/schemas/updateUserAccountSettingsRequestObject"
|
|
5349
|
+
examples:
|
|
5350
|
+
Update review preference:
|
|
5351
|
+
value:
|
|
5352
|
+
auto_review_transaction_on_creation: false
|
|
5353
|
+
Clear default manual account:
|
|
5354
|
+
value:
|
|
5355
|
+
default_manual_account_id: null
|
|
5356
|
+
responses:
|
|
5357
|
+
"200":
|
|
5358
|
+
description: User account settings updated successfully
|
|
5359
|
+
content:
|
|
5360
|
+
application/json:
|
|
5361
|
+
schema:
|
|
5362
|
+
$ref: "#/components/schemas/userAccountSettingsObject"
|
|
5363
|
+
examples:
|
|
5364
|
+
Update review preference:
|
|
5365
|
+
value:
|
|
5366
|
+
auto_review_transaction_on_update: true
|
|
5367
|
+
auto_review_transaction_on_creation: false
|
|
5368
|
+
default_manual_account_id: null
|
|
5369
|
+
Clear default manual account:
|
|
5370
|
+
value:
|
|
5371
|
+
auto_review_transaction_on_update: true
|
|
5372
|
+
auto_review_transaction_on_creation: true
|
|
5373
|
+
default_manual_account_id: null
|
|
5374
|
+
"400":
|
|
5375
|
+
description: Invalid request body
|
|
5376
|
+
content:
|
|
5377
|
+
application/json:
|
|
5378
|
+
schema:
|
|
5379
|
+
$ref: "#/components/schemas/errorResponseObject"
|
|
5380
|
+
"401":
|
|
5381
|
+
$ref: "#/components/responses/unauthorizedToken"
|
|
5382
|
+
"429":
|
|
5383
|
+
$ref: "#/components/responses/rateLimited"
|
|
5384
|
+
"500":
|
|
5385
|
+
$ref: "#/components/responses/serverError"
|
|
5037
5386
|
/summary:
|
|
5038
5387
|
get:
|
|
5039
5388
|
tags:
|
|
@@ -6281,12 +6630,9 @@ paths:
|
|
|
6281
6630
|
tags:
|
|
6282
6631
|
- crypto-manual
|
|
6283
6632
|
summary: Get all supported cryptocurrencies
|
|
6284
|
-
description:
|
|
6633
|
+
description: |-
|
|
6285
6634
|
Retrieve the list of cryptocurrencies currently supported for manual tracking.<p>
|
|
6286
|
-
|
|
6287
|
-
When creating a new manual crypto balance via `POST /crypto/manual`, the
|
|
6288
|
-
`symbol` you specify must match the `symbol` of one of the entries
|
|
6289
|
-
returned by this endpoint.
|
|
6635
|
+
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.
|
|
6290
6636
|
operationId: getAllCryptocurrencies
|
|
6291
6637
|
responses:
|
|
6292
6638
|
"200":
|
|
@@ -6324,16 +6670,9 @@ paths:
|
|
|
6324
6670
|
- crypto-manual
|
|
6325
6671
|
summary: Add a new supported cryptocurrency
|
|
6326
6672
|
operationId: createCryptocurrency
|
|
6327
|
-
description:
|
|
6673
|
+
description: |-
|
|
6328
6674
|
Adds a new cryptocurrency to the supported manual-crypto list.<br><br>
|
|
6329
|
-
|
|
6330
|
-
Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum)
|
|
6331
|
-
to convert crypto balances to the user's primary currency. Users add a
|
|
6332
|
-
new supported cryptocurrency by submitting a CoinGecko coin-page URL.
|
|
6333
|
-
The server validates the URL, extracts the id from `/coins/{id}`,
|
|
6334
|
-
checks for an existing supported `coingecko_id`, validates the id
|
|
6335
|
-
against CoinGecko, then confirms the resolved symbol is not already
|
|
6336
|
-
supported before creating the new entry.
|
|
6675
|
+
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.
|
|
6337
6676
|
requestBody:
|
|
6338
6677
|
required: true
|
|
6339
6678
|
content:
|
|
@@ -6412,8 +6751,8 @@ paths:
|
|
|
6412
6751
|
tags:
|
|
6413
6752
|
- crypto-manual
|
|
6414
6753
|
summary: Get all manual crypto balances
|
|
6415
|
-
description:
|
|
6416
|
-
the user's account.
|
|
6754
|
+
description: |-
|
|
6755
|
+
Retrieve all manually managed crypto balances associated with the user's account.
|
|
6417
6756
|
operationId: getAllCryptoManual
|
|
6418
6757
|
responses:
|
|
6419
6758
|
"200":
|
|
@@ -6447,11 +6786,9 @@ paths:
|
|
|
6447
6786
|
tags:
|
|
6448
6787
|
- crypto-manual
|
|
6449
6788
|
summary: Create a manual crypto balance
|
|
6450
|
-
description:
|
|
6789
|
+
description: |-
|
|
6451
6790
|
Create a manually managed crypto asset.<br><br>
|
|
6452
|
-
|
|
6453
|
-
If `display_name` is `null`, clients may derive one from
|
|
6454
|
-
`institution_name` + `name`.
|
|
6791
|
+
If `display_name` is `null`, clients may derive one from `institution_name` + `name`.
|
|
6455
6792
|
operationId: createCryptoManual
|
|
6456
6793
|
requestBody:
|
|
6457
6794
|
required: true
|
|
@@ -6536,7 +6873,8 @@ paths:
|
|
|
6536
6873
|
tags:
|
|
6537
6874
|
- crypto-manual
|
|
6538
6875
|
summary: Get a single manual crypto balance
|
|
6539
|
-
description:
|
|
6876
|
+
description: |-
|
|
6877
|
+
Retrieve a single manually managed crypto balance by ID.
|
|
6540
6878
|
operationId: getCryptoManualById
|
|
6541
6879
|
parameters:
|
|
6542
6880
|
- name: id
|
|
@@ -6604,11 +6942,9 @@ paths:
|
|
|
6604
6942
|
tags:
|
|
6605
6943
|
- crypto-manual
|
|
6606
6944
|
summary: Update a manual crypto balance
|
|
6607
|
-
description:
|
|
6945
|
+
description: |-
|
|
6608
6946
|
Modify a manually managed crypto balance.<br><br>
|
|
6609
|
-
|
|
6610
|
-
You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties
|
|
6611
|
-
are accepted according to the `x-updatable` metadata in the update schema.
|
|
6947
|
+
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.
|
|
6612
6948
|
operationId: updateCryptoManual
|
|
6613
6949
|
parameters:
|
|
6614
6950
|
- name: id
|
|
@@ -6705,10 +7041,8 @@ paths:
|
|
|
6705
7041
|
tags:
|
|
6706
7042
|
- crypto-manual
|
|
6707
7043
|
summary: Delete a manual crypto balance
|
|
6708
|
-
description:
|
|
6709
|
-
this crypto asset has a balance history, and you do not explicitly set
|
|
6710
|
-
the query parameter`keep_history`, a 422 response will be returned
|
|
6711
|
-
requesting you to explicitly set `keep_history` to `true` or `false`.
|
|
7044
|
+
description: |-
|
|
7045
|
+
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`.
|
|
6712
7046
|
operationId: deleteCryptoManual
|
|
6713
7047
|
parameters:
|
|
6714
7048
|
- name: id
|
|
@@ -6773,8 +7107,8 @@ paths:
|
|
|
6773
7107
|
tags:
|
|
6774
7108
|
- crypto-synced
|
|
6775
7109
|
summary: Get all synced crypto accounts
|
|
6776
|
-
description:
|
|
6777
|
-
associated with the user's account.
|
|
7110
|
+
description: |-
|
|
7111
|
+
Retrieves all synced crypto accounts associated with the user's account.
|
|
6778
7112
|
operationId: getAllCryptoSynced
|
|
6779
7113
|
responses:
|
|
6780
7114
|
"200":
|
|
@@ -6836,8 +7170,8 @@ paths:
|
|
|
6836
7170
|
tags:
|
|
6837
7171
|
- crypto-synced
|
|
6838
7172
|
summary: Get a single synced crypto account
|
|
6839
|
-
description:
|
|
6840
|
-
for the specified synced crypto account ID.
|
|
7173
|
+
description: |-
|
|
7174
|
+
Retrieves the synced crypto account and all nested balances for the specified synced crypto account ID.
|
|
6841
7175
|
operationId: getCryptoSyncedById
|
|
6842
7176
|
parameters:
|
|
6843
7177
|
- name: id
|
|
@@ -6917,8 +7251,8 @@ paths:
|
|
|
6917
7251
|
tags:
|
|
6918
7252
|
- crypto-synced
|
|
6919
7253
|
summary: Get a synced crypto balance by symbol
|
|
6920
|
-
description:
|
|
6921
|
-
account using the crypto symbol.
|
|
7254
|
+
description: |-
|
|
7255
|
+
Retrieves a single balance from the specified synced crypto account using the crypto symbol.
|
|
6922
7256
|
operationId: getCryptoSyncedBalanceBySymbol
|
|
6923
7257
|
parameters:
|
|
6924
7258
|
- name: id
|
|
@@ -6997,8 +7331,8 @@ paths:
|
|
|
6997
7331
|
tags:
|
|
6998
7332
|
- crypto-synced
|
|
6999
7333
|
summary: Refresh balances for a synced crypto account
|
|
7000
|
-
description:
|
|
7001
|
-
account. Returns the refreshed synced crypto account.
|
|
7334
|
+
description: |-
|
|
7335
|
+
Trigger a balance refresh for the specified synced crypto account. Returns the refreshed synced crypto account.
|
|
7002
7336
|
operationId: refreshCryptoSynced
|
|
7003
7337
|
parameters:
|
|
7004
7338
|
- name: id
|
|
@@ -7067,51 +7401,55 @@ paths:
|
|
|
7067
7401
|
tags:
|
|
7068
7402
|
- balance_history
|
|
7069
7403
|
summary: Get balance history
|
|
7070
|
-
description:
|
|
7071
|
-
Retrieve
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
|
|
7077
|
-
|
|
7078
|
-
|
|
7079
|
-
|
|
7080
|
-
`
|
|
7081
|
-
|
|
7082
|
-
stored entries when no range is provided.<br><br>
|
|
7083
|
-
|
|
7084
|
-
Historical entries for accounts that have been deleted may still
|
|
7085
|
-
be returned. These entries use `source.type: deleted` and include
|
|
7086
|
-
`deleted_account_id`, archived display fields, and account metadata on the
|
|
7087
|
-
`source` object.
|
|
7404
|
+
description: |-
|
|
7405
|
+
Retrieve monthly balance history for all account sources.<br><br>
|
|
7406
|
+
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>
|
|
7407
|
+
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>
|
|
7408
|
+
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>
|
|
7409
|
+
Each balance entry has a `type`:<br>
|
|
7410
|
+
- `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>
|
|
7411
|
+
- `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>
|
|
7412
|
+
- `manual`: `source.manual_account_id` with [GET /manual_accounts/{id}](#tag/manual-accounts/GET/manual_accounts/{id})<br>
|
|
7413
|
+
- `plaid`: `source.plaid_account_id` with [GET /plaid_accounts/{id}](#tag/plaid-accounts/GET/plaid_accounts/{id})<br>
|
|
7414
|
+
- `crypto_manual`: `source.crypto_manual_id` with [GET /crypto/manual/{id}](#tag/crypto-manual/GET/crypto/manual/{id})<br>
|
|
7415
|
+
- `crypto_synced`: `source.crypto_synced_id` and `source.symbol` with [GET /crypto/synced/{id}/{symbol}](#tag/crypto-synced/GET/crypto/synced/{id}/{symbol})
|
|
7088
7416
|
operationId: getBalanceHistory
|
|
7089
7417
|
parameters:
|
|
7090
|
-
- name:
|
|
7418
|
+
- name: start_month
|
|
7091
7419
|
in: query
|
|
7092
|
-
description:
|
|
7420
|
+
description: >-
|
|
7421
|
+
Optional start of the requested history range as a calendar month in
|
|
7422
|
+
YYYY-MM format (for example `2026-06`). If set, `end_month` is also
|
|
7423
|
+
required. The range is inclusive. `start_month` must not be in the
|
|
7424
|
+
future. A full date such as `2026-06-01` is invalid.
|
|
7093
7425
|
required: false
|
|
7094
7426
|
schema:
|
|
7095
7427
|
type: string
|
|
7096
|
-
|
|
7428
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7097
7429
|
examples:
|
|
7098
7430
|
range start:
|
|
7099
|
-
summary: Start
|
|
7100
|
-
value: "2026-01
|
|
7101
|
-
- name:
|
|
7431
|
+
summary: Start month
|
|
7432
|
+
value: "2026-01"
|
|
7433
|
+
- name: end_month
|
|
7102
7434
|
in: query
|
|
7103
|
-
description:
|
|
7435
|
+
description: >-
|
|
7436
|
+
Optional end of the requested history range as a calendar month in
|
|
7437
|
+
YYYY-MM format (for example `2026-06`). If set, `start_month` is also
|
|
7438
|
+
required. The range is inclusive. `end_month` may not be earlier than
|
|
7439
|
+
`start_month` and must not be in the future. A full date such as
|
|
7440
|
+
`2026-06-01` is invalid. For a single month, set this to the same
|
|
7441
|
+
value as `start_month`.
|
|
7104
7442
|
required: false
|
|
7105
7443
|
schema:
|
|
7106
7444
|
type: string
|
|
7107
|
-
|
|
7445
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7108
7446
|
examples:
|
|
7109
7447
|
range end:
|
|
7110
|
-
summary: End
|
|
7111
|
-
value: "2026-03
|
|
7448
|
+
summary: End month
|
|
7449
|
+
value: "2026-03"
|
|
7112
7450
|
responses:
|
|
7113
7451
|
"200":
|
|
7114
|
-
description:
|
|
7452
|
+
description: Monthly balance history for the requested month range
|
|
7115
7453
|
content:
|
|
7116
7454
|
application/json:
|
|
7117
7455
|
schema:
|
|
@@ -7124,14 +7462,16 @@ paths:
|
|
|
7124
7462
|
type: manual
|
|
7125
7463
|
manual_account_id: 119807
|
|
7126
7464
|
balances:
|
|
7127
|
-
-
|
|
7128
|
-
|
|
7465
|
+
- type: historical
|
|
7466
|
+
id: 101
|
|
7467
|
+
month: "2026-01"
|
|
7129
7468
|
balance: "41000.0000"
|
|
7130
7469
|
currency: usd
|
|
7131
7470
|
to_base: 41000
|
|
7132
7471
|
crypto_balance: null
|
|
7133
|
-
-
|
|
7134
|
-
|
|
7472
|
+
- type: historical
|
|
7473
|
+
id: 102
|
|
7474
|
+
month: "2026-02"
|
|
7135
7475
|
balance: "41211.8000"
|
|
7136
7476
|
currency: usd
|
|
7137
7477
|
to_base: 41211.8
|
|
@@ -7140,8 +7480,9 @@ paths:
|
|
|
7140
7480
|
type: plaid
|
|
7141
7481
|
plaid_account_id: 119808
|
|
7142
7482
|
balances:
|
|
7143
|
-
-
|
|
7144
|
-
|
|
7483
|
+
- type: historical
|
|
7484
|
+
id: 103
|
|
7485
|
+
month: "2026-01"
|
|
7145
7486
|
balance: "5498.2800"
|
|
7146
7487
|
currency: usd
|
|
7147
7488
|
to_base: 5498.28
|
|
@@ -7151,8 +7492,9 @@ paths:
|
|
|
7151
7492
|
crypto_manual_id: 22001
|
|
7152
7493
|
symbol: btc
|
|
7153
7494
|
balances:
|
|
7154
|
-
-
|
|
7155
|
-
|
|
7495
|
+
- type: historical
|
|
7496
|
+
id: 104
|
|
7497
|
+
month: "2026-01"
|
|
7156
7498
|
balance: "53124.7200"
|
|
7157
7499
|
currency: usd
|
|
7158
7500
|
to_base: 53124.72
|
|
@@ -7162,8 +7504,9 @@ paths:
|
|
|
7162
7504
|
crypto_synced_id: 33004
|
|
7163
7505
|
symbol: btc
|
|
7164
7506
|
balances:
|
|
7165
|
-
-
|
|
7166
|
-
|
|
7507
|
+
- type: historical
|
|
7508
|
+
id: 105
|
|
7509
|
+
month: "2026-01"
|
|
7167
7510
|
balance: "6231.2800"
|
|
7168
7511
|
currency: usd
|
|
7169
7512
|
to_base: 6231.28
|
|
@@ -7179,12 +7522,34 @@ paths:
|
|
|
7179
7522
|
mask: "1234"
|
|
7180
7523
|
symbol: null
|
|
7181
7524
|
balances:
|
|
7182
|
-
-
|
|
7183
|
-
|
|
7525
|
+
- type: historical
|
|
7526
|
+
id: 106
|
|
7527
|
+
month: "2026-01"
|
|
7184
7528
|
balance: "1250.0000"
|
|
7185
7529
|
currency: usd
|
|
7186
7530
|
to_base: 1250
|
|
7187
7531
|
crypto_balance: null
|
|
7532
|
+
historical and current:
|
|
7533
|
+
summary: Historical month plus ephemeral current month
|
|
7534
|
+
value:
|
|
7535
|
+
balance_history:
|
|
7536
|
+
- source:
|
|
7537
|
+
type: manual
|
|
7538
|
+
manual_account_id: 162003
|
|
7539
|
+
balances:
|
|
7540
|
+
- type: historical
|
|
7541
|
+
id: 7437356
|
|
7542
|
+
month: "2026-06"
|
|
7543
|
+
balance: "62.8"
|
|
7544
|
+
currency: usd
|
|
7545
|
+
to_base: 62.8
|
|
7546
|
+
crypto_balance: null
|
|
7547
|
+
- type: current
|
|
7548
|
+
month: "2026-07"
|
|
7549
|
+
balance: "71.2"
|
|
7550
|
+
currency: usd
|
|
7551
|
+
to_base: 71.2
|
|
7552
|
+
crypto_balance: null
|
|
7188
7553
|
manual account history:
|
|
7189
7554
|
value:
|
|
7190
7555
|
balance_history:
|
|
@@ -7192,14 +7557,16 @@ paths:
|
|
|
7192
7557
|
type: manual
|
|
7193
7558
|
manual_account_id: 119807
|
|
7194
7559
|
balances:
|
|
7195
|
-
-
|
|
7196
|
-
|
|
7560
|
+
- type: historical
|
|
7561
|
+
id: 201
|
|
7562
|
+
month: "2026-01"
|
|
7197
7563
|
balance: "41000.0000"
|
|
7198
7564
|
currency: usd
|
|
7199
7565
|
to_base: 41000
|
|
7200
7566
|
crypto_balance: null
|
|
7201
|
-
-
|
|
7202
|
-
|
|
7567
|
+
- type: historical
|
|
7568
|
+
id: 202
|
|
7569
|
+
month: "2026-02"
|
|
7203
7570
|
balance: "41211.8000"
|
|
7204
7571
|
currency: usd
|
|
7205
7572
|
to_base: 41211.8
|
|
@@ -7211,8 +7578,9 @@ paths:
|
|
|
7211
7578
|
type: plaid
|
|
7212
7579
|
plaid_account_id: 119808
|
|
7213
7580
|
balances:
|
|
7214
|
-
-
|
|
7215
|
-
|
|
7581
|
+
- type: historical
|
|
7582
|
+
id: 301
|
|
7583
|
+
month: "2026-02"
|
|
7216
7584
|
balance: "5498.2800"
|
|
7217
7585
|
currency: usd
|
|
7218
7586
|
to_base: 5498.28
|
|
@@ -7225,8 +7593,9 @@ paths:
|
|
|
7225
7593
|
crypto_synced_id: 33004
|
|
7226
7594
|
symbol: btc
|
|
7227
7595
|
balances:
|
|
7228
|
-
-
|
|
7229
|
-
|
|
7596
|
+
- type: historical
|
|
7597
|
+
id: 401
|
|
7598
|
+
month: "2026-02"
|
|
7230
7599
|
balance: "6231.2800"
|
|
7231
7600
|
currency: usd
|
|
7232
7601
|
to_base: 6231.28
|
|
@@ -7245,8 +7614,9 @@ paths:
|
|
|
7245
7614
|
mask: "1234"
|
|
7246
7615
|
symbol: null
|
|
7247
7616
|
balances:
|
|
7248
|
-
-
|
|
7249
|
-
|
|
7617
|
+
- type: historical
|
|
7618
|
+
id: 501
|
|
7619
|
+
month: "2026-01"
|
|
7250
7620
|
balance: "1250.0000"
|
|
7251
7621
|
currency: usd
|
|
7252
7622
|
to_base: 1250
|
|
@@ -7258,26 +7628,31 @@ paths:
|
|
|
7258
7628
|
schema:
|
|
7259
7629
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7260
7630
|
examples:
|
|
7261
|
-
missing paired
|
|
7631
|
+
missing paired month:
|
|
7262
7632
|
value:
|
|
7263
7633
|
message: Request Validation Failure
|
|
7264
7634
|
errors:
|
|
7265
|
-
- errMsg: "`
|
|
7635
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
7266
7636
|
invalid range:
|
|
7267
7637
|
value:
|
|
7268
7638
|
message: Request Validation Failure
|
|
7269
7639
|
errors:
|
|
7270
|
-
- errMsg: "`
|
|
7271
|
-
|
|
7640
|
+
- errMsg: "`end_month` may not be earlier than `start_month`."
|
|
7641
|
+
invalid month format:
|
|
7642
|
+
value:
|
|
7643
|
+
message: Invalid Request Parameters
|
|
7644
|
+
errors:
|
|
7645
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7646
|
+
future start month:
|
|
7272
7647
|
value:
|
|
7273
7648
|
message: Request Validation Failure
|
|
7274
7649
|
errors:
|
|
7275
|
-
- errMsg: "`
|
|
7276
|
-
future
|
|
7650
|
+
- errMsg: "`start_month` must not be in the future."
|
|
7651
|
+
future end month:
|
|
7277
7652
|
value:
|
|
7278
7653
|
message: Request Validation Failure
|
|
7279
7654
|
errors:
|
|
7280
|
-
- errMsg: "`
|
|
7655
|
+
- errMsg: "`end_month` must not be in the future."
|
|
7281
7656
|
"401":
|
|
7282
7657
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7283
7658
|
"429":
|
|
@@ -7289,23 +7664,16 @@ paths:
|
|
|
7289
7664
|
tags:
|
|
7290
7665
|
- balance_history
|
|
7291
7666
|
summary: Get balance history for an account
|
|
7292
|
-
description:
|
|
7293
|
-
Retrieve
|
|
7294
|
-
|
|
7295
|
-
|
|
7296
|
-
The `account_type` path parameter identifies the type of account and the
|
|
7297
|
-
`account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
7298
|
-
|
|
7299
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
7300
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
7301
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
7302
|
-
provided, all available history for the source is returned.
|
|
7667
|
+
description: |-
|
|
7668
|
+
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>
|
|
7669
|
+
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>
|
|
7670
|
+
`start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7303
7671
|
operationId: getBalanceHistoryForAccount
|
|
7304
7672
|
parameters:
|
|
7305
7673
|
- name: account_type
|
|
7306
7674
|
in: path
|
|
7307
7675
|
required: true
|
|
7308
|
-
description:
|
|
7676
|
+
description: Account family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7309
7677
|
schema:
|
|
7310
7678
|
type: string
|
|
7311
7679
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7316,23 +7684,27 @@ paths:
|
|
|
7316
7684
|
schema:
|
|
7317
7685
|
type: integer
|
|
7318
7686
|
format: int32
|
|
7319
|
-
- name:
|
|
7687
|
+
- name: start_month
|
|
7320
7688
|
in: query
|
|
7321
|
-
description:
|
|
7689
|
+
description: >-
|
|
7690
|
+
Optional. Same format and constraints as `start_month` on
|
|
7691
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7322
7692
|
required: false
|
|
7323
7693
|
schema:
|
|
7324
7694
|
type: string
|
|
7325
|
-
|
|
7326
|
-
- name:
|
|
7695
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7696
|
+
- name: end_month
|
|
7327
7697
|
in: query
|
|
7328
|
-
description:
|
|
7698
|
+
description: >-
|
|
7699
|
+
Optional. Same format and constraints as `end_month` on
|
|
7700
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7329
7701
|
required: false
|
|
7330
7702
|
schema:
|
|
7331
7703
|
type: string
|
|
7332
|
-
|
|
7704
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7333
7705
|
responses:
|
|
7334
7706
|
"200":
|
|
7335
|
-
description:
|
|
7707
|
+
description: Monthly balance history for the requested source
|
|
7336
7708
|
content:
|
|
7337
7709
|
application/json:
|
|
7338
7710
|
schema:
|
|
@@ -7345,14 +7717,16 @@ paths:
|
|
|
7345
7717
|
type: manual
|
|
7346
7718
|
manual_account_id: 119807
|
|
7347
7719
|
balances:
|
|
7348
|
-
-
|
|
7349
|
-
|
|
7720
|
+
- type: historical
|
|
7721
|
+
id: 201
|
|
7722
|
+
month: "2026-01"
|
|
7350
7723
|
balance: "41000.0000"
|
|
7351
7724
|
currency: usd
|
|
7352
7725
|
to_base: 41000
|
|
7353
7726
|
crypto_balance: null
|
|
7354
|
-
-
|
|
7355
|
-
|
|
7727
|
+
- type: historical
|
|
7728
|
+
id: 202
|
|
7729
|
+
month: "2026-02"
|
|
7356
7730
|
balance: "41211.8000"
|
|
7357
7731
|
currency: usd
|
|
7358
7732
|
to_base: 41211.8
|
|
@@ -7371,8 +7745,9 @@ paths:
|
|
|
7371
7745
|
mask: "1234"
|
|
7372
7746
|
symbol: null
|
|
7373
7747
|
balances:
|
|
7374
|
-
-
|
|
7375
|
-
|
|
7748
|
+
- type: historical
|
|
7749
|
+
id: 501
|
|
7750
|
+
month: "2026-01"
|
|
7376
7751
|
balance: "1250.0000"
|
|
7377
7752
|
currency: usd
|
|
7378
7753
|
to_base: 1250
|
|
@@ -7384,16 +7759,16 @@ paths:
|
|
|
7384
7759
|
schema:
|
|
7385
7760
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7386
7761
|
examples:
|
|
7387
|
-
missing paired
|
|
7762
|
+
missing paired month:
|
|
7388
7763
|
value:
|
|
7389
7764
|
message: Request Validation Failure
|
|
7390
7765
|
errors:
|
|
7391
|
-
- errMsg: "`
|
|
7392
|
-
invalid
|
|
7766
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
7767
|
+
invalid month format:
|
|
7393
7768
|
value:
|
|
7394
|
-
message: Request
|
|
7769
|
+
message: Invalid Request Parameters
|
|
7395
7770
|
errors:
|
|
7396
|
-
- errMsg: "
|
|
7771
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7397
7772
|
"401":
|
|
7398
7773
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7399
7774
|
"404":
|
|
@@ -7421,37 +7796,20 @@ paths:
|
|
|
7421
7796
|
tags:
|
|
7422
7797
|
- balance_history
|
|
7423
7798
|
summary: Upsert balance history for an account
|
|
7424
|
-
description:
|
|
7425
|
-
Upsert one or more historical balance entries for a single manual, Plaid,
|
|
7426
|
-
|
|
7427
|
-
|
|
7428
|
-
|
|
7429
|
-
`
|
|
7430
|
-
|
|
7431
|
-
|
|
7432
|
-
a `date` and `balance` value.<br><br>
|
|
7433
|
-
|
|
7434
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
7435
|
-
a month and must be in a past month.<br><br>
|
|
7436
|
-
|
|
7437
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
7438
|
-
to the account currency for manual/Plaid accounts, or the user's primary
|
|
7439
|
-
currency for crypto/deleted accounts.<br><br>
|
|
7440
|
-
|
|
7441
|
-
`symbol` may only be set when `account_type` is `crypto_manual` or
|
|
7442
|
-
`crypto_synced`. It is optional for `crypto_manual` accounts and tolerated
|
|
7443
|
-
for `deleted` accounts.<br><br>
|
|
7444
|
-
|
|
7445
|
-
`crypto_balance` may be provided for `crypto_manual`, `crypto_synced`, and
|
|
7446
|
-
`deleted` accounts, and is invalid for `manual` or `plaid` accounts.<br><br>
|
|
7447
|
-
|
|
7448
|
-
The response contains only the balance entries that were submitted in this request.
|
|
7799
|
+
description: |-
|
|
7800
|
+
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>
|
|
7801
|
+
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>
|
|
7802
|
+
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>
|
|
7803
|
+
`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>
|
|
7804
|
+
`symbol` may be set for `crypto_manual` (optional) and `deleted` (tolerated) accounts. Do not provide it for `manual` or `plaid` accounts.<br><br>
|
|
7805
|
+
`crypto_balance` may be provided for `crypto_manual` and `deleted` accounts. It is invalid for `manual` or `plaid` accounts.<br><br>
|
|
7806
|
+
The response contains only the `type: historical` balance entries that were submitted in this request.
|
|
7449
7807
|
operationId: upsertBalanceHistoryForAccount
|
|
7450
7808
|
parameters:
|
|
7451
7809
|
- name: account_type
|
|
7452
7810
|
in: path
|
|
7453
7811
|
required: true
|
|
7454
|
-
description:
|
|
7812
|
+
description: Account family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7455
7813
|
schema:
|
|
7456
7814
|
type: string
|
|
7457
7815
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7472,21 +7830,21 @@ paths:
|
|
|
7472
7830
|
manual account bulk upsert:
|
|
7473
7831
|
value:
|
|
7474
7832
|
balances:
|
|
7475
|
-
-
|
|
7833
|
+
- month: "2026-03"
|
|
7476
7834
|
balance: "41500.0000"
|
|
7477
|
-
-
|
|
7835
|
+
- month: "2026-04"
|
|
7478
7836
|
balance: "41625.5000"
|
|
7479
7837
|
crypto manual balance with symbol:
|
|
7480
7838
|
value:
|
|
7481
7839
|
balances:
|
|
7482
|
-
-
|
|
7840
|
+
- month: "2026-03"
|
|
7483
7841
|
balance: "56011.1200"
|
|
7484
7842
|
symbol: btc
|
|
7485
7843
|
crypto_balance: "0.852341920145782301"
|
|
7486
7844
|
deleted account bulk upsert:
|
|
7487
7845
|
value:
|
|
7488
7846
|
balances:
|
|
7489
|
-
-
|
|
7847
|
+
- month: "2026-03"
|
|
7490
7848
|
symbol: btc
|
|
7491
7849
|
crypto_balance: "0.020000000000000000"
|
|
7492
7850
|
currency: usd
|
|
@@ -7495,55 +7853,59 @@ paths:
|
|
|
7495
7853
|
value:
|
|
7496
7854
|
balances:
|
|
7497
7855
|
- id: 601
|
|
7498
|
-
|
|
7856
|
+
month: "2026-03"
|
|
7499
7857
|
balance: "41500.0000"
|
|
7500
7858
|
currency: usd
|
|
7501
7859
|
to_base: 41500
|
|
7502
7860
|
crypto_balance: null
|
|
7503
7861
|
responses:
|
|
7504
7862
|
"200":
|
|
7505
|
-
description:
|
|
7506
|
-
|
|
7863
|
+
description: >-
|
|
7864
|
+
Returns only the `type: historical` entries modified by this request.
|
|
7865
|
+
Other historical entries for the account are omitted from `balances`.
|
|
7507
7866
|
content:
|
|
7508
7867
|
application/json:
|
|
7509
7868
|
schema:
|
|
7510
7869
|
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7511
7870
|
examples:
|
|
7512
7871
|
manual account bulk upsert:
|
|
7513
|
-
summary: Two upserted
|
|
7872
|
+
summary: Two upserted entries returned (not full account history)
|
|
7514
7873
|
value:
|
|
7515
7874
|
source:
|
|
7516
7875
|
type: manual
|
|
7517
7876
|
manual_account_id: 119807
|
|
7518
7877
|
balances:
|
|
7519
|
-
-
|
|
7520
|
-
|
|
7878
|
+
- type: historical
|
|
7879
|
+
id: 601
|
|
7880
|
+
month: "2026-03"
|
|
7521
7881
|
balance: "41500.0000"
|
|
7522
7882
|
currency: usd
|
|
7523
7883
|
to_base: 41500
|
|
7524
7884
|
crypto_balance: null
|
|
7525
|
-
-
|
|
7526
|
-
|
|
7885
|
+
- type: historical
|
|
7886
|
+
id: 602
|
|
7887
|
+
month: "2026-04"
|
|
7527
7888
|
balance: "41625.5000"
|
|
7528
7889
|
currency: usd
|
|
7529
7890
|
to_base: 41625.5
|
|
7530
7891
|
crypto_balance: null
|
|
7531
7892
|
crypto manual balance with symbol:
|
|
7532
|
-
summary: Single upserted
|
|
7893
|
+
summary: Single upserted entry returned
|
|
7533
7894
|
value:
|
|
7534
7895
|
source:
|
|
7535
7896
|
type: crypto_manual
|
|
7536
7897
|
crypto_manual_id: 22001
|
|
7537
7898
|
symbol: btc
|
|
7538
7899
|
balances:
|
|
7539
|
-
-
|
|
7540
|
-
|
|
7900
|
+
- type: historical
|
|
7901
|
+
id: 603
|
|
7902
|
+
month: "2026-03"
|
|
7541
7903
|
balance: "56011.1200"
|
|
7542
7904
|
currency: usd
|
|
7543
7905
|
to_base: 56011.12
|
|
7544
7906
|
crypto_balance: "0.852341920145782301"
|
|
7545
7907
|
deleted account bulk upsert:
|
|
7546
|
-
summary: Single upserted
|
|
7908
|
+
summary: Single upserted entry returned
|
|
7547
7909
|
value:
|
|
7548
7910
|
source:
|
|
7549
7911
|
type: deleted
|
|
@@ -7556,15 +7918,17 @@ paths:
|
|
|
7556
7918
|
mask: "1234"
|
|
7557
7919
|
symbol: btc
|
|
7558
7920
|
balances:
|
|
7559
|
-
-
|
|
7560
|
-
|
|
7921
|
+
- type: historical
|
|
7922
|
+
id: 504
|
|
7923
|
+
month: "2026-03"
|
|
7561
7924
|
balance: "1255"
|
|
7562
7925
|
currency: usd
|
|
7563
7926
|
to_base: 1255
|
|
7564
7927
|
crypto_balance: "0.020000000000000000"
|
|
7565
7928
|
"400":
|
|
7566
|
-
description:
|
|
7567
|
-
`balances` fails validation
|
|
7929
|
+
description: >-
|
|
7930
|
+
Bad Request. If any entry in `balances` fails validation, the entire
|
|
7931
|
+
request is rejected and no entries are updated.
|
|
7568
7932
|
content:
|
|
7569
7933
|
application/json:
|
|
7570
7934
|
schema:
|
|
@@ -7585,30 +7949,34 @@ paths:
|
|
|
7585
7949
|
message: Invalid Request Body
|
|
7586
7950
|
errors:
|
|
7587
7951
|
- errMsg: "Invalid property 'foo' in request body."
|
|
7588
|
-
invalid
|
|
7952
|
+
invalid month format:
|
|
7953
|
+
value:
|
|
7954
|
+
message: Invalid Request Body
|
|
7955
|
+
errors:
|
|
7956
|
+
- errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7957
|
+
current month:
|
|
7589
7958
|
value:
|
|
7590
7959
|
message: Request Validation Failure
|
|
7591
7960
|
errors:
|
|
7592
|
-
- errMsg: "`
|
|
7961
|
+
- errMsg: "`month` must not be the current month."
|
|
7593
7962
|
request_balances_index: 0
|
|
7594
|
-
|
|
7595
|
-
future date:
|
|
7963
|
+
future month:
|
|
7596
7964
|
value:
|
|
7597
7965
|
message: Request Validation Failure
|
|
7598
7966
|
errors:
|
|
7599
|
-
- errMsg: "`
|
|
7967
|
+
- errMsg: "`month` must not be in the future."
|
|
7600
7968
|
request_balances_index: 1
|
|
7601
7969
|
crypto balance not allowed:
|
|
7602
7970
|
value:
|
|
7603
7971
|
message: Request Validation Failure
|
|
7604
7972
|
errors:
|
|
7605
|
-
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual
|
|
7973
|
+
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7606
7974
|
request_balances_index: 0
|
|
7607
|
-
invalid
|
|
7975
|
+
invalid entry in bulk request:
|
|
7608
7976
|
value:
|
|
7609
7977
|
message: Request Validation Failure
|
|
7610
7978
|
errors:
|
|
7611
|
-
- errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `
|
|
7979
|
+
- errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7612
7980
|
request_balances_index: 1
|
|
7613
7981
|
"401":
|
|
7614
7982
|
$ref: "#/components/responses/unauthorizedToken"
|
|
@@ -7630,15 +7998,14 @@ paths:
|
|
|
7630
7998
|
tags:
|
|
7631
7999
|
- balance_history
|
|
7632
8000
|
summary: Delete all balance history for an account
|
|
7633
|
-
description:
|
|
7634
|
-
Delete all historical balance entries for a single manual, Plaid,
|
|
7635
|
-
manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.
|
|
8001
|
+
description: |-
|
|
8002
|
+
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}).
|
|
7636
8003
|
operationId: deleteBalanceHistoryForAccount
|
|
7637
8004
|
parameters:
|
|
7638
8005
|
- name: account_type
|
|
7639
8006
|
in: path
|
|
7640
8007
|
required: true
|
|
7641
|
-
description:
|
|
8008
|
+
description: Account family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7642
8009
|
schema:
|
|
7643
8010
|
type: string
|
|
7644
8011
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7675,16 +8042,10 @@ paths:
|
|
|
7675
8042
|
tags:
|
|
7676
8043
|
- balance_history
|
|
7677
8044
|
summary: Get balance history for a synced crypto symbol
|
|
7678
|
-
description:
|
|
7679
|
-
Retrieve
|
|
7680
|
-
|
|
7681
|
-
|
|
7682
|
-
to select one balance stream within that synced crypto account.<br><br>
|
|
7683
|
-
|
|
7684
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
7685
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
7686
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
7687
|
-
provided, all available history for the symbol stream is returned.
|
|
8045
|
+
description: |-
|
|
8046
|
+
Retrieve monthly balance history for a single synced crypto symbol stream.<br><br>
|
|
8047
|
+
The path selects one balance stream with a synced crypto account id and `symbol`.<br><br>
|
|
8048
|
+
`start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7688
8049
|
operationId: getBalanceHistoryForCryptoSynced
|
|
7689
8050
|
parameters:
|
|
7690
8051
|
- name: account_id
|
|
@@ -7702,23 +8063,27 @@ paths:
|
|
|
7702
8063
|
type: string
|
|
7703
8064
|
minLength: 1
|
|
7704
8065
|
maxLength: 25
|
|
7705
|
-
- name:
|
|
8066
|
+
- name: start_month
|
|
7706
8067
|
in: query
|
|
7707
|
-
description:
|
|
8068
|
+
description: >-
|
|
8069
|
+
Optional. Same format and constraints as `start_month` on
|
|
8070
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7708
8071
|
required: false
|
|
7709
8072
|
schema:
|
|
7710
8073
|
type: string
|
|
7711
|
-
|
|
7712
|
-
- name:
|
|
8074
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
8075
|
+
- name: end_month
|
|
7713
8076
|
in: query
|
|
7714
|
-
description:
|
|
8077
|
+
description: >-
|
|
8078
|
+
Optional. Same format and constraints as `end_month` on
|
|
8079
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7715
8080
|
required: false
|
|
7716
8081
|
schema:
|
|
7717
8082
|
type: string
|
|
7718
|
-
|
|
8083
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7719
8084
|
responses:
|
|
7720
8085
|
"200":
|
|
7721
|
-
description:
|
|
8086
|
+
description: Monthly balance history for the synced crypto symbol stream
|
|
7722
8087
|
content:
|
|
7723
8088
|
application/json:
|
|
7724
8089
|
schema:
|
|
@@ -7730,8 +8095,9 @@ paths:
|
|
|
7730
8095
|
crypto_synced_id: 33004
|
|
7731
8096
|
symbol: btc
|
|
7732
8097
|
balances:
|
|
7733
|
-
-
|
|
7734
|
-
|
|
8098
|
+
- type: historical
|
|
8099
|
+
id: 401
|
|
8100
|
+
month: "2026-02"
|
|
7735
8101
|
balance: "6231.2800"
|
|
7736
8102
|
currency: usd
|
|
7737
8103
|
to_base: 6231.28
|
|
@@ -7743,16 +8109,16 @@ paths:
|
|
|
7743
8109
|
schema:
|
|
7744
8110
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7745
8111
|
examples:
|
|
7746
|
-
missing paired
|
|
8112
|
+
missing paired month:
|
|
7747
8113
|
value:
|
|
7748
8114
|
message: Request Validation Failure
|
|
7749
8115
|
errors:
|
|
7750
|
-
- errMsg: "`
|
|
7751
|
-
invalid
|
|
8116
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
8117
|
+
invalid month format:
|
|
7752
8118
|
value:
|
|
7753
|
-
message: Request
|
|
8119
|
+
message: Invalid Request Parameters
|
|
7754
8120
|
errors:
|
|
7755
|
-
- errMsg: "
|
|
8121
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7756
8122
|
"401":
|
|
7757
8123
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7758
8124
|
"404":
|
|
@@ -7780,28 +8146,14 @@ paths:
|
|
|
7780
8146
|
tags:
|
|
7781
8147
|
- balance_history
|
|
7782
8148
|
summary: Upsert balance history for a synced crypto symbol
|
|
7783
|
-
description:
|
|
7784
|
-
Upsert one or more historical balance entries for a single synced crypto
|
|
7785
|
-
symbol stream.<br><br>
|
|
7786
|
-
|
|
8149
|
+
description: |-
|
|
8150
|
+
Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7787
8151
|
The path identifies both the synced crypto account and the symbol being updated.<br><br>
|
|
7788
|
-
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
7792
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
7793
|
-
a month and must be in a past month.<br><br>
|
|
7794
|
-
|
|
7795
|
-
The request body may include an optional `symbol` on each balance entry. If
|
|
7796
|
-
provided, it must match the `symbol` path parameter. Omit `symbol` to use
|
|
7797
|
-
the path value.<br><br>
|
|
7798
|
-
|
|
7799
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
7800
|
-
to the user's primary currency for synced crypto balances.<br><br>
|
|
7801
|
-
|
|
8152
|
+
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>
|
|
8153
|
+
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>
|
|
8154
|
+
`currency` may be provided for any balance entry. If omitted, it defaults to the user's primary currency for synced crypto balances.<br><br>
|
|
7802
8155
|
`crypto_balance` may be provided for synced crypto balances.<br><br>
|
|
7803
|
-
|
|
7804
|
-
The response contains only the balance entries that were submitted in this request.
|
|
8156
|
+
The response contains only the `type: historical` balance entries that were submitted in this request.
|
|
7805
8157
|
operationId: upsertBalanceHistoryForCryptoSynced
|
|
7806
8158
|
parameters:
|
|
7807
8159
|
- name: account_id
|
|
@@ -7829,44 +8181,49 @@ paths:
|
|
|
7829
8181
|
synced crypto bulk upsert:
|
|
7830
8182
|
value:
|
|
7831
8183
|
balances:
|
|
7832
|
-
-
|
|
8184
|
+
- month: "2026-03"
|
|
7833
8185
|
balance: "6400.0000"
|
|
7834
8186
|
crypto_balance: "0.100020003000400050"
|
|
7835
|
-
-
|
|
8187
|
+
- month: "2026-04"
|
|
7836
8188
|
balance: "6500.0000"
|
|
7837
8189
|
crypto_balance: "0.100020003000400050"
|
|
7838
8190
|
responses:
|
|
7839
8191
|
"200":
|
|
7840
|
-
description:
|
|
7841
|
-
|
|
8192
|
+
description: >-
|
|
8193
|
+
Returns only the `type: historical` entries modified by this request.
|
|
8194
|
+
Other historical entries for the symbol stream are omitted from
|
|
8195
|
+
`balances`.
|
|
7842
8196
|
content:
|
|
7843
8197
|
application/json:
|
|
7844
8198
|
schema:
|
|
7845
8199
|
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7846
8200
|
examples:
|
|
7847
8201
|
synced crypto bulk upsert:
|
|
7848
|
-
summary: Two upserted
|
|
8202
|
+
summary: Two upserted entries returned (not full symbol history)
|
|
7849
8203
|
value:
|
|
7850
8204
|
source:
|
|
7851
8205
|
type: crypto_synced
|
|
7852
8206
|
crypto_synced_id: 33004
|
|
7853
8207
|
symbol: btc
|
|
7854
8208
|
balances:
|
|
7855
|
-
-
|
|
7856
|
-
|
|
8209
|
+
- type: historical
|
|
8210
|
+
id: 604
|
|
8211
|
+
month: "2026-03"
|
|
7857
8212
|
balance: "6400.0000"
|
|
7858
8213
|
currency: usd
|
|
7859
8214
|
to_base: 6400
|
|
7860
8215
|
crypto_balance: "0.100020003000400050"
|
|
7861
|
-
-
|
|
7862
|
-
|
|
8216
|
+
- type: historical
|
|
8217
|
+
id: 605
|
|
8218
|
+
month: "2026-04"
|
|
7863
8219
|
balance: "6500.0000"
|
|
7864
8220
|
currency: usd
|
|
7865
8221
|
to_base: 6500
|
|
7866
8222
|
crypto_balance: "0.100020003000400050"
|
|
7867
8223
|
"400":
|
|
7868
|
-
description:
|
|
7869
|
-
`balances` fails validation
|
|
8224
|
+
description: >-
|
|
8225
|
+
Bad Request. If any entry in `balances` fails validation, the entire
|
|
8226
|
+
request is rejected and no entries are updated.
|
|
7870
8227
|
content:
|
|
7871
8228
|
application/json:
|
|
7872
8229
|
schema:
|
|
@@ -7882,17 +8239,22 @@ paths:
|
|
|
7882
8239
|
message: Invalid Request Body
|
|
7883
8240
|
errors:
|
|
7884
8241
|
- errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
7885
|
-
invalid
|
|
8242
|
+
invalid month format:
|
|
8243
|
+
value:
|
|
8244
|
+
message: Invalid Request Body
|
|
8245
|
+
errors:
|
|
8246
|
+
- errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
8247
|
+
current month:
|
|
7886
8248
|
value:
|
|
7887
8249
|
message: Request Validation Failure
|
|
7888
8250
|
errors:
|
|
7889
|
-
- errMsg: "`
|
|
8251
|
+
- errMsg: "`month` must not be the current month."
|
|
7890
8252
|
request_balances_index: 0
|
|
7891
|
-
future
|
|
8253
|
+
future month:
|
|
7892
8254
|
value:
|
|
7893
8255
|
message: Request Validation Failure
|
|
7894
8256
|
errors:
|
|
7895
|
-
- errMsg: "`
|
|
8257
|
+
- errMsg: "`month` must not be in the future."
|
|
7896
8258
|
request_balances_index: 1
|
|
7897
8259
|
symbol mismatch:
|
|
7898
8260
|
value:
|
|
@@ -7900,9 +8262,9 @@ paths:
|
|
|
7900
8262
|
errors:
|
|
7901
8263
|
- errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
|
|
7902
8264
|
request_balances_index: 0
|
|
7903
|
-
invalid
|
|
8265
|
+
invalid entry in bulk request:
|
|
7904
8266
|
value:
|
|
7905
|
-
message: Request
|
|
8267
|
+
message: Invalid Request Body
|
|
7906
8268
|
errors:
|
|
7907
8269
|
- errMsg: "`balance` must be a valid numeric string or number."
|
|
7908
8270
|
request_balances_index: 1
|
|
@@ -7933,11 +8295,9 @@ paths:
|
|
|
7933
8295
|
tags:
|
|
7934
8296
|
- balance_history
|
|
7935
8297
|
summary: Delete all balance history for a synced crypto symbol
|
|
7936
|
-
description:
|
|
8298
|
+
description: |-
|
|
7937
8299
|
Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7938
|
-
|
|
7939
|
-
The path identifies both the synced crypto account and the symbol whose
|
|
7940
|
-
history should be deleted.
|
|
8300
|
+
The path identifies both the synced crypto account and the symbol whose history should be deleted.
|
|
7941
8301
|
operationId: deleteBalanceHistoryForCryptoSynced
|
|
7942
8302
|
parameters:
|
|
7943
8303
|
- name: account_id
|
|
@@ -7979,14 +8339,14 @@ paths:
|
|
|
7979
8339
|
tags:
|
|
7980
8340
|
- balance_history
|
|
7981
8341
|
summary: Delete a balance history entry
|
|
7982
|
-
description:
|
|
7983
|
-
Delete a single monthly balance history entry by its id.
|
|
8342
|
+
description: |-
|
|
8343
|
+
Delete a single stored (`type: historical`) monthly balance history entry by its id. Ephemeral `current` entries cannot be deleted this way.
|
|
7984
8344
|
operationId: deleteBalanceHistoryEntry
|
|
7985
8345
|
parameters:
|
|
7986
8346
|
- name: id
|
|
7987
8347
|
in: path
|
|
7988
8348
|
required: true
|
|
7989
|
-
description:
|
|
8349
|
+
description: Historical balance entry identifier to delete.
|
|
7990
8350
|
schema:
|
|
7991
8351
|
type: integer
|
|
7992
8352
|
format: int32
|
|
@@ -8000,7 +8360,7 @@ paths:
|
|
|
8000
8360
|
schema:
|
|
8001
8361
|
$ref: "#/components/schemas/errorResponseObject"
|
|
8002
8362
|
example:
|
|
8003
|
-
message:
|
|
8363
|
+
message: Invalid Path Parameters
|
|
8004
8364
|
errors:
|
|
8005
8365
|
- errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
|
|
8006
8366
|
"401":
|
|
@@ -8024,12 +8384,9 @@ paths:
|
|
|
8024
8384
|
tags:
|
|
8025
8385
|
- balance_history
|
|
8026
8386
|
summary: Update details for a deleted account
|
|
8027
|
-
description:
|
|
8387
|
+
description: |-
|
|
8028
8388
|
Update archived metadata for a deleted balance history source.<br><br>
|
|
8029
|
-
|
|
8030
|
-
Pass the `deleted` source id returned on `source.deleted_account_id`.
|
|
8031
|
-
This endpoint updates the stored deleted-source metadata used for all
|
|
8032
|
-
historical entries associated with that deleted source.
|
|
8389
|
+
Pass the `deleted_account_id` from a `source.type: deleted` entry. The update applies to all historical entries associated with that deleted source.
|
|
8033
8390
|
operationId: updateBalanceHistoryDetails
|
|
8034
8391
|
parameters:
|
|
8035
8392
|
- name: account_id
|
|
@@ -9103,19 +9460,19 @@ paths:
|
|
|
9103
9460
|
description: Sets the maximum number of transactions to return. If
|
|
9104
9461
|
more match the filter criteria, the response will include a
|
|
9105
9462
|
`has_more` attribute set to `true`. See
|
|
9106
|
-
[Pagination](https://
|
|
9463
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
9107
9464
|
- name: offset
|
|
9108
9465
|
in: query
|
|
9109
9466
|
schema:
|
|
9110
9467
|
type: integer
|
|
9111
9468
|
description: Sets the offset for the records returned. This is
|
|
9112
9469
|
typically set automatically in the header. See
|
|
9113
|
-
[Pagination](https://
|
|
9470
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
9114
9471
|
responses:
|
|
9115
9472
|
"200":
|
|
9116
9473
|
description: Returns an array of transactions. <br><br>The `has_more`
|
|
9117
9474
|
property is set to `true` if more transactions are available. See
|
|
9118
|
-
[Pagination](https://
|
|
9475
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
9119
9476
|
content:
|
|
9120
9477
|
application/json:
|
|
9121
9478
|
schema:
|
|
@@ -11339,9 +11696,8 @@ paths:
|
|
|
11339
11696
|
- transactions (files)
|
|
11340
11697
|
summary: Attach a file to a transaction
|
|
11341
11698
|
operationId: attachFileToTransaction
|
|
11342
|
-
description:
|
|
11343
|
-
Attaches a file to a transaction. The file must be less than 10MB in size.<br><br>
|
|
11344
|
-
The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
|
|
11699
|
+
description: |-
|
|
11700
|
+
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.
|
|
11345
11701
|
parameters:
|
|
11346
11702
|
- name: transaction_id
|
|
11347
11703
|
in: path
|
|
@@ -11424,8 +11780,8 @@ paths:
|
|
|
11424
11780
|
/transactions/attachments/{file_id}:
|
|
11425
11781
|
get:
|
|
11426
11782
|
summary: Get a url to download a file attachment
|
|
11427
|
-
description:
|
|
11428
|
-
attachment.
|
|
11783
|
+
description: |-
|
|
11784
|
+
Returns a signed url that can be used to download the file attachment.
|
|
11429
11785
|
operationId: getTransactionAttachmentUrl
|
|
11430
11786
|
tags:
|
|
11431
11787
|
- transactions (files)
|
|
@@ -12320,4 +12676,3 @@ paths:
|
|
|
12320
12676
|
|
|
12321
12677
|
security:
|
|
12322
12678
|
- bearerSecurity: []
|
|
12323
|
-
- cookieAuth: []
|