@lunch-money/v2-api-spec 2.11.0-preview.2 → 2.11.0-preview.20
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 +686 -527
- package/package.json +11 -5
- package/version-history.md +8 -1
- package/README.md.backup +0 -217
- package/update-urls.sh +0 -135
package/lunch-money-api-v2.yaml
CHANGED
|
@@ -2,50 +2,40 @@ openapi: 3.0.2
|
|
|
2
2
|
info:
|
|
3
3
|
title: Lunch Money API - v2
|
|
4
4
|
description: |-
|
|
5
|
-
|
|
6
|
-
This documentation is for the **v2.11.0** release of the API.<p>
|
|
7
|
-
|
|
8
|
-
See the [version history](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/version-history) for what is new in this release.
|
|
9
|
-
New functionality may only be available in the Mock Service until the release is finalized. <br><br>
|
|
10
|
-
|
|
11
|
-
The latest complete implementation of the spec is for the **v2.8.5** release and can be found [here](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/). <br><br>
|
|
12
|
-
Feedback on any of the API design is welcome, but we are particularly interested in getting feedback on most recent changes in the [version history](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/version-history).
|
|
13
|
-
|
|
14
|
-
------------------------------------------------------------------------------------------------
|
|
15
|
-
Welcome to the Lunch Money v2 API.
|
|
5
|
+
### Introduction
|
|
16
6
|
|
|
17
|
-
|
|
7
|
+
Welcome to the Lunch Money v2 API reference. This is the **v2.11.0** spec.
|
|
18
8
|
|
|
19
|
-
`https://api.lunchmoney.dev/v2
|
|
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).
|
|
20
10
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
See the [Getting Started Guide](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/getting-started) for more information on using a test budget.<p>
|
|
11
|
+
|
|
12
|
+
**Try it from these docs**
|
|
24
13
|
|
|
25
|
-
|
|
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**
|
|
26
20
|
|
|
27
|
-
|
|
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
|
+
|
|
28
24
|
|
|
29
|
-
|
|
30
|
-
This will allow you to become familiar with the API without having to create an access token, and eliminates the possibility of changing real data. <p>
|
|
31
|
-
To access this endpoint, select the second endpoint in the "Server" dropdown to the right. When selected, you should see "Static Mock v2 Lunch Money API Server".<br>
|
|
32
|
-
When using this server, set your Bearer token to any string with 11 or more characters.
|
|
25
|
+
**Client Libraries & SDKs**
|
|
33
26
|
|
|
34
|
-
|
|
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).
|
|
35
28
|
|
|
36
|
-
|
|
29
|
+
**Migrating from v1**
|
|
37
30
|
|
|
38
|
-
|
|
31
|
+
The v2 API is not backwards compatible with v1. See the [Migration Guide](https://lunchmoney.dev/v2/migration-guide) for details.
|
|
39
32
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- [
|
|
44
|
-
- [
|
|
45
|
-
- [
|
|
46
|
-
- [Rate Limits](https://lm-v2-api-next-a7fabcab8e9a.herokuapp.com/v2/rate-limits)
|
|
47
|
-
- [Current v1 Lunch Money API Documentation](https://lunchmoney.dev)
|
|
48
|
-
- [Awesome Lunch Money Projects](https://github.com/lunch-money/awesome-lunchmoney?tab=readme-ov-file)
|
|
33
|
+
**Useful links**
|
|
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)
|
|
49
39
|
termsOfService: https://lunchmoney.dev/#current-status
|
|
50
40
|
contact:
|
|
51
41
|
email: devsupport@lunchmoney.app
|
|
@@ -56,10 +46,9 @@ info:
|
|
|
56
46
|
|
|
57
47
|
servers:
|
|
58
48
|
- url: https://api.lunchmoney.dev/v2
|
|
59
|
-
description:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
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
|
|
63
52
|
|
|
64
53
|
tags:
|
|
65
54
|
- name: me
|
|
@@ -90,7 +79,11 @@ tags:
|
|
|
90
79
|
description: Learn more about crypto assets
|
|
91
80
|
url: https://support.lunchmoney.app/setup/crypto
|
|
92
81
|
- name: balance_history
|
|
93
|
-
description:
|
|
82
|
+
description: >-
|
|
83
|
+
View and update monthly account balances used by the
|
|
84
|
+
[Net Worth](https://my.lunchmoney.app/net-worth) views in the Lunch Money app.
|
|
85
|
+
History is monthly. The current month may be calculated on demand when
|
|
86
|
+
requested.
|
|
94
87
|
- name: recurring_items
|
|
95
88
|
description: Work with recurring items
|
|
96
89
|
externalDocs:
|
|
@@ -126,8 +119,10 @@ tags:
|
|
|
126
119
|
description: Learn more about transactions
|
|
127
120
|
url: https://support.lunchmoney.app/finances/transactions
|
|
128
121
|
- name: budgets
|
|
129
|
-
description: View settings and modify budget amounts.<p> Use
|
|
130
|
-
[/
|
|
122
|
+
description: View settings and modify budget amounts.<p> Use
|
|
123
|
+
[/budgets/settings](#tag/budgets/GET/budgets/settings) to view budget
|
|
124
|
+
period settings.<p> Use the [/summary](#tag/summary) endpoint to view
|
|
125
|
+
the budget details performance.
|
|
131
126
|
externalDocs:
|
|
132
127
|
description: Learn more about budgets
|
|
133
128
|
url: https://support.lunchmoney.app/finances/budgets
|
|
@@ -155,12 +150,12 @@ components:
|
|
|
155
150
|
account_id:
|
|
156
151
|
type: integer
|
|
157
152
|
format: int64
|
|
158
|
-
description: Unique ID for the
|
|
153
|
+
description: Unique ID for the current budgeting account
|
|
159
154
|
budget_name:
|
|
160
155
|
type: string
|
|
161
|
-
description: Name of the
|
|
156
|
+
description: Name of the current budgeting account
|
|
162
157
|
primary_currency:
|
|
163
|
-
description: Primary currency
|
|
158
|
+
description: Primary currency for the current budgeting account
|
|
164
159
|
allOf:
|
|
165
160
|
- $ref: "#/components/schemas/currencyEnum"
|
|
166
161
|
api_key_label:
|
|
@@ -679,7 +674,6 @@ components:
|
|
|
679
674
|
cryptoManualObject:
|
|
680
675
|
type: object
|
|
681
676
|
title: manual crypto object
|
|
682
|
-
x-internal: true
|
|
683
677
|
additionalProperties: false
|
|
684
678
|
properties:
|
|
685
679
|
id:
|
|
@@ -719,13 +713,22 @@ components:
|
|
|
719
713
|
description: CoinGecko identifier associated with this balance
|
|
720
714
|
to_base:
|
|
721
715
|
type: number
|
|
722
|
-
|
|
716
|
+
nullable: true
|
|
717
|
+
description: Balance converted to the user's primary currency. May be null if no conversion was available.
|
|
723
718
|
balance_as_of:
|
|
724
719
|
type: string
|
|
725
720
|
format: date-time
|
|
726
721
|
nullable: true
|
|
727
|
-
description: Date/time the balance was last updated in
|
|
728
|
-
extended format
|
|
722
|
+
description: Date/time the manual balance record was last updated in
|
|
723
|
+
ISO 8601 extended format. This is currently based on the manual
|
|
724
|
+
crypto record's updated_at timestamp.
|
|
725
|
+
exchange_rate_as_of:
|
|
726
|
+
type: string
|
|
727
|
+
format: date-time
|
|
728
|
+
nullable: true
|
|
729
|
+
description: Date/time the exchange rate used to calculate to_base was
|
|
730
|
+
last updated in ISO 8601 extended format. Null when no exchange rate was
|
|
731
|
+
used or no conversion was available.
|
|
729
732
|
created_by_name:
|
|
730
733
|
type: string
|
|
731
734
|
nullable: true
|
|
@@ -750,6 +753,7 @@ components:
|
|
|
750
753
|
- coingecko_id
|
|
751
754
|
- to_base
|
|
752
755
|
- balance_as_of
|
|
756
|
+
- exchange_rate_as_of
|
|
753
757
|
- created_by_name
|
|
754
758
|
- created_at
|
|
755
759
|
- updated_at
|
|
@@ -758,14 +762,18 @@ components:
|
|
|
758
762
|
cryptoSyncedBalance:
|
|
759
763
|
type: object
|
|
760
764
|
title: synced crypto balance object
|
|
761
|
-
x-internal: true
|
|
762
765
|
additionalProperties: false
|
|
763
766
|
properties:
|
|
764
767
|
name:
|
|
765
768
|
type: string
|
|
766
769
|
minLength: 1
|
|
767
770
|
maxLength: 45
|
|
768
|
-
description: The name
|
|
771
|
+
description: The asset name for this balance, typically the uppercased currency symbol (e.g. ETH).
|
|
772
|
+
display_name:
|
|
773
|
+
type: string
|
|
774
|
+
nullable: true
|
|
775
|
+
description: Optional display name for the synced crypto asset as set by the user. If `null`,
|
|
776
|
+
clients may derive a display name from syncedCryptoAccount's `provider` + `name`.
|
|
769
777
|
balance:
|
|
770
778
|
type: string
|
|
771
779
|
pattern: ^-?\d+(\.\d{1,18})?$
|
|
@@ -783,13 +791,21 @@ components:
|
|
|
783
791
|
description: CoinGecko identifier associated with this balance
|
|
784
792
|
to_base:
|
|
785
793
|
type: number
|
|
786
|
-
|
|
794
|
+
nullable: true
|
|
795
|
+
description: Balance converted to the user's primary currency. May be null if no conversion was available.
|
|
787
796
|
balance_as_of:
|
|
788
797
|
type: string
|
|
789
798
|
format: date-time
|
|
790
799
|
nullable: true
|
|
791
800
|
description: Date/time the balance was last updated in ISO 8601
|
|
792
|
-
extended format
|
|
801
|
+
extended format.
|
|
802
|
+
exchange_rate_as_of:
|
|
803
|
+
type: string
|
|
804
|
+
format: date-time
|
|
805
|
+
nullable: true
|
|
806
|
+
description: Date/time the exchange rate used to calculate to_base was
|
|
807
|
+
last updated in ISO 8601 extended format. Null when no exchange rate was
|
|
808
|
+
used or no conversion was available.
|
|
793
809
|
updated_at:
|
|
794
810
|
type: string
|
|
795
811
|
format: date-time
|
|
@@ -797,17 +813,18 @@ components:
|
|
|
797
813
|
extended format
|
|
798
814
|
required:
|
|
799
815
|
- name
|
|
816
|
+
- display_name
|
|
800
817
|
- balance
|
|
801
818
|
- symbol
|
|
802
819
|
- coingecko_id
|
|
803
820
|
- to_base
|
|
804
821
|
- balance_as_of
|
|
822
|
+
- exchange_rate_as_of
|
|
805
823
|
- updated_at
|
|
806
824
|
|
|
807
825
|
syncedCryptoAccount:
|
|
808
826
|
type: object
|
|
809
827
|
title: synced crypto account
|
|
810
|
-
x-internal: true
|
|
811
828
|
additionalProperties: false
|
|
812
829
|
properties:
|
|
813
830
|
id:
|
|
@@ -974,16 +991,19 @@ components:
|
|
|
974
991
|
example: Cold Wallet BTC
|
|
975
992
|
display_name:
|
|
976
993
|
type: string
|
|
994
|
+
nullable: true
|
|
977
995
|
minLength: 1
|
|
978
996
|
maxLength: 45
|
|
979
|
-
description:
|
|
980
|
-
|
|
997
|
+
description: Display name for the manual crypto asset. If omitted or
|
|
998
|
+
`null`, clients may derive one from `institution_name` + `name`.
|
|
981
999
|
example: Cold Storage
|
|
982
1000
|
institution_name:
|
|
983
1001
|
type: string
|
|
1002
|
+
nullable: true
|
|
984
1003
|
minLength: 1
|
|
985
1004
|
maxLength: 50
|
|
986
|
-
description:
|
|
1005
|
+
description: Institution or wallet provider display name. If omitted
|
|
1006
|
+
or `null`, no institution name is set.
|
|
987
1007
|
example: Ledger
|
|
988
1008
|
balance:
|
|
989
1009
|
oneOf:
|
|
@@ -1072,8 +1092,16 @@ components:
|
|
|
1072
1092
|
type: string
|
|
1073
1093
|
format: date-time
|
|
1074
1094
|
nullable: true
|
|
1075
|
-
description: System defined date/time the balance was
|
|
1076
|
-
ISO 8601 extended format. Ignored if set
|
|
1095
|
+
description: System defined date/time the manual balance record was
|
|
1096
|
+
last updated in ISO 8601 extended format. Ignored if set
|
|
1097
|
+
x-updatable: false
|
|
1098
|
+
exchange_rate_as_of:
|
|
1099
|
+
type: string
|
|
1100
|
+
format: date-time
|
|
1101
|
+
nullable: true
|
|
1102
|
+
description: System defined date/time the exchange rate used to
|
|
1103
|
+
calculate to_base was observed in ISO 8601 extended format. Ignored
|
|
1104
|
+
if set
|
|
1077
1105
|
x-updatable: false
|
|
1078
1106
|
created_by_name:
|
|
1079
1107
|
type: string
|
|
@@ -1231,15 +1259,19 @@ components:
|
|
|
1231
1259
|
example: My Savings Account
|
|
1232
1260
|
institution_name:
|
|
1233
1261
|
type: string
|
|
1262
|
+
nullable: true
|
|
1234
1263
|
example: Bank of the West
|
|
1235
|
-
description: Name of institution holding the manual account
|
|
1264
|
+
description: Name of the institution holding the manual account. If
|
|
1265
|
+
omitted or `null`, no institution name is set.
|
|
1236
1266
|
minLength: 1
|
|
1237
1267
|
maxLength: 50
|
|
1238
1268
|
display_name:
|
|
1239
1269
|
type: string
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1270
|
+
nullable: true
|
|
1271
|
+
description: Display name of the manual account. If omitted or
|
|
1272
|
+
`null`, it is derived from `institution_name` and `name`. An
|
|
1273
|
+
explicitly set display name must be unique for the budgeting
|
|
1274
|
+
account.
|
|
1243
1275
|
example: Savings
|
|
1244
1276
|
type:
|
|
1245
1277
|
description: The type of manual account
|
|
@@ -1247,8 +1279,10 @@ components:
|
|
|
1247
1279
|
- $ref: "#/components/schemas/accountTypeEnum"
|
|
1248
1280
|
subtype:
|
|
1249
1281
|
type: string
|
|
1250
|
-
|
|
1251
|
-
|
|
1282
|
+
nullable: true
|
|
1283
|
+
description: Manual account subtype. If omitted or `null`, no subtype
|
|
1284
|
+
is set. Examples include retirement, checking, savings, and prepaid
|
|
1285
|
+
credit card.
|
|
1252
1286
|
minLength: 1
|
|
1253
1287
|
maxLength: 100
|
|
1254
1288
|
example: prepaid credit card
|
|
@@ -1353,10 +1387,13 @@ components:
|
|
|
1353
1387
|
- $ref: "#/components/schemas/accountTypeEnum"
|
|
1354
1388
|
subtype:
|
|
1355
1389
|
type: string
|
|
1356
|
-
|
|
1390
|
+
nullable: true
|
|
1391
|
+
description: If set, an optional account subtype. Set to `null` to clear it.
|
|
1392
|
+
Examples include<br>
|
|
1357
1393
|
- retirement - checking - savings - prepaid credit card
|
|
1358
1394
|
minLength: 1
|
|
1359
1395
|
maxLength: 100
|
|
1396
|
+
example: prepaid credit card
|
|
1360
1397
|
x-updatable: true
|
|
1361
1398
|
balance:
|
|
1362
1399
|
oneOf:
|
|
@@ -1614,11 +1651,12 @@ components:
|
|
|
1614
1651
|
type: object
|
|
1615
1652
|
description: Source information for a manual account balance history entry.
|
|
1616
1653
|
additionalProperties: false
|
|
1654
|
+
x-internal: true
|
|
1617
1655
|
properties:
|
|
1618
1656
|
type:
|
|
1619
1657
|
type: string
|
|
1620
1658
|
enum: [manual]
|
|
1621
|
-
description: Identifies this entry as belonging to a
|
|
1659
|
+
description: Identifies this entry as belonging to a manual account.
|
|
1622
1660
|
manual_account_id:
|
|
1623
1661
|
type: integer
|
|
1624
1662
|
format: int32
|
|
@@ -1631,6 +1669,7 @@ components:
|
|
|
1631
1669
|
type: object
|
|
1632
1670
|
description: Source information for a Plaid-synced account balance history entry.
|
|
1633
1671
|
additionalProperties: false
|
|
1672
|
+
x-internal: true
|
|
1634
1673
|
properties:
|
|
1635
1674
|
type:
|
|
1636
1675
|
type: string
|
|
@@ -1646,13 +1685,14 @@ components:
|
|
|
1646
1685
|
|
|
1647
1686
|
balanceHistorySourceCryptoManual:
|
|
1648
1687
|
type: object
|
|
1649
|
-
description: Source information for a
|
|
1688
|
+
description: Source information for a manual cryptocurrency balance history entry.
|
|
1650
1689
|
additionalProperties: false
|
|
1690
|
+
x-internal: true
|
|
1651
1691
|
properties:
|
|
1652
1692
|
type:
|
|
1653
1693
|
type: string
|
|
1654
1694
|
enum: [crypto_manual]
|
|
1655
|
-
description: Identifies this entry as belonging to a
|
|
1695
|
+
description: Identifies this entry as belonging to a manual crypto account.
|
|
1656
1696
|
crypto_manual_id:
|
|
1657
1697
|
type: integer
|
|
1658
1698
|
format: int32
|
|
@@ -1695,10 +1735,11 @@ components:
|
|
|
1695
1735
|
type: object
|
|
1696
1736
|
x-internal: true
|
|
1697
1737
|
description: >
|
|
1698
|
-
Source information for
|
|
1738
|
+
Source information for balance history whose account has since been deleted.
|
|
1699
1739
|
Historical balances are preserved when a user chooses to keep history on account deletion.
|
|
1700
1740
|
This object contains details that can be used to display the deleted account in the UI.
|
|
1701
|
-
The `deleted_account_id` can be passed to
|
|
1741
|
+
The `deleted_account_id` can be passed to
|
|
1742
|
+
[PUT /balance_history/deleted/{account_id}/details](#tag/balance-history/PUT/balance_history/deleted/{account_id}/details)
|
|
1702
1743
|
to update the archived source metadata.
|
|
1703
1744
|
additionalProperties: false
|
|
1704
1745
|
properties:
|
|
@@ -1729,11 +1770,11 @@ components:
|
|
|
1729
1770
|
subtype:
|
|
1730
1771
|
type: string
|
|
1731
1772
|
nullable: true
|
|
1732
|
-
description: Archived `subtype
|
|
1773
|
+
description: Archived `subtype` of the deleted account source
|
|
1733
1774
|
mask:
|
|
1734
1775
|
type: string
|
|
1735
1776
|
nullable: true
|
|
1736
|
-
description: Archived account `mask` for a deleted
|
|
1777
|
+
description: Archived account `mask` for a deleted Plaid account source
|
|
1737
1778
|
symbol:
|
|
1738
1779
|
type: string
|
|
1739
1780
|
nullable: true
|
|
@@ -1750,16 +1791,19 @@ components:
|
|
|
1750
1791
|
- subtype
|
|
1751
1792
|
- mask
|
|
1752
1793
|
- symbol
|
|
1794
|
+
|
|
1753
1795
|
balanceHistoryAccountObject:
|
|
1754
1796
|
type: object
|
|
1755
|
-
title: balance history account object
|
|
1797
|
+
title: balance history for an account object
|
|
1756
1798
|
additionalProperties: false
|
|
1757
|
-
description:
|
|
1799
|
+
description: Monthly balance entries grouped under a single account source.
|
|
1758
1800
|
properties:
|
|
1759
1801
|
source:
|
|
1760
1802
|
description: >
|
|
1761
|
-
Identifies the account
|
|
1762
|
-
`source.type`.
|
|
1803
|
+
Identifies the account these balance entries belong to. The shape varies by
|
|
1804
|
+
`source.type`. Each source type exposes a type-specific account id field
|
|
1805
|
+
(`manual_account_id`, `plaid_account_id`, `crypto_manual_id`,
|
|
1806
|
+
`crypto_synced_id`, or `deleted_account_id`).
|
|
1763
1807
|
oneOf:
|
|
1764
1808
|
- $ref: "#/components/schemas/balanceHistorySourceManual"
|
|
1765
1809
|
- $ref: "#/components/schemas/balanceHistorySourcePlaid"
|
|
@@ -1776,35 +1820,49 @@ components:
|
|
|
1776
1820
|
deleted: "#/components/schemas/balanceHistorySourceDeleted"
|
|
1777
1821
|
balances:
|
|
1778
1822
|
type: array
|
|
1779
|
-
description:
|
|
1823
|
+
description: >
|
|
1824
|
+
Monthly balance entries for this account source. A `historical` entry is
|
|
1825
|
+
a stored snapshot of a past month and includes an `id`. A `current` entry
|
|
1826
|
+
is an ephemeral snapshot based on the account's current balances and has
|
|
1827
|
+
no balance-entry `id`. On PUT upsert responses, this array includes only
|
|
1828
|
+
the `type: historical` entries modified by that request.
|
|
1780
1829
|
items:
|
|
1781
|
-
$ref: "#/components/schemas/
|
|
1830
|
+
$ref: "#/components/schemas/balanceHistoryEntry"
|
|
1782
1831
|
required:
|
|
1783
1832
|
- source
|
|
1784
1833
|
- balances
|
|
1785
1834
|
|
|
1786
|
-
|
|
1835
|
+
historicalBalanceHistoryEntry:
|
|
1787
1836
|
type: object
|
|
1788
|
-
title: balance history entry
|
|
1837
|
+
title: historical balance history entry
|
|
1789
1838
|
additionalProperties: false
|
|
1790
|
-
|
|
1839
|
+
x-internal: true
|
|
1840
|
+
description: >
|
|
1841
|
+
A stored monthly balance for a past month. The `id` may be used with
|
|
1842
|
+
balance history entry endpoints. The balance represents the account
|
|
1843
|
+
balance at or around the end of `month`.
|
|
1791
1844
|
properties:
|
|
1845
|
+
type:
|
|
1846
|
+
type: string
|
|
1847
|
+
enum: [historical]
|
|
1848
|
+
description: Identifies this entry as a stored snapshot of a past month.
|
|
1792
1849
|
id:
|
|
1793
1850
|
type: integer
|
|
1794
1851
|
format: int32
|
|
1795
|
-
description: Unique identifier
|
|
1796
|
-
|
|
1852
|
+
description: Unique identifier for this historical balance entry.
|
|
1853
|
+
month:
|
|
1797
1854
|
type: string
|
|
1798
|
-
|
|
1799
|
-
description:
|
|
1855
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1856
|
+
description: Calendar month for this entry in YYYY-MM format.
|
|
1857
|
+
example: "2026-06"
|
|
1800
1858
|
balance:
|
|
1801
1859
|
type: string
|
|
1802
1860
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1803
|
-
description: Historical balance
|
|
1861
|
+
description: Historical balance for this entry, as a numeric string with up to four decimal places. Trailing zeros and decimal places are not guaranteed in responses. For manual and Plaid accounts this is in the account currency. For crypto accounts this is in the user's primary currency.
|
|
1804
1862
|
currency:
|
|
1805
1863
|
allOf:
|
|
1806
1864
|
- $ref: "#/components/schemas/currencyEnum"
|
|
1807
|
-
description: Currency of
|
|
1865
|
+
description: Currency of `balance`. For crypto entries this is the user's primary currency.
|
|
1808
1866
|
to_base:
|
|
1809
1867
|
type: number
|
|
1810
1868
|
format: double
|
|
@@ -1813,19 +1871,82 @@ components:
|
|
|
1813
1871
|
type: string
|
|
1814
1872
|
nullable: true
|
|
1815
1873
|
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1816
|
-
description: Crypto quantity
|
|
1874
|
+
description: Crypto quantity for this balance entry, when available. This may be present for crypto or deleted-account entries and is `null` otherwise.
|
|
1817
1875
|
required:
|
|
1876
|
+
- type
|
|
1818
1877
|
- id
|
|
1819
|
-
-
|
|
1878
|
+
- month
|
|
1820
1879
|
- balance
|
|
1821
1880
|
- currency
|
|
1822
1881
|
- to_base
|
|
1823
1882
|
- crypto_balance
|
|
1824
1883
|
|
|
1884
|
+
currentBalanceHistoryEntry:
|
|
1885
|
+
type: object
|
|
1886
|
+
title: current balance history entry
|
|
1887
|
+
additionalProperties: false
|
|
1888
|
+
x-internal: true
|
|
1889
|
+
description: >
|
|
1890
|
+
An ephemeral snapshot based on the account's current balances. It may
|
|
1891
|
+
change between requests.
|
|
1892
|
+
properties:
|
|
1893
|
+
type:
|
|
1894
|
+
type: string
|
|
1895
|
+
enum: [current]
|
|
1896
|
+
description: Identifies this entry as an ephemeral current-month snapshot.
|
|
1897
|
+
month:
|
|
1898
|
+
type: string
|
|
1899
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1900
|
+
description: Calendar month for this entry in YYYY-MM format. For current entries this is the current month.
|
|
1901
|
+
example: "2026-07"
|
|
1902
|
+
balance:
|
|
1903
|
+
type: string
|
|
1904
|
+
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1905
|
+
description: Calculated balance for the current month, as a numeric string with up to four decimal places. Trailing zeros and decimal places are not guaranteed in responses. For manual and Plaid accounts this is in the account currency. For crypto accounts this is in the user's primary currency.
|
|
1906
|
+
currency:
|
|
1907
|
+
allOf:
|
|
1908
|
+
- $ref: "#/components/schemas/currencyEnum"
|
|
1909
|
+
description: Currency of the calculated `balance`. For crypto entries this is the user's primary currency.
|
|
1910
|
+
to_base:
|
|
1911
|
+
type: number
|
|
1912
|
+
format: double
|
|
1913
|
+
description: Calculated balance converted to the user's primary currency. When the entry currency is the user's primary currency, this is the numeric value of `balance`.
|
|
1914
|
+
crypto_balance:
|
|
1915
|
+
type: string
|
|
1916
|
+
nullable: true
|
|
1917
|
+
pattern: ^-?\d+(\.\d{1,18})?$
|
|
1918
|
+
description: Crypto quantity for this calculated entry, when available. This may be present for crypto entries and is `null` otherwise.
|
|
1919
|
+
required:
|
|
1920
|
+
- type
|
|
1921
|
+
- month
|
|
1922
|
+
- balance
|
|
1923
|
+
- currency
|
|
1924
|
+
- to_base
|
|
1925
|
+
- crypto_balance
|
|
1926
|
+
|
|
1927
|
+
balanceHistoryEntry:
|
|
1928
|
+
title: balance history entry
|
|
1929
|
+
x-internal: true
|
|
1930
|
+
description: >
|
|
1931
|
+
A monthly balance history entry. Discriminated by `type`. `historical`
|
|
1932
|
+
entries are stored snapshots of past months with an `id`. `current`
|
|
1933
|
+
entries are ephemeral snapshots with no balance-entry `id`.
|
|
1934
|
+
oneOf:
|
|
1935
|
+
- $ref: "#/components/schemas/historicalBalanceHistoryEntry"
|
|
1936
|
+
- $ref: "#/components/schemas/currentBalanceHistoryEntry"
|
|
1937
|
+
discriminator:
|
|
1938
|
+
propertyName: type
|
|
1939
|
+
mapping:
|
|
1940
|
+
historical: "#/components/schemas/historicalBalanceHistoryEntry"
|
|
1941
|
+
current: "#/components/schemas/currentBalanceHistoryEntry"
|
|
1942
|
+
|
|
1825
1943
|
balanceHistoryListResponseObject:
|
|
1826
1944
|
type: object
|
|
1827
1945
|
additionalProperties: false
|
|
1828
1946
|
x-internal: true
|
|
1947
|
+
description: >
|
|
1948
|
+
List response for balance history GET endpoints. Entries are grouped by
|
|
1949
|
+
account source under `balance_history`.
|
|
1829
1950
|
properties:
|
|
1830
1951
|
balance_history:
|
|
1831
1952
|
type: array
|
|
@@ -1838,31 +1959,39 @@ components:
|
|
|
1838
1959
|
type: object
|
|
1839
1960
|
x-internal: true
|
|
1840
1961
|
additionalProperties: false
|
|
1962
|
+
description: >
|
|
1963
|
+
A single monthly balance entry to upsert. Request bodies use this shape.
|
|
1964
|
+
Responses return `type: historical` entries instead.
|
|
1841
1965
|
properties:
|
|
1842
1966
|
id:
|
|
1843
1967
|
type: integer
|
|
1844
1968
|
format: int32
|
|
1845
1969
|
description: System-defined balance history entry id. Ignored if set.
|
|
1846
1970
|
x-updatable: false
|
|
1847
|
-
|
|
1971
|
+
month:
|
|
1848
1972
|
type: string
|
|
1849
|
-
|
|
1850
|
-
description:
|
|
1973
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
1974
|
+
description: >
|
|
1975
|
+
Calendar month to upsert, in YYYY-MM format. Must be a past month.
|
|
1976
|
+
The current month cannot be written through PUT endpoints.
|
|
1977
|
+
example: "2026-06"
|
|
1851
1978
|
balance:
|
|
1852
1979
|
oneOf:
|
|
1853
1980
|
- type: number
|
|
1854
1981
|
format: double
|
|
1855
1982
|
- type: string
|
|
1856
1983
|
pattern: ^-?\d+(\.\d{1,4})?$
|
|
1857
|
-
description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is
|
|
1984
|
+
description: Numeric value of the historical balance, up to four decimal places, as a number or string. For manual and Plaid accounts this is in the account currency. For crypto and deleted accounts this is in the user's primary currency. Do not include any special characters aside from a decimal point.
|
|
1858
1985
|
symbol:
|
|
1859
1986
|
type: string
|
|
1860
1987
|
nullable: true
|
|
1861
1988
|
minLength: 1
|
|
1862
1989
|
maxLength: 25
|
|
1863
|
-
description:
|
|
1864
|
-
|
|
1865
|
-
|
|
1990
|
+
description: >
|
|
1991
|
+
Optional for crypto balances. If set, it must match the account's
|
|
1992
|
+
symbol. Tolerated for deleted-account balances. Do not provide this
|
|
1993
|
+
for manual or Plaid balances. On the synced crypto path endpoint, if
|
|
1994
|
+
provided it must match the `symbol` path parameter.
|
|
1866
1995
|
x-updatable: true
|
|
1867
1996
|
crypto_balance:
|
|
1868
1997
|
type: string
|
|
@@ -1878,10 +2007,10 @@ components:
|
|
|
1878
2007
|
to_base:
|
|
1879
2008
|
type: number
|
|
1880
2009
|
format: double
|
|
1881
|
-
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the
|
|
2010
|
+
description: System-defined historical balance converted to the user's primary currency. Ignored if set. Use `balance` to update the historical balance.
|
|
1882
2011
|
x-updatable: false
|
|
1883
2012
|
required:
|
|
1884
|
-
-
|
|
2013
|
+
- month
|
|
1885
2014
|
- balance
|
|
1886
2015
|
|
|
1887
2016
|
upsertBalanceHistoryRequestObject:
|
|
@@ -1892,43 +2021,16 @@ components:
|
|
|
1892
2021
|
balances:
|
|
1893
2022
|
type: array
|
|
1894
2023
|
minItems: 1
|
|
1895
|
-
description:
|
|
2024
|
+
description: >
|
|
2025
|
+
One or more monthly balance history entries to upsert. Each entry uses
|
|
2026
|
+
`month` (YYYY-MM) and `balance`. Do not include response-only fields such
|
|
2027
|
+
as `type`. PUT responses return only the `type: historical` entries
|
|
2028
|
+
modified by the request.
|
|
1896
2029
|
items:
|
|
1897
2030
|
$ref: "#/components/schemas/balanceHistoryUpdateItemObject"
|
|
1898
2031
|
required:
|
|
1899
2032
|
- balances
|
|
1900
2033
|
|
|
1901
|
-
balanceHistoryUpdateErrorObject:
|
|
1902
|
-
type: object
|
|
1903
|
-
x-internal: true
|
|
1904
|
-
additionalProperties: true
|
|
1905
|
-
properties:
|
|
1906
|
-
request_balances_index:
|
|
1907
|
-
type: integer
|
|
1908
|
-
format: int32
|
|
1909
|
-
description: Zero-based index into the `balances` request array
|
|
1910
|
-
message:
|
|
1911
|
-
type: string
|
|
1912
|
-
description: Error message describing why the row could not be updated
|
|
1913
|
-
required:
|
|
1914
|
-
- request_balances_index
|
|
1915
|
-
- message
|
|
1916
|
-
|
|
1917
|
-
upsertBalanceHistoryResponseObject:
|
|
1918
|
-
type: object
|
|
1919
|
-
x-internal: true
|
|
1920
|
-
additionalProperties: false
|
|
1921
|
-
properties:
|
|
1922
|
-
updated_balance_history:
|
|
1923
|
-
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
1924
|
-
errors:
|
|
1925
|
-
type: array
|
|
1926
|
-
items:
|
|
1927
|
-
$ref: "#/components/schemas/balanceHistoryUpdateErrorObject"
|
|
1928
|
-
required:
|
|
1929
|
-
- updated_balance_history
|
|
1930
|
-
- errors
|
|
1931
|
-
|
|
1932
2034
|
updateBalanceHistoryDetailsRequestObject:
|
|
1933
2035
|
type: object
|
|
1934
2036
|
x-internal: true
|
|
@@ -1938,51 +2040,58 @@ components:
|
|
|
1938
2040
|
name:
|
|
1939
2041
|
type: string
|
|
1940
2042
|
nullable: true
|
|
1941
|
-
description: New archived account name for the deleted account source
|
|
2043
|
+
description: New archived account name for the deleted account source
|
|
1942
2044
|
institution_name:
|
|
1943
2045
|
type: string
|
|
1944
2046
|
nullable: true
|
|
1945
|
-
description: New archived institution name for the deleted account source
|
|
2047
|
+
description: New archived institution name for the deleted account source
|
|
1946
2048
|
display_name:
|
|
1947
2049
|
type: string
|
|
1948
2050
|
nullable: true
|
|
1949
|
-
description: New display name for the deleted account source
|
|
2051
|
+
description: New display name for the deleted account source
|
|
1950
2052
|
account_type:
|
|
1951
2053
|
type: string
|
|
1952
2054
|
nullable: true
|
|
1953
|
-
description: New archived account type for the deleted account source
|
|
2055
|
+
description: New archived account type for the deleted account source
|
|
1954
2056
|
subtype:
|
|
1955
2057
|
type: string
|
|
1956
2058
|
nullable: true
|
|
1957
|
-
description: New archived subtype for the deleted account source
|
|
2059
|
+
description: New archived subtype for the deleted account source
|
|
1958
2060
|
mask:
|
|
1959
2061
|
type: string
|
|
1960
2062
|
nullable: true
|
|
1961
|
-
description: New archived account mask for the deleted account source
|
|
2063
|
+
description: New archived account mask for the deleted account source
|
|
1962
2064
|
|
|
1963
2065
|
updateBalanceHistoryDetailsResponseObject:
|
|
1964
2066
|
type: object
|
|
1965
2067
|
x-internal: true
|
|
1966
2068
|
additionalProperties: false
|
|
2069
|
+
description: Updated archived metadata for a deleted balance history source
|
|
1967
2070
|
properties:
|
|
1968
2071
|
name:
|
|
1969
2072
|
type: string
|
|
1970
2073
|
nullable: true
|
|
2074
|
+
description: Archived account name for the deleted account source
|
|
1971
2075
|
institution_name:
|
|
1972
2076
|
type: string
|
|
1973
2077
|
nullable: true
|
|
2078
|
+
description: Archived institution name for the deleted account source
|
|
1974
2079
|
display_name:
|
|
1975
2080
|
type: string
|
|
1976
2081
|
nullable: true
|
|
2082
|
+
description: Archived display name for the deleted account source
|
|
1977
2083
|
account_type:
|
|
1978
2084
|
type: string
|
|
1979
2085
|
nullable: true
|
|
2086
|
+
description: Archived account type for the deleted account source
|
|
1980
2087
|
subtype:
|
|
1981
2088
|
type: string
|
|
1982
2089
|
nullable: true
|
|
2090
|
+
description: Archived subtype for the deleted account source
|
|
1983
2091
|
mask:
|
|
1984
2092
|
type: string
|
|
1985
2093
|
nullable: true
|
|
2094
|
+
description: Archived account mask for the deleted account source
|
|
1986
2095
|
required:
|
|
1987
2096
|
- name
|
|
1988
2097
|
- institution_name
|
|
@@ -2467,14 +2576,9 @@ components:
|
|
|
2467
2576
|
external_id:
|
|
2468
2577
|
type: string
|
|
2469
2578
|
nullable: true
|
|
2470
|
-
description: A user-defined external ID
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
transactions associated with synced accounts, and they cannot be
|
|
2474
|
-
added. For transactions associated with manual accounts, the
|
|
2475
|
-
external ID must be unique as attempts to add a subsequent
|
|
2476
|
-
transaction with the same external_id and manual_account_id will be
|
|
2477
|
-
flagged as duplicates and fail.
|
|
2579
|
+
description: A user-defined external ID associated with the transaction.
|
|
2580
|
+
For transactions belonging to manual accounts, the
|
|
2581
|
+
external ID must be unique for each transaction associated with the account.
|
|
2478
2582
|
minLength: 0
|
|
2479
2583
|
maxLength: 75
|
|
2480
2584
|
tag_ids:
|
|
@@ -2495,8 +2599,6 @@ components:
|
|
|
2495
2599
|
Any transaction notes set by the user or by
|
|
2496
2600
|
a matched recurring item. This will match the value
|
|
2497
2601
|
displayed in notes field on the transactions page in the Lunch Money app.
|
|
2498
|
-
minLength: 0
|
|
2499
|
-
maxLength: 350
|
|
2500
2602
|
status:
|
|
2501
2603
|
type: string
|
|
2502
2604
|
# description: >
|
|
@@ -2732,8 +2834,6 @@ components:
|
|
|
2732
2834
|
Any transaction notes set by the user or by
|
|
2733
2835
|
a matched recurring item. This will match the value
|
|
2734
2836
|
displayed in notes field on the transactions page in the Lunch Money app.
|
|
2735
|
-
minLength: 0
|
|
2736
|
-
maxLength: 350
|
|
2737
2837
|
status:
|
|
2738
2838
|
type: string
|
|
2739
2839
|
description: >
|
|
@@ -2875,14 +2975,9 @@ components:
|
|
|
2875
2975
|
external_id:
|
|
2876
2976
|
type: string
|
|
2877
2977
|
nullable: true
|
|
2878
|
-
description: A user-defined external ID
|
|
2879
|
-
|
|
2880
|
-
|
|
2881
|
-
transactions associated with synced accounts, and they cannot be
|
|
2882
|
-
added. For transactions associated with manual accounts, the
|
|
2883
|
-
external ID must be unique as attempts to add a subsequent
|
|
2884
|
-
transaction with the same external_id and manual_account_id will be
|
|
2885
|
-
flagged as duplicates and fail.
|
|
2978
|
+
description: A user-defined external ID associated with the transaction.
|
|
2979
|
+
For transactions belonging to manual accounts, the
|
|
2980
|
+
external ID must be unique for each transaction associated with the account.
|
|
2886
2981
|
minLength: 0
|
|
2887
2982
|
maxLength: 75
|
|
2888
2983
|
plaid_metadata:
|
|
@@ -2952,7 +3047,7 @@ components:
|
|
|
2952
3047
|
currency:
|
|
2953
3048
|
description: Three-letter lowercase currency code of the transaction
|
|
2954
3049
|
in ISO 4217 format. Must match one of the [supported
|
|
2955
|
-
currencies](https://
|
|
3050
|
+
currencies](https://lunchmoney.dev/v2/currencies). If not set
|
|
2956
3051
|
defaults to the user account's primary currency.
|
|
2957
3052
|
allOf:
|
|
2958
3053
|
- $ref: "#/components/schemas/currencyEnum"
|
|
@@ -2978,8 +3073,6 @@ components:
|
|
|
2978
3073
|
Any transaction notes set by the user or by
|
|
2979
3074
|
a matched recurring item. This will match the value
|
|
2980
3075
|
displayed in notes field on the transactions page in the Lunch Money app.
|
|
2981
|
-
minLength: 0
|
|
2982
|
-
maxLength: 350
|
|
2983
3076
|
manual_account_id:
|
|
2984
3077
|
type: integer
|
|
2985
3078
|
format: int32
|
|
@@ -3099,6 +3192,7 @@ components:
|
|
|
3099
3192
|
description: |
|
|
3100
3193
|
The new payee for the transaction.
|
|
3101
3194
|
minLength: 0
|
|
3195
|
+
x-updatable: true
|
|
3102
3196
|
original_name:
|
|
3103
3197
|
type: string
|
|
3104
3198
|
nullable: true
|
|
@@ -3117,8 +3211,6 @@ components:
|
|
|
3117
3211
|
description: >
|
|
3118
3212
|
New notes for the transaction. Set this to an empty string to clear
|
|
3119
3213
|
the existing notes.
|
|
3120
|
-
minLength: 0
|
|
3121
|
-
maxLength: 350
|
|
3122
3214
|
x-updatable: true
|
|
3123
3215
|
manual_account_id:
|
|
3124
3216
|
type: integer
|
|
@@ -3301,6 +3393,7 @@ components:
|
|
|
3301
3393
|
amount.
|
|
3302
3394
|
payee:
|
|
3303
3395
|
type: string
|
|
3396
|
+
minLength: 0
|
|
3304
3397
|
description: The payee for the child transaction. Will inherit the
|
|
3305
3398
|
original payee from the parent if not defined.
|
|
3306
3399
|
date:
|
|
@@ -3311,9 +3404,10 @@ components:
|
|
|
3311
3404
|
category_id:
|
|
3312
3405
|
type: integer
|
|
3313
3406
|
format: int32
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3407
|
+
nullable: true
|
|
3408
|
+
description: Category ID for the child transaction. The category must
|
|
3409
|
+
already exist for the account. If omitted, the child inherits the
|
|
3410
|
+
parent category. If `null`, the child has no category.
|
|
3317
3411
|
tag_ids:
|
|
3318
3412
|
type: array
|
|
3319
3413
|
description: The IDs of any tags to apply to this split child
|
|
@@ -3323,8 +3417,10 @@ components:
|
|
|
3323
3417
|
format: int32
|
|
3324
3418
|
notes:
|
|
3325
3419
|
type: string
|
|
3326
|
-
|
|
3327
|
-
description:
|
|
3420
|
+
nullable: true
|
|
3421
|
+
description: Notes for the child transaction. If omitted, the child
|
|
3422
|
+
inherits the parent notes. If `null` or an empty string, the child
|
|
3423
|
+
has no notes.
|
|
3328
3424
|
required:
|
|
3329
3425
|
- amount
|
|
3330
3426
|
|
|
@@ -3633,10 +3729,11 @@ components:
|
|
|
3633
3729
|
|
|
3634
3730
|
# Response body for GET /budgets/settings (200)
|
|
3635
3731
|
budgetSettingsResponseObject:
|
|
3636
|
-
x-internal: true
|
|
3637
3732
|
type: object
|
|
3733
|
+
title: budget settings object
|
|
3638
3734
|
additionalProperties: false
|
|
3639
|
-
description: Budget period and display settings
|
|
3735
|
+
description: Budget period and display settings for the current budgeting
|
|
3736
|
+
account.
|
|
3640
3737
|
properties:
|
|
3641
3738
|
budget_period_granularity:
|
|
3642
3739
|
type: string
|
|
@@ -3648,8 +3745,8 @@ components:
|
|
|
3648
3745
|
- twice a month
|
|
3649
3746
|
description: Budget period granularity
|
|
3650
3747
|
budget_period_quantity:
|
|
3651
|
-
type:
|
|
3652
|
-
format:
|
|
3748
|
+
type: integer
|
|
3749
|
+
format: int32
|
|
3653
3750
|
description: The number of `granularity` units that make up a single
|
|
3654
3751
|
budgeting period.
|
|
3655
3752
|
budget_period_anchor_date:
|
|
@@ -4005,7 +4102,9 @@ components:
|
|
|
4005
4102
|
while processing the request.<br> If multiple errors were
|
|
4006
4103
|
encountered, the list will contain multiple objects.<br> Each
|
|
4007
4104
|
`error` object is guaranteed to have an `errMsg`, but it may also
|
|
4008
|
-
contain other error
|
|
4105
|
+
contain other error-specific properties such as `code` (for example
|
|
4106
|
+
`VALIDATION_ERROR`), or other properties that are useful to map
|
|
4107
|
+
the error to the relevant part of the request.
|
|
4009
4108
|
type: array
|
|
4010
4109
|
items:
|
|
4011
4110
|
type: object
|
|
@@ -4114,6 +4213,7 @@ components:
|
|
|
4114
4213
|
# - `cad`: Canadian Dollar
|
|
4115
4214
|
# - `cdf`: Congolese Franc
|
|
4116
4215
|
# - `chf`: Swiss Franc
|
|
4216
|
+
# - `clf`: Chilean Unit of Account (UF)
|
|
4117
4217
|
# - `clp`: Chilean Peso
|
|
4118
4218
|
# - `cny`: Chinese Yuan
|
|
4119
4219
|
# - `cop`: Colombian Peso
|
|
@@ -4129,6 +4229,7 @@ components:
|
|
|
4129
4229
|
# - `egp`: Egyptian Pound
|
|
4130
4230
|
# - `ern`: Eritrean Nakfa
|
|
4131
4231
|
# - `etb`: Ethiopian Birr
|
|
4232
|
+
# - `eth`: Ethereum
|
|
4132
4233
|
# - `eur`: Euro
|
|
4133
4234
|
# - `fjd`: Fijian Dollar
|
|
4134
4235
|
# - `fkp`: Falkland Islands Pound
|
|
@@ -4236,6 +4337,7 @@ components:
|
|
|
4236
4337
|
# - `uyu`: Uruguayan Peso
|
|
4237
4338
|
# - `uzs`: Uzbekistan Som
|
|
4238
4339
|
# - `vef`: Venezuelan Bolívar
|
|
4340
|
+
# - `ves`: Venezuelan Bolívar Sotiemas
|
|
4239
4341
|
# - `vnd`: Vietnamese Dong
|
|
4240
4342
|
# - `vuv`: Vanuatu Vatu
|
|
4241
4343
|
# - `wst`: Samoan Tala
|
|
@@ -4279,6 +4381,7 @@ components:
|
|
|
4279
4381
|
- cad
|
|
4280
4382
|
- cdf
|
|
4281
4383
|
- chf
|
|
4384
|
+
- clf
|
|
4282
4385
|
- clp
|
|
4283
4386
|
- cny
|
|
4284
4387
|
- cop
|
|
@@ -4294,6 +4397,7 @@ components:
|
|
|
4294
4397
|
- egp
|
|
4295
4398
|
- ern
|
|
4296
4399
|
- etb
|
|
4400
|
+
- eth
|
|
4297
4401
|
- eur
|
|
4298
4402
|
- fjd
|
|
4299
4403
|
- fkp
|
|
@@ -4401,6 +4505,7 @@ components:
|
|
|
4401
4505
|
- uyu
|
|
4402
4506
|
- uzs
|
|
4403
4507
|
- vef
|
|
4508
|
+
- ves
|
|
4404
4509
|
- vnd
|
|
4405
4510
|
- vuv
|
|
4406
4511
|
- wst
|
|
@@ -4458,22 +4563,10 @@ components:
|
|
|
4458
4563
|
securitySchemes:
|
|
4459
4564
|
bearerSecurity:
|
|
4460
4565
|
type: http
|
|
4461
|
-
|
|
4462
|
-
|
|
4463
|
-
# the v1 API you can view and manage your API keys on the [developers page
|
|
4464
|
-
# in the Lunch Money app](https://my.lunchmoney.app/developers). <p> To
|
|
4465
|
-
# interact with the Static Mock Server simply enter an API key of 11
|
|
4466
|
-
# characters or more. <p> To interact with the v2 service implemented on
|
|
4467
|
-
# top of the v1 API paste in a real API token associated with a Lunch
|
|
4468
|
-
# Money Budget.
|
|
4469
|
-
description: To interact with the Static Mock Server simply enter an API
|
|
4470
|
-
key of 11 characters or more.
|
|
4566
|
+
description: >-
|
|
4567
|
+
Required for the LIVE server. Optional for MOCK.
|
|
4471
4568
|
scheme: bearer
|
|
4472
4569
|
bearerFormat: JWT
|
|
4473
|
-
cookieAuth:
|
|
4474
|
-
type: apiKey
|
|
4475
|
-
in: cookie
|
|
4476
|
-
name: _lm_access_token
|
|
4477
4570
|
|
|
4478
4571
|
paths:
|
|
4479
4572
|
/me:
|
|
@@ -5753,12 +5846,9 @@ paths:
|
|
|
5753
5846
|
tags:
|
|
5754
5847
|
- crypto-manual
|
|
5755
5848
|
summary: Get all supported cryptocurrencies
|
|
5756
|
-
description:
|
|
5849
|
+
description: |-
|
|
5757
5850
|
Retrieve the list of cryptocurrencies currently supported for manual tracking.<p>
|
|
5758
|
-
|
|
5759
|
-
When creating a new manual crypto balance via `POST /crypto/manual`, the
|
|
5760
|
-
`symbol` you specify must match the `symbol` of one of the entries
|
|
5761
|
-
returned by this endpoint.
|
|
5851
|
+
When creating a new manual crypto balance via `POST /crypto/manual`, the `symbol` you specify must match the `symbol` of one of the entries returned by this endpoint.
|
|
5762
5852
|
operationId: getAllCryptocurrencies
|
|
5763
5853
|
responses:
|
|
5764
5854
|
"200":
|
|
@@ -5796,16 +5886,9 @@ paths:
|
|
|
5796
5886
|
- crypto-manual
|
|
5797
5887
|
summary: Add a new supported cryptocurrency
|
|
5798
5888
|
operationId: createCryptocurrency
|
|
5799
|
-
description:
|
|
5889
|
+
description: |-
|
|
5800
5890
|
Adds a new cryptocurrency to the supported manual-crypto list.<br><br>
|
|
5801
|
-
|
|
5802
|
-
Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum)
|
|
5803
|
-
to convert crypto balances to the user's primary currency. Users add a
|
|
5804
|
-
new supported cryptocurrency by submitting a CoinGecko coin-page URL.
|
|
5805
|
-
The server validates the URL, extracts the id from `/coins/{id}`,
|
|
5806
|
-
checks for an existing supported `coingecko_id`, validates the id
|
|
5807
|
-
against CoinGecko, then confirms the resolved symbol is not already
|
|
5808
|
-
supported before creating the new entry.
|
|
5891
|
+
Lunch Money uses [CoinGecko](https://www.coingecko.com/us/coins/ethereum) to convert crypto balances to the user's primary currency. Users add a new supported cryptocurrency by submitting a CoinGecko coin-page URL. The server validates the URL, extracts the id from `/coins/{id}`, checks for an existing supported `coingecko_id`, validates the id against CoinGecko, then confirms the resolved symbol is not already supported before creating the new entry.
|
|
5809
5892
|
requestBody:
|
|
5810
5893
|
required: true
|
|
5811
5894
|
content:
|
|
@@ -5884,8 +5967,8 @@ paths:
|
|
|
5884
5967
|
tags:
|
|
5885
5968
|
- crypto-manual
|
|
5886
5969
|
summary: Get all manual crypto balances
|
|
5887
|
-
description:
|
|
5888
|
-
the user's account.
|
|
5970
|
+
description: |-
|
|
5971
|
+
Retrieve all manually managed crypto balances associated with the user's account.
|
|
5889
5972
|
operationId: getAllCryptoManual
|
|
5890
5973
|
responses:
|
|
5891
5974
|
"200":
|
|
@@ -5905,6 +5988,7 @@ paths:
|
|
|
5905
5988
|
coingecko_id: bitcoin
|
|
5906
5989
|
to_base: 53124.72
|
|
5907
5990
|
balance_as_of: "2026-02-25T14:22:10.000Z"
|
|
5991
|
+
exchange_rate_as_of: "2026-02-25T14:10:00.000Z"
|
|
5908
5992
|
created_by_name: User 1
|
|
5909
5993
|
created_at: "2025-11-12T20:14:32.000Z"
|
|
5910
5994
|
updated_at: "2026-02-25T14:22:10.000Z"
|
|
@@ -5918,11 +6002,9 @@ paths:
|
|
|
5918
6002
|
tags:
|
|
5919
6003
|
- crypto-manual
|
|
5920
6004
|
summary: Create a manual crypto balance
|
|
5921
|
-
description:
|
|
6005
|
+
description: |-
|
|
5922
6006
|
Create a manually managed crypto asset.<br><br>
|
|
5923
|
-
|
|
5924
|
-
If `display_name` is `null`, clients may derive one from
|
|
5925
|
-
`institution_name` + `name`.
|
|
6007
|
+
If `display_name` is `null`, clients may derive one from `institution_name` + `name`.
|
|
5926
6008
|
operationId: createCryptoManual
|
|
5927
6009
|
requestBody:
|
|
5928
6010
|
required: true
|
|
@@ -5962,6 +6044,7 @@ paths:
|
|
|
5962
6044
|
coingecko_id: ethereum
|
|
5963
6045
|
to_base: 28998.44
|
|
5964
6046
|
balance_as_of: "2026-03-01T09:20:41.000Z"
|
|
6047
|
+
exchange_rate_as_of: "2026-03-01T09:15:00.000Z"
|
|
5965
6048
|
created_by_name: User 1
|
|
5966
6049
|
created_at: "2026-03-01T09:20:41.000Z"
|
|
5967
6050
|
updated_at: "2026-03-01T09:20:41.000Z"
|
|
@@ -5974,11 +6057,22 @@ paths:
|
|
|
5974
6057
|
examples:
|
|
5975
6058
|
missing required properties:
|
|
5976
6059
|
value:
|
|
5977
|
-
message: Request
|
|
6060
|
+
message: Invalid Request Body
|
|
5978
6061
|
errors:
|
|
5979
6062
|
- errMsg: "Missing required property 'name' in request body."
|
|
5980
6063
|
- errMsg: "Missing required property 'balance' in request body."
|
|
5981
6064
|
- errMsg: "Missing required property 'symbol' in request body."
|
|
6065
|
+
invalid balance:
|
|
6066
|
+
value:
|
|
6067
|
+
message: Invalid Request Body
|
|
6068
|
+
errors:
|
|
6069
|
+
- errMsg: "Invalid value for property 'balance'. 'abc' cannot be converted to a number"
|
|
6070
|
+
- errMsg: "Invalid value for property 'balance'. Invalid input"
|
|
6071
|
+
invalid property:
|
|
6072
|
+
value:
|
|
6073
|
+
message: Invalid Request Body
|
|
6074
|
+
errors:
|
|
6075
|
+
- errMsg: "Invalid property 'coingecko_id' in request body."
|
|
5982
6076
|
unsupported symbol:
|
|
5983
6077
|
value:
|
|
5984
6078
|
message: Request Validation Failure
|
|
@@ -5995,7 +6089,8 @@ paths:
|
|
|
5995
6089
|
tags:
|
|
5996
6090
|
- crypto-manual
|
|
5997
6091
|
summary: Get a single manual crypto balance
|
|
5998
|
-
description:
|
|
6092
|
+
description: |-
|
|
6093
|
+
Retrieve a single manually managed crypto balance by ID.
|
|
5999
6094
|
operationId: getCryptoManualById
|
|
6000
6095
|
parameters:
|
|
6001
6096
|
- name: id
|
|
@@ -6029,6 +6124,7 @@ paths:
|
|
|
6029
6124
|
coingecko_id: bitcoin
|
|
6030
6125
|
to_base: 53124.72
|
|
6031
6126
|
balance_as_of: "2026-02-25T14:22:10.000Z"
|
|
6127
|
+
exchange_rate_as_of: "2026-02-25T14:10:00.000Z"
|
|
6032
6128
|
created_by_name: User 1
|
|
6033
6129
|
created_at: "2025-11-12T20:14:32.000Z"
|
|
6034
6130
|
updated_at: "2026-02-25T14:22:10.000Z"
|
|
@@ -6062,11 +6158,9 @@ paths:
|
|
|
6062
6158
|
tags:
|
|
6063
6159
|
- crypto-manual
|
|
6064
6160
|
summary: Update a manual crypto balance
|
|
6065
|
-
description:
|
|
6161
|
+
description: |-
|
|
6066
6162
|
Modify a manually managed crypto balance.<br><br>
|
|
6067
|
-
|
|
6068
|
-
You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties
|
|
6069
|
-
are accepted according to the `x-updatable` metadata in the update schema.
|
|
6163
|
+
You may submit the response from `GET /crypto/manual/{id}` as the request body. System-defined properties are accepted according to the `x-updatable` metadata in the update schema.
|
|
6070
6164
|
operationId: updateCryptoManual
|
|
6071
6165
|
parameters:
|
|
6072
6166
|
- name: id
|
|
@@ -6106,6 +6200,7 @@ paths:
|
|
|
6106
6200
|
coingecko_id: bitcoin
|
|
6107
6201
|
to_base: 56011.12
|
|
6108
6202
|
balance_as_of: "2026-03-01T09:41:18.000Z"
|
|
6203
|
+
exchange_rate_as_of: "2026-03-01T09:35:00.000Z"
|
|
6109
6204
|
created_by_name: User 1
|
|
6110
6205
|
created_at: "2025-11-12T20:14:32.000Z"
|
|
6111
6206
|
updated_at: "2026-02-25T14:22:10.000Z"
|
|
@@ -6126,6 +6221,7 @@ paths:
|
|
|
6126
6221
|
coingecko_id: bitcoin
|
|
6127
6222
|
to_base: 56011.12
|
|
6128
6223
|
balance_as_of: "2026-03-01T09:41:18.000Z"
|
|
6224
|
+
exchange_rate_as_of: "2026-03-01T09:35:00.000Z"
|
|
6129
6225
|
created_by_name: User 1
|
|
6130
6226
|
created_at: "2025-11-12T20:14:32.000Z"
|
|
6131
6227
|
updated_at: "2026-03-01T09:41:18.000Z"
|
|
@@ -6161,10 +6257,8 @@ paths:
|
|
|
6161
6257
|
tags:
|
|
6162
6258
|
- crypto-manual
|
|
6163
6259
|
summary: Delete a manual crypto balance
|
|
6164
|
-
description:
|
|
6165
|
-
this crypto asset has a balance history, and you do not explicitly set
|
|
6166
|
-
the query parameter`keep_history`, a 422 response will be returned
|
|
6167
|
-
requesting you to explicitly set `keep_history` to `true` or `false`.
|
|
6260
|
+
description: |-
|
|
6261
|
+
Delete a single manually managed crypto asset by ID.<p> If this crypto asset has a balance history, and you do not explicitly set the query parameter`keep_history`, a 422 response will be returned requesting you to explicitly set `keep_history` to `true` or `false`.
|
|
6168
6262
|
operationId: deleteCryptoManual
|
|
6169
6263
|
parameters:
|
|
6170
6264
|
- name: id
|
|
@@ -6229,8 +6323,8 @@ paths:
|
|
|
6229
6323
|
tags:
|
|
6230
6324
|
- crypto-synced
|
|
6231
6325
|
summary: Get all synced crypto accounts
|
|
6232
|
-
description:
|
|
6233
|
-
associated with the user's account.
|
|
6326
|
+
description: |-
|
|
6327
|
+
Retrieves all synced crypto accounts associated with the user's account.
|
|
6234
6328
|
operationId: getAllCryptoSynced
|
|
6235
6329
|
responses:
|
|
6236
6330
|
"200":
|
|
@@ -6255,6 +6349,7 @@ paths:
|
|
|
6255
6349
|
coingecko_id: ethereum
|
|
6256
6350
|
to_base: 28998.44
|
|
6257
6351
|
balance_as_of: "2026-02-25T14:25:00.000Z"
|
|
6352
|
+
exchange_rate_as_of: "2026-02-25T14:20:00.000Z"
|
|
6258
6353
|
updated_at: "2026-02-25T14:25:01.000Z"
|
|
6259
6354
|
- name: BTC
|
|
6260
6355
|
balance: "0.100020003000400050"
|
|
@@ -6262,6 +6357,7 @@ paths:
|
|
|
6262
6357
|
coingecko_id: bitcoin
|
|
6263
6358
|
to_base: 6231.28
|
|
6264
6359
|
balance_as_of: "2026-02-25T14:25:00.000Z"
|
|
6360
|
+
exchange_rate_as_of: "2026-02-25T14:20:00.000Z"
|
|
6265
6361
|
updated_at: "2026-02-25T14:25:01.000Z"
|
|
6266
6362
|
- id: 33005
|
|
6267
6363
|
provider: kraken
|
|
@@ -6277,6 +6373,7 @@ paths:
|
|
|
6277
6373
|
coingecko_id: ripple
|
|
6278
6374
|
to_base: 1287.50
|
|
6279
6375
|
balance_as_of: "2026-02-26T07:22:30.000Z"
|
|
6376
|
+
exchange_rate_as_of: "2026-02-26T07:10:00.000Z"
|
|
6280
6377
|
updated_at: "2026-02-26T07:22:30.000Z"
|
|
6281
6378
|
"401":
|
|
6282
6379
|
$ref: "#/components/responses/unauthorizedToken"
|
|
@@ -6289,8 +6386,8 @@ paths:
|
|
|
6289
6386
|
tags:
|
|
6290
6387
|
- crypto-synced
|
|
6291
6388
|
summary: Get a single synced crypto account
|
|
6292
|
-
description:
|
|
6293
|
-
for the specified synced crypto account ID.
|
|
6389
|
+
description: |-
|
|
6390
|
+
Retrieves the synced crypto account and all nested balances for the specified synced crypto account ID.
|
|
6294
6391
|
operationId: getCryptoSyncedById
|
|
6295
6392
|
parameters:
|
|
6296
6393
|
- name: id
|
|
@@ -6329,6 +6426,7 @@ paths:
|
|
|
6329
6426
|
coingecko_id: ethereum
|
|
6330
6427
|
to_base: 28998.44
|
|
6331
6428
|
balance_as_of: "2026-02-25T14:25:00.000Z"
|
|
6429
|
+
exchange_rate_as_of: "2026-02-25T14:20:00.000Z"
|
|
6332
6430
|
updated_at: "2026-02-25T14:25:01.000Z"
|
|
6333
6431
|
- name: BTC
|
|
6334
6432
|
balance: "0.100020003000400050"
|
|
@@ -6336,6 +6434,7 @@ paths:
|
|
|
6336
6434
|
coingecko_id: bitcoin
|
|
6337
6435
|
to_base: 6231.28
|
|
6338
6436
|
balance_as_of: "2026-02-25T14:25:00.000Z"
|
|
6437
|
+
exchange_rate_as_of: "2026-02-25T14:20:00.000Z"
|
|
6339
6438
|
updated_at: "2026-02-25T14:25:01.000Z"
|
|
6340
6439
|
"400":
|
|
6341
6440
|
description: Bad Request
|
|
@@ -6368,8 +6467,8 @@ paths:
|
|
|
6368
6467
|
tags:
|
|
6369
6468
|
- crypto-synced
|
|
6370
6469
|
summary: Get a synced crypto balance by symbol
|
|
6371
|
-
description:
|
|
6372
|
-
account using the crypto symbol.
|
|
6470
|
+
description: |-
|
|
6471
|
+
Retrieves a single balance from the specified synced crypto account using the crypto symbol.
|
|
6373
6472
|
operationId: getCryptoSyncedBalanceBySymbol
|
|
6374
6473
|
parameters:
|
|
6375
6474
|
- name: id
|
|
@@ -6401,6 +6500,7 @@ paths:
|
|
|
6401
6500
|
coingecko_id: ethereum
|
|
6402
6501
|
to_base: 28998.44
|
|
6403
6502
|
balance_as_of: "2026-02-25T14:25:00.000Z"
|
|
6503
|
+
exchange_rate_as_of: "2026-02-25T14:20:00.000Z"
|
|
6404
6504
|
updated_at: "2026-02-25T14:25:01.000Z"
|
|
6405
6505
|
"400":
|
|
6406
6506
|
description: Bad Request
|
|
@@ -6447,8 +6547,8 @@ paths:
|
|
|
6447
6547
|
tags:
|
|
6448
6548
|
- crypto-synced
|
|
6449
6549
|
summary: Refresh balances for a synced crypto account
|
|
6450
|
-
description:
|
|
6451
|
-
account. Returns the refreshed synced crypto account.
|
|
6550
|
+
description: |-
|
|
6551
|
+
Trigger a balance refresh for the specified synced crypto account. Returns the refreshed synced crypto account.
|
|
6452
6552
|
operationId: refreshCryptoSynced
|
|
6453
6553
|
parameters:
|
|
6454
6554
|
- name: id
|
|
@@ -6486,6 +6586,7 @@ paths:
|
|
|
6486
6586
|
coingecko_id: ethereum
|
|
6487
6587
|
to_base: 28998.44
|
|
6488
6588
|
balance_as_of: "2026-02-25T14:25:00.000Z"
|
|
6589
|
+
exchange_rate_as_of: "2026-02-25T14:20:00.000Z"
|
|
6489
6590
|
updated_at: "2026-02-25T14:25:01.000Z"
|
|
6490
6591
|
- name: BTC
|
|
6491
6592
|
balance: "0.100020003000400050"
|
|
@@ -6493,6 +6594,7 @@ paths:
|
|
|
6493
6594
|
coingecko_id: bitcoin
|
|
6494
6595
|
to_base: 6231.28
|
|
6495
6596
|
balance_as_of: "2026-02-25T14:25:00.000Z"
|
|
6597
|
+
exchange_rate_as_of: "2026-02-25T14:20:00.000Z"
|
|
6496
6598
|
updated_at: "2026-02-25T14:25:01.000Z"
|
|
6497
6599
|
"401":
|
|
6498
6600
|
$ref: "#/components/responses/unauthorizedToken"
|
|
@@ -6515,51 +6617,55 @@ paths:
|
|
|
6515
6617
|
tags:
|
|
6516
6618
|
- balance_history
|
|
6517
6619
|
summary: Get balance history
|
|
6518
|
-
description:
|
|
6519
|
-
Retrieve
|
|
6520
|
-
|
|
6521
|
-
|
|
6522
|
-
|
|
6523
|
-
|
|
6524
|
-
|
|
6525
|
-
|
|
6526
|
-
|
|
6527
|
-
|
|
6528
|
-
`
|
|
6529
|
-
|
|
6530
|
-
stored entries when no range is provided.<br><br>
|
|
6531
|
-
|
|
6532
|
-
Historical entries for accounts that have been deleted may still
|
|
6533
|
-
be returned. These entries use `source.type: deleted` and include
|
|
6534
|
-
`deleted_account_id`, archived display fields, and account metadata on the
|
|
6535
|
-
`source` object.
|
|
6620
|
+
description: |-
|
|
6621
|
+
Retrieve monthly balance history for all account sources.<br><br>
|
|
6622
|
+
Balance history is monthly. Each entry represents the account balance at or around the end of the specified month. System-generated entries are generally captured near the boundary between months.<br><br>
|
|
6623
|
+
Query with optional `start_month` and `end_month` in YYYY-MM format. The range is inclusive. If either parameter is provided, both are required. `start_month` must not be in the future. `end_month` may not be earlier than `start_month` and must not be in the future. Values must be valid calendar months in exact YYYY-MM format. A full date such as `2026-06-01` is invalid. If neither is provided, all available balance history is returned, including an ephemeral `current` entry for the current month when applicable.<br><br>
|
|
6624
|
+
The response groups entries by source account. Each item in `balance_history` contains a `source` object plus a `balances` array. Within a requested range (or across all history when no range is provided), the array includes only months that have data — months with no data are omitted. A `current` entry is also included when the requested range includes the current month.<br><br>
|
|
6625
|
+
Each balance entry has a `type`:<br>
|
|
6626
|
+
- `historical`: stored snapshot of a past month for an active or deleted account. Includes an `id` that can be used with balance history entry endpoints<br>
|
|
6627
|
+
- `current`: snapshot based on the account's current balances. It is ephemeral and may change between requests. To inspect the underlying account, use the type-specific source id for the `source.type` values:<br>
|
|
6628
|
+
- `manual`: `source.manual_account_id` with [GET /manual_accounts/{id}](#tag/manual-accounts/GET/manual_accounts/{id})<br>
|
|
6629
|
+
- `plaid`: `source.plaid_account_id` with [GET /plaid_accounts/{id}](#tag/plaid-accounts/GET/plaid_accounts/{id})<br>
|
|
6630
|
+
- `crypto_manual`: `source.crypto_manual_id` with [GET /crypto/manual/{id}](#tag/crypto-manual/GET/crypto/manual/{id})<br>
|
|
6631
|
+
- `crypto_synced`: `source.crypto_synced_id` and `source.symbol` with [GET /crypto/synced/{id}/{symbol}](#tag/crypto-synced/GET/crypto/synced/{id}/{symbol})
|
|
6536
6632
|
operationId: getBalanceHistory
|
|
6537
6633
|
parameters:
|
|
6538
|
-
- name:
|
|
6634
|
+
- name: start_month
|
|
6539
6635
|
in: query
|
|
6540
|
-
description:
|
|
6636
|
+
description: >-
|
|
6637
|
+
Optional start of the requested history range as a calendar month in
|
|
6638
|
+
YYYY-MM format (for example `2026-06`). If set, `end_month` is also
|
|
6639
|
+
required. The range is inclusive. `start_month` must not be in the
|
|
6640
|
+
future. A full date such as `2026-06-01` is invalid.
|
|
6541
6641
|
required: false
|
|
6542
6642
|
schema:
|
|
6543
6643
|
type: string
|
|
6544
|
-
|
|
6644
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6545
6645
|
examples:
|
|
6546
6646
|
range start:
|
|
6547
|
-
summary: Start
|
|
6548
|
-
value: "2026-01
|
|
6549
|
-
- name:
|
|
6647
|
+
summary: Start month
|
|
6648
|
+
value: "2026-01"
|
|
6649
|
+
- name: end_month
|
|
6550
6650
|
in: query
|
|
6551
|
-
description:
|
|
6651
|
+
description: >-
|
|
6652
|
+
Optional end of the requested history range as a calendar month in
|
|
6653
|
+
YYYY-MM format (for example `2026-06`). If set, `start_month` is also
|
|
6654
|
+
required. The range is inclusive. `end_month` may not be earlier than
|
|
6655
|
+
`start_month` and must not be in the future. A full date such as
|
|
6656
|
+
`2026-06-01` is invalid. For a single month, set this to the same
|
|
6657
|
+
value as `start_month`.
|
|
6552
6658
|
required: false
|
|
6553
6659
|
schema:
|
|
6554
6660
|
type: string
|
|
6555
|
-
|
|
6661
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6556
6662
|
examples:
|
|
6557
6663
|
range end:
|
|
6558
|
-
summary: End
|
|
6559
|
-
value: "2026-03
|
|
6664
|
+
summary: End month
|
|
6665
|
+
value: "2026-03"
|
|
6560
6666
|
responses:
|
|
6561
6667
|
"200":
|
|
6562
|
-
description:
|
|
6668
|
+
description: Monthly balance history for the requested month range
|
|
6563
6669
|
content:
|
|
6564
6670
|
application/json:
|
|
6565
6671
|
schema:
|
|
@@ -6572,14 +6678,16 @@ paths:
|
|
|
6572
6678
|
type: manual
|
|
6573
6679
|
manual_account_id: 119807
|
|
6574
6680
|
balances:
|
|
6575
|
-
-
|
|
6576
|
-
|
|
6681
|
+
- type: historical
|
|
6682
|
+
id: 101
|
|
6683
|
+
month: "2026-01"
|
|
6577
6684
|
balance: "41000.0000"
|
|
6578
6685
|
currency: usd
|
|
6579
6686
|
to_base: 41000
|
|
6580
6687
|
crypto_balance: null
|
|
6581
|
-
-
|
|
6582
|
-
|
|
6688
|
+
- type: historical
|
|
6689
|
+
id: 102
|
|
6690
|
+
month: "2026-02"
|
|
6583
6691
|
balance: "41211.8000"
|
|
6584
6692
|
currency: usd
|
|
6585
6693
|
to_base: 41211.8
|
|
@@ -6588,8 +6696,9 @@ paths:
|
|
|
6588
6696
|
type: plaid
|
|
6589
6697
|
plaid_account_id: 119808
|
|
6590
6698
|
balances:
|
|
6591
|
-
-
|
|
6592
|
-
|
|
6699
|
+
- type: historical
|
|
6700
|
+
id: 103
|
|
6701
|
+
month: "2026-01"
|
|
6593
6702
|
balance: "5498.2800"
|
|
6594
6703
|
currency: usd
|
|
6595
6704
|
to_base: 5498.28
|
|
@@ -6599,8 +6708,9 @@ paths:
|
|
|
6599
6708
|
crypto_manual_id: 22001
|
|
6600
6709
|
symbol: btc
|
|
6601
6710
|
balances:
|
|
6602
|
-
-
|
|
6603
|
-
|
|
6711
|
+
- type: historical
|
|
6712
|
+
id: 104
|
|
6713
|
+
month: "2026-01"
|
|
6604
6714
|
balance: "53124.7200"
|
|
6605
6715
|
currency: usd
|
|
6606
6716
|
to_base: 53124.72
|
|
@@ -6610,8 +6720,9 @@ paths:
|
|
|
6610
6720
|
crypto_synced_id: 33004
|
|
6611
6721
|
symbol: btc
|
|
6612
6722
|
balances:
|
|
6613
|
-
-
|
|
6614
|
-
|
|
6723
|
+
- type: historical
|
|
6724
|
+
id: 105
|
|
6725
|
+
month: "2026-01"
|
|
6615
6726
|
balance: "6231.2800"
|
|
6616
6727
|
currency: usd
|
|
6617
6728
|
to_base: 6231.28
|
|
@@ -6627,12 +6738,34 @@ paths:
|
|
|
6627
6738
|
mask: "1234"
|
|
6628
6739
|
symbol: null
|
|
6629
6740
|
balances:
|
|
6630
|
-
-
|
|
6631
|
-
|
|
6741
|
+
- type: historical
|
|
6742
|
+
id: 106
|
|
6743
|
+
month: "2026-01"
|
|
6632
6744
|
balance: "1250.0000"
|
|
6633
6745
|
currency: usd
|
|
6634
6746
|
to_base: 1250
|
|
6635
6747
|
crypto_balance: null
|
|
6748
|
+
historical and current:
|
|
6749
|
+
summary: Historical month plus ephemeral current month
|
|
6750
|
+
value:
|
|
6751
|
+
balance_history:
|
|
6752
|
+
- source:
|
|
6753
|
+
type: manual
|
|
6754
|
+
manual_account_id: 162003
|
|
6755
|
+
balances:
|
|
6756
|
+
- type: historical
|
|
6757
|
+
id: 7437356
|
|
6758
|
+
month: "2026-06"
|
|
6759
|
+
balance: "62.8"
|
|
6760
|
+
currency: usd
|
|
6761
|
+
to_base: 62.8
|
|
6762
|
+
crypto_balance: null
|
|
6763
|
+
- type: current
|
|
6764
|
+
month: "2026-07"
|
|
6765
|
+
balance: "71.2"
|
|
6766
|
+
currency: usd
|
|
6767
|
+
to_base: 71.2
|
|
6768
|
+
crypto_balance: null
|
|
6636
6769
|
manual account history:
|
|
6637
6770
|
value:
|
|
6638
6771
|
balance_history:
|
|
@@ -6640,14 +6773,16 @@ paths:
|
|
|
6640
6773
|
type: manual
|
|
6641
6774
|
manual_account_id: 119807
|
|
6642
6775
|
balances:
|
|
6643
|
-
-
|
|
6644
|
-
|
|
6776
|
+
- type: historical
|
|
6777
|
+
id: 201
|
|
6778
|
+
month: "2026-01"
|
|
6645
6779
|
balance: "41000.0000"
|
|
6646
6780
|
currency: usd
|
|
6647
6781
|
to_base: 41000
|
|
6648
6782
|
crypto_balance: null
|
|
6649
|
-
-
|
|
6650
|
-
|
|
6783
|
+
- type: historical
|
|
6784
|
+
id: 202
|
|
6785
|
+
month: "2026-02"
|
|
6651
6786
|
balance: "41211.8000"
|
|
6652
6787
|
currency: usd
|
|
6653
6788
|
to_base: 41211.8
|
|
@@ -6659,8 +6794,9 @@ paths:
|
|
|
6659
6794
|
type: plaid
|
|
6660
6795
|
plaid_account_id: 119808
|
|
6661
6796
|
balances:
|
|
6662
|
-
-
|
|
6663
|
-
|
|
6797
|
+
- type: historical
|
|
6798
|
+
id: 301
|
|
6799
|
+
month: "2026-02"
|
|
6664
6800
|
balance: "5498.2800"
|
|
6665
6801
|
currency: usd
|
|
6666
6802
|
to_base: 5498.28
|
|
@@ -6673,8 +6809,9 @@ paths:
|
|
|
6673
6809
|
crypto_synced_id: 33004
|
|
6674
6810
|
symbol: btc
|
|
6675
6811
|
balances:
|
|
6676
|
-
-
|
|
6677
|
-
|
|
6812
|
+
- type: historical
|
|
6813
|
+
id: 401
|
|
6814
|
+
month: "2026-02"
|
|
6678
6815
|
balance: "6231.2800"
|
|
6679
6816
|
currency: usd
|
|
6680
6817
|
to_base: 6231.28
|
|
@@ -6693,8 +6830,9 @@ paths:
|
|
|
6693
6830
|
mask: "1234"
|
|
6694
6831
|
symbol: null
|
|
6695
6832
|
balances:
|
|
6696
|
-
-
|
|
6697
|
-
|
|
6833
|
+
- type: historical
|
|
6834
|
+
id: 501
|
|
6835
|
+
month: "2026-01"
|
|
6698
6836
|
balance: "1250.0000"
|
|
6699
6837
|
currency: usd
|
|
6700
6838
|
to_base: 1250
|
|
@@ -6706,26 +6844,31 @@ paths:
|
|
|
6706
6844
|
schema:
|
|
6707
6845
|
$ref: "#/components/schemas/errorResponseObject"
|
|
6708
6846
|
examples:
|
|
6709
|
-
missing paired
|
|
6847
|
+
missing paired month:
|
|
6710
6848
|
value:
|
|
6711
6849
|
message: Request Validation Failure
|
|
6712
6850
|
errors:
|
|
6713
|
-
- errMsg: "`
|
|
6851
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
6714
6852
|
invalid range:
|
|
6715
6853
|
value:
|
|
6716
6854
|
message: Request Validation Failure
|
|
6717
6855
|
errors:
|
|
6718
|
-
- errMsg: "`
|
|
6719
|
-
|
|
6856
|
+
- errMsg: "`end_month` may not be earlier than `start_month`."
|
|
6857
|
+
invalid month format:
|
|
6858
|
+
value:
|
|
6859
|
+
message: Invalid Request Parameters
|
|
6860
|
+
errors:
|
|
6861
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
6862
|
+
future start month:
|
|
6720
6863
|
value:
|
|
6721
6864
|
message: Request Validation Failure
|
|
6722
6865
|
errors:
|
|
6723
|
-
- errMsg: "`
|
|
6724
|
-
future
|
|
6866
|
+
- errMsg: "`start_month` must not be in the future."
|
|
6867
|
+
future end month:
|
|
6725
6868
|
value:
|
|
6726
6869
|
message: Request Validation Failure
|
|
6727
6870
|
errors:
|
|
6728
|
-
- errMsg: "`
|
|
6871
|
+
- errMsg: "`end_month` must not be in the future."
|
|
6729
6872
|
"401":
|
|
6730
6873
|
$ref: "#/components/responses/unauthorizedToken"
|
|
6731
6874
|
"429":
|
|
@@ -6737,23 +6880,16 @@ paths:
|
|
|
6737
6880
|
tags:
|
|
6738
6881
|
- balance_history
|
|
6739
6882
|
summary: Get balance history for an account
|
|
6740
|
-
description:
|
|
6741
|
-
Retrieve
|
|
6742
|
-
|
|
6743
|
-
|
|
6744
|
-
The `account_type` path parameter identifies the type of account and the
|
|
6745
|
-
`account_id` path parameter identifies the specific id for that account type.<br><br>
|
|
6746
|
-
|
|
6747
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
6748
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
6749
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
6750
|
-
provided, all available history for the source is returned.
|
|
6883
|
+
description: |-
|
|
6884
|
+
Retrieve monthly balance history for one manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [GET /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/GET/balance_history/crypto_synced/{account_id}/{symbol}).<br><br>
|
|
6885
|
+
The `account_type` path parameter identifies the account family (`manual`, `plaid`, `crypto_manual`, or `deleted`) and `account_id` identifies the account within that family.<br><br>
|
|
6886
|
+
`start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
6751
6887
|
operationId: getBalanceHistoryForAccount
|
|
6752
6888
|
parameters:
|
|
6753
6889
|
- name: account_type
|
|
6754
6890
|
in: path
|
|
6755
6891
|
required: true
|
|
6756
|
-
description:
|
|
6892
|
+
description: Account family to retrieve. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6757
6893
|
schema:
|
|
6758
6894
|
type: string
|
|
6759
6895
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -6764,23 +6900,27 @@ paths:
|
|
|
6764
6900
|
schema:
|
|
6765
6901
|
type: integer
|
|
6766
6902
|
format: int32
|
|
6767
|
-
- name:
|
|
6903
|
+
- name: start_month
|
|
6768
6904
|
in: query
|
|
6769
|
-
description:
|
|
6905
|
+
description: >-
|
|
6906
|
+
Optional. Same format and constraints as `start_month` on
|
|
6907
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
6770
6908
|
required: false
|
|
6771
6909
|
schema:
|
|
6772
6910
|
type: string
|
|
6773
|
-
|
|
6774
|
-
- name:
|
|
6911
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6912
|
+
- name: end_month
|
|
6775
6913
|
in: query
|
|
6776
|
-
description:
|
|
6914
|
+
description: >-
|
|
6915
|
+
Optional. Same format and constraints as `end_month` on
|
|
6916
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
6777
6917
|
required: false
|
|
6778
6918
|
schema:
|
|
6779
6919
|
type: string
|
|
6780
|
-
|
|
6920
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
6781
6921
|
responses:
|
|
6782
6922
|
"200":
|
|
6783
|
-
description:
|
|
6923
|
+
description: Monthly balance history for the requested source
|
|
6784
6924
|
content:
|
|
6785
6925
|
application/json:
|
|
6786
6926
|
schema:
|
|
@@ -6793,14 +6933,16 @@ paths:
|
|
|
6793
6933
|
type: manual
|
|
6794
6934
|
manual_account_id: 119807
|
|
6795
6935
|
balances:
|
|
6796
|
-
-
|
|
6797
|
-
|
|
6936
|
+
- type: historical
|
|
6937
|
+
id: 201
|
|
6938
|
+
month: "2026-01"
|
|
6798
6939
|
balance: "41000.0000"
|
|
6799
6940
|
currency: usd
|
|
6800
6941
|
to_base: 41000
|
|
6801
6942
|
crypto_balance: null
|
|
6802
|
-
-
|
|
6803
|
-
|
|
6943
|
+
- type: historical
|
|
6944
|
+
id: 202
|
|
6945
|
+
month: "2026-02"
|
|
6804
6946
|
balance: "41211.8000"
|
|
6805
6947
|
currency: usd
|
|
6806
6948
|
to_base: 41211.8
|
|
@@ -6819,8 +6961,9 @@ paths:
|
|
|
6819
6961
|
mask: "1234"
|
|
6820
6962
|
symbol: null
|
|
6821
6963
|
balances:
|
|
6822
|
-
-
|
|
6823
|
-
|
|
6964
|
+
- type: historical
|
|
6965
|
+
id: 501
|
|
6966
|
+
month: "2026-01"
|
|
6824
6967
|
balance: "1250.0000"
|
|
6825
6968
|
currency: usd
|
|
6826
6969
|
to_base: 1250
|
|
@@ -6832,16 +6975,16 @@ paths:
|
|
|
6832
6975
|
schema:
|
|
6833
6976
|
$ref: "#/components/schemas/errorResponseObject"
|
|
6834
6977
|
examples:
|
|
6835
|
-
missing paired
|
|
6978
|
+
missing paired month:
|
|
6836
6979
|
value:
|
|
6837
6980
|
message: Request Validation Failure
|
|
6838
6981
|
errors:
|
|
6839
|
-
- errMsg: "`
|
|
6840
|
-
invalid
|
|
6982
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
6983
|
+
invalid month format:
|
|
6841
6984
|
value:
|
|
6842
|
-
message: Request
|
|
6985
|
+
message: Invalid Request Parameters
|
|
6843
6986
|
errors:
|
|
6844
|
-
- errMsg: "
|
|
6987
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
6845
6988
|
"401":
|
|
6846
6989
|
$ref: "#/components/responses/unauthorizedToken"
|
|
6847
6990
|
"404":
|
|
@@ -6860,7 +7003,7 @@ paths:
|
|
|
6860
7003
|
value:
|
|
6861
7004
|
message: Not Found
|
|
6862
7005
|
errors:
|
|
6863
|
-
- errMsg: "
|
|
7006
|
+
- errMsg: "Deleted balance history source 99999999 was not found."
|
|
6864
7007
|
"429":
|
|
6865
7008
|
$ref: "#/components/responses/rateLimited"
|
|
6866
7009
|
"500":
|
|
@@ -6869,37 +7012,20 @@ paths:
|
|
|
6869
7012
|
tags:
|
|
6870
7013
|
- balance_history
|
|
6871
7014
|
summary: Upsert balance history for an account
|
|
6872
|
-
description:
|
|
6873
|
-
Upsert one or more historical balance entries for a single manual, Plaid,
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
|
|
6877
|
-
`
|
|
6878
|
-
|
|
6879
|
-
|
|
6880
|
-
a `date` and `balance` value.<br><br>
|
|
6881
|
-
|
|
6882
|
-
Balance history is monthly. Each entry's `date` must be the first day of
|
|
6883
|
-
a month and must not be in the future.<br><br>
|
|
6884
|
-
|
|
6885
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
6886
|
-
to the account currency for manual/Plaid accounts, or the user's primary
|
|
6887
|
-
currency for crypto/deleted accounts.<br><br>
|
|
6888
|
-
|
|
6889
|
-
`symbol` is optional for `crypto_manual` accounts, tolerated for `deleted`
|
|
6890
|
-
accounts, and invalid for `manual` or `plaid` accounts.<br><br>
|
|
6891
|
-
|
|
6892
|
-
`crypto_balance` may be provided for `crypto_manual` and `deleted` accounts,
|
|
6893
|
-
and is invalid for `manual` or `plaid` accounts.<br><br>
|
|
6894
|
-
|
|
6895
|
-
Use `PUT /v2/balance_history/deleted/{account_id}/details` to update
|
|
6896
|
-
deleted-source metadata.
|
|
7015
|
+
description: |-
|
|
7016
|
+
Upsert one or more historical balance entries for a single manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [PUT /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/PUT/balance_history/crypto_synced/{account_id}/{symbol}).<br><br>
|
|
7017
|
+
The `account_type` path parameter identifies the account family (`manual`, `plaid`, `crypto_manual`, or `deleted`) and `account_id` identifies the account within that family.<br><br>
|
|
7018
|
+
Submit one or more entries in the `balances` array. Each entry must specify a `month` (YYYY-MM) and `balance` value. `month` must be a past calendar month. The current month cannot be written through this endpoint.<br><br>
|
|
7019
|
+
`currency` may be provided for any balance entry. If omitted, it defaults to the account currency for manual/Plaid accounts, or the user's primary currency for crypto/deleted accounts.<br><br>
|
|
7020
|
+
`symbol` may be set for `crypto_manual` (optional) and `deleted` (tolerated) accounts. Do not provide it for `manual` or `plaid` accounts.<br><br>
|
|
7021
|
+
`crypto_balance` may be provided for `crypto_manual` and `deleted` accounts. It is invalid for `manual` or `plaid` accounts.<br><br>
|
|
7022
|
+
The response contains only the `type: historical` balance entries that were submitted in this request.
|
|
6897
7023
|
operationId: upsertBalanceHistoryForAccount
|
|
6898
7024
|
parameters:
|
|
6899
7025
|
- name: account_type
|
|
6900
7026
|
in: path
|
|
6901
7027
|
required: true
|
|
6902
|
-
description:
|
|
7028
|
+
description: Account family to update. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
6903
7029
|
schema:
|
|
6904
7030
|
type: string
|
|
6905
7031
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -6920,88 +7046,105 @@ paths:
|
|
|
6920
7046
|
manual account bulk upsert:
|
|
6921
7047
|
value:
|
|
6922
7048
|
balances:
|
|
6923
|
-
-
|
|
7049
|
+
- month: "2026-03"
|
|
6924
7050
|
balance: "41500.0000"
|
|
6925
|
-
-
|
|
7051
|
+
- month: "2026-04"
|
|
6926
7052
|
balance: "41625.5000"
|
|
6927
7053
|
crypto manual balance with symbol:
|
|
6928
7054
|
value:
|
|
6929
7055
|
balances:
|
|
6930
|
-
-
|
|
7056
|
+
- month: "2026-03"
|
|
6931
7057
|
balance: "56011.1200"
|
|
6932
7058
|
symbol: btc
|
|
6933
7059
|
crypto_balance: "0.852341920145782301"
|
|
6934
7060
|
deleted account bulk upsert:
|
|
6935
7061
|
value:
|
|
6936
7062
|
balances:
|
|
6937
|
-
-
|
|
7063
|
+
- month: "2026-03"
|
|
6938
7064
|
symbol: btc
|
|
6939
7065
|
crypto_balance: "0.020000000000000000"
|
|
6940
7066
|
currency: usd
|
|
6941
|
-
balance: "1255
|
|
7067
|
+
balance: "1255"
|
|
6942
7068
|
get-shaped balance entry input:
|
|
6943
7069
|
value:
|
|
6944
7070
|
balances:
|
|
6945
7071
|
- id: 601
|
|
6946
|
-
|
|
7072
|
+
month: "2026-03"
|
|
6947
7073
|
balance: "41500.0000"
|
|
6948
7074
|
currency: usd
|
|
6949
7075
|
to_base: 41500
|
|
6950
7076
|
crypto_balance: null
|
|
6951
|
-
partial success request:
|
|
6952
|
-
value:
|
|
6953
|
-
balances:
|
|
6954
|
-
- date: "2026-03-01"
|
|
6955
|
-
balance: "41500.0000"
|
|
6956
|
-
- date: "2026-04-01"
|
|
6957
|
-
balance: "41625.5000"
|
|
6958
|
-
symbol: btc
|
|
6959
7077
|
responses:
|
|
6960
7078
|
"200":
|
|
6961
|
-
description:
|
|
7079
|
+
description: >-
|
|
7080
|
+
Returns only the `type: historical` entries modified by this request.
|
|
7081
|
+
Other historical entries for the account are omitted from `balances`.
|
|
6962
7082
|
content:
|
|
6963
7083
|
application/json:
|
|
6964
7084
|
schema:
|
|
6965
|
-
$ref: "#/components/schemas/
|
|
7085
|
+
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
6966
7086
|
examples:
|
|
6967
|
-
|
|
7087
|
+
manual account bulk upsert:
|
|
7088
|
+
summary: Two upserted entries returned (not full account history)
|
|
6968
7089
|
value:
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
|
|
6973
|
-
|
|
6974
|
-
|
|
6975
|
-
|
|
6976
|
-
|
|
6977
|
-
|
|
6978
|
-
|
|
6979
|
-
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
|
|
6991
|
-
|
|
6992
|
-
|
|
6993
|
-
|
|
6994
|
-
|
|
6995
|
-
|
|
6996
|
-
|
|
6997
|
-
|
|
6998
|
-
|
|
6999
|
-
|
|
7000
|
-
|
|
7001
|
-
|
|
7002
|
-
|
|
7090
|
+
source:
|
|
7091
|
+
type: manual
|
|
7092
|
+
manual_account_id: 119807
|
|
7093
|
+
balances:
|
|
7094
|
+
- type: historical
|
|
7095
|
+
id: 601
|
|
7096
|
+
month: "2026-03"
|
|
7097
|
+
balance: "41500.0000"
|
|
7098
|
+
currency: usd
|
|
7099
|
+
to_base: 41500
|
|
7100
|
+
crypto_balance: null
|
|
7101
|
+
- type: historical
|
|
7102
|
+
id: 602
|
|
7103
|
+
month: "2026-04"
|
|
7104
|
+
balance: "41625.5000"
|
|
7105
|
+
currency: usd
|
|
7106
|
+
to_base: 41625.5
|
|
7107
|
+
crypto_balance: null
|
|
7108
|
+
crypto manual balance with symbol:
|
|
7109
|
+
summary: Single upserted entry returned
|
|
7110
|
+
value:
|
|
7111
|
+
source:
|
|
7112
|
+
type: crypto_manual
|
|
7113
|
+
crypto_manual_id: 22001
|
|
7114
|
+
symbol: btc
|
|
7115
|
+
balances:
|
|
7116
|
+
- type: historical
|
|
7117
|
+
id: 603
|
|
7118
|
+
month: "2026-03"
|
|
7119
|
+
balance: "56011.1200"
|
|
7120
|
+
currency: usd
|
|
7121
|
+
to_base: 56011.12
|
|
7122
|
+
crypto_balance: "0.852341920145782301"
|
|
7123
|
+
deleted account bulk upsert:
|
|
7124
|
+
summary: Single upserted entry returned
|
|
7125
|
+
value:
|
|
7126
|
+
source:
|
|
7127
|
+
type: deleted
|
|
7128
|
+
deleted_account_id: 91
|
|
7129
|
+
name: Savings
|
|
7130
|
+
institution_name: Old Bank
|
|
7131
|
+
display_name: Closed Savings
|
|
7132
|
+
account_type: savings
|
|
7133
|
+
subtype: savings
|
|
7134
|
+
mask: "1234"
|
|
7135
|
+
symbol: btc
|
|
7136
|
+
balances:
|
|
7137
|
+
- type: historical
|
|
7138
|
+
id: 504
|
|
7139
|
+
month: "2026-03"
|
|
7140
|
+
balance: "1255"
|
|
7141
|
+
currency: usd
|
|
7142
|
+
to_base: 1255
|
|
7143
|
+
crypto_balance: "0.020000000000000000"
|
|
7003
7144
|
"400":
|
|
7004
|
-
description:
|
|
7145
|
+
description: >-
|
|
7146
|
+
Bad Request. If any entry in `balances` fails validation, the entire
|
|
7147
|
+
request is rejected and no entries are updated.
|
|
7005
7148
|
content:
|
|
7006
7149
|
application/json:
|
|
7007
7150
|
schema:
|
|
@@ -7012,26 +7155,45 @@ paths:
|
|
|
7012
7155
|
message: Invalid Request Body
|
|
7013
7156
|
errors:
|
|
7014
7157
|
- errMsg: "Missing required property 'balances' in request body."
|
|
7158
|
+
empty balances array:
|
|
7159
|
+
value:
|
|
7160
|
+
message: Invalid Request Body
|
|
7161
|
+
errors:
|
|
7162
|
+
- errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
7015
7163
|
invalid property:
|
|
7016
7164
|
value:
|
|
7017
7165
|
message: Invalid Request Body
|
|
7018
7166
|
errors:
|
|
7019
7167
|
- errMsg: "Invalid property 'foo' in request body."
|
|
7020
|
-
invalid
|
|
7168
|
+
invalid month format:
|
|
7169
|
+
value:
|
|
7170
|
+
message: Invalid Request Body
|
|
7171
|
+
errors:
|
|
7172
|
+
- errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7173
|
+
current month:
|
|
7021
7174
|
value:
|
|
7022
7175
|
message: Request Validation Failure
|
|
7023
7176
|
errors:
|
|
7024
|
-
- errMsg: "`
|
|
7025
|
-
|
|
7177
|
+
- errMsg: "`month` must not be the current month."
|
|
7178
|
+
request_balances_index: 0
|
|
7179
|
+
future month:
|
|
7026
7180
|
value:
|
|
7027
7181
|
message: Request Validation Failure
|
|
7028
7182
|
errors:
|
|
7029
|
-
- errMsg: "`
|
|
7183
|
+
- errMsg: "`month` must not be in the future."
|
|
7184
|
+
request_balances_index: 1
|
|
7030
7185
|
crypto balance not allowed:
|
|
7031
7186
|
value:
|
|
7032
7187
|
message: Request Validation Failure
|
|
7033
7188
|
errors:
|
|
7034
7189
|
- errMsg: "`crypto_balance` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7190
|
+
request_balances_index: 0
|
|
7191
|
+
invalid entry in bulk request:
|
|
7192
|
+
value:
|
|
7193
|
+
message: Request Validation Failure
|
|
7194
|
+
errors:
|
|
7195
|
+
- errMsg: "`symbol` may only be set when `account_type` is `crypto_manual` or `deleted`."
|
|
7196
|
+
request_balances_index: 1
|
|
7035
7197
|
"401":
|
|
7036
7198
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7037
7199
|
"404":
|
|
@@ -7052,15 +7214,14 @@ paths:
|
|
|
7052
7214
|
tags:
|
|
7053
7215
|
- balance_history
|
|
7054
7216
|
summary: Delete all balance history for an account
|
|
7055
|
-
description:
|
|
7056
|
-
Delete all historical balance entries for a single manual, Plaid,
|
|
7057
|
-
manual crypto, or deleted account. Crypto synced accounts require an additional `symbol` path parameter.
|
|
7217
|
+
description: |-
|
|
7218
|
+
Delete all historical balance entries for a single manual, Plaid, manual crypto, or deleted account. For synced crypto symbol streams, use [DELETE /balance_history/crypto_synced/{account_id}/{symbol}](#tag/balance-history/DELETE/balance_history/crypto_synced/{account_id}/{symbol}).
|
|
7058
7219
|
operationId: deleteBalanceHistoryForAccount
|
|
7059
7220
|
parameters:
|
|
7060
7221
|
- name: account_type
|
|
7061
7222
|
in: path
|
|
7062
7223
|
required: true
|
|
7063
|
-
description:
|
|
7224
|
+
description: Account family to delete. Use `manual`, `plaid`, `crypto_manual`, or `deleted`.
|
|
7064
7225
|
schema:
|
|
7065
7226
|
type: string
|
|
7066
7227
|
enum: [manual, plaid, crypto_manual, deleted]
|
|
@@ -7097,16 +7258,10 @@ paths:
|
|
|
7097
7258
|
tags:
|
|
7098
7259
|
- balance_history
|
|
7099
7260
|
summary: Get balance history for a synced crypto symbol
|
|
7100
|
-
description:
|
|
7101
|
-
Retrieve
|
|
7102
|
-
|
|
7103
|
-
|
|
7104
|
-
to select one balance stream within that synced crypto account.<br><br>
|
|
7105
|
-
|
|
7106
|
-
When `start_date` and `end_date` are both provided, they must be first-of-month
|
|
7107
|
-
dates. `start_date` must not be in the future, while `end_date` may be in the future.
|
|
7108
|
-
If one of `start_date` or `end_date` is provided, the other is required. If neither is
|
|
7109
|
-
provided, all available history for the symbol stream is returned.
|
|
7261
|
+
description: |-
|
|
7262
|
+
Retrieve monthly balance history for a single synced crypto symbol stream.<br><br>
|
|
7263
|
+
The path selects one balance stream with a synced crypto account id and `symbol`.<br><br>
|
|
7264
|
+
`start_month`, `end_month`, and current-month entries behave as described in [GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7110
7265
|
operationId: getBalanceHistoryForCryptoSynced
|
|
7111
7266
|
parameters:
|
|
7112
7267
|
- name: account_id
|
|
@@ -7124,23 +7279,27 @@ paths:
|
|
|
7124
7279
|
type: string
|
|
7125
7280
|
minLength: 1
|
|
7126
7281
|
maxLength: 25
|
|
7127
|
-
- name:
|
|
7282
|
+
- name: start_month
|
|
7128
7283
|
in: query
|
|
7129
|
-
description:
|
|
7284
|
+
description: >-
|
|
7285
|
+
Optional. Same format and constraints as `start_month` on
|
|
7286
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7130
7287
|
required: false
|
|
7131
7288
|
schema:
|
|
7132
7289
|
type: string
|
|
7133
|
-
|
|
7134
|
-
- name:
|
|
7290
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7291
|
+
- name: end_month
|
|
7135
7292
|
in: query
|
|
7136
|
-
description:
|
|
7293
|
+
description: >-
|
|
7294
|
+
Optional. Same format and constraints as `end_month` on
|
|
7295
|
+
[GET /balance_history](#tag/balance-history/GET/balance_history).
|
|
7137
7296
|
required: false
|
|
7138
7297
|
schema:
|
|
7139
7298
|
type: string
|
|
7140
|
-
|
|
7299
|
+
pattern: '^\d{4}-(0[1-9]|1[0-2])$'
|
|
7141
7300
|
responses:
|
|
7142
7301
|
"200":
|
|
7143
|
-
description:
|
|
7302
|
+
description: Monthly balance history for the synced crypto symbol stream
|
|
7144
7303
|
content:
|
|
7145
7304
|
application/json:
|
|
7146
7305
|
schema:
|
|
@@ -7152,8 +7311,9 @@ paths:
|
|
|
7152
7311
|
crypto_synced_id: 33004
|
|
7153
7312
|
symbol: btc
|
|
7154
7313
|
balances:
|
|
7155
|
-
-
|
|
7156
|
-
|
|
7314
|
+
- type: historical
|
|
7315
|
+
id: 401
|
|
7316
|
+
month: "2026-02"
|
|
7157
7317
|
balance: "6231.2800"
|
|
7158
7318
|
currency: usd
|
|
7159
7319
|
to_base: 6231.28
|
|
@@ -7165,16 +7325,16 @@ paths:
|
|
|
7165
7325
|
schema:
|
|
7166
7326
|
$ref: "#/components/schemas/errorResponseObject"
|
|
7167
7327
|
examples:
|
|
7168
|
-
missing paired
|
|
7328
|
+
missing paired month:
|
|
7169
7329
|
value:
|
|
7170
7330
|
message: Request Validation Failure
|
|
7171
7331
|
errors:
|
|
7172
|
-
- errMsg: "`
|
|
7173
|
-
invalid
|
|
7332
|
+
- errMsg: "`start_month` and `end_month` must either both be provided or both be omitted."
|
|
7333
|
+
invalid month format:
|
|
7174
7334
|
value:
|
|
7175
|
-
message: Request
|
|
7335
|
+
message: Invalid Request Parameters
|
|
7176
7336
|
errors:
|
|
7177
|
-
- errMsg: "
|
|
7337
|
+
- errMsg: "Invalid value for parameter: 'start_month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7178
7338
|
"401":
|
|
7179
7339
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7180
7340
|
"404":
|
|
@@ -7193,7 +7353,7 @@ paths:
|
|
|
7193
7353
|
value:
|
|
7194
7354
|
message: Not Found
|
|
7195
7355
|
errors:
|
|
7196
|
-
- errMsg: "There is no
|
|
7356
|
+
- errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7197
7357
|
"429":
|
|
7198
7358
|
$ref: "#/components/responses/rateLimited"
|
|
7199
7359
|
"500":
|
|
@@ -7202,24 +7362,14 @@ paths:
|
|
|
7202
7362
|
tags:
|
|
7203
7363
|
- balance_history
|
|
7204
7364
|
summary: Upsert balance history for a synced crypto symbol
|
|
7205
|
-
description:
|
|
7206
|
-
Upsert one or more historical balance entries for a single synced crypto
|
|
7207
|
-
symbol stream.<br><br>
|
|
7208
|
-
|
|
7365
|
+
description: |-
|
|
7366
|
+
Upsert one or more historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7209
7367
|
The path identifies both the synced crypto account and the symbol being updated.<br><br>
|
|
7210
|
-
|
|
7211
|
-
|
|
7212
|
-
|
|
7213
|
-
|
|
7214
|
-
|
|
7215
|
-
a month and must not be in the future.<br><br>
|
|
7216
|
-
|
|
7217
|
-
The request body must not include `symbol`; the symbol is supplied by the path.<br><br>
|
|
7218
|
-
|
|
7219
|
-
`currency` may be provided for any balance entry. If omitted, it defaults
|
|
7220
|
-
to the user's primary currency for synced crypto balances.<br><br>
|
|
7221
|
-
|
|
7222
|
-
`crypto_balance` may be provided for synced crypto balances.
|
|
7368
|
+
Submit one or more entries in the `balances` array. Each entry must specify a `month` (YYYY-MM) and `balance` value. `month` must be a past calendar month. The current month cannot be written through this endpoint.<br><br>
|
|
7369
|
+
The request body may include an optional `symbol` on each balance entry. If provided, it must match the `symbol` path parameter. Omit `symbol` to use the path value.<br><br>
|
|
7370
|
+
`currency` may be provided for any balance entry. If omitted, it defaults to the user's primary currency for synced crypto balances.<br><br>
|
|
7371
|
+
`crypto_balance` may be provided for synced crypto balances.<br><br>
|
|
7372
|
+
The response contains only the `type: historical` balance entries that were submitted in this request.
|
|
7223
7373
|
operationId: upsertBalanceHistoryForCryptoSynced
|
|
7224
7374
|
parameters:
|
|
7225
7375
|
- name: account_id
|
|
@@ -7247,68 +7397,49 @@ paths:
|
|
|
7247
7397
|
synced crypto bulk upsert:
|
|
7248
7398
|
value:
|
|
7249
7399
|
balances:
|
|
7250
|
-
-
|
|
7400
|
+
- month: "2026-03"
|
|
7251
7401
|
balance: "6400.0000"
|
|
7252
7402
|
crypto_balance: "0.100020003000400050"
|
|
7253
|
-
-
|
|
7403
|
+
- month: "2026-04"
|
|
7254
7404
|
balance: "6500.0000"
|
|
7255
7405
|
crypto_balance: "0.100020003000400050"
|
|
7256
|
-
partial success request:
|
|
7257
|
-
value:
|
|
7258
|
-
balances:
|
|
7259
|
-
- date: "2026-03-01"
|
|
7260
|
-
balance: "6400.0000"
|
|
7261
|
-
crypto_balance: "0.100020003000400050"
|
|
7262
|
-
- date: "2026-04-01"
|
|
7263
|
-
balance: "not-a-number"
|
|
7264
7406
|
responses:
|
|
7265
7407
|
"200":
|
|
7266
|
-
description:
|
|
7408
|
+
description: >-
|
|
7409
|
+
Returns only the `type: historical` entries modified by this request.
|
|
7410
|
+
Other historical entries for the symbol stream are omitted from
|
|
7411
|
+
`balances`.
|
|
7267
7412
|
content:
|
|
7268
7413
|
application/json:
|
|
7269
7414
|
schema:
|
|
7270
|
-
$ref: "#/components/schemas/
|
|
7415
|
+
$ref: "#/components/schemas/balanceHistoryAccountObject"
|
|
7271
7416
|
examples:
|
|
7272
|
-
|
|
7417
|
+
synced crypto bulk upsert:
|
|
7418
|
+
summary: Two upserted entries returned (not full symbol history)
|
|
7273
7419
|
value:
|
|
7274
|
-
|
|
7275
|
-
|
|
7276
|
-
|
|
7277
|
-
|
|
7278
|
-
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7286
|
-
|
|
7287
|
-
|
|
7288
|
-
|
|
7289
|
-
|
|
7290
|
-
|
|
7291
|
-
|
|
7292
|
-
|
|
7293
|
-
partial success:
|
|
7294
|
-
value:
|
|
7295
|
-
updated_balance_history:
|
|
7296
|
-
source:
|
|
7297
|
-
type: crypto_synced
|
|
7298
|
-
crypto_synced_id: 33004
|
|
7299
|
-
symbol: btc
|
|
7300
|
-
balances:
|
|
7301
|
-
- id: 604
|
|
7302
|
-
date: "2026-03-01"
|
|
7303
|
-
balance: "6400.0000"
|
|
7304
|
-
currency: usd
|
|
7305
|
-
to_base: 6400
|
|
7306
|
-
crypto_balance: "0.100020003000400050"
|
|
7307
|
-
errors:
|
|
7308
|
-
- request_balances_index: 1
|
|
7309
|
-
message: "`balance` must be a valid numeric string or number."
|
|
7420
|
+
source:
|
|
7421
|
+
type: crypto_synced
|
|
7422
|
+
crypto_synced_id: 33004
|
|
7423
|
+
symbol: btc
|
|
7424
|
+
balances:
|
|
7425
|
+
- type: historical
|
|
7426
|
+
id: 604
|
|
7427
|
+
month: "2026-03"
|
|
7428
|
+
balance: "6400.0000"
|
|
7429
|
+
currency: usd
|
|
7430
|
+
to_base: 6400
|
|
7431
|
+
crypto_balance: "0.100020003000400050"
|
|
7432
|
+
- type: historical
|
|
7433
|
+
id: 605
|
|
7434
|
+
month: "2026-04"
|
|
7435
|
+
balance: "6500.0000"
|
|
7436
|
+
currency: usd
|
|
7437
|
+
to_base: 6500
|
|
7438
|
+
crypto_balance: "0.100020003000400050"
|
|
7310
7439
|
"400":
|
|
7311
|
-
description:
|
|
7440
|
+
description: >-
|
|
7441
|
+
Bad Request. If any entry in `balances` fails validation, the entire
|
|
7442
|
+
request is rejected and no entries are updated.
|
|
7312
7443
|
content:
|
|
7313
7444
|
application/json:
|
|
7314
7445
|
schema:
|
|
@@ -7319,16 +7450,40 @@ paths:
|
|
|
7319
7450
|
message: Invalid Request Body
|
|
7320
7451
|
errors:
|
|
7321
7452
|
- errMsg: "Missing required property 'balances' in request body."
|
|
7322
|
-
|
|
7453
|
+
empty balances array:
|
|
7454
|
+
value:
|
|
7455
|
+
message: Invalid Request Body
|
|
7456
|
+
errors:
|
|
7457
|
+
- errMsg: "Invalid value for property 'balances'. Array must contain at least 1 element(s)"
|
|
7458
|
+
invalid month format:
|
|
7459
|
+
value:
|
|
7460
|
+
message: Invalid Request Body
|
|
7461
|
+
errors:
|
|
7462
|
+
- errMsg: "Invalid value for property 'balances.0.month'. '2026-06-01' is not a valid month in YYYY-MM format."
|
|
7463
|
+
current month:
|
|
7323
7464
|
value:
|
|
7324
7465
|
message: Request Validation Failure
|
|
7325
7466
|
errors:
|
|
7326
|
-
- errMsg: "`
|
|
7327
|
-
|
|
7467
|
+
- errMsg: "`month` must not be the current month."
|
|
7468
|
+
request_balances_index: 0
|
|
7469
|
+
future month:
|
|
7328
7470
|
value:
|
|
7329
7471
|
message: Request Validation Failure
|
|
7330
7472
|
errors:
|
|
7331
|
-
- errMsg: "`
|
|
7473
|
+
- errMsg: "`month` must not be in the future."
|
|
7474
|
+
request_balances_index: 1
|
|
7475
|
+
symbol mismatch:
|
|
7476
|
+
value:
|
|
7477
|
+
message: Request Validation Failure
|
|
7478
|
+
errors:
|
|
7479
|
+
- errMsg: "`symbol` in request body (doge) does not match the path symbol (eth)."
|
|
7480
|
+
request_balances_index: 0
|
|
7481
|
+
invalid entry in bulk request:
|
|
7482
|
+
value:
|
|
7483
|
+
message: Invalid Request Body
|
|
7484
|
+
errors:
|
|
7485
|
+
- errMsg: "`balance` must be a valid numeric string or number."
|
|
7486
|
+
request_balances_index: 1
|
|
7332
7487
|
"401":
|
|
7333
7488
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7334
7489
|
"404":
|
|
@@ -7347,7 +7502,7 @@ paths:
|
|
|
7347
7502
|
value:
|
|
7348
7503
|
message: Not Found
|
|
7349
7504
|
errors:
|
|
7350
|
-
- errMsg: "There is no
|
|
7505
|
+
- errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7351
7506
|
"429":
|
|
7352
7507
|
$ref: "#/components/responses/rateLimited"
|
|
7353
7508
|
"500":
|
|
@@ -7356,11 +7511,9 @@ paths:
|
|
|
7356
7511
|
tags:
|
|
7357
7512
|
- balance_history
|
|
7358
7513
|
summary: Delete all balance history for a synced crypto symbol
|
|
7359
|
-
description:
|
|
7514
|
+
description: |-
|
|
7360
7515
|
Delete all historical balance entries for a single synced crypto symbol stream.<br><br>
|
|
7361
|
-
|
|
7362
|
-
The path identifies both the synced crypto account and the symbol whose
|
|
7363
|
-
history should be deleted.
|
|
7516
|
+
The path identifies both the synced crypto account and the symbol whose history should be deleted.
|
|
7364
7517
|
operationId: deleteBalanceHistoryForCryptoSynced
|
|
7365
7518
|
parameters:
|
|
7366
7519
|
- name: account_id
|
|
@@ -7392,7 +7545,7 @@ paths:
|
|
|
7392
7545
|
example:
|
|
7393
7546
|
message: Not Found
|
|
7394
7547
|
errors:
|
|
7395
|
-
- errMsg: "There is no
|
|
7548
|
+
- errMsg: "There is no balance history for symbol 'doge' on this account."
|
|
7396
7549
|
"429":
|
|
7397
7550
|
$ref: "#/components/responses/rateLimited"
|
|
7398
7551
|
"500":
|
|
@@ -7402,20 +7555,30 @@ paths:
|
|
|
7402
7555
|
tags:
|
|
7403
7556
|
- balance_history
|
|
7404
7557
|
summary: Delete a balance history entry
|
|
7405
|
-
description:
|
|
7406
|
-
Delete a single monthly balance history entry by its id.
|
|
7558
|
+
description: |-
|
|
7559
|
+
Delete a single stored (`type: historical`) monthly balance history entry by its id. Ephemeral `current` entries cannot be deleted this way.
|
|
7407
7560
|
operationId: deleteBalanceHistoryEntry
|
|
7408
7561
|
parameters:
|
|
7409
7562
|
- name: id
|
|
7410
7563
|
in: path
|
|
7411
7564
|
required: true
|
|
7412
|
-
description:
|
|
7565
|
+
description: Historical balance entry identifier to delete.
|
|
7413
7566
|
schema:
|
|
7414
7567
|
type: integer
|
|
7415
7568
|
format: int32
|
|
7416
7569
|
responses:
|
|
7417
7570
|
"204":
|
|
7418
7571
|
description: The balance history entry was deleted
|
|
7572
|
+
"400":
|
|
7573
|
+
description: Bad Request
|
|
7574
|
+
content:
|
|
7575
|
+
application/json:
|
|
7576
|
+
schema:
|
|
7577
|
+
$ref: "#/components/schemas/errorResponseObject"
|
|
7578
|
+
example:
|
|
7579
|
+
message: Invalid Path Parameters
|
|
7580
|
+
errors:
|
|
7581
|
+
- errMsg: "Invalid value type for path parameter: 'id'. Expected 'number', received 'string'."
|
|
7419
7582
|
"401":
|
|
7420
7583
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7421
7584
|
"404":
|
|
@@ -7437,12 +7600,9 @@ paths:
|
|
|
7437
7600
|
tags:
|
|
7438
7601
|
- balance_history
|
|
7439
7602
|
summary: Update details for a deleted account
|
|
7440
|
-
description:
|
|
7603
|
+
description: |-
|
|
7441
7604
|
Update archived metadata for a deleted balance history source.<br><br>
|
|
7442
|
-
|
|
7443
|
-
Pass the `deleted` source id returned on `source.deleted_account_id`.
|
|
7444
|
-
This endpoint updates the stored deleted-source metadata used for all
|
|
7445
|
-
historical entries associated with that deleted source.
|
|
7605
|
+
Pass the `deleted_account_id` from a `source.type: deleted` entry. The update applies to all historical entries associated with that deleted source.
|
|
7446
7606
|
operationId: updateBalanceHistoryDetails
|
|
7447
7607
|
parameters:
|
|
7448
7608
|
- name: account_id
|
|
@@ -7490,7 +7650,7 @@ paths:
|
|
|
7490
7650
|
example:
|
|
7491
7651
|
message: Invalid Request Body
|
|
7492
7652
|
errors:
|
|
7493
|
-
- errMsg: "
|
|
7653
|
+
- errMsg: "At least one property must be provided: name, institution_name, display_name, account_type, subtype, mask."
|
|
7494
7654
|
"401":
|
|
7495
7655
|
$ref: "#/components/responses/unauthorizedToken"
|
|
7496
7656
|
"404":
|
|
@@ -7502,7 +7662,7 @@ paths:
|
|
|
7502
7662
|
example:
|
|
7503
7663
|
message: Not Found
|
|
7504
7664
|
errors:
|
|
7505
|
-
- errMsg: "
|
|
7665
|
+
- errMsg: "Deleted balance history source 99999999 was not found."
|
|
7506
7666
|
"429":
|
|
7507
7667
|
$ref: "#/components/responses/rateLimited"
|
|
7508
7668
|
"500":
|
|
@@ -8516,19 +8676,19 @@ paths:
|
|
|
8516
8676
|
description: Sets the maximum number of transactions to return. If
|
|
8517
8677
|
more match the filter criteria, the response will include a
|
|
8518
8678
|
`has_more` attribute set to `true`. See
|
|
8519
|
-
[Pagination](https://
|
|
8679
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8520
8680
|
- name: offset
|
|
8521
8681
|
in: query
|
|
8522
8682
|
schema:
|
|
8523
8683
|
type: integer
|
|
8524
8684
|
description: Sets the offset for the records returned. This is
|
|
8525
8685
|
typically set automatically in the header. See
|
|
8526
|
-
[Pagination](https://
|
|
8686
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8527
8687
|
responses:
|
|
8528
8688
|
"200":
|
|
8529
8689
|
description: Returns an array of transactions. <br><br>The `has_more`
|
|
8530
8690
|
property is set to `true` if more transactions are available. See
|
|
8531
|
-
[Pagination](https://
|
|
8691
|
+
[Pagination](https://lunchmoney.dev/v2/pagination)
|
|
8532
8692
|
content:
|
|
8533
8693
|
application/json:
|
|
8534
8694
|
schema:
|
|
@@ -10194,7 +10354,7 @@ paths:
|
|
|
10194
10354
|
description: |
|
|
10195
10355
|
The payee for the new grouped transaction.
|
|
10196
10356
|
minLength: 0
|
|
10197
|
-
|
|
10357
|
+
|
|
10198
10358
|
category_id:
|
|
10199
10359
|
type: integer
|
|
10200
10360
|
format: int64
|
|
@@ -10209,8 +10369,6 @@ paths:
|
|
|
10209
10369
|
nullable: true
|
|
10210
10370
|
description: |
|
|
10211
10371
|
Notes for the grouped transaction.
|
|
10212
|
-
minLength: 0
|
|
10213
|
-
maxLength: 350
|
|
10214
10372
|
status:
|
|
10215
10373
|
type: string
|
|
10216
10374
|
description: If set, must be either `reviewed` or
|
|
@@ -10754,9 +10912,8 @@ paths:
|
|
|
10754
10912
|
- transactions (files)
|
|
10755
10913
|
summary: Attach a file to a transaction
|
|
10756
10914
|
operationId: attachFileToTransaction
|
|
10757
|
-
description:
|
|
10758
|
-
Attaches a file to a transaction. The file must be less than 10MB in size.<br><br>
|
|
10759
|
-
The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
|
|
10915
|
+
description: |-
|
|
10916
|
+
Attaches a file to a transaction. The file must be less than 10MB in size.<br><br> The file will be attached to the transaction and can be downloaded from the link returned by a `GET /transactions/attachments/{file_id}` request.
|
|
10760
10917
|
parameters:
|
|
10761
10918
|
- name: transaction_id
|
|
10762
10919
|
in: path
|
|
@@ -10839,8 +10996,8 @@ paths:
|
|
|
10839
10996
|
/transactions/attachments/{file_id}:
|
|
10840
10997
|
get:
|
|
10841
10998
|
summary: Get a url to download a file attachment
|
|
10842
|
-
description:
|
|
10843
|
-
attachment.
|
|
10999
|
+
description: |-
|
|
11000
|
+
Returns a signed url that can be used to download the file attachment.
|
|
10844
11001
|
operationId: getTransactionAttachmentUrl
|
|
10845
11002
|
tags:
|
|
10846
11003
|
- transactions (files)
|
|
@@ -11573,12 +11730,15 @@ paths:
|
|
|
11573
11730
|
get:
|
|
11574
11731
|
tags:
|
|
11575
11732
|
- budgets
|
|
11576
|
-
summary: Get budget settings
|
|
11577
|
-
description:
|
|
11733
|
+
summary: Get budget period settings
|
|
11734
|
+
description: |-
|
|
11735
|
+
Returns budget period and display settings for the budget
|
|
11736
|
+
associated with this API token.<p> These control how budget **periods** are calculated
|
|
11737
|
+
(granularity, anchor date, rollover, and related options).
|
|
11578
11738
|
operationId: getBudgetSettings
|
|
11579
11739
|
responses:
|
|
11580
11740
|
"200":
|
|
11581
|
-
description: Budget settings for the
|
|
11741
|
+
description: Budget period settings for the current budget
|
|
11582
11742
|
content:
|
|
11583
11743
|
application/json:
|
|
11584
11744
|
schema:
|
|
@@ -11601,7 +11761,7 @@ paths:
|
|
|
11601
11761
|
Note that `start_date` **must** be a valid budget period start for the account (based on the account's
|
|
11602
11762
|
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>
|
|
11603
11763
|
|
|
11604
|
-
Use the [budgets/settings](#tag/budgets/GET/budgets/settings) endpoint to view the
|
|
11764
|
+
Use the [/budgets/settings](#tag/budgets/GET/budgets/settings) endpoint to view the budget period settings for the account.<br>
|
|
11605
11765
|
To view details for existing budgets, use the [summary](#tag/summary) endpoint.
|
|
11606
11766
|
operationId: upsertBudget
|
|
11607
11767
|
requestBody:
|
|
@@ -11672,7 +11832,7 @@ paths:
|
|
|
11672
11832
|
period settings). If an invalid `start_date` is provided, the request
|
|
11673
11833
|
will fail with an error that indicates what the previous and next valid
|
|
11674
11834
|
start dates are.<p> Use the
|
|
11675
|
-
[budgets/settings](#tag/budgets/GET/budgets/settings) endpoint to view
|
|
11835
|
+
[/budgets/settings](#tag/budgets/GET/budgets/settings) endpoint to view
|
|
11676
11836
|
the account's budget settings.<br> To view details for existing budgets,
|
|
11677
11837
|
use the [summary](#tag/summary) endpoint.
|
|
11678
11838
|
operationId: deleteBudget
|
|
@@ -11730,4 +11890,3 @@ paths:
|
|
|
11730
11890
|
|
|
11731
11891
|
security:
|
|
11732
11892
|
- bearerSecurity: []
|
|
11733
|
-
- cookieAuth: []
|