@lunch-money/v2-api-spec 2.11.0-preview.8 → 2.11.1-docs.1
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 +10 -73
- package/lunch-money-api-v2.yaml +1276 -375
- package/package.json +11 -5
- package/version-history.md +28 -19
- package/README.md.backup +0 -217
- package/update-urls.sh +0 -135
package/lunch-money-api-v2.yaml
CHANGED
|
@@ -2,55 +2,62 @@ 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.0** 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
|
|
39
42
|
license:
|
|
40
43
|
name: Apache 2.0
|
|
41
44
|
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
|
42
|
-
version: 2.11.
|
|
45
|
+
version: 2.11.1
|
|
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
|
-
description: View details and settings for the current user and account
|
|
55
|
+
description: View details and settings for the current user and account.<p>
|
|
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 budget account.
|
|
54
61
|
- name: categories
|
|
55
62
|
description: Work with categories
|
|
56
63
|
externalDocs:
|
|
@@ -77,7 +84,11 @@ tags:
|
|
|
77
84
|
description: Learn more about crypto assets
|
|
78
85
|
url: https://support.lunchmoney.app/setup/crypto
|
|
79
86
|
- name: balance_history
|
|
80
|
-
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.
|
|
81
92
|
- name: recurring_items
|
|
82
93
|
description: Work with recurring items
|
|
83
94
|
externalDocs:
|
|
@@ -113,8 +124,10 @@ tags:
|
|
|
113
124
|
description: Learn more about transactions
|
|
114
125
|
url: https://support.lunchmoney.app/finances/transactions
|
|
115
126
|
- name: budgets
|
|
116
|
-
description: View settings and modify budget amounts.<p> Use
|
|
117
|
-
[/
|
|
127
|
+
description: View settings and modify budget amounts.<p> Use
|
|
128
|
+
[/budgets/settings](#tag/budgets/GET/budgets/settings) to view budget
|
|
129
|
+
period settings.<p> Use the [/summary](#tag/summary) endpoint to view
|
|
130
|
+
the budget details performance.
|
|
118
131
|
externalDocs:
|
|
119
132
|
description: Learn more about budgets
|
|
120
133
|
url: https://support.lunchmoney.app/finances/budgets
|
|
@@ -142,12 +155,18 @@ components:
|
|
|
142
155
|
account_id:
|
|
143
156
|
type: integer
|
|
144
157
|
format: int64
|
|
145
|
-
description: Unique ID for the
|
|
158
|
+
description: Unique ID for the current budget account
|
|
146
159
|
budget_name:
|
|
147
160
|
type: string
|
|
148
|
-
description: Name of the
|
|
161
|
+
description: Name of the current budget account.<p> Also available
|
|
162
|
+
as `display_name` on
|
|
163
|
+
[/me/account/settings](#tag/me/GET/me/account/settings), which is
|
|
164
|
+
the preferred endpoint for reading and updating account settings.
|
|
149
165
|
primary_currency:
|
|
150
|
-
description: Primary currency
|
|
166
|
+
description: Primary currency for the current budget account.<p>
|
|
167
|
+
Also available on [/me/account/settings](#tag/me/GET/me/account/settings),
|
|
168
|
+
which is the preferred endpoint for reading and updating account
|
|
169
|
+
settings.
|
|
151
170
|
allOf:
|
|
152
171
|
- $ref: "#/components/schemas/currencyEnum"
|
|
153
172
|
api_key_label:
|
|
@@ -983,16 +1002,19 @@ components:
|
|
|
983
1002
|
example: Cold Wallet BTC
|
|
984
1003
|
display_name:
|
|
985
1004
|
type: string
|
|
1005
|
+
nullable: true
|
|
986
1006
|
minLength: 1
|
|
987
1007
|
maxLength: 45
|
|
988
|
-
description:
|
|
989
|
-
|
|
1008
|
+
description: Display name for the manual crypto asset. If omitted or
|
|
1009
|
+
`null`, clients may derive one from `institution_name` + `name`.
|
|
990
1010
|
example: Cold Storage
|
|
991
1011
|
institution_name:
|
|
992
1012
|
type: string
|
|
1013
|
+
nullable: true
|
|
993
1014
|
minLength: 1
|
|
994
1015
|
maxLength: 50
|
|
995
|
-
description:
|
|
1016
|
+
description: Institution or wallet provider display name. If omitted
|
|
1017
|
+
or `null`, no institution name is set.
|
|
996
1018
|
example: Ledger
|
|
997
1019
|
balance:
|
|
998
1020
|
oneOf:
|
|
@@ -1248,15 +1270,19 @@ components:
|
|
|
1248
1270
|
example: My Savings Account
|
|
1249
1271
|
institution_name:
|
|
1250
1272
|
type: string
|
|
1273
|
+
nullable: true
|
|
1251
1274
|
example: Bank of the West
|
|
1252
|
-
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.
|
|
1253
1277
|
minLength: 1
|
|
1254
1278
|
maxLength: 50
|
|
1255
1279
|
display_name:
|
|
1256
1280
|
type: string
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
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 budget
|
|
1285
|
+
account.
|
|
1260
1286
|
example: Savings
|
|
1261
1287
|
type:
|
|
1262
1288
|
description: The type of manual account
|
|
@@ -1264,8 +1290,10 @@ components:
|
|
|
1264
1290
|
- $ref: "#/components/schemas/accountTypeEnum"
|
|
1265
1291
|
subtype:
|
|
1266
1292
|
type: string
|
|
1267
|
-
|
|
1268
|
-
|
|
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.
|
|
1269
1297
|
minLength: 1
|
|
1270
1298
|
maxLength: 100
|
|
1271
1299
|
example: prepaid credit card
|
|
@@ -1639,7 +1667,7 @@ components:
|
|
|
1639
1667
|
type:
|
|
1640
1668
|
type: string
|
|
1641
1669
|
enum: [manual]
|
|
1642
|
-
description: Identifies this entry as belonging to a
|
|
1670
|
+
description: Identifies this entry as belonging to a manual account.
|
|
1643
1671
|
manual_account_id:
|
|
1644
1672
|
type: integer
|
|
1645
1673
|
format: int32
|
|
@@ -1668,14 +1696,14 @@ components:
|
|
|
1668
1696
|
|
|
1669
1697
|
balanceHistorySourceCryptoManual:
|
|
1670
1698
|
type: object
|
|
1671
|
-
description: Source information for a
|
|
1699
|
+
description: Source information for a manual cryptocurrency balance history entry.
|
|
1672
1700
|
additionalProperties: false
|
|
1673
1701
|
x-internal: true
|
|
1674
1702
|
properties:
|
|
1675
1703
|
type:
|
|
1676
1704
|
type: string
|
|
1677
1705
|
enum: [crypto_manual]
|
|
1678
|
-
description: Identifies this entry as belonging to a
|
|
1706
|
+
description: Identifies this entry as belonging to a manual crypto account.
|
|
1679
1707
|
crypto_manual_id:
|
|
1680
1708
|
type: integer
|
|
1681
1709
|
format: int32
|
|
@@ -1718,10 +1746,11 @@ components:
|
|
|
1718
1746
|
type: object
|
|
1719
1747
|
x-internal: true
|
|
1720
1748
|
description: >
|
|
1721
|
-
Source information for
|
|
1749
|
+
Source information for balance history whose account has since been deleted.
|
|
1722
1750
|
Historical balances are preserved when a user chooses to keep history on account deletion.
|
|
1723
1751
|
This object contains details that can be used to display the deleted account in the UI.
|
|
1724
|
-
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)
|
|
1725
1754
|
to update the archived source metadata.
|
|
1726
1755
|
additionalProperties: false
|
|
1727
1756
|
properties:
|
|
@@ -1752,11 +1781,11 @@ components:
|
|
|
1752
1781
|
subtype:
|
|
1753
1782
|
type: string
|
|
1754
1783
|
nullable: true
|
|
1755
|
-
description: Archived `subtype
|
|
1784
|
+
description: Archived `subtype` of the deleted account source
|
|
1756
1785
|
mask:
|
|
1757
1786
|
type: string
|
|
1758
1787
|
nullable: true
|
|
1759
|
-
description: Archived account `mask` for a deleted
|
|
1788
|
+
description: Archived account `mask` for a deleted Plaid account source
|
|
1760
1789
|
symbol:
|
|
1761
1790
|
type: string
|
|
1762
1791
|
nullable: true
|
|
@@ -1778,12 +1807,14 @@ components:
|
|
|
1778
1807
|
type: object
|
|
1779
1808
|
title: balance history for an account object
|
|
1780
1809
|
additionalProperties: false
|
|
1781
|
-
description:
|
|
1810
|
+
description: Monthly balance entries grouped under a single account source.
|
|
1782
1811
|
properties:
|
|
1783
1812
|
source:
|
|
1784
1813
|
description: >
|
|
1785
|
-
Identifies the account
|
|
1786
|
-
`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`).
|
|
1787
1818
|
oneOf:
|
|
1788
1819
|
- $ref: "#/components/schemas/balanceHistorySourceManual"
|
|
1789
1820
|
- $ref: "#/components/schemas/balanceHistorySourcePlaid"
|
|
@@ -1801,38 +1832,48 @@ components:
|
|
|
1801
1832
|
balances:
|
|
1802
1833
|
type: array
|
|
1803
1834
|
description: >
|
|
1804
|
-
Monthly balance
|
|
1805
|
-
|
|
1806
|
-
|
|
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.
|
|
1807
1840
|
items:
|
|
1808
|
-
$ref: "#/components/schemas/
|
|
1841
|
+
$ref: "#/components/schemas/balanceHistoryEntry"
|
|
1809
1842
|
required:
|
|
1810
1843
|
- source
|
|
1811
1844
|
- balances
|
|
1812
1845
|
|
|
1813
|
-
|
|
1846
|
+
historicalBalanceHistoryEntry:
|
|
1814
1847
|
type: object
|
|
1815
|
-
title: balance history entry
|
|
1848
|
+
title: historical balance history entry
|
|
1816
1849
|
additionalProperties: false
|
|
1817
1850
|
x-internal: true
|
|
1818
|
-
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`.
|
|
1819
1855
|
properties:
|
|
1856
|
+
type:
|
|
1857
|
+
type: string
|
|
1858
|
+
enum: [historical]
|
|
1859
|
+
description: Identifies this entry as a stored snapshot of a past month.
|
|
1820
1860
|
id:
|
|
1821
1861
|
type: integer
|
|
1822
1862
|
format: int32
|
|
1823
|
-
description: Unique identifier
|
|
1824
|
-
|
|
1863
|
+
description: Unique identifier for this historical balance entry.
|
|
1864
|
+
month:
|
|
1825
1865
|
type: string
|
|
1826
|
-
|
|
1827
|
-
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"
|
|
1828
1869
|
balance:
|
|
1829
1870
|
type: string
|
|
1830
1871
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1831
|
-
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.
|
|
1832
1873
|
currency:
|
|
1833
1874
|
allOf:
|
|
1834
1875
|
- $ref: "#/components/schemas/currencyEnum"
|
|
1835
|
-
description: Currency of
|
|
1876
|
+
description: Currency of `balance`. For crypto entries this is the user's primary currency.
|
|
1836
1877
|
to_base:
|
|
1837
1878
|
type: number
|
|
1838
1879
|
format: double
|
|
@@ -1841,19 +1882,82 @@ components:
|
|
|
1841
1882
|
type: string
|
|
1842
1883
|
nullable: true
|
|
1843
1884
|
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1844
|
-
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.
|
|
1845
1886
|
required:
|
|
1887
|
+
- type
|
|
1846
1888
|
- id
|
|
1847
|
-
-
|
|
1889
|
+
- month
|
|
1848
1890
|
- balance
|
|
1849
1891
|
- currency
|
|
1850
1892
|
- to_base
|
|
1851
1893
|
- crypto_balance
|
|
1852
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
|
|
1933
|
+
- balance
|
|
1934
|
+
- currency
|
|
1935
|
+
- to_base
|
|
1936
|
+
- crypto_balance
|
|
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
|
+
|
|
1853
1954
|
balanceHistoryListResponseObject:
|
|
1854
1955
|
type: object
|
|
1855
1956
|
additionalProperties: false
|
|
1856
1957
|
x-internal: true
|
|
1958
|
+
description: >
|
|
1959
|
+
List response for balance history GET endpoints. Entries are grouped by
|
|
1960
|
+
account source under `balance_history`.
|
|
1857
1961
|
properties:
|
|
1858
1962
|
balance_history:
|
|
1859
1963
|
type: array
|
|
@@ -1866,31 +1970,39 @@ components:
|
|
|
1866
1970
|
type: object
|
|
1867
1971
|
x-internal: true
|
|
1868
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.
|
|
1869
1976
|
properties:
|
|
1870
1977
|
id:
|
|
1871
1978
|
type: integer
|
|
1872
1979
|
format: int32
|
|
1873
1980
|
description: System-defined balance history entry id. Ignored if set.
|
|
1874
1981
|
x-updatable: false
|
|
1875
|
-
|
|
1982
|
+
month:
|
|
1876
1983
|
type: string
|
|
1877
|
-
|
|
1878
|
-
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"
|
|
1879
1989
|
balance:
|
|
1880
1990
|
oneOf:
|
|
1881
1991
|
- type: number
|
|
1882
1992
|
format: double
|
|
1883
1993
|
- type: string
|
|
1884
1994
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1885
|
-
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.
|
|
1886
1996
|
symbol:
|
|
1887
1997
|
type: string
|
|
1888
1998
|
nullable: true
|
|
1889
1999
|
minLength: 1
|
|
1890
2000
|
maxLength: 25
|
|
1891
|
-
description:
|
|
1892
|
-
|
|
1893
|
-
|
|
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.
|
|
1894
2006
|
x-updatable: true
|
|
1895
2007
|
crypto_balance:
|
|
1896
2008
|
type: string
|
|
@@ -1906,10 +2018,10 @@ components:
|
|
|
1906
2018
|
to_base:
|
|
1907
2019
|
type: number
|
|
1908
2020
|
format: double
|
|
1909
|
-
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.
|
|
1910
2022
|
x-updatable: false
|
|
1911
2023
|
required:
|
|
1912
|
-
-
|
|
2024
|
+
- month
|
|
1913
2025
|
- balance
|
|
1914
2026
|
|
|
1915
2027
|
upsertBalanceHistoryRequestObject:
|
|
@@ -1920,7 +2032,11 @@ components:
|
|
|
1920
2032
|
balances:
|
|
1921
2033
|
type: array
|
|
1922
2034
|
minItems: 1
|
|
1923
|
-
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.
|
|
1924
2040
|
items:
|
|
1925
2041
|
$ref: "#/components/schemas/balanceHistoryUpdateItemObject"
|
|
1926
2042
|
required:
|
|
@@ -1935,51 +2051,58 @@ components:
|
|
|
1935
2051
|
name:
|
|
1936
2052
|
type: string
|
|
1937
2053
|
nullable: true
|
|
1938
|
-
description: New archived account name for the deleted account source
|
|
2054
|
+
description: New archived account name for the deleted account source
|
|
1939
2055
|
institution_name:
|
|
1940
2056
|
type: string
|
|
1941
2057
|
nullable: true
|
|
1942
|
-
description: New archived institution name for the deleted account source
|
|
2058
|
+
description: New archived institution name for the deleted account source
|
|
1943
2059
|
display_name:
|
|
1944
2060
|
type: string
|
|
1945
2061
|
nullable: true
|
|
1946
|
-
description: New display name for the deleted account source
|
|
2062
|
+
description: New display name for the deleted account source
|
|
1947
2063
|
account_type:
|
|
1948
2064
|
type: string
|
|
1949
2065
|
nullable: true
|
|
1950
|
-
description: New archived account type for the deleted account source
|
|
2066
|
+
description: New archived account type for the deleted account source
|
|
1951
2067
|
subtype:
|
|
1952
2068
|
type: string
|
|
1953
2069
|
nullable: true
|
|
1954
|
-
description: New archived subtype for the deleted account source
|
|
2070
|
+
description: New archived subtype for the deleted account source
|
|
1955
2071
|
mask:
|
|
1956
2072
|
type: string
|
|
1957
2073
|
nullable: true
|
|
1958
|
-
description: New archived account mask for the deleted account source
|
|
2074
|
+
description: New archived account mask for the deleted account source
|
|
1959
2075
|
|
|
1960
2076
|
updateBalanceHistoryDetailsResponseObject:
|
|
1961
2077
|
type: object
|
|
1962
2078
|
x-internal: true
|
|
1963
2079
|
additionalProperties: false
|
|
2080
|
+
description: Updated archived metadata for a deleted balance history source
|
|
1964
2081
|
properties:
|
|
1965
2082
|
name:
|
|
1966
2083
|
type: string
|
|
1967
2084
|
nullable: true
|
|
2085
|
+
description: Archived account name for the deleted account source
|
|
1968
2086
|
institution_name:
|
|
1969
2087
|
type: string
|
|
1970
2088
|
nullable: true
|
|
2089
|
+
description: Archived institution name for the deleted account source
|
|
1971
2090
|
display_name:
|
|
1972
2091
|
type: string
|
|
1973
2092
|
nullable: true
|
|
2093
|
+
description: Archived display name for the deleted account source
|
|
1974
2094
|
account_type:
|
|
1975
2095
|
type: string
|
|
1976
2096
|
nullable: true
|
|
2097
|
+
description: Archived account type for the deleted account source
|
|
1977
2098
|
subtype:
|
|
1978
2099
|
type: string
|
|
1979
2100
|
nullable: true
|
|
2101
|
+
description: Archived subtype for the deleted account source
|
|
1980
2102
|
mask:
|
|
1981
2103
|
type: string
|
|
1982
2104
|
nullable: true
|
|
2105
|
+
description: Archived account mask for the deleted account source
|
|
1983
2106
|
required:
|
|
1984
2107
|
- name
|
|
1985
2108
|
- institution_name
|
|
@@ -2935,7 +3058,7 @@ components:
|
|
|
2935
3058
|
currency:
|
|
2936
3059
|
description: Three-letter lowercase currency code of the transaction
|
|
2937
3060
|
in ISO 4217 format. Must match one of the [supported
|
|
2938
|
-
currencies](https://
|
|
3061
|
+
currencies](https://lunchmoney.dev/v2/currencies). If not set
|
|
2939
3062
|
defaults to the user account's primary currency.
|
|
2940
3063
|
allOf:
|
|
2941
3064
|
- $ref: "#/components/schemas/currencyEnum"
|
|
@@ -3080,6 +3203,7 @@ components:
|
|
|
3080
3203
|
description: |
|
|
3081
3204
|
The new payee for the transaction.
|
|
3082
3205
|
minLength: 0
|
|
3206
|
+
x-updatable: true
|
|
3083
3207
|
original_name:
|
|
3084
3208
|
type: string
|
|
3085
3209
|
nullable: true
|
|
@@ -3291,9 +3415,10 @@ components:
|
|
|
3291
3415
|
category_id:
|
|
3292
3416
|
type: integer
|
|
3293
3417
|
format: int32
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
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.
|
|
3297
3422
|
tag_ids:
|
|
3298
3423
|
type: array
|
|
3299
3424
|
description: The IDs of any tags to apply to this split child
|
|
@@ -3303,7 +3428,10 @@ components:
|
|
|
3303
3428
|
format: int32
|
|
3304
3429
|
notes:
|
|
3305
3430
|
type: string
|
|
3306
|
-
|
|
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.
|
|
3307
3435
|
required:
|
|
3308
3436
|
- amount
|
|
3309
3437
|
|
|
@@ -3612,10 +3740,11 @@ components:
|
|
|
3612
3740
|
|
|
3613
3741
|
# Response body for GET /budgets/settings (200)
|
|
3614
3742
|
budgetSettingsResponseObject:
|
|
3615
|
-
x-internal: true
|
|
3616
3743
|
type: object
|
|
3744
|
+
title: budget settings object
|
|
3617
3745
|
additionalProperties: false
|
|
3618
|
-
description: Budget period and display settings
|
|
3746
|
+
description: Budget period and display settings for the current budget
|
|
3747
|
+
account.
|
|
3619
3748
|
properties:
|
|
3620
3749
|
budget_period_granularity:
|
|
3621
3750
|
type: string
|
|
@@ -3627,8 +3756,8 @@ components:
|
|
|
3627
3756
|
- twice a month
|
|
3628
3757
|
description: Budget period granularity
|
|
3629
3758
|
budget_period_quantity:
|
|
3630
|
-
type:
|
|
3631
|
-
format:
|
|
3759
|
+
type: integer
|
|
3760
|
+
format: int32
|
|
3632
3761
|
description: The number of `granularity` units that make up a single
|
|
3633
3762
|
budgeting period.
|
|
3634
3763
|
budget_period_anchor_date:
|
|
@@ -3670,6 +3799,530 @@ components:
|
|
|
3670
3799
|
- budget_income_option
|
|
3671
3800
|
- budget_rollover_left_to_budget
|
|
3672
3801
|
|
|
3802
|
+
weekStartsOnEnum:
|
|
3803
|
+
x-internal: true
|
|
3804
|
+
type: string
|
|
3805
|
+
title: week starts on enum
|
|
3806
|
+
enum:
|
|
3807
|
+
- sunday
|
|
3808
|
+
- monday
|
|
3809
|
+
description: The day on which a calendar week begins.
|
|
3810
|
+
|
|
3811
|
+
monthYearFormatEnum:
|
|
3812
|
+
x-internal: true
|
|
3813
|
+
type: string
|
|
3814
|
+
title: month and year format enum
|
|
3815
|
+
description: Format string for displaying month and year values
|
|
3816
|
+
in the Lunch Money app.
|
|
3817
|
+
enum:
|
|
3818
|
+
- "MMMM YYYY"
|
|
3819
|
+
- "MMM YYYY"
|
|
3820
|
+
- "YYYY MMM"
|
|
3821
|
+
- "MM YYYY"
|
|
3822
|
+
- "MM-YYYY"
|
|
3823
|
+
- "MM.YYYY"
|
|
3824
|
+
- "MM/YYYY"
|
|
3825
|
+
- "M YYYY"
|
|
3826
|
+
- "M-YYYY"
|
|
3827
|
+
- "M.YYYY"
|
|
3828
|
+
- "M/YYYY"
|
|
3829
|
+
- "YYYY M"
|
|
3830
|
+
- "YYYY-M"
|
|
3831
|
+
- "YYYY.M"
|
|
3832
|
+
- "YYYY/M"
|
|
3833
|
+
- "YYYY MM"
|
|
3834
|
+
- "YYYY-MM"
|
|
3835
|
+
- "YYYY.MM"
|
|
3836
|
+
- "YYYY/MM"
|
|
3837
|
+
|
|
3838
|
+
monthDayYearFormatEnum:
|
|
3839
|
+
x-internal: true
|
|
3840
|
+
type: string
|
|
3841
|
+
title: month, day and year format enum
|
|
3842
|
+
description: Format string for displaying full dates in the
|
|
3843
|
+
Lunch Money app.
|
|
3844
|
+
enum:
|
|
3845
|
+
- "MMM D, YYYY"
|
|
3846
|
+
- "D MMM YYYY"
|
|
3847
|
+
- "YYYY MM DD"
|
|
3848
|
+
- "YYYY-MM-DD"
|
|
3849
|
+
- "YYYY.MM.DD"
|
|
3850
|
+
- "YYYY/MM/DD"
|
|
3851
|
+
- "YYYY M DD"
|
|
3852
|
+
- "YYYY-M-DD"
|
|
3853
|
+
- "YYYY.M.DD"
|
|
3854
|
+
- "YYYY/M/DD"
|
|
3855
|
+
- "YYYY MM D"
|
|
3856
|
+
- "YYYY-MM-D"
|
|
3857
|
+
- "YYYY.MM.D"
|
|
3858
|
+
- "YYYY/MM/D"
|
|
3859
|
+
- "YYYY M D"
|
|
3860
|
+
- "YYYY-M-D"
|
|
3861
|
+
- "YYYY.M.D"
|
|
3862
|
+
- "YYYY/M/D"
|
|
3863
|
+
- "DD MM YYYY"
|
|
3864
|
+
- "DD-MM-YYYY"
|
|
3865
|
+
- "DD.MM.YYYY"
|
|
3866
|
+
- "DD/MM/YYYY"
|
|
3867
|
+
- "DD M YYYY"
|
|
3868
|
+
- "DD-M-YYYY"
|
|
3869
|
+
- "DD.M.YYYY"
|
|
3870
|
+
- "DD/M/YYYY"
|
|
3871
|
+
- "D MM YYYY"
|
|
3872
|
+
- "D-MM-YYYY"
|
|
3873
|
+
- "D.MM.YYYY"
|
|
3874
|
+
- "D/MM/YYYY"
|
|
3875
|
+
- "D M YYYY"
|
|
3876
|
+
- "D-M-YYYY"
|
|
3877
|
+
- "D.M.YYYY"
|
|
3878
|
+
- "D/M/YYYY"
|
|
3879
|
+
- "M D YYYY"
|
|
3880
|
+
- "M-D-YYYY"
|
|
3881
|
+
- "M.D.YYYY"
|
|
3882
|
+
- "M/D/YYYY"
|
|
3883
|
+
- "MM D YYYY"
|
|
3884
|
+
- "MM-D-YYYY"
|
|
3885
|
+
- "MM.D.YYYY"
|
|
3886
|
+
- "MM/D/YYYY"
|
|
3887
|
+
- "MM DD YYYY"
|
|
3888
|
+
- "MM-DD-YYYY"
|
|
3889
|
+
- "MM.DD.YYYY"
|
|
3890
|
+
- "MM/DD/YYYY"
|
|
3891
|
+
- "M DD YYYY"
|
|
3892
|
+
- "M-DD-YYYY"
|
|
3893
|
+
- "M.DD.YYYY"
|
|
3894
|
+
- "M/DD/YYYY"
|
|
3895
|
+
|
|
3896
|
+
monthDayFormatEnum:
|
|
3897
|
+
x-internal: true
|
|
3898
|
+
type: string
|
|
3899
|
+
title: month and day format enum
|
|
3900
|
+
description: Format string for displaying month and day values
|
|
3901
|
+
without a year.
|
|
3902
|
+
enum:
|
|
3903
|
+
- "MMM D"
|
|
3904
|
+
- "MMM DD"
|
|
3905
|
+
- "D MMM"
|
|
3906
|
+
- "DD MMM"
|
|
3907
|
+
- "MM D"
|
|
3908
|
+
- "MM-D"
|
|
3909
|
+
- "MM.D"
|
|
3910
|
+
- "MM/D"
|
|
3911
|
+
- "MM DD"
|
|
3912
|
+
- "MM-DD"
|
|
3913
|
+
- "MM.DD"
|
|
3914
|
+
- "MM/DD"
|
|
3915
|
+
- "M D"
|
|
3916
|
+
- "M-D"
|
|
3917
|
+
- "M.D"
|
|
3918
|
+
- "M/D"
|
|
3919
|
+
- "M DD"
|
|
3920
|
+
- "M-DD"
|
|
3921
|
+
- "M.DD"
|
|
3922
|
+
- "M/DD"
|
|
3923
|
+
- "D MM"
|
|
3924
|
+
- "D-MM"
|
|
3925
|
+
- "D.MM"
|
|
3926
|
+
- "D/MM"
|
|
3927
|
+
- "DD MM"
|
|
3928
|
+
- "DD-MM"
|
|
3929
|
+
- "DD.MM"
|
|
3930
|
+
- "DD/MM"
|
|
3931
|
+
- "D M"
|
|
3932
|
+
- "D-M"
|
|
3933
|
+
- "D.M"
|
|
3934
|
+
- "D/M"
|
|
3935
|
+
- "DD M"
|
|
3936
|
+
- "DD-M"
|
|
3937
|
+
- "DD.M"
|
|
3938
|
+
- "DD/M"
|
|
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
|
+
|
|
4032
|
+
accountSettingsObject:
|
|
4033
|
+
type: object
|
|
4034
|
+
title: account settings object
|
|
4035
|
+
additionalProperties: false
|
|
4036
|
+
description: Account-level settings for the budget account
|
|
4037
|
+
associated with the authorized API token.
|
|
4038
|
+
properties:
|
|
4039
|
+
primary_currency:
|
|
4040
|
+
description: Primary currency for the account.
|
|
4041
|
+
allOf:
|
|
4042
|
+
- $ref: "#/components/schemas/currencyEnum"
|
|
4043
|
+
supported_currencies:
|
|
4044
|
+
type: array
|
|
4045
|
+
items:
|
|
4046
|
+
$ref: "#/components/schemas/currencyEnum"
|
|
4047
|
+
description: Currencies available when creating or editing transactions,
|
|
4048
|
+
balances, and other amounts in the Lunch Money app.
|
|
4049
|
+
display_name:
|
|
4050
|
+
type: string
|
|
4051
|
+
nullable: true
|
|
4052
|
+
description: Display name of the budget account in the Lunch Money
|
|
4053
|
+
app.
|
|
4054
|
+
locale:
|
|
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`).
|
|
4068
|
+
auto_create_category_rules:
|
|
4069
|
+
type: boolean
|
|
4070
|
+
default: true
|
|
4071
|
+
description: If `true`, category rules are created automatically when
|
|
4072
|
+
categorizing transactions.
|
|
4073
|
+
auto_create_suggested_transaction_rules:
|
|
4074
|
+
type: boolean
|
|
4075
|
+
default: true
|
|
4076
|
+
description: If `true`, suggested transaction rules are created
|
|
4077
|
+
automatically.
|
|
4078
|
+
include_pending_in_totals:
|
|
4079
|
+
type: boolean
|
|
4080
|
+
default: true
|
|
4081
|
+
description: If `true`, pending transactions are included in account
|
|
4082
|
+
totals.
|
|
4083
|
+
required:
|
|
4084
|
+
- primary_currency
|
|
4085
|
+
- supported_currencies
|
|
4086
|
+
- display_name
|
|
4087
|
+
- locale
|
|
4088
|
+
- auto_create_category_rules
|
|
4089
|
+
- auto_create_suggested_transaction_rules
|
|
4090
|
+
- include_pending_in_totals
|
|
4091
|
+
|
|
4092
|
+
updateAccountSettingsRequestObject:
|
|
4093
|
+
x-internal: true
|
|
4094
|
+
type: object
|
|
4095
|
+
additionalProperties: false
|
|
4096
|
+
minProperties: 1
|
|
4097
|
+
description: Request body for updating account settings. Include at least
|
|
4098
|
+
one property to update.
|
|
4099
|
+
properties:
|
|
4100
|
+
primary_currency:
|
|
4101
|
+
allOf:
|
|
4102
|
+
- $ref: "#/components/schemas/currencyEnum"
|
|
4103
|
+
description: If set, updates the account's primary currency.
|
|
4104
|
+
x-updatable: true
|
|
4105
|
+
supported_currencies:
|
|
4106
|
+
type: array
|
|
4107
|
+
items:
|
|
4108
|
+
$ref: "#/components/schemas/currencyEnum"
|
|
4109
|
+
description: If set, replaces the list of supported currencies for the
|
|
4110
|
+
account.
|
|
4111
|
+
x-updatable: true
|
|
4112
|
+
display_name:
|
|
4113
|
+
type: string
|
|
4114
|
+
nullable: true
|
|
4115
|
+
description: If set, updates the display name of the budget account.
|
|
4116
|
+
x-updatable: true
|
|
4117
|
+
locale:
|
|
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).
|
|
4127
|
+
x-updatable: true
|
|
4128
|
+
auto_create_category_rules:
|
|
4129
|
+
type: boolean
|
|
4130
|
+
description: If set, updates whether category rules are created
|
|
4131
|
+
automatically.
|
|
4132
|
+
x-updatable: true
|
|
4133
|
+
auto_create_suggested_transaction_rules:
|
|
4134
|
+
type: boolean
|
|
4135
|
+
description: If set, updates whether suggested transaction rules are
|
|
4136
|
+
created automatically.
|
|
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
|
+
budget 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 budget account. Must identify a
|
|
4166
|
+
manual account returned by
|
|
4167
|
+
[GET /manual_accounts](#tag/manual_accounts/GET/manual_accounts) for
|
|
4168
|
+
the current budget 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 budget account. Include at least one property
|
|
4181
|
+
to update.
|
|
4182
|
+
properties:
|
|
4183
|
+
auto_review_transaction_on_update:
|
|
4184
|
+
type: boolean
|
|
4185
|
+
description: If set, updates whether transactions are marked as reviewed
|
|
4186
|
+
when their date, category, payee, amount, account, or notes are
|
|
4187
|
+
changed.
|
|
4188
|
+
x-updatable: true
|
|
4189
|
+
auto_review_transaction_on_creation:
|
|
4190
|
+
type: boolean
|
|
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 budget
|
|
4199
|
+
account. Must identify a manual account returned by
|
|
4200
|
+
[GET /manual_accounts](#tag/manual_accounts/GET/manual_accounts) for
|
|
4201
|
+
the current budget account. Set to `null` to clear the selection.
|
|
4202
|
+
x-updatable: true
|
|
4203
|
+
|
|
4204
|
+
userSettingsObject:
|
|
4205
|
+
type: object
|
|
4206
|
+
title: user settings object
|
|
4207
|
+
additionalProperties: false
|
|
4208
|
+
description: User-level display and formatting preferences for the user
|
|
4209
|
+
associated with the authorized API token.
|
|
4210
|
+
properties:
|
|
4211
|
+
show_debits_as_negative:
|
|
4212
|
+
type: boolean
|
|
4213
|
+
default: true
|
|
4214
|
+
description: Display preference for how amounts are shown in the Lunch
|
|
4215
|
+
Money app. When `true`, debits are shown as negative values and
|
|
4216
|
+
credits as positive values.<p> This setting does **not** change
|
|
4217
|
+
amount sign conventions in API responses. Amount fields such as
|
|
4218
|
+
`amount` and `to_base` on transaction objects always use positive
|
|
4219
|
+
values for debits and negative values for credits.
|
|
4220
|
+
auto_suggest_payee:
|
|
4221
|
+
type: boolean
|
|
4222
|
+
default: true
|
|
4223
|
+
description: If `true`, payee suggestions are shown when entering
|
|
4224
|
+
transactions in the Lunch Money app.
|
|
4225
|
+
month_year_format:
|
|
4226
|
+
allOf:
|
|
4227
|
+
- $ref: "#/components/schemas/monthYearFormatEnum"
|
|
4228
|
+
default: "MMM YYYY"
|
|
4229
|
+
description: Format string used when displaying month and year values.
|
|
4230
|
+
month_day_year_format:
|
|
4231
|
+
allOf:
|
|
4232
|
+
- $ref: "#/components/schemas/monthDayYearFormatEnum"
|
|
4233
|
+
default: "MMM D, YYYY"
|
|
4234
|
+
description: Format string used when displaying full dates (month, day,
|
|
4235
|
+
and year).
|
|
4236
|
+
month_day_format:
|
|
4237
|
+
allOf:
|
|
4238
|
+
- $ref: "#/components/schemas/monthDayFormatEnum"
|
|
4239
|
+
default: "MMM D"
|
|
4240
|
+
description: Format string used when displaying month and day values
|
|
4241
|
+
without a year.
|
|
4242
|
+
show_am_pm:
|
|
4243
|
+
type: boolean
|
|
4244
|
+
default: true
|
|
4245
|
+
description: If `true`, times are displayed using a 12-hour clock with
|
|
4246
|
+
AM/PM. If `false`, times are displayed using a 24-hour clock.
|
|
4247
|
+
week_starts_on:
|
|
4248
|
+
allOf:
|
|
4249
|
+
- $ref: "#/components/schemas/weekStartsOnEnum"
|
|
4250
|
+
default: sunday
|
|
4251
|
+
description: The day on which a calendar week begins.
|
|
4252
|
+
always_display_year:
|
|
4253
|
+
type: boolean
|
|
4254
|
+
default: false
|
|
4255
|
+
description: If `true`, dates always include the year and
|
|
4256
|
+
`month_day_format` is not used.
|
|
4257
|
+
always_display_weekday:
|
|
4258
|
+
type: boolean
|
|
4259
|
+
default: true
|
|
4260
|
+
description: If `true`, weekday names are included when displaying
|
|
4261
|
+
dates.
|
|
4262
|
+
required:
|
|
4263
|
+
- show_debits_as_negative
|
|
4264
|
+
- auto_suggest_payee
|
|
4265
|
+
- month_year_format
|
|
4266
|
+
- month_day_year_format
|
|
4267
|
+
- month_day_format
|
|
4268
|
+
- show_am_pm
|
|
4269
|
+
- week_starts_on
|
|
4270
|
+
- always_display_year
|
|
4271
|
+
- always_display_weekday
|
|
4272
|
+
|
|
4273
|
+
updateUserSettingsRequestObject:
|
|
4274
|
+
x-internal: true
|
|
4275
|
+
type: object
|
|
4276
|
+
additionalProperties: false
|
|
4277
|
+
minProperties: 1
|
|
4278
|
+
description: Request body for updating user settings. Include at least one
|
|
4279
|
+
property to update.
|
|
4280
|
+
properties:
|
|
4281
|
+
show_debits_as_negative:
|
|
4282
|
+
type: boolean
|
|
4283
|
+
description: If set, updates the display preference for amount signs in
|
|
4284
|
+
the Lunch Money app. Does not affect amount sign conventions in API
|
|
4285
|
+
responses.
|
|
4286
|
+
x-updatable: true
|
|
4287
|
+
auto_suggest_payee:
|
|
4288
|
+
type: boolean
|
|
4289
|
+
description: If set, updates whether payee suggestions are shown.
|
|
4290
|
+
x-updatable: true
|
|
4291
|
+
month_year_format:
|
|
4292
|
+
allOf:
|
|
4293
|
+
- $ref: "#/components/schemas/monthYearFormatEnum"
|
|
4294
|
+
description: If set, updates the month and year display format.
|
|
4295
|
+
x-updatable: true
|
|
4296
|
+
month_day_year_format:
|
|
4297
|
+
allOf:
|
|
4298
|
+
- $ref: "#/components/schemas/monthDayYearFormatEnum"
|
|
4299
|
+
description: If set, updates the full date display format.
|
|
4300
|
+
x-updatable: true
|
|
4301
|
+
month_day_format:
|
|
4302
|
+
allOf:
|
|
4303
|
+
- $ref: "#/components/schemas/monthDayFormatEnum"
|
|
4304
|
+
description: If set, updates the month and day display format.
|
|
4305
|
+
x-updatable: true
|
|
4306
|
+
show_am_pm:
|
|
4307
|
+
type: boolean
|
|
4308
|
+
description: If set, updates whether times use a 12-hour (AM/PM) or
|
|
4309
|
+
24-hour clock.
|
|
4310
|
+
x-updatable: true
|
|
4311
|
+
week_starts_on:
|
|
4312
|
+
allOf:
|
|
4313
|
+
- $ref: "#/components/schemas/weekStartsOnEnum"
|
|
4314
|
+
description: If set, updates the day on which a calendar week begins.
|
|
4315
|
+
x-updatable: true
|
|
4316
|
+
always_display_year:
|
|
4317
|
+
type: boolean
|
|
4318
|
+
description: If set, updates whether dates always include the year.
|
|
4319
|
+
x-updatable: true
|
|
4320
|
+
always_display_weekday:
|
|
4321
|
+
type: boolean
|
|
4322
|
+
description: If set, updates whether weekday names are shown when
|
|
4323
|
+
displaying dates.
|
|
4324
|
+
x-updatable: true
|
|
4325
|
+
|
|
3673
4326
|
# Summary endpoint response schemas
|
|
3674
4327
|
summaryResponseObject:
|
|
3675
4328
|
type: object
|
|
@@ -4445,22 +5098,10 @@ components:
|
|
|
4445
5098
|
securitySchemes:
|
|
4446
5099
|
bearerSecurity:
|
|
4447
5100
|
type: http
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
# the v1 API you can view and manage your API keys on the [developers page
|
|
4451
|
-
# in the Lunch Money app](https://my.lunchmoney.app/developers). <p> To
|
|
4452
|
-
# interact with the Static Mock Server simply enter an API key of 11
|
|
4453
|
-
# characters or more. <p> To interact with the v2 service implemented on
|
|
4454
|
-
# top of the v1 API paste in a real API token associated with a Lunch
|
|
4455
|
-
# Money Budget.
|
|
4456
|
-
description: To interact with the Static Mock Server simply enter an API
|
|
4457
|
-
key of 11 characters or more.
|
|
5101
|
+
description: >-
|
|
5102
|
+
Required for the LIVE server. Optional for MOCK.
|
|
4458
5103
|
scheme: bearer
|
|
4459
5104
|
bearerFormat: JWT
|
|
4460
|
-
cookieAuth:
|
|
4461
|
-
type: apiKey
|
|
4462
|
-
in: cookie
|
|
4463
|
-
name: _lm_access_token
|
|
4464
5105
|
|
|
4465
5106
|
paths:
|
|
4466
5107
|
/me:
|
|
@@ -4468,8 +5109,16 @@ paths:
|
|
|
4468
5109
|
tags:
|
|
4469
5110
|
- me
|
|
4470
5111
|
summary: Get current user
|
|
4471
|
-
description:
|
|
4472
|
-
authorization
|
|
5112
|
+
description: |-
|
|
5113
|
+
Get details about the user associated with the supplied authorization
|
|
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 budget account.
|
|
5120
|
+
Properties such as `primary_currency` and `budget_name` remain on this
|
|
5121
|
+
response for backwards compatibility.
|
|
4473
5122
|
operationId: getMe
|
|
4474
5123
|
parameters: []
|
|
4475
5124
|
responses:
|
|
@@ -4493,6 +5142,247 @@ paths:
|
|
|
4493
5142
|
$ref: "#/components/responses/rateLimited"
|
|
4494
5143
|
"500":
|
|
4495
5144
|
$ref: "#/components/responses/serverError"
|
|
5145
|
+
/me/account/settings:
|
|
5146
|
+
get:
|
|
5147
|
+
tags:
|
|
5148
|
+
- me
|
|
5149
|
+
summary: Get account settings
|
|
5150
|
+
description: >-
|
|
5151
|
+
Returns settings for the current budget account. These settings apply
|
|
5152
|
+
regardless of which user is accessing the account.
|
|
5153
|
+
operationId: getAccountSettings
|
|
5154
|
+
responses:
|
|
5155
|
+
"200":
|
|
5156
|
+
description: Account settings for the current budget account
|
|
5157
|
+
content:
|
|
5158
|
+
application/json:
|
|
5159
|
+
schema:
|
|
5160
|
+
$ref: "#/components/schemas/accountSettingsObject"
|
|
5161
|
+
example:
|
|
5162
|
+
primary_currency: usd
|
|
5163
|
+
supported_currencies:
|
|
5164
|
+
- usd
|
|
5165
|
+
- cad
|
|
5166
|
+
- jpy
|
|
5167
|
+
display_name: "\U0001F3E0 Family budget"
|
|
5168
|
+
locale: en-US
|
|
5169
|
+
auto_create_category_rules: true
|
|
5170
|
+
auto_create_suggested_transaction_rules: true
|
|
5171
|
+
include_pending_in_totals: true
|
|
5172
|
+
"401":
|
|
5173
|
+
$ref: "#/components/responses/unauthorizedToken"
|
|
5174
|
+
"429":
|
|
5175
|
+
$ref: "#/components/responses/rateLimited"
|
|
5176
|
+
"500":
|
|
5177
|
+
$ref: "#/components/responses/serverError"
|
|
5178
|
+
put:
|
|
5179
|
+
tags:
|
|
5180
|
+
- me
|
|
5181
|
+
summary: Update account settings
|
|
5182
|
+
description: |-
|
|
5183
|
+
Updates account-level settings for the budget account
|
|
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.
|
|
5188
|
+
operationId: updateAccountSettings
|
|
5189
|
+
requestBody:
|
|
5190
|
+
required: true
|
|
5191
|
+
content:
|
|
5192
|
+
application/json:
|
|
5193
|
+
schema:
|
|
5194
|
+
$ref: "#/components/schemas/updateAccountSettingsRequestObject"
|
|
5195
|
+
examples:
|
|
5196
|
+
Update display name:
|
|
5197
|
+
value:
|
|
5198
|
+
display_name: "Travel budget"
|
|
5199
|
+
Update automation preferences:
|
|
5200
|
+
value:
|
|
5201
|
+
auto_create_category_rules: false
|
|
5202
|
+
include_pending_in_totals: false
|
|
5203
|
+
responses:
|
|
5204
|
+
"200":
|
|
5205
|
+
description: Account settings updated successfully
|
|
5206
|
+
content:
|
|
5207
|
+
application/json:
|
|
5208
|
+
schema:
|
|
5209
|
+
$ref: "#/components/schemas/accountSettingsObject"
|
|
5210
|
+
"400":
|
|
5211
|
+
description: Invalid request body
|
|
5212
|
+
content:
|
|
5213
|
+
application/json:
|
|
5214
|
+
schema:
|
|
5215
|
+
$ref: "#/components/schemas/errorResponseObject"
|
|
5216
|
+
"401":
|
|
5217
|
+
$ref: "#/components/responses/unauthorizedToken"
|
|
5218
|
+
"429":
|
|
5219
|
+
$ref: "#/components/responses/rateLimited"
|
|
5220
|
+
"500":
|
|
5221
|
+
$ref: "#/components/responses/serverError"
|
|
5222
|
+
/me/user/settings:
|
|
5223
|
+
get:
|
|
5224
|
+
tags:
|
|
5225
|
+
- me
|
|
5226
|
+
summary: Get user settings
|
|
5227
|
+
description: >-
|
|
5228
|
+
Returns display and formatting preferences for the authorized user.
|
|
5229
|
+
These settings apply across every budget account the user owns or
|
|
5230
|
+
collaborates on.
|
|
5231
|
+
operationId: getUserSettings
|
|
5232
|
+
responses:
|
|
5233
|
+
"200":
|
|
5234
|
+
description: User settings for the authorized user
|
|
5235
|
+
content:
|
|
5236
|
+
application/json:
|
|
5237
|
+
schema:
|
|
5238
|
+
$ref: "#/components/schemas/userSettingsObject"
|
|
5239
|
+
example:
|
|
5240
|
+
show_debits_as_negative: true
|
|
5241
|
+
auto_suggest_payee: true
|
|
5242
|
+
month_year_format: "MMM YYYY"
|
|
5243
|
+
month_day_year_format: "MMM D, YYYY"
|
|
5244
|
+
month_day_format: "MMM D"
|
|
5245
|
+
show_am_pm: true
|
|
5246
|
+
week_starts_on: sunday
|
|
5247
|
+
always_display_year: false
|
|
5248
|
+
always_display_weekday: true
|
|
5249
|
+
"401":
|
|
5250
|
+
$ref: "#/components/responses/unauthorizedToken"
|
|
5251
|
+
"429":
|
|
5252
|
+
$ref: "#/components/responses/rateLimited"
|
|
5253
|
+
"500":
|
|
5254
|
+
$ref: "#/components/responses/serverError"
|
|
5255
|
+
put:
|
|
5256
|
+
tags:
|
|
5257
|
+
- me
|
|
5258
|
+
summary: Update user settings
|
|
5259
|
+
description: |-
|
|
5260
|
+
Updates user-level display and formatting preferences for the user
|
|
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
|
|
5265
|
+
`show_debits_as_negative` affects display in the Lunch Money app only.
|
|
5266
|
+
Amount fields in API responses always use positive values for debits and
|
|
5267
|
+
negative values for credits.
|
|
5268
|
+
operationId: updateUserSettings
|
|
5269
|
+
requestBody:
|
|
5270
|
+
required: true
|
|
5271
|
+
content:
|
|
5272
|
+
application/json:
|
|
5273
|
+
schema:
|
|
5274
|
+
$ref: "#/components/schemas/updateUserSettingsRequestObject"
|
|
5275
|
+
examples:
|
|
5276
|
+
Update date formats:
|
|
5277
|
+
value:
|
|
5278
|
+
month_year_format: "YYYY-MM"
|
|
5279
|
+
month_day_year_format: "YYYY-MM-DD"
|
|
5280
|
+
month_day_format: "MM-DD"
|
|
5281
|
+
Use 24-hour time and Monday week start:
|
|
5282
|
+
value:
|
|
5283
|
+
show_am_pm: false
|
|
5284
|
+
week_starts_on: monday
|
|
5285
|
+
responses:
|
|
5286
|
+
"200":
|
|
5287
|
+
description: User settings updated successfully
|
|
5288
|
+
content:
|
|
5289
|
+
application/json:
|
|
5290
|
+
schema:
|
|
5291
|
+
$ref: "#/components/schemas/userSettingsObject"
|
|
5292
|
+
"400":
|
|
5293
|
+
description: Invalid request body
|
|
5294
|
+
content:
|
|
5295
|
+
application/json:
|
|
5296
|
+
schema:
|
|
5297
|
+
$ref: "#/components/schemas/errorResponseObject"
|
|
5298
|
+
"401":
|
|
5299
|
+
$ref: "#/components/responses/unauthorizedToken"
|
|
5300
|
+
"429":
|
|
5301
|
+
$ref: "#/components/responses/rateLimited"
|
|
5302
|
+
"500":
|
|
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
|
+
budget account. These settings do not affect other users or the
|
|
5312
|
+
authorized user's settings in other budget accounts.
|
|
5313
|
+
operationId: getUserAccountSettings
|
|
5314
|
+
responses:
|
|
5315
|
+
"200":
|
|
5316
|
+
description: Settings for the authorized user in the current budget
|
|
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
|
+
budget 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"
|
|
4496
5386
|
/summary:
|
|
4497
5387
|
get:
|
|
4498
5388
|
tags:
|
|
@@ -5740,12 +6630,9 @@ paths:
|
|
|
5740
6630
|
tags:
|
|
5741
6631
|
- crypto-manual
|
|
5742
6632
|
summary: Get all supported cryptocurrencies
|
|
5743
|
-
description:
|
|
6633
|
+
description: |-
|
|
5744
6634
|
Retrieve the list of cryptocurrencies currently supported for manual tracking.<p>
|
|
5745
|
-
|
|
5746
|
-
When creating a new manual crypto balance via `POST /crypto/manual`, the
|
|
5747
|
-
`symbol` you specify must match the `symbol` of one of the entries
|
|
5748
|
-
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.
|
|
5749
6636
|
operationId: getAllCryptocurrencies
|
|
5750
6637
|
responses:
|
|
5751
6638
|
"200":
|
|
@@ -5783,16 +6670,9 @@ paths:
|
|
|
5783
6670
|
- crypto-manual
|
|
5784
6671
|
summary: Add a new supported cryptocurrency
|
|
5785
6672
|
operationId: createCryptocurrency
|
|
5786
|
-
description:
|
|
6673
|
+
description: |-
|
|
5787
6674
|
Adds a new cryptocurrency to the supported manual-crypto list.<br><br>
|
|
5788
|
-
|
|
5789
|
-
Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum)
|
|
5790
|
-
to convert crypto balances to the user's primary currency. Users add a
|
|
5791
|
-
new supported cryptocurrency by submitting a CoinGecko coin-page URL.
|
|
5792
|
-
The server validates the URL, extracts the id from `/coins/{id}`,
|
|
5793
|
-
checks for an existing supported `coingecko_id`, validates the id
|
|
5794
|
-
against CoinGecko, then confirms the resolved symbol is not already
|
|
5795
|
-
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.
|
|
5796
6676
|
requestBody:
|
|
5797
6677
|
required: true
|
|
5798
6678
|
content:
|
|
@@ -5871,8 +6751,8 @@ paths:
|
|
|
5871
6751
|
tags:
|
|
5872
6752
|
- crypto-manual
|
|
5873
6753
|
summary: Get all manual crypto balances
|
|
5874
|
-
description:
|
|
5875
|
-
the user's account.
|
|
6754
|
+
description: |-
|
|
6755
|
+
Retrieve all manually managed crypto balances associated with the user's account.
|
|
5876
6756
|
operationId: getAllCryptoManual
|
|
5877
6757
|
responses:
|
|
5878
6758
|
"200":
|
|
@@ -5906,11 +6786,9 @@ paths:
|
|
|
5906
6786
|
tags:
|
|
5907
6787
|
- crypto-manual
|
|
5908
6788
|
summary: Create a manual crypto balance
|
|
5909
|
-
description:
|
|
6789
|
+
description: |-
|
|
5910
6790
|
Create a manually managed crypto asset.<br><br>
|
|
5911
|
-
|
|
5912
|
-
If `display_name` is `null`, clients may derive one from
|
|
5913
|
-
`institution_name` + `name`.
|
|
6791
|
+
If `display_name` is `null`, clients may derive one from `institution_name` + `name`.
|
|
5914
6792
|
operationId: createCryptoManual
|
|
5915
6793
|
requestBody:
|
|
5916
6794
|
required: true
|
|
@@ -5995,7 +6873,8 @@ paths:
|
|
|
5995
6873
|
tags:
|
|
5996
6874
|
- crypto-manual
|
|
5997
6875
|
summary: Get a single manual crypto balance
|
|
5998
|
-
description:
|
|
6876
|
+
description: |-
|
|
6877
|
+
Retrieve a single manually managed crypto balance by ID.
|
|
5999
6878
|
operationId: getCryptoManualById
|
|
6000
6879
|
parameters:
|
|
6001
6880
|
- name: id
|
|
@@ -6063,11 +6942,9 @@ paths:
|
|
|
6063
6942
|
tags:
|
|
6064
6943
|
- crypto-manual
|
|
6065
6944
|
summary: Update a manual crypto balance
|
|
6066
|
-
description:
|
|
6945
|
+
description: |-
|
|
6067
6946
|
Modify a manually managed crypto balance.<br><br>
|
|
6068
|
-
|
|
6069
|
-
You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties
|
|
6070
|
-
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.
|
|
6071
6948
|
operationId: updateCryptoManual
|
|
6072
6949
|
parameters:
|
|
6073
6950
|
- name: id
|
|
@@ -6164,10 +7041,8 @@ paths:
|
|
|
6164
7041
|
tags:
|
|
6165
7042
|
- crypto-manual
|
|
6166
7043
|
summary: Delete a manual crypto balance
|
|
6167
|
-
description:
|
|
6168
|
-
this crypto asset has a balance history, and you do not explicitly set
|
|
6169
|
-
the query parameter`keep_history`, a 422 response will be returned
|
|
6170
|
-
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`.
|
|
6171
7046
|
operationId: deleteCryptoManual
|
|
6172
7047
|
parameters:
|
|
6173
7048
|
- name: id
|
|
@@ -6232,8 +7107,8 @@ paths:
|
|
|
6232
7107
|
tags:
|
|
6233
7108
|
- crypto-synced
|
|
6234
7109
|
summary: Get all synced crypto accounts
|
|
6235
|
-
description:
|
|
6236
|
-
associated with the user's account.
|
|
7110
|
+
description: |-
|
|
7111
|
+
Retrieves all synced crypto accounts associated with the user's account.
|
|
6237
7112
|
operationId: getAllCryptoSynced
|
|
6238
7113
|
responses:
|
|
6239
7114
|
"200":
|
|
@@ -6295,8 +7170,8 @@ paths:
|
|
|
6295
7170
|
tags:
|
|
6296
7171
|
- crypto-synced
|
|
6297
7172
|
summary: Get a single synced crypto account
|
|
6298
|
-
description:
|
|
6299
|
-
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.
|
|
6300
7175
|
operationId: getCryptoSyncedById
|
|
6301
7176
|
parameters:
|
|
6302
7177
|
- name: id
|
|
@@ -6376,8 +7251,8 @@ paths:
|
|
|
6376
7251
|
tags:
|
|
6377
7252
|
- crypto-synced
|
|
6378
7253
|
summary: Get a synced crypto balance by symbol
|
|
6379
|
-
description:
|
|
6380
|
-
account using the crypto symbol.
|
|
7254
|
+
description: |-
|
|
7255
|
+
Retrieves a single balance from the specified synced crypto account using the crypto symbol.
|
|
6381
7256
|
operationId: getCryptoSyncedBalanceBySymbol
|
|
6382
7257
|
parameters:
|
|
6383
7258
|
- name: id
|
|
@@ -6456,8 +7331,8 @@ paths:
|
|
|
6456
7331
|
tags:
|
|
6457
7332
|
- crypto-synced
|
|
6458
7333
|
summary: Refresh balances for a synced crypto account
|
|
6459
|
-
description:
|
|
6460
|
-
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.
|
|
6461
7336
|
operationId: refreshCryptoSynced
|
|
6462
7337
|
parameters:
|
|
6463
7338
|
- name: id
|
|
@@ -6526,51 +7401,55 @@ paths:
|
|
|
6526
7401
|
tags:
|
|
6527
7402
|
- balance_history
|
|
6528
7403
|
summary: Get balance history
|
|
6529
|
-
description:
|
|
6530
|
-
Retrieve
|
|
6531
|
-
|
|
6532
|
-
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
|
|
6536
|
-
|
|
6537
|
-
|
|
6538
|
-
|
|
6539
|
-
`
|
|
6540
|
-
|
|
6541
|
-
stored entries when no range is provided.<br><br>
|
|
6542
|
-
|
|
6543
|
-
Historical entries for accounts that have been deleted may still
|
|
6544
|
-
be returned. These entries use `source.type: deleted` and include
|
|
6545
|
-
`deleted_account_id`, archived display fields, and account metadata on the
|
|
6546
|
-
`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})
|
|
6547
7416
|
operationId: getBalanceHistory
|
|
6548
7417
|
parameters:
|
|
6549
|
-
- name:
|
|
7418
|
+
- name: start_month
|
|
6550
7419
|
in: query
|
|
6551
|
-
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.
|
|
6552
7425
|
required: false
|
|
6553
7426
|
schema:
|
|
6554
7427
|
type: string
|
|
6555
|
-
|
|
7428
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6556
7429
|
examples:
|
|
6557
7430
|
range start:
|
|
6558
|
-
summary: Start
|
|
6559
|
-
value: "2026-01
|
|
6560
|
-
- name:
|
|
7431
|
+
summary: Start month
|
|
7432
|
+
value: "2026-01"
|
|
7433
|
+
- name: end_month
|
|
6561
7434
|
in: query
|
|
6562
|
-
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`.
|
|
6563
7442
|
required: false
|
|
6564
7443
|
schema:
|
|
6565
7444
|
type: string
|
|
6566
|
-
|
|
7445
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6567
7446
|
examples:
|
|
6568
7447
|
range end:
|
|
6569
|
-
summary: End
|
|
6570
|
-
value: "2026-03
|
|
7448
|
+
summary: End month
|
|
7449
|
+
value: "2026-03"
|
|
6571
7450
|
responses:
|
|
6572
7451
|
"200":
|
|
6573
|
-
description:
|
|
7452
|
+
description: Monthly balance history for the requested month range
|
|
6574
7453
|
content:
|
|
6575
7454
|
application/json:
|
|
6576
7455
|
schema:
|
|
@@ -6583,14 +7462,16 @@ paths:
|
|
|
6583
7462
|
type: manual
|
|
6584
7463
|
manual_account_id: 119807
|
|
6585
7464
|
balances:
|
|
6586
|
-
-
|
|
6587
|
-
|
|
7465
|
+
- type: historical
|
|
7466
|
+
id: 101
|
|
7467
|
+
month: "2026-01"
|
|
6588
7468
|
balance: "41000.0000"
|
|
6589
7469
|
currency: usd
|
|
6590
7470
|
to_base: 41000
|
|
6591
7471
|
crypto_balance: null
|
|
6592
|
-
-
|
|
6593
|
-
|
|
7472
|
+
- type: historical
|
|
7473
|
+
id: 102
|
|
7474
|
+
month: "2026-02"
|
|
6594
7475
|
balance: "41211.8000"
|
|
6595
7476
|
currency: usd
|
|
6596
7477
|
to_base: 41211.8
|
|
@@ -6599,8 +7480,9 @@ paths:
|
|
|
6599
7480
|
type: plaid
|
|
6600
7481
|
plaid_account_id: 119808
|
|
6601
7482
|
balances:
|
|
6602
|
-
-
|
|
6603
|
-
|
|
7483
|
+
- type: historical
|
|
7484
|
+
id: 103
|
|
7485
|
+
month: "2026-01"
|
|
6604
7486
|
balance: "5498.2800"
|
|
6605
7487
|
currency: usd
|
|
6606
7488
|
to_base: 5498.28
|
|
@@ -6610,8 +7492,9 @@ paths:
|
|
|
6610
7492
|
crypto_manual_id: 22001
|
|
6611
7493
|
symbol: btc
|
|
6612
7494
|
balances:
|
|
6613
|
-
-
|
|
6614
|
-
|
|
7495
|
+
- type: historical
|
|
7496
|
+
id: 104
|
|
7497
|
+
month: "2026-01"
|
|
6615
7498
|
balance: "53124.7200"
|
|
6616
7499
|
currency: usd
|
|
6617
7500
|
to_base: 53124.72
|
|
@@ -6621,8 +7504,9 @@ paths:
|
|
|
6621
7504
|
crypto_synced_id: 33004
|
|
6622
7505
|
symbol: btc
|
|
6623
7506
|
balances:
|
|
6624
|
-
-
|
|
6625
|
-
|
|
7507
|
+
- type: historical
|
|
7508
|
+
id: 105
|
|
7509
|
+
month: "2026-01"
|
|
6626
7510
|
balance: "6231.2800"
|
|
6627
7511
|
currency: usd
|
|
6628
7512
|
to_base: 6231.28
|
|
@@ -6638,12 +7522,34 @@ paths:
|
|
|
6638
7522
|
mask: "1234"
|
|
6639
7523
|
symbol: null
|
|
6640
7524
|
balances:
|
|
6641
|
-
-
|
|
6642
|
-
|
|
7525
|
+
- type: historical
|
|
7526
|
+
id: 106
|
|
7527
|
+
month: "2026-01"
|
|
6643
7528
|
balance: "1250.0000"
|
|
6644
7529
|
currency: usd
|
|
6645
7530
|
to_base: 1250
|
|
6646
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
|
|
6647
7553
|
manual account history:
|
|
6648
7554
|
value:
|
|
6649
7555
|
balance_history:
|
|
@@ -6651,14 +7557,16 @@ paths:
|
|
|
6651
7557
|
type: manual
|
|
6652
7558
|
manual_account_id: 119807
|
|
6653
7559
|
balances:
|
|
6654
|
-
-
|
|
6655
|
-
|
|
7560
|
+
- type: historical
|
|
7561
|
+
id: 201
|
|
7562
|
+
month: "2026-01"
|
|
6656
7563
|
balance: "41000.0000"
|
|
6657
7564
|
currency: usd
|
|
6658
7565
|
to_base: 41000
|
|
6659
7566
|
crypto_balance: null
|
|
6660
|
-
-
|
|
6661
|
-
|
|
7567
|
+
- type: historical
|
|
7568
|
+
id: 202
|
|
7569
|
+
month: "2026-02"
|
|
6662
7570
|
balance: "41211.8000"
|
|
6663
7571
|
currency: usd
|
|
6664
7572
|
to_base: 41211.8
|
|
@@ -6670,8 +7578,9 @@ paths:
|
|
|
6670
7578
|
type: plaid
|
|
6671
7579
|
plaid_account_id: 119808
|
|
6672
7580
|
balances:
|
|
6673
|
-
-
|
|
6674
|
-
|
|
7581
|
+
- type: historical
|
|
7582
|
+
id: 301
|
|
7583
|
+
month: "2026-02"
|
|
6675
7584
|
balance: "5498.2800"
|
|
6676
7585
|
currency: usd
|
|
6677
7586
|
to_base: 5498.28
|
|
@@ -6684,8 +7593,9 @@ paths:
|
|
|
6684
7593
|
crypto_synced_id: 33004
|
|
6685
7594
|
symbol: btc
|
|
6686
7595
|
balances:
|
|
6687
|
-
-
|
|
6688
|
-
|
|
7596
|
+
- type: historical
|
|
7597
|
+
id: 401
|
|
7598
|
+
month: "2026-02"
|
|
6689
7599
|
balance: "6231.2800"
|
|
6690
7600
|
currency: usd
|
|
6691
7601
|
to_base: 6231.28
|
|
@@ -6704,8 +7614,9 @@ paths:
|
|
|
6704
7614
|
mask: "1234"
|
|
6705
7615
|
symbol: null
|
|
6706
7616
|
balances:
|
|
6707
|
-
-
|
|
6708
|
-
|
|
7617
|
+
- type: historical
|
|
7618
|
+
id: 501
|
|
7619
|
+
month: "2026-01"
|
|
6709
7620
|
balance: "1250.0000"
|
|
6710
7621
|
currency: usd
|
|
6711
7622
|
to_base: 1250
|
|
@@ -6717,26 +7628,31 @@ paths:
|
|
|
6717
7628
|
schema:
|
|
6718
7629
|
$ref: "#/components/schemas/errorResponseObject"
|
|
6719
7630
|
examples:
|
|
6720
|
-
missing paired
|
|
7631
|
+
missing paired month:
|
|
6721
7632
|
value:
|
|
6722
7633
|
message: Request Validation Failure
|
|
6723
7634
|
errors:
|
|
6724
|
-
- errMsg: "`
|
|
7635
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
6725
7636
|
invalid range:
|
|
6726
7637
|
value:
|
|
6727
7638
|
message: Request Validation Failure
|
|
6728
7639
|
errors:
|
|
6729
|
-
- errMsg: "`
|
|
6730
|
-
|
|
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:
|
|
6731
7647
|
value:
|
|
6732
7648
|
message: Request Validation Failure
|
|
6733
7649
|
errors:
|
|
6734
|
-
- errMsg: "`
|
|
6735
|
-
future
|
|
7650
|
+
- errMsg: "`start_month` must not be in the future."
|
|
7651
|
+
future end month:
|
|
6736
7652
|
value:
|
|
6737
7653
|
message: Request Validation Failure
|
|
6738
7654
|
errors:
|
|
6739
|
-
- errMsg: "`
|
|
7655
|
+
- errMsg: "`end_month` must not be in the future."
|
|
6740
7656
|
"401":
|
|
6741
7657
|
$ref: "#/components/responses/unauthorizedToken"
|
|
6742
7658
|
"429":
|
|
@@ -6748,23 +7664,16 @@ paths:
|
|
|
6748
7664
|
tags:
|
|
6749
7665
|
- balance_history
|
|
6750
7666
|
summary: Get balance history for an account
|
|
6751
|
-
description:
|
|
6752
|
-
Retrieve
|
|
6753
|
-
|
|
6754
|
-
|
|
6755
|
-
The `account_type` path parameter identifies the type of account and the
|
|
6756
|
-
`account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
6757
|
-
|
|
6758
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
6759
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
6760
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
6761
|
-
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).
|
|
6762
7671
|
operationId: getBalanceHistoryForAccount
|
|
6763
7672
|
parameters:
|
|
6764
7673
|
- name: account_type
|
|
6765
7674
|
in: path
|
|
6766
7675
|
required: true
|
|
6767
|
-
description:
|
|
7676
|
+
description: Account family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6768
7677
|
schema:
|
|
6769
7678
|
type: string
|
|
6770
7679
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -6775,23 +7684,27 @@ paths:
|
|
|
6775
7684
|
schema:
|
|
6776
7685
|
type: integer
|
|
6777
7686
|
format: int32
|
|
6778
|
-
- name:
|
|
7687
|
+
- name: start_month
|
|
6779
7688
|
in: query
|
|
6780
|
-
description:
|
|
7689
|
+
description: >-
|
|
7690
|
+
Optional. Same format and constraints as `start_month` on
|
|
7691
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
6781
7692
|
required: false
|
|
6782
7693
|
schema:
|
|
6783
7694
|
type: string
|
|
6784
|
-
|
|
6785
|
-
- name:
|
|
7695
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7696
|
+
- name: end_month
|
|
6786
7697
|
in: query
|
|
6787
|
-
description:
|
|
7698
|
+
description: >-
|
|
7699
|
+
Optional. Same format and constraints as `end_month` on
|
|
7700
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
6788
7701
|
required: false
|
|
6789
7702
|
schema:
|
|
6790
7703
|
type: string
|
|
6791
|
-
|
|
7704
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6792
7705
|
responses:
|
|
6793
7706
|
"200":
|
|
6794
|
-
description:
|
|
7707
|
+
description: Monthly balance history for the requested source
|
|
6795
7708
|
content:
|
|
6796
7709
|
application/json:
|
|
6797
7710
|
schema:
|
|
@@ -6804,14 +7717,16 @@ paths:
|
|
|
6804
7717
|
type: manual
|
|
6805
7718
|
manual_account_id: 119807
|
|
6806
7719
|
balances:
|
|
6807
|
-
-
|
|
6808
|
-
|
|
7720
|
+
- type: historical
|
|
7721
|
+
id: 201
|
|
7722
|
+
month: "2026-01"
|
|
6809
7723
|
balance: "41000.0000"
|
|
6810
7724
|
currency: usd
|
|
6811
7725
|
to_base: 41000
|
|
6812
7726
|
crypto_balance: null
|
|
6813
|
-
-
|
|
6814
|
-
|
|
7727
|
+
- type: historical
|
|
7728
|
+
id: 202
|
|
7729
|
+
month: "2026-02"
|
|
6815
7730
|
balance: "41211.8000"
|
|
6816
7731
|
currency: usd
|
|
6817
7732
|
to_base: 41211.8
|
|
@@ -6830,8 +7745,9 @@ paths:
|
|
|
6830
7745
|
mask: "1234"
|
|
6831
7746
|
symbol: null
|
|
6832
7747
|
balances:
|
|
6833
|
-
-
|
|
6834
|
-
|
|
7748
|
+
- type: historical
|
|
7749
|
+
id: 501
|
|
7750
|
+
month: "2026-01"
|
|
6835
7751
|
balance: "1250.0000"
|
|
6836
7752
|
currency: usd
|
|
6837
7753
|
to_base: 1250
|
|
@@ -6843,16 +7759,16 @@ paths:
|
|
|
6843
7759
|
schema:
|
|
6844
7760
|
$ref: "#/components/schemas/errorResponseObject"
|
|
6845
7761
|
examples:
|
|
6846
|
-
missing paired
|
|
7762
|
+
missing paired month:
|
|
6847
7763
|
value:
|
|
6848
7764
|
message: Request Validation Failure
|
|
6849
7765
|
errors:
|
|
6850
|
-
- errMsg: "`
|
|
6851
|
-
invalid
|
|
7766
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
7767
|
+
invalid month format:
|
|
6852
7768
|
value:
|
|
6853
|
-
message: Request
|
|
7769
|
+
message: Invalid Request Parameters
|
|
6854
7770
|
errors:
|
|
6855
|
-
- errMsg: "
|
|
7771
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
6856
7772
|
"401":
|
|
6857
7773
|
$ref: "#/components/responses/unauthorizedToken"
|
|
6858
7774
|
"404":
|
|
@@ -6880,37 +7796,20 @@ paths:
|
|
|
6880
7796
|
tags:
|
|
6881
7797
|
- balance_history
|
|
6882
7798
|
summary: Upsert balance history for an account
|
|
6883
|
-
description:
|
|
6884
|
-
Upsert one or more historical balance entries for a single manual, Plaid,
|
|
6885
|
-
|
|
6886
|
-
|
|
6887
|
-
|
|
6888
|
-
`
|
|
6889
|
-
|
|
6890
|
-
|
|
6891
|
-
a `date` and `balance` value.<br><br>
|
|
6892
|
-
|
|
6893
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
6894
|
-
a month and must be in a past month.<br><br>
|
|
6895
|
-
|
|
6896
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
6897
|
-
to the account currency for manual/Plaid accounts, or the user's primary
|
|
6898
|
-
currency for crypto/deleted accounts.<br><br>
|
|
6899
|
-
|
|
6900
|
-
`symbol` may only be set when `account_type` is `crypto_manual` or
|
|
6901
|
-
`crypto_synced`. It is optional for `crypto_manual` accounts and tolerated
|
|
6902
|
-
for `deleted` accounts.<br><br>
|
|
6903
|
-
|
|
6904
|
-
`crypto_balance` may be provided for `crypto_manual`, `crypto_synced`, and
|
|
6905
|
-
`deleted` accounts, and is invalid for `manual` or `plaid` accounts.<br><br>
|
|
6906
|
-
|
|
6907
|
-
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.
|
|
6908
7807
|
operationId: upsertBalanceHistoryForAccount
|
|
6909
7808
|
parameters:
|
|
6910
7809
|
- name: account_type
|
|
6911
7810
|
in: path
|
|
6912
7811
|
required: true
|
|
6913
|
-
description:
|
|
7812
|
+
description: Account family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6914
7813
|
schema:
|
|
6915
7814
|
type: string
|
|
6916
7815
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -6931,21 +7830,21 @@ paths:
|
|
|
6931
7830
|
manual account bulk upsert:
|
|
6932
7831
|
value:
|
|
6933
7832
|
balances:
|
|
6934
|
-
-
|
|
7833
|
+
- month: "2026-03"
|
|
6935
7834
|
balance: "41500.0000"
|
|
6936
|
-
-
|
|
7835
|
+
- month: "2026-04"
|
|
6937
7836
|
balance: "41625.5000"
|
|
6938
7837
|
crypto manual balance with symbol:
|
|
6939
7838
|
value:
|
|
6940
7839
|
balances:
|
|
6941
|
-
-
|
|
7840
|
+
- month: "2026-03"
|
|
6942
7841
|
balance: "56011.1200"
|
|
6943
7842
|
symbol: btc
|
|
6944
7843
|
crypto_balance: "0.852341920145782301"
|
|
6945
7844
|
deleted account bulk upsert:
|
|
6946
7845
|
value:
|
|
6947
7846
|
balances:
|
|
6948
|
-
-
|
|
7847
|
+
- month: "2026-03"
|
|
6949
7848
|
symbol: btc
|
|
6950
7849
|
crypto_balance: "0.020000000000000000"
|
|
6951
7850
|
currency: usd
|
|
@@ -6954,55 +7853,59 @@ paths:
|
|
|
6954
7853
|
value:
|
|
6955
7854
|
balances:
|
|
6956
7855
|
- id: 601
|
|
6957
|
-
|
|
7856
|
+
month: "2026-03"
|
|
6958
7857
|
balance: "41500.0000"
|
|
6959
7858
|
currency: usd
|
|
6960
7859
|
to_base: 41500
|
|
6961
7860
|
crypto_balance: null
|
|
6962
7861
|
responses:
|
|
6963
7862
|
"200":
|
|
6964
|
-
description:
|
|
6965
|
-
|
|
7863
|
+
description: >-
|
|
7864
|
+
Returns only the `type: historical` entries modified by this request.
|
|
7865
|
+
Other historical entries for the account are omitted from `balances`.
|
|
6966
7866
|
content:
|
|
6967
7867
|
application/json:
|
|
6968
7868
|
schema:
|
|
6969
7869
|
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
6970
7870
|
examples:
|
|
6971
7871
|
manual account bulk upsert:
|
|
6972
|
-
summary: Two upserted
|
|
7872
|
+
summary: Two upserted entries returned (not full account history)
|
|
6973
7873
|
value:
|
|
6974
7874
|
source:
|
|
6975
7875
|
type: manual
|
|
6976
7876
|
manual_account_id: 119807
|
|
6977
7877
|
balances:
|
|
6978
|
-
-
|
|
6979
|
-
|
|
7878
|
+
- type: historical
|
|
7879
|
+
id: 601
|
|
7880
|
+
month: "2026-03"
|
|
6980
7881
|
balance: "41500.0000"
|
|
6981
7882
|
currency: usd
|
|
6982
7883
|
to_base: 41500
|
|
6983
7884
|
crypto_balance: null
|
|
6984
|
-
-
|
|
6985
|
-
|
|
7885
|
+
- type: historical
|
|
7886
|
+
id: 602
|
|
7887
|
+
month: "2026-04"
|
|
6986
7888
|
balance: "41625.5000"
|
|
6987
7889
|
currency: usd
|
|
6988
7890
|
to_base: 41625.5
|
|
6989
7891
|
crypto_balance: null
|
|
6990
7892
|
crypto manual balance with symbol:
|
|
6991
|
-
summary: Single upserted
|
|
7893
|
+
summary: Single upserted entry returned
|
|
6992
7894
|
value:
|
|
6993
7895
|
source:
|
|
6994
7896
|
type: crypto_manual
|
|
6995
7897
|
crypto_manual_id: 22001
|
|
6996
7898
|
symbol: btc
|
|
6997
7899
|
balances:
|
|
6998
|
-
-
|
|
6999
|
-
|
|
7900
|
+
- type: historical
|
|
7901
|
+
id: 603
|
|
7902
|
+
month: "2026-03"
|
|
7000
7903
|
balance: "56011.1200"
|
|
7001
7904
|
currency: usd
|
|
7002
7905
|
to_base: 56011.12
|
|
7003
7906
|
crypto_balance: "0.852341920145782301"
|
|
7004
7907
|
deleted account bulk upsert:
|
|
7005
|
-
summary: Single upserted
|
|
7908
|
+
summary: Single upserted entry returned
|
|
7006
7909
|
value:
|
|
7007
7910
|
source:
|
|
7008
7911
|
type: deleted
|
|
@@ -7015,15 +7918,17 @@ paths:
|
|
|
7015
7918
|
mask: "1234"
|
|
7016
7919
|
symbol: btc
|
|
7017
7920
|
balances:
|
|
7018
|
-
-
|
|
7019
|
-
|
|
7921
|
+
- type: historical
|
|
7922
|
+
id: 504
|
|
7923
|
+
month: "2026-03"
|
|
7020
7924
|
balance: "1255"
|
|
7021
7925
|
currency: usd
|
|
7022
7926
|
to_base: 1255
|
|
7023
7927
|
crypto_balance: "0.020000000000000000"
|
|
7024
7928
|
"400":
|
|
7025
|
-
description:
|
|
7026
|
-
`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.
|
|
7027
7932
|
content:
|
|
7028
7933
|
application/json:
|
|
7029
7934
|
schema:
|
|
@@ -7044,30 +7949,34 @@ paths:
|
|
|
7044
7949
|
message: Invalid Request Body
|
|
7045
7950
|
errors:
|
|
7046
7951
|
- errMsg: "Invalid property 'foo' in request body."
|
|
7047
|
-
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:
|
|
7048
7958
|
value:
|
|
7049
7959
|
message: Request Validation Failure
|
|
7050
7960
|
errors:
|
|
7051
|
-
- errMsg: "`
|
|
7961
|
+
- errMsg: "`month` must not be the current month."
|
|
7052
7962
|
request_balances_index: 0
|
|
7053
|
-
|
|
7054
|
-
future date:
|
|
7963
|
+
future month:
|
|
7055
7964
|
value:
|
|
7056
7965
|
message: Request Validation Failure
|
|
7057
7966
|
errors:
|
|
7058
|
-
- errMsg: "`
|
|
7967
|
+
- errMsg: "`month` must not be in the future."
|
|
7059
7968
|
request_balances_index: 1
|
|
7060
7969
|
crypto balance not allowed:
|
|
7061
7970
|
value:
|
|
7062
7971
|
message: Request Validation Failure
|
|
7063
7972
|
errors:
|
|
7064
|
-
- 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`."
|
|
7065
7974
|
request_balances_index: 0
|
|
7066
|
-
invalid
|
|
7975
|
+
invalid entry in bulk request:
|
|
7067
7976
|
value:
|
|
7068
7977
|
message: Request Validation Failure
|
|
7069
7978
|
errors:
|
|
7070
|
-
- 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`."
|
|
7071
7980
|
request_balances_index: 1
|
|
7072
7981
|
"401":
|
|
7073
7982
|
$ref: "#/components/responses/unauthorizedToken"
|
|
@@ -7089,15 +7998,14 @@ paths:
|
|
|
7089
7998
|
tags:
|
|
7090
7999
|
- balance_history
|
|
7091
8000
|
summary: Delete all balance history for an account
|
|
7092
|
-
description:
|
|
7093
|
-
Delete all historical balance entries for a single manual, Plaid,
|
|
7094
|
-
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}).
|
|
7095
8003
|
operationId: deleteBalanceHistoryForAccount
|
|
7096
8004
|
parameters:
|
|
7097
8005
|
- name: account_type
|
|
7098
8006
|
in: path
|
|
7099
8007
|
required: true
|
|
7100
|
-
description:
|
|
8008
|
+
description: Account family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7101
8009
|
schema:
|
|
7102
8010
|
type: string
|
|
7103
8011
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7134,16 +8042,10 @@ paths:
|
|
|
7134
8042
|
tags:
|
|
7135
8043
|
- balance_history
|
|
7136
8044
|
summary: Get balance history for a synced crypto symbol
|
|
7137
|
-
description:
|
|
7138
|
-
Retrieve
|
|
7139
|
-
|
|
7140
|
-
|
|
7141
|
-
to select one balance stream within that synced crypto account.<br><br>
|
|
7142
|
-
|
|
7143
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
7144
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
7145
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
7146
|
-
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).
|
|
7147
8049
|
operationId: getBalanceHistoryForCryptoSynced
|
|
7148
8050
|
parameters:
|
|
7149
8051
|
- name: account_id
|
|
@@ -7161,23 +8063,27 @@ paths:
|
|
|
7161
8063
|
type: string
|
|
7162
8064
|
minLength: 1
|
|
7163
8065
|
maxLength: 25
|
|
7164
|
-
- name:
|
|
8066
|
+
- name: start_month
|
|
7165
8067
|
in: query
|
|
7166
|
-
description:
|
|
8068
|
+
description: >-
|
|
8069
|
+
Optional. Same format and constraints as `start_month` on
|
|
8070
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7167
8071
|
required: false
|
|
7168
8072
|
schema:
|
|
7169
8073
|
type: string
|
|
7170
|
-
|
|
7171
|
-
- name:
|
|
8074
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
8075
|
+
- name: end_month
|
|
7172
8076
|
in: query
|
|
7173
|
-
description:
|
|
8077
|
+
description: >-
|
|
8078
|
+
Optional. Same format and constraints as `end_month` on
|
|
8079
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7174
8080
|
required: false
|
|
7175
8081
|
schema:
|
|
7176
8082
|
type: string
|
|
7177
|
-
|
|
8083
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7178
8084
|
responses:
|
|
7179
8085
|
"200":
|
|
7180
|
-
description:
|
|
8086
|
+
description: Monthly balance history for the synced crypto symbol stream
|
|
7181
8087
|
content:
|
|
7182
8088
|
application/json:
|
|
7183
8089
|
schema:
|
|
@@ -7189,8 +8095,9 @@ paths:
|
|
|
7189
8095
|
crypto_synced_id: 33004
|
|
7190
8096
|
symbol: btc
|
|
7191
8097
|
balances:
|
|
7192
|
-
-
|
|
7193
|
-
|
|
8098
|
+
- type: historical
|
|
8099
|
+
id: 401
|
|
8100
|
+
month: "2026-02"
|
|
7194
8101
|
balance: "6231.2800"
|
|
7195
8102
|
currency: usd
|
|
7196
8103
|
to_base: 6231.28
|
|
@@ -7202,16 +8109,16 @@ paths:
|
|
|
7202
8109
|
schema:
|
|
7203
8110
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7204
8111
|
examples:
|
|
7205
|
-
missing paired
|
|
8112
|
+
missing paired month:
|
|
7206
8113
|
value:
|
|
7207
8114
|
message: Request Validation Failure
|
|
7208
8115
|
errors:
|
|
7209
|
-
- errMsg: "`
|
|
7210
|
-
invalid
|
|
8116
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
8117
|
+
invalid month format:
|
|
7211
8118
|
value:
|
|
7212
|
-
message: Request
|
|
8119
|
+
message: Invalid Request Parameters
|
|
7213
8120
|
errors:
|
|
7214
|
-
- errMsg: "
|
|
8121
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7215
8122
|
"401":
|
|
7216
8123
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7217
8124
|
"404":
|
|
@@ -7239,28 +8146,14 @@ paths:
|
|
|
7239
8146
|
tags:
|
|
7240
8147
|
- balance_history
|
|
7241
8148
|
summary: Upsert balance history for a synced crypto symbol
|
|
7242
|
-
description:
|
|
7243
|
-
Upsert one or more historical balance entries for a single synced crypto
|
|
7244
|
-
symbol stream.<br><br>
|
|
7245
|
-
|
|
8149
|
+
description: |-
|
|
8150
|
+
Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7246
8151
|
The path identifies both the synced crypto account and the symbol being updated.<br><br>
|
|
7247
|
-
|
|
7248
|
-
|
|
7249
|
-
|
|
7250
|
-
|
|
7251
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
7252
|
-
a month and must be in a past month.<br><br>
|
|
7253
|
-
|
|
7254
|
-
The request body may include an optional `symbol` on each balance entry. If
|
|
7255
|
-
provided, it must match the `symbol` path parameter. Omit `symbol` to use
|
|
7256
|
-
the path value.<br><br>
|
|
7257
|
-
|
|
7258
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
7259
|
-
to the user's primary currency for synced crypto balances.<br><br>
|
|
7260
|
-
|
|
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>
|
|
7261
8155
|
`crypto_balance` may be provided for synced crypto balances.<br><br>
|
|
7262
|
-
|
|
7263
|
-
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.
|
|
7264
8157
|
operationId: upsertBalanceHistoryForCryptoSynced
|
|
7265
8158
|
parameters:
|
|
7266
8159
|
- name: account_id
|
|
@@ -7288,44 +8181,49 @@ paths:
|
|
|
7288
8181
|
synced crypto bulk upsert:
|
|
7289
8182
|
value:
|
|
7290
8183
|
balances:
|
|
7291
|
-
-
|
|
8184
|
+
- month: "2026-03"
|
|
7292
8185
|
balance: "6400.0000"
|
|
7293
8186
|
crypto_balance: "0.100020003000400050"
|
|
7294
|
-
-
|
|
8187
|
+
- month: "2026-04"
|
|
7295
8188
|
balance: "6500.0000"
|
|
7296
8189
|
crypto_balance: "0.100020003000400050"
|
|
7297
8190
|
responses:
|
|
7298
8191
|
"200":
|
|
7299
|
-
description:
|
|
7300
|
-
|
|
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`.
|
|
7301
8196
|
content:
|
|
7302
8197
|
application/json:
|
|
7303
8198
|
schema:
|
|
7304
8199
|
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7305
8200
|
examples:
|
|
7306
8201
|
synced crypto bulk upsert:
|
|
7307
|
-
summary: Two upserted
|
|
8202
|
+
summary: Two upserted entries returned (not full symbol history)
|
|
7308
8203
|
value:
|
|
7309
8204
|
source:
|
|
7310
8205
|
type: crypto_synced
|
|
7311
8206
|
crypto_synced_id: 33004
|
|
7312
8207
|
symbol: btc
|
|
7313
8208
|
balances:
|
|
7314
|
-
-
|
|
7315
|
-
|
|
8209
|
+
- type: historical
|
|
8210
|
+
id: 604
|
|
8211
|
+
month: "2026-03"
|
|
7316
8212
|
balance: "6400.0000"
|
|
7317
8213
|
currency: usd
|
|
7318
8214
|
to_base: 6400
|
|
7319
8215
|
crypto_balance: "0.100020003000400050"
|
|
7320
|
-
-
|
|
7321
|
-
|
|
8216
|
+
- type: historical
|
|
8217
|
+
id: 605
|
|
8218
|
+
month: "2026-04"
|
|
7322
8219
|
balance: "6500.0000"
|
|
7323
8220
|
currency: usd
|
|
7324
8221
|
to_base: 6500
|
|
7325
8222
|
crypto_balance: "0.100020003000400050"
|
|
7326
8223
|
"400":
|
|
7327
|
-
description:
|
|
7328
|
-
`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.
|
|
7329
8227
|
content:
|
|
7330
8228
|
application/json:
|
|
7331
8229
|
schema:
|
|
@@ -7341,17 +8239,22 @@ paths:
|
|
|
7341
8239
|
message: Invalid Request Body
|
|
7342
8240
|
errors:
|
|
7343
8241
|
- errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
7344
|
-
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:
|
|
7345
8248
|
value:
|
|
7346
8249
|
message: Request Validation Failure
|
|
7347
8250
|
errors:
|
|
7348
|
-
- errMsg: "`
|
|
8251
|
+
- errMsg: "`month` must not be the current month."
|
|
7349
8252
|
request_balances_index: 0
|
|
7350
|
-
future
|
|
8253
|
+
future month:
|
|
7351
8254
|
value:
|
|
7352
8255
|
message: Request Validation Failure
|
|
7353
8256
|
errors:
|
|
7354
|
-
- errMsg: "`
|
|
8257
|
+
- errMsg: "`month` must not be in the future."
|
|
7355
8258
|
request_balances_index: 1
|
|
7356
8259
|
symbol mismatch:
|
|
7357
8260
|
value:
|
|
@@ -7359,9 +8262,9 @@ paths:
|
|
|
7359
8262
|
errors:
|
|
7360
8263
|
- errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
|
|
7361
8264
|
request_balances_index: 0
|
|
7362
|
-
invalid
|
|
8265
|
+
invalid entry in bulk request:
|
|
7363
8266
|
value:
|
|
7364
|
-
message: Request
|
|
8267
|
+
message: Invalid Request Body
|
|
7365
8268
|
errors:
|
|
7366
8269
|
- errMsg: "`balance` must be a valid numeric string or number."
|
|
7367
8270
|
request_balances_index: 1
|
|
@@ -7392,11 +8295,9 @@ paths:
|
|
|
7392
8295
|
tags:
|
|
7393
8296
|
- balance_history
|
|
7394
8297
|
summary: Delete all balance history for a synced crypto symbol
|
|
7395
|
-
description:
|
|
8298
|
+
description: |-
|
|
7396
8299
|
Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7397
|
-
|
|
7398
|
-
The path identifies both the synced crypto account and the symbol whose
|
|
7399
|
-
history should be deleted.
|
|
8300
|
+
The path identifies both the synced crypto account and the symbol whose history should be deleted.
|
|
7400
8301
|
operationId: deleteBalanceHistoryForCryptoSynced
|
|
7401
8302
|
parameters:
|
|
7402
8303
|
- name: account_id
|
|
@@ -7438,14 +8339,14 @@ paths:
|
|
|
7438
8339
|
tags:
|
|
7439
8340
|
- balance_history
|
|
7440
8341
|
summary: Delete a balance history entry
|
|
7441
|
-
description:
|
|
7442
|
-
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.
|
|
7443
8344
|
operationId: deleteBalanceHistoryEntry
|
|
7444
8345
|
parameters:
|
|
7445
8346
|
- name: id
|
|
7446
8347
|
in: path
|
|
7447
8348
|
required: true
|
|
7448
|
-
description:
|
|
8349
|
+
description: Historical balance entry identifier to delete.
|
|
7449
8350
|
schema:
|
|
7450
8351
|
type: integer
|
|
7451
8352
|
format: int32
|
|
@@ -7459,7 +8360,7 @@ paths:
|
|
|
7459
8360
|
schema:
|
|
7460
8361
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7461
8362
|
example:
|
|
7462
|
-
message:
|
|
8363
|
+
message: Invalid Path Parameters
|
|
7463
8364
|
errors:
|
|
7464
8365
|
- errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
|
|
7465
8366
|
"401":
|
|
@@ -7483,12 +8384,9 @@ paths:
|
|
|
7483
8384
|
tags:
|
|
7484
8385
|
- balance_history
|
|
7485
8386
|
summary: Update details for a deleted account
|
|
7486
|
-
description:
|
|
8387
|
+
description: |-
|
|
7487
8388
|
Update archived metadata for a deleted balance history source.<br><br>
|
|
7488
|
-
|
|
7489
|
-
Pass the `deleted` source id returned on `source.deleted_account_id`.
|
|
7490
|
-
This endpoint updates the stored deleted-source metadata used for all
|
|
7491
|
-
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.
|
|
7492
8390
|
operationId: updateBalanceHistoryDetails
|
|
7493
8391
|
parameters:
|
|
7494
8392
|
- name: account_id
|
|
@@ -8562,19 +9460,19 @@ paths:
|
|
|
8562
9460
|
description: Sets the maximum number of transactions to return. If
|
|
8563
9461
|
more match the filter criteria, the response will include a
|
|
8564
9462
|
`has_more` attribute set to `true`. See
|
|
8565
|
-
[Pagination](https://
|
|
9463
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8566
9464
|
- name: offset
|
|
8567
9465
|
in: query
|
|
8568
9466
|
schema:
|
|
8569
9467
|
type: integer
|
|
8570
9468
|
description: Sets the offset for the records returned. This is
|
|
8571
9469
|
typically set automatically in the header. See
|
|
8572
|
-
[Pagination](https://
|
|
9470
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8573
9471
|
responses:
|
|
8574
9472
|
"200":
|
|
8575
9473
|
description: Returns an array of transactions. <br><br>The `has_more`
|
|
8576
9474
|
property is set to `true` if more transactions are available. See
|
|
8577
|
-
[Pagination](https://
|
|
9475
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8578
9476
|
content:
|
|
8579
9477
|
application/json:
|
|
8580
9478
|
schema:
|
|
@@ -10798,9 +11696,8 @@ paths:
|
|
|
10798
11696
|
- transactions (files)
|
|
10799
11697
|
summary: Attach a file to a transaction
|
|
10800
11698
|
operationId: attachFileToTransaction
|
|
10801
|
-
description:
|
|
10802
|
-
Attaches a file to a transaction. The file must be less than 10MB in size.<br><br>
|
|
10803
|
-
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.
|
|
10804
11701
|
parameters:
|
|
10805
11702
|
- name: transaction_id
|
|
10806
11703
|
in: path
|
|
@@ -10883,8 +11780,8 @@ paths:
|
|
|
10883
11780
|
/transactions/attachments/{file_id}:
|
|
10884
11781
|
get:
|
|
10885
11782
|
summary: Get a url to download a file attachment
|
|
10886
|
-
description:
|
|
10887
|
-
attachment.
|
|
11783
|
+
description: |-
|
|
11784
|
+
Returns a signed url that can be used to download the file attachment.
|
|
10888
11785
|
operationId: getTransactionAttachmentUrl
|
|
10889
11786
|
tags:
|
|
10890
11787
|
- transactions (files)
|
|
@@ -11617,12 +12514,17 @@ paths:
|
|
|
11617
12514
|
get:
|
|
11618
12515
|
tags:
|
|
11619
12516
|
- budgets
|
|
11620
|
-
summary: Get budget settings
|
|
11621
|
-
description:
|
|
12517
|
+
summary: Get budget period settings
|
|
12518
|
+
description: |-
|
|
12519
|
+
Returns budget period and display settings for the budget
|
|
12520
|
+
associated with this API token.<p> These control how budget **periods** are calculated
|
|
12521
|
+
(granularity, anchor date, rollover, and related options). For general
|
|
12522
|
+
budget preferences such as currency and locale, see
|
|
12523
|
+
[/me/account/settings](#tag/me/GET/me/account/settings).
|
|
11622
12524
|
operationId: getBudgetSettings
|
|
11623
12525
|
responses:
|
|
11624
12526
|
"200":
|
|
11625
|
-
description: Budget settings for the
|
|
12527
|
+
description: Budget period settings for the current budget
|
|
11626
12528
|
content:
|
|
11627
12529
|
application/json:
|
|
11628
12530
|
schema:
|
|
@@ -11645,7 +12547,7 @@ paths:
|
|
|
11645
12547
|
Note that `start_date` **must** be a valid budget period start for the account (based on the account's
|
|
11646
12548
|
budget period settings). If an invalid `start_date` is provided, the request will fail with an error that indicates what the previous and next valid start dates are.<p>
|
|
11647
12549
|
|
|
11648
|
-
Use the [budgets/settings](#tag/budgets/GET/budgets/settings) endpoint to view the
|
|
12550
|
+
Use the [/budgets/settings](#tag/budgets/GET/budgets/settings) endpoint to view the budget period settings for the account.<br>
|
|
11649
12551
|
To view details for existing budgets, use the [summary](#tag/summary) endpoint.
|
|
11650
12552
|
operationId: upsertBudget
|
|
11651
12553
|
requestBody:
|
|
@@ -11716,7 +12618,7 @@ paths:
|
|
|
11716
12618
|
period settings). If an invalid `start_date` is provided, the request
|
|
11717
12619
|
will fail with an error that indicates what the previous and next valid
|
|
11718
12620
|
start dates are.<p> Use the
|
|
11719
|
-
[budgets/settings](#tag/budgets/GET/budgets/settings) endpoint to view
|
|
12621
|
+
[/budgets/settings](#tag/budgets/GET/budgets/settings) endpoint to view
|
|
11720
12622
|
the account's budget settings.<br> To view details for existing budgets,
|
|
11721
12623
|
use the [summary](#tag/summary) endpoint.
|
|
11722
12624
|
operationId: deleteBudget
|
|
@@ -11774,4 +12676,3 @@ paths:
|
|
|
11774
12676
|
|
|
11775
12677
|
security:
|
|
11776
12678
|
- bearerSecurity: []
|
|
11777
|
-
- cookieAuth: []
|