@lunch-money/v2-api-spec 2.9.0 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md.backup +0 -12
- package/lunch-money-api-v2.yaml +38 -36
- package/package.json +1 -1
- package/version-history.md +4 -1
package/README.md.backup
CHANGED
|
@@ -66,18 +66,6 @@ The OpenAPI spec is the authoritative source for:
|
|
|
66
66
|
- Authentication requirements
|
|
67
67
|
- Status codes and error formats
|
|
68
68
|
|
|
69
|
-
##### Versioning
|
|
70
|
-
|
|
71
|
-
The Lunch Money API spec uses a modified version of SEMVER for its versioning methodology as follows
|
|
72
|
-
- The major version is the API version. This will always be 2 in this repo
|
|
73
|
-
- The minor version represents the number of main endpoints (or OpenAPI tags) the current version of the spec supports. For example, a version of the API that supports the /me, /categories, and /transactions endpoints would have a minor version of 3
|
|
74
|
-
- The revision number represents the number of updates since the last endpoint was added. For example, each time changes are made to one of the existing three APIs as described above, the revision number will be bumped.
|
|
75
|
-
|
|
76
|
-
Details of each version can be found in [./version-history.md](./version-history.md)
|
|
77
|
-
|
|
78
|
-
Changes to the spec that modify existing or add new API endpoints should update the version number in the spec and in the package.json accordingly.
|
|
79
|
-
|
|
80
|
-
|
|
81
69
|
### Documentation Guides (`v2/docs/*.md`)
|
|
82
70
|
- **Purpose**: Human-readable guides and tutorials
|
|
83
71
|
- **Format**: Markdown with custom extensions
|
package/lunch-money-api-v2.yaml
CHANGED
|
@@ -42,7 +42,7 @@ info:
|
|
|
42
42
|
license:
|
|
43
43
|
name: Apache 2.0
|
|
44
44
|
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
|
45
|
-
version: 2.9.
|
|
45
|
+
version: 2.9.1
|
|
46
46
|
|
|
47
47
|
servers:
|
|
48
48
|
- url: https://api.lunchmoney.dev/v2
|
|
@@ -561,10 +561,11 @@ components:
|
|
|
561
561
|
x-updatable: false
|
|
562
562
|
archived_at:
|
|
563
563
|
type: string
|
|
564
|
+
format: date-time
|
|
564
565
|
nullable: true
|
|
565
|
-
description:
|
|
566
|
-
|
|
567
|
-
x-updatable:
|
|
566
|
+
description: If set, updates the archived timestamp for the category.
|
|
567
|
+
Provide an ISO 8601 extended datetime or `null` to clear it.
|
|
568
|
+
x-updatable: true
|
|
568
569
|
updated_at:
|
|
569
570
|
type: string
|
|
570
571
|
format: date-time
|
|
@@ -1458,8 +1459,9 @@ components:
|
|
|
1458
1459
|
type: string
|
|
1459
1460
|
format: date-time
|
|
1460
1461
|
nullable: true
|
|
1461
|
-
description:
|
|
1462
|
-
|
|
1462
|
+
description: If set, updates the archived timestamp for the tag.
|
|
1463
|
+
Provide an ISO 8601 extended datetime or `null` to clear it.
|
|
1464
|
+
x-updatable: true
|
|
1463
1465
|
|
|
1464
1466
|
# The object returned when a DELETE /tag/:id request
|
|
1465
1467
|
# has an id for a tag that has dependencies
|
|
@@ -4461,7 +4463,7 @@ paths:
|
|
|
4461
4463
|
example:
|
|
4462
4464
|
message: Not Found
|
|
4463
4465
|
errors:
|
|
4464
|
-
- errMsg: There is no category with the id:
|
|
4466
|
+
- errMsg: "There is no category with the id: 543210."
|
|
4465
4467
|
"429":
|
|
4466
4468
|
$ref: "#/components/responses/rateLimited"
|
|
4467
4469
|
"500":
|
|
@@ -4475,7 +4477,7 @@ paths:
|
|
|
4475
4477
|
|
|
4476
4478
|
You may submit the response from a `GET /categories/{id}` as the request body; however, only certain
|
|
4477
4479
|
properties can be updated using this API. The following properties are
|
|
4478
|
-
accepted in the request body but their values will be ignored: `id`, `is_group
|
|
4480
|
+
accepted in the request body but their values will be ignored: `id`, `is_group`, `updated_at`, `created_at`, and `order`.<br><br>
|
|
4479
4481
|
|
|
4480
4482
|
It is also possible to provide only the properties to be updated in the
|
|
4481
4483
|
request body, as long as the request includes at least one of the
|
|
@@ -4621,7 +4623,7 @@ paths:
|
|
|
4621
4623
|
example:
|
|
4622
4624
|
message: Not Found
|
|
4623
4625
|
errors:
|
|
4624
|
-
- errMsg: There is no category with the id:
|
|
4626
|
+
- errMsg: "There is no category with the id: 543210."
|
|
4625
4627
|
"429":
|
|
4626
4628
|
$ref: "#/components/responses/rateLimited"
|
|
4627
4629
|
"500":
|
|
@@ -4676,7 +4678,7 @@ paths:
|
|
|
4676
4678
|
example:
|
|
4677
4679
|
message: Not Found
|
|
4678
4680
|
errors:
|
|
4679
|
-
- errMsg: There is no category with the id:
|
|
4681
|
+
- errMsg: "There is no category with the id: 543210."
|
|
4680
4682
|
"422":
|
|
4681
4683
|
description: Unprocessable Entity
|
|
4682
4684
|
content:
|
|
@@ -5139,7 +5141,7 @@ paths:
|
|
|
5139
5141
|
example:
|
|
5140
5142
|
message: Not Found
|
|
5141
5143
|
errors:
|
|
5142
|
-
- errMsg: There is no manual account with the id:
|
|
5144
|
+
- errMsg: "There is no manual account with the id: 543210."
|
|
5143
5145
|
"429":
|
|
5144
5146
|
$ref: "#/components/responses/rateLimited"
|
|
5145
5147
|
"500":
|
|
@@ -5196,7 +5198,7 @@ paths:
|
|
|
5196
5198
|
example:
|
|
5197
5199
|
message: Not Found
|
|
5198
5200
|
errors:
|
|
5199
|
-
- errMsg: There is no manual account with the id:
|
|
5201
|
+
- errMsg: "There is no manual account with the id: 543210."
|
|
5200
5202
|
"429":
|
|
5201
5203
|
$ref: "#/components/responses/rateLimited"
|
|
5202
5204
|
"500":
|
|
@@ -6358,7 +6360,7 @@ paths:
|
|
|
6358
6360
|
examples:
|
|
6359
6361
|
invalid ids in new transactions:
|
|
6360
6362
|
value:
|
|
6361
|
-
message:
|
|
6363
|
+
message: Request Validation Failure
|
|
6362
6364
|
errors:
|
|
6363
6365
|
- errMsg: "transactions[0] manual account ID does not exist: 9999999"
|
|
6364
6366
|
transaction_index: 0
|
|
@@ -6377,7 +6379,7 @@ paths:
|
|
|
6377
6379
|
recurring_id: 88888888
|
|
6378
6380
|
duplicate external_ids within request:
|
|
6379
6381
|
value:
|
|
6380
|
-
message:
|
|
6382
|
+
message: Request Validation Failure
|
|
6381
6383
|
errors:
|
|
6382
6384
|
- errMsg: Duplicate External IDs found in the request body
|
|
6383
6385
|
error: Duplicate External ID
|
|
@@ -6653,7 +6655,7 @@ paths:
|
|
|
6653
6655
|
examples:
|
|
6654
6656
|
invalid ids in id list:
|
|
6655
6657
|
value:
|
|
6656
|
-
message:
|
|
6658
|
+
message: Request Validation Failure
|
|
6657
6659
|
errors:
|
|
6658
6660
|
- errMsg: "transactions[0] manual account ID does not exist: 999999999"
|
|
6659
6661
|
transaction_index: 0
|
|
@@ -6672,7 +6674,7 @@ paths:
|
|
|
6672
6674
|
recurring_id: 888888888
|
|
6673
6675
|
update with errors:
|
|
6674
6676
|
value:
|
|
6675
|
-
message:
|
|
6677
|
+
message: Request Validation Failure
|
|
6676
6678
|
errors:
|
|
6677
6679
|
- errMsg: "There is no transaction with the id: 9999999"
|
|
6678
6680
|
error: Invalid Transaction ID
|
|
@@ -6730,7 +6732,7 @@ paths:
|
|
|
6730
6732
|
locked_property: amount
|
|
6731
6733
|
duplicate external_ids within request:
|
|
6732
6734
|
value:
|
|
6733
|
-
message:
|
|
6735
|
+
message: Request Validation Failure
|
|
6734
6736
|
errors:
|
|
6735
6737
|
- errMsg: Duplicate External IDs found in the request body
|
|
6736
6738
|
error: Duplicate External ID
|
|
@@ -6748,7 +6750,7 @@ paths:
|
|
|
6748
6750
|
- 3
|
|
6749
6751
|
invalid ids:
|
|
6750
6752
|
value:
|
|
6751
|
-
message:
|
|
6753
|
+
message: Request Validation Failure
|
|
6752
6754
|
errors:
|
|
6753
6755
|
- errMsg: "There is no transaction with the id: 1"
|
|
6754
6756
|
error: Invalid Transaction ID
|
|
@@ -7117,7 +7119,7 @@ paths:
|
|
|
7117
7119
|
example:
|
|
7118
7120
|
message: Not Found
|
|
7119
7121
|
errors:
|
|
7120
|
-
- errMsg: There is no transaction with the id:
|
|
7122
|
+
- errMsg: "There is no transaction with the id: 543210."
|
|
7121
7123
|
"429":
|
|
7122
7124
|
$ref: "#/components/responses/rateLimited"
|
|
7123
7125
|
"500":
|
|
@@ -7256,7 +7258,7 @@ paths:
|
|
|
7256
7258
|
example:
|
|
7257
7259
|
message: Not Found
|
|
7258
7260
|
errors:
|
|
7259
|
-
- errMsg: There is no transaction with the id:
|
|
7261
|
+
- errMsg: "There is no transaction with the id: 543210."
|
|
7260
7262
|
"429":
|
|
7261
7263
|
$ref: "#/components/responses/rateLimited"
|
|
7262
7264
|
"500":
|
|
@@ -7309,7 +7311,7 @@ paths:
|
|
|
7309
7311
|
example:
|
|
7310
7312
|
message: Not Found
|
|
7311
7313
|
errors:
|
|
7312
|
-
- errMsg: There is no transaction with the id:
|
|
7314
|
+
- errMsg: "There is no transaction with the id: 543210."
|
|
7313
7315
|
"429":
|
|
7314
7316
|
$ref: "#/components/responses/rateLimited"
|
|
7315
7317
|
"500":
|
|
@@ -7830,30 +7832,30 @@ paths:
|
|
|
7830
7832
|
examples:
|
|
7831
7833
|
bad math:
|
|
7832
7834
|
value:
|
|
7833
|
-
message:
|
|
7835
|
+
message: Request Validation Failure
|
|
7834
7836
|
errors:
|
|
7835
|
-
- errMsg:
|
|
7836
|
-
amount!
|
|
7837
|
+
- errMsg: Sum of split transactions do not add up to the original transaction amount.
|
|
7837
7838
|
split recurring:
|
|
7838
7839
|
value:
|
|
7839
|
-
message:
|
|
7840
|
+
message: Request Validation Failure
|
|
7840
7841
|
errors:
|
|
7841
|
-
- errMsg: You cannot split a recurring transaction
|
|
7842
|
+
- errMsg: You cannot split a recurring transaction.
|
|
7843
|
+
id: 2112150655
|
|
7842
7844
|
split group:
|
|
7843
7845
|
value:
|
|
7844
|
-
message:
|
|
7846
|
+
message: Request Validation Failure
|
|
7845
7847
|
errors:
|
|
7846
|
-
- errMsg: You cannot split a
|
|
7848
|
+
- errMsg: You cannot split a group transaction. Ungroup it before splitting.
|
|
7847
7849
|
split split:
|
|
7848
7850
|
value:
|
|
7849
|
-
message:
|
|
7851
|
+
message: Request Validation Failure
|
|
7850
7852
|
errors:
|
|
7851
|
-
- errMsg: You cannot split an already split transaction
|
|
7853
|
+
- errMsg: You cannot split an already split transaction. Unsplit it before splitting again.
|
|
7852
7854
|
missing amount in child transaction:
|
|
7853
7855
|
value:
|
|
7854
7856
|
message: Invalid Request Body
|
|
7855
7857
|
errors:
|
|
7856
|
-
- errMsg: "child_transactions[0] amount
|
|
7858
|
+
- errMsg: "child_transactions[0] is missing required property 'amount' in request body."
|
|
7857
7859
|
child_transactions_index: 0
|
|
7858
7860
|
error: Missing required property
|
|
7859
7861
|
invalid_property: amount
|
|
@@ -8327,7 +8329,7 @@ paths:
|
|
|
8327
8329
|
|
|
8328
8330
|
You may submit the response from a `GET /tags/{id}` as the request body, however only certain
|
|
8329
8331
|
properties can be updated using this API. The following system set properties are
|
|
8330
|
-
accepted in the request body but their values will be ignored: `id`, `updated_at`,
|
|
8332
|
+
accepted in the request body but their values will be ignored: `id`, `updated_at`, and `created_at`.<br><br>
|
|
8331
8333
|
|
|
8332
8334
|
It is also possible to provide only the properties to be updated in the
|
|
8333
8335
|
request body, as long as the request includes at least one of the
|
|
@@ -8407,9 +8409,9 @@ paths:
|
|
|
8407
8409
|
schema:
|
|
8408
8410
|
$ref: "#/components/schemas/errorResponseObject"
|
|
8409
8411
|
example:
|
|
8410
|
-
message:
|
|
8412
|
+
message: Request Validation Failure
|
|
8411
8413
|
errors:
|
|
8412
|
-
- errMsg: "A request to update a tag must include at least one of the following properties: name, description, archived"
|
|
8414
|
+
- errMsg: "A request to update a tag must include at least one of the following properties: name, description, archived."
|
|
8413
8415
|
"401":
|
|
8414
8416
|
$ref: "#/components/responses/unauthorizedToken"
|
|
8415
8417
|
"404":
|
|
@@ -8421,7 +8423,7 @@ paths:
|
|
|
8421
8423
|
example:
|
|
8422
8424
|
message: Not Found
|
|
8423
8425
|
errors:
|
|
8424
|
-
- errMsg: There is no tag with the id:
|
|
8426
|
+
- errMsg: "There is no tag with the id: 543210."
|
|
8425
8427
|
"429":
|
|
8426
8428
|
$ref: "#/components/responses/rateLimited"
|
|
8427
8429
|
"500":
|
|
@@ -8476,7 +8478,7 @@ paths:
|
|
|
8476
8478
|
example:
|
|
8477
8479
|
message: Not Found
|
|
8478
8480
|
errors:
|
|
8479
|
-
- errMsg: There is no tag with the id:
|
|
8481
|
+
- errMsg: "There is no tag with the id: 543210."
|
|
8480
8482
|
"422":
|
|
8481
8483
|
description: Unprocessable Entity
|
|
8482
8484
|
content:
|
package/package.json
CHANGED
package/version-history.md
CHANGED
|
@@ -5,6 +5,9 @@ The Lunch Money API spec uses a modified version of SEMVER for its versioning me
|
|
|
5
5
|
- The minor version represents the number of main endpoints the current version of the spec supports. For example, a version of the API that supports the /me, /categories, and /transactions endpoints would have a minor version of 3.
|
|
6
6
|
- The revision number represents the number of updates since the last endpoint was added. For example, each time changes are made to one of the existing three APIs as described above, the revision number will be bumped.
|
|
7
7
|
|
|
8
|
+
## v2.9.1 - Apr 22, 2026
|
|
9
|
+
- You may now set `archived_at` when modifying a category or tag via the `PUT /categories` or `PUT /tags` endpoints.
|
|
10
|
+
|
|
8
11
|
## v2.9.0 - Feb 26, 2026
|
|
9
12
|
- Add initial `/budgets` endpoint support:
|
|
10
13
|
- `GET /budgets/settings` for account budget settings
|
|
@@ -146,7 +149,7 @@ The Lunch Money API spec uses a modified version of SEMVER for its versioning me
|
|
|
146
149
|
- It is also now permissible to include strings in the `children` property. These will be used as the names of new child categories that will be created.
|
|
147
150
|
- This release also updates the following schemas:
|
|
148
151
|
- Correctly specifies that all properties of the manualAccountObject are required
|
|
149
|
-
- Updates the
|
|
152
|
+
- Updates the updateManualAccountObject and updatePlaidManualAccountObject to allow the `balance` property to be either a string or a number.
|
|
150
153
|
- Updates the userObject to include the `debits_as_negative` property. The documentation for Transaction Objects returned by GET requests have been updated to reflect how/if this setting affects the `amount` property of the transaction.
|
|
151
154
|
- Updates the childCategoryObject to restore the `exclude_from_budget`, `exclude_from_totals` and `is_income` properties. These properties are inherited from the Category Group and not settable but are provided for convenience.
|
|
152
155
|
|