@lunch-money/developer-docs 2.11.3-preview.1 → 2.11.3-preview.2
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 +1 -13
- package/docs/beta-introduction.md +5 -6
- package/docs/branding-your-app.md +1 -1
- package/docs/getting-started.md +17 -21
- package/docs/introduction.md +2 -3
- package/docs/rate-limiting.md +0 -6
- package/docs/using-with-ai.md +2 -2
- package/manifest.json +0 -110
- package/package.json +3 -3
- package/v2/docs/intro-to-v2.md +1 -1
- package/v2/docs/version-history.md +4 -6
- package/v2/spec/AGENTS.md +0 -6
- package/v2/spec/lunch-money-api-v2.yaml +1812 -1153
- package/docs/oauth/authorization-code.md +0 -110
- package/docs/oauth/concepts.md +0 -116
- package/docs/oauth/development.md +0 -73
- package/docs/oauth/index.md +0 -33
- package/docs/oauth/native-apps.md +0 -89
- package/docs/oauth/oauth-scope-catalog-design.md +0 -370
- package/docs/oauth/register-client.md +0 -64
- package/docs/oauth/review-and-approval.md +0 -84
- package/docs/oauth/sample-applications.md +0 -263
- package/docs/oauth/scopes.md +0 -104
- package/docs/oauth/security.md +0 -78
- package/docs/oauth/tokens.md +0 -83
- package/docs/oauth/troubleshooting.md +0 -159
- package/v2/images/oauth-authorization-flow.svg +0 -35
- package/v2/images/oauth-token-lifecycle.svg +0 -14
package/README.md
CHANGED
|
@@ -45,22 +45,10 @@ const intro = fs.readFileSync(path.join(docsRoot, 'docs/getting-started.md'), 'u
|
|
|
45
45
|
}
|
|
46
46
|
],
|
|
47
47
|
"redirects": [ /* { from, to, status } */ ],
|
|
48
|
-
"sidebar": {
|
|
49
|
-
"docs": [
|
|
50
|
-
{
|
|
51
|
-
"section": "OAUTH",
|
|
52
|
-
"collapsed": true, // optional; initially collapse this section
|
|
53
|
-
"items": [ /* { label, path, external? } */ ]
|
|
54
|
-
}
|
|
55
|
-
],
|
|
56
|
-
"v1": [ /* … */ ]
|
|
57
|
-
}
|
|
48
|
+
"sidebar": { "docs": [ /* … */ ], "v1": [ /* … */ ] }
|
|
58
49
|
}
|
|
59
50
|
```
|
|
60
51
|
|
|
61
|
-
Sidebar sections initially appear expanded unless their optional `collapsed`
|
|
62
|
-
property is `true`.
|
|
63
|
-
|
|
64
52
|
## Versioning
|
|
65
53
|
|
|
66
54
|
The package version tracks the newest API version this content documents (e.g. `2.11.x`
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
**Beta Preview Portal** — This developer portal previews planned changes
|
|
2
|
-
- Beta versions of new [v2 API](/v2/docs) endpoints:
|
|
3
|
-
- [GET /me/account/settings](v2/docs#tag/me/GET/me/account/settings)
|
|
4
|
-
- [PUT /me/account/settings](v2/docs#tag/me/PUT/me/account/settings)
|
|
5
|
-
- [GET /me/user/settings](v2/docs#tag/me/GET/me/user/settings)
|
|
6
|
-
- [PUT /me/user/settings](v2/docs#tag/me/PUT/me/user/settings)
|
|
1
|
+
**Beta Preview Portal** — This developer portal previews planned changes to [`GET /summary`](/v2/docs#tag/summary/GET/summary):
|
|
7
2
|
|
|
3
|
+
- Category objects now describe their rollover behavior with `rollover_option` and `rollover_start_date`.
|
|
4
|
+
- Totals for categories using same-category rollover now include `rollover_balance`.
|
|
5
|
+
|
|
6
|
+
These changes are available in the mock API for feedback, but are not yet available in the live API.
|
|
8
7
|
|
|
9
8
|
Feedback is welcome. [Email dev-support@lunchmoney.app](mailto:dev-support@lunchmoney.app) or join us in the [developers channel](https://discord.com/channels/842337014556262411/1134594318414389258) on the [Lunch Money Discord](https://lunchmoney.app/discord).
|
|
@@ -45,7 +45,7 @@ A few common, low-friction ways to brand an integration:
|
|
|
45
45
|
|
|
46
46
|
1. **README or docs** — a short "Built with Lunch Money" line plus the Powered by badge linking to <a href="https://lunchmoney.app/" target="_blank" rel="noopener noreferrer">lunchmoney.app</a>
|
|
47
47
|
2. **App footer or about screen** — the Powered by badge next to your own branding
|
|
48
|
-
3. **Onboarding or connect flow** — official logo when
|
|
48
|
+
3. **Onboarding or connect flow** — official logo when prompting users to authorize or paste an access token
|
|
49
49
|
4. **Community listings** — consistent naming ("My Tool for Lunch Money") so users can find and trust your project
|
|
50
50
|
|
|
51
51
|
Keep your own product name primary. Lunch Money branding should signal the connection, not compete with your identity.
|
package/docs/getting-started.md
CHANGED
|
@@ -5,12 +5,12 @@ Welcome to the Lunch Money developer API! This API has enabled the Lunch Money u
|
|
|
5
5
|
Most users interact with their Lunch Money data using the official web or mobile app. Making API calls is another way to interact with your Lunch Money data. You can make API calls that **get** your data for you, allowing you to do other things with it, like generating your own charts or simply archiving your data. You can also make API calls that **change** or **delete** your data. Any changes you make are permanent, just like they would be if you made changes using the web or mobile app.
|
|
6
6
|
|
|
7
7
|
> [!WARNING]
|
|
8
|
-
> Changes made via the API are permanent and cannot be undone. Always use a test budget
|
|
8
|
+
> Changes made via the API are permanent and cannot be undone. Always use a test budget when getting started.
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
## Create a test budget account
|
|
12
12
|
|
|
13
|
-
Since changes to your data made by the API are permanent, the best way to begin interacting with the API is to <a href="https://support.lunchmoney.app/miscellaneous/unlimited-budgeting-accounts" target="_blank" rel="noopener noreferrer">create a new test budget account</a> in your existing Lunch Money account. As you start using the API, you can interact with this test
|
|
13
|
+
Since changes to your data made by the API are permanent, the best way to begin interacting with the API is to <a href="https://support.lunchmoney.app/miscellaneous/unlimited-budgeting-accounts" target="_blank" rel="noopener noreferrer">create a new test budget account</a> in your existing Lunch Money account. As you start using the API, you can interact with this test account and ensure that your real data is not modified.
|
|
14
14
|
|
|
15
15
|
:::tabs
|
|
16
16
|
|
|
@@ -18,48 +18,46 @@ Since changes to your data made by the API are permanent, the best way to begin
|
|
|
18
18
|
Click on the green circle in the upper right hand corner in the Lunch Money Web App
|
|
19
19
|

|
|
20
20
|
|
|
21
|
-
@tab 2. Create a New Budget
|
|
22
|
-
Click on the "Create a New Budget Account" link and give your new budget
|
|
21
|
+
@tab 2. Create a New Budget
|
|
22
|
+
Click on the "Create a New Budget Account" link and give your new budget a name like "API Test Budget"
|
|
23
23
|

|
|
24
24
|
|
|
25
25
|
@tab 3. Add Test Data
|
|
26
|
-
Choose the option to "Set up Demo". This will add categories, accounts, tags and several months worth of transactions to your new budget
|
|
26
|
+
Choose the option to "Set up Demo". This will add categories, accounts, tags and several months worth of transactions to your new budget.
|
|
27
27
|

|
|
28
28
|
:::
|
|
29
29
|
|
|
30
|
-
## Getting
|
|
30
|
+
## Getting an access token
|
|
31
31
|
|
|
32
|
-
Lunch Money API requests are authenticated using the Bearer Token authentication method. In plain English, this means that you will pass a
|
|
33
|
-
|
|
34
|
-
This guide uses a personal access token so you can explore the API with your own budget account. If you are building an application that other people will connect to Lunch Money, start with the [OAuth overview](/oauth) instead.
|
|
32
|
+
Lunch Money API requests are authenticated using the Bearer Token authentication method. In plain English, this means that you will pass a token associated with your budget account to Lunch Money. This is so we know which account to operate on and that the request came from someone who can access that account.
|
|
35
33
|
|
|
36
34
|
:::tabs
|
|
37
35
|
|
|
38
36
|
@tab 1. Go to the Developers Page
|
|
39
37
|
|
|
40
|
-
Navigate to <a href="https://my.lunchmoney.app/developers" target="_blank" rel="noopener noreferrer">the developers page in the Lunch Money web app</a>. Look at the green circle in the upper right hand corner and make sure that it is showing the test
|
|
38
|
+
Navigate to <a href="https://my.lunchmoney.app/developers" target="_blank" rel="noopener noreferrer">the developers page in the Lunch Money web app</a>. Look at the green circle in the upper right hand corner and make sure that it is showing the test account that you just created. If you aren't sure which account is active, you can click on the green circle to bring up the "Switch Accounts" dialog. This will show you the full names of all the accounts associated with your account. Select the test budget account you created.
|
|
41
39
|

|
|
42
40
|
|
|
43
41
|
@tab 2. Request Access Token
|
|
44
|
-
In the upper right hand corner of the page, give your
|
|
42
|
+
In the upper right hand corner of the page, give your access token a label and specify what you are using it for. When you're done, hit the "Request Access Token" button.
|
|
45
43
|

|
|
46
44
|
|
|
47
45
|
@tab 3. Save Access Token
|
|
48
|
-
After you do this, the web page will show you a long alphanumeric string. This is your
|
|
46
|
+
After you do this, the web page will show you a long alphanumeric string. This is your access token. Hit the copy button and save this token somewhere safe. It is only shown to you when you create it.
|
|
49
47
|
:::
|
|
50
48
|
|
|
51
|
-
Congratulations! You've got
|
|
49
|
+
Congratulations! You've got an access token and are ready to make an API request! Later, when you are more comfortable with the API, you can repeat this process to create a new access token associated with your real budget.
|
|
52
50
|
|
|
53
51
|
> [!WARNING]
|
|
54
|
-
> Treat your
|
|
52
|
+
> Treat your access tokens like passwords. Don't share them with anyone you don't trust.
|
|
55
53
|
|
|
56
|
-
If you ever worry that your
|
|
54
|
+
If you ever worry that your access token has been compromised, you can always come back to the Developers page and hit the Revoke button.
|
|
57
55
|
|
|
58
56
|
> [!NOTE]
|
|
59
|
-
> Give your
|
|
57
|
+
> Give your access tokens descriptive names so you can easily identify and revoke them later if needed.
|
|
60
58
|
|
|
61
59
|
|
|
62
|
-
## Using your
|
|
60
|
+
## Using your access token
|
|
63
61
|
|
|
64
62
|
When you start to write code that makes API calls, you will need to include this token in each request using an Authorization header. Here is an example curl request:
|
|
65
63
|
|
|
@@ -70,7 +68,7 @@ curl --location 'https://api.lunchmoney.dev/v2/me' \
|
|
|
70
68
|
|
|
71
69
|
If this doesn't make sense yet, that's OK!
|
|
72
70
|
|
|
73
|
-
There is an easier way to use your
|
|
71
|
+
There is an easier way to use your access token to make requests. Head over to the [API Reference Documentation](/v2/docs).
|
|
74
72
|
|
|
75
73
|
:::tabs
|
|
76
74
|
|
|
@@ -83,12 +81,10 @@ Scroll down to the section called "Get Current User" and hit the "Test Request"
|
|
|
83
81
|

|
|
84
82
|
:::
|
|
85
83
|
|
|
86
|
-
This will pop up a dialog box that you can use to send an API request. This is a simple endpoint, so just hit the "Send" button. You should see a response that includes your name and the name of your test budget
|
|
84
|
+
This will pop up a dialog box that you can use to send an API request. This is a simple endpoint, so just hit the "Send" button. You should see a response that includes your name and the name of your test budget.
|
|
87
85
|
|
|
88
86
|
From here, you can explore the rest of the Lunch Money API and start thinking about what you might do with it.
|
|
89
87
|
|
|
90
|
-
When you are ready to build an application that other Lunch Money users can connect to, [learn how OAuth grants access without asking users to share personal access tokens](/oauth).
|
|
91
|
-
|
|
92
88
|
## What can you build?
|
|
93
89
|
|
|
94
90
|
The Lunch Money community has already built a wide variety of tools — automations, importers, dashboards, and more. Check out the <a href="https://lunchmoney.app/developers#community-projects" target="_blank" rel="noopener noreferrer">Developer Tools & Community Projects</a> list for inspiration, or drop by the <a href="https://discord.com/channels/842337014556262411/1134597088504729780" target="_blank" rel="noopener noreferrer">Show and Tell channel</a> on Discord to see what others are sharing.
|
package/docs/introduction.md
CHANGED
|
@@ -10,13 +10,13 @@ The v2 API is available at:
|
|
|
10
10
|
https://api.lunchmoney.dev/v2
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Get your access token from the <a href="https://my.lunchmoney.app/developers" target="_blank" rel="noopener noreferrer">Lunch Money app developers page</a> and include it as a Bearer token in every request:
|
|
14
14
|
|
|
15
15
|
```http
|
|
16
16
|
Authorization: Bearer YOUR_ACCESS_TOKEN
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
See the [Getting started guide](/getting-started) for a full walkthrough, including how to create a test budget
|
|
19
|
+
See the [Getting started guide](/getting-started) for a full walkthrough, including how to create a test budget and make your first request.
|
|
20
20
|
|
|
21
21
|
## Trying the API without real data
|
|
22
22
|
|
|
@@ -59,6 +59,5 @@ Join the conversation in the <a href="https://lunchmoney.app/discord" target="_b
|
|
|
59
59
|
**Useful links:**
|
|
60
60
|
- <a href="/v2/docs">Interactive API Reference</a>
|
|
61
61
|
- [Getting started guide](/getting-started)
|
|
62
|
-
- [OAuth overview](/oauth)
|
|
63
62
|
- <a href="https://github.com/lunch-money/awesome-lunchmoney" target="_blank" rel="noopener noreferrer">Awesome Lunch Money Projects</a>
|
|
64
63
|
- [Contact: devsupport@lunchmoney.app](mailto:devsupport@lunchmoney.app)
|
package/docs/rate-limiting.md
CHANGED
|
@@ -12,12 +12,6 @@ If you exceed this limit, you will receive a `429 Too Many Requests` response.
|
|
|
12
12
|
> [!NOTE] Rate limit scope
|
|
13
13
|
> Rate limiting is applied per IP address. Requests from the same IP address share the same rate limit quotas.
|
|
14
14
|
|
|
15
|
-
## OAuth token requests
|
|
16
|
-
|
|
17
|
-
Requests to `/oauth/token`, including refresh requests, use a separate per-IP OAuth limit shared with `/oauth/introspect`. The default is 300 requests per window, and the default window is one minute. These requests do not count against the API limit applied to `/v1/` and `/v2/` resource requests.
|
|
18
|
-
|
|
19
|
-
Because this limit is keyed by IP address, unrelated users behind the same office, mobile-carrier, or other network address translation (NAT) gateway can share it. If the token endpoint returns `429 Too Many Requests`, respect `Retry-After` and back off with jitter instead of repeatedly sending the token request.
|
|
20
|
-
|
|
21
15
|
## Rate limit response
|
|
22
16
|
|
|
23
17
|
When you exceed a rate limit, the API returns a `429 Too Many Requests` response:
|
package/docs/using-with-ai.md
CHANGED
|
@@ -75,7 +75,7 @@ const token = process.env.LUNCH_MONEY_ACCESS_TOKEN;
|
|
|
75
75
|
|
|
76
76
|
## Best practices
|
|
77
77
|
|
|
78
|
-
1. **Start with a test budget
|
|
78
|
+
1. **Start with a test budget** — API changes are permanent. Use a test budget while you're learning so your real data stays safe. See the [Getting Started guide](/getting-started) for instructions.
|
|
79
79
|
|
|
80
80
|
2. **Prefer read-only workflows** — A workflow that only reads data is lower risk than one that can create, update, or delete records.
|
|
81
81
|
|
|
@@ -95,7 +95,7 @@ If you want to experiment, here are a few low-risk starting points:
|
|
|
95
95
|
4. Ask for patterns in merchant names that might deserve new rules or categories.
|
|
96
96
|
5. Build a reusable "money questions" notebook with prompts you revisit each month.
|
|
97
97
|
|
|
98
|
-
Start small, and use a test budget
|
|
98
|
+
Start small, and use a test budget while you're learning.
|
|
99
99
|
|
|
100
100
|
## Need help?
|
|
101
101
|
|
package/manifest.json
CHANGED
|
@@ -73,102 +73,6 @@
|
|
|
73
73
|
"type": "markdown",
|
|
74
74
|
"aliases": ["/v2/branding-your-app"]
|
|
75
75
|
},
|
|
76
|
-
{
|
|
77
|
-
"path": "/oauth",
|
|
78
|
-
"file": "docs/oauth/index.md",
|
|
79
|
-
"title": "OAuth Overview",
|
|
80
|
-
"section": "OAUTH",
|
|
81
|
-
"type": "markdown",
|
|
82
|
-
"aliases": ["/v2/oauth", "/v2/oauth/"]
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"path": "/oauth/concepts",
|
|
86
|
-
"file": "docs/oauth/concepts.md",
|
|
87
|
-
"title": "OAuth Concepts",
|
|
88
|
-
"section": "OAUTH",
|
|
89
|
-
"type": "markdown",
|
|
90
|
-
"aliases": ["/v2/oauth/concepts"]
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
"path": "/oauth/register-client",
|
|
94
|
-
"file": "docs/oauth/register-client.md",
|
|
95
|
-
"title": "Register an OAuth Client",
|
|
96
|
-
"section": "OAUTH",
|
|
97
|
-
"type": "markdown",
|
|
98
|
-
"aliases": ["/v2/oauth/register-client"]
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"path": "/oauth/authorization-code",
|
|
102
|
-
"file": "docs/oauth/authorization-code.md",
|
|
103
|
-
"title": "Implement Authorization",
|
|
104
|
-
"section": "OAUTH",
|
|
105
|
-
"type": "markdown",
|
|
106
|
-
"aliases": ["/v2/oauth/authorization-code"]
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"path": "/oauth/sample-applications",
|
|
110
|
-
"file": "docs/oauth/sample-applications.md",
|
|
111
|
-
"title": "OAuth Sample Applications",
|
|
112
|
-
"section": "OAUTH",
|
|
113
|
-
"type": "markdown",
|
|
114
|
-
"aliases": ["/v2/oauth/sample-applications"]
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
"path": "/oauth/development",
|
|
118
|
-
"file": "docs/oauth/development.md",
|
|
119
|
-
"title": "Develop and Test",
|
|
120
|
-
"section": "OAUTH",
|
|
121
|
-
"type": "markdown",
|
|
122
|
-
"aliases": ["/v2/oauth/development"]
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"path": "/oauth/tokens",
|
|
126
|
-
"file": "docs/oauth/tokens.md",
|
|
127
|
-
"title": "Token Lifecycle",
|
|
128
|
-
"section": "OAUTH",
|
|
129
|
-
"type": "markdown",
|
|
130
|
-
"aliases": ["/v2/oauth/tokens"]
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"path": "/oauth/security",
|
|
134
|
-
"file": "docs/oauth/security.md",
|
|
135
|
-
"title": "OAuth Security",
|
|
136
|
-
"section": "OAUTH",
|
|
137
|
-
"type": "markdown",
|
|
138
|
-
"aliases": ["/v2/oauth/security"]
|
|
139
|
-
},
|
|
140
|
-
{
|
|
141
|
-
"path": "/oauth/troubleshooting",
|
|
142
|
-
"file": "docs/oauth/troubleshooting.md",
|
|
143
|
-
"title": "Troubleshoot OAuth",
|
|
144
|
-
"section": "OAUTH",
|
|
145
|
-
"type": "markdown",
|
|
146
|
-
"aliases": ["/v2/oauth/troubleshooting"]
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
"path": "/oauth/review-and-approval",
|
|
150
|
-
"file": "docs/oauth/review-and-approval.md",
|
|
151
|
-
"title": "OAuth Client Review and Approval",
|
|
152
|
-
"section": "OAUTH",
|
|
153
|
-
"type": "markdown",
|
|
154
|
-
"aliases": ["/v2/oauth/review-and-approval"]
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
"path": "/oauth/native-apps",
|
|
158
|
-
"file": "docs/oauth/native-apps.md",
|
|
159
|
-
"title": "Native Apps",
|
|
160
|
-
"section": "OAUTH",
|
|
161
|
-
"type": "markdown",
|
|
162
|
-
"aliases": ["/v2/oauth/native-apps"]
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
"path": "/oauth/scopes",
|
|
166
|
-
"file": "docs/oauth/scopes.md",
|
|
167
|
-
"title": "OAuth Scopes",
|
|
168
|
-
"section": "OAUTH",
|
|
169
|
-
"type": "markdown",
|
|
170
|
-
"aliases": ["/v2/oauth/scopes"]
|
|
171
|
-
},
|
|
172
76
|
{
|
|
173
77
|
"path": "/v2/overview",
|
|
174
78
|
"file": "v2/docs/intro-to-v2.md",
|
|
@@ -307,20 +211,6 @@
|
|
|
307
211
|
{ "label": "Using the API with AI", "path": "/using-with-ai" },
|
|
308
212
|
{ "label": "Branding your App", "path": "/branding-your-app" }
|
|
309
213
|
]},
|
|
310
|
-
{ "section": "OAUTH", "collapsed": true, "items": [
|
|
311
|
-
{ "label": "OAuth Overview", "path": "/oauth" },
|
|
312
|
-
{ "label": "Concepts", "path": "/oauth/concepts" },
|
|
313
|
-
{ "label": "Register a Client", "path": "/oauth/register-client" },
|
|
314
|
-
{ "label": "Implement Authorization", "path": "/oauth/authorization-code" },
|
|
315
|
-
{ "label": "Sample Applications", "path": "/oauth/sample-applications" },
|
|
316
|
-
{ "label": "Develop and Test", "path": "/oauth/development" },
|
|
317
|
-
{ "label": "Token Lifecycle", "path": "/oauth/tokens" },
|
|
318
|
-
{ "label": "Security", "path": "/oauth/security" },
|
|
319
|
-
{ "label": "Troubleshooting", "path": "/oauth/troubleshooting" },
|
|
320
|
-
{ "label": "Review and Approval", "path": "/oauth/review-and-approval" },
|
|
321
|
-
{ "label": "Native Apps", "path": "/oauth/native-apps" },
|
|
322
|
-
{ "label": "Scopes", "path": "/oauth/scopes" }
|
|
323
|
-
]},
|
|
324
214
|
{ "section": "REFERENCE", "items": [
|
|
325
215
|
{ "label": "v2 API Overview", "path": "/v2/overview" },
|
|
326
216
|
{ "label": "v2 API Reference", "path": "/v2/docs", "external": true },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lunch-money/developer-docs",
|
|
3
|
-
"version": "2.11.3-preview.
|
|
3
|
+
"version": "2.11.3-preview.2",
|
|
4
4
|
"description": "Developer documentation content for Lunch Money APIs",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./package.json",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
-
"validate:manifest": "node
|
|
22
|
-
"prepack": "node
|
|
21
|
+
"validate:manifest": "node scripts/validate-manifest.js",
|
|
22
|
+
"prepack": "node scripts/validate-manifest.js && node scripts/prepack.js",
|
|
23
23
|
"postpack": "node scripts/postpack.js"
|
|
24
24
|
},
|
|
25
25
|
"keywords": [
|
package/v2/docs/intro-to-v2.md
CHANGED
|
@@ -10,7 +10,7 @@ All API requests require a Bearer token in the `Authorization` header:
|
|
|
10
10
|
Authorization: Bearer YOUR_ACCESS_TOKEN
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Get your access token from the <a href="https://my.lunchmoney.app/developers" target="_blank" rel="noopener noreferrer">Lunch Money Developers page</a>. See the [Getting started guide](/getting-started) for a step-by-step walkthrough including how to create a test budget.
|
|
14
14
|
|
|
15
15
|
## Base URL
|
|
16
16
|
|
|
@@ -6,11 +6,9 @@ The Lunch Money API spec uses a modified version of SEMVER for its versioning me
|
|
|
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
8
|
## v2.11.3 - TBD
|
|
9
|
-
- Add
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
- Document the OAuth 2.0 authorization-code flow used to obtain access tokens
|
|
13
|
-
- Add `include_files` query parameter to `GET /transactions/{id}`
|
|
9
|
+
- Add `rollover_option` and `rollover_start_date` to category objects in `GET /summary` responses.
|
|
10
|
+
- Add `rollover_balance` to category totals in aligned `GET /summary` responses for budgets that roll over within the same category.
|
|
11
|
+
- Rename the public rollover option value `available funds` to `general pool`.
|
|
14
12
|
|
|
15
13
|
## v2.11.2 - Nov 7, 2026
|
|
16
14
|
- Allow `balance_as_of` to be `null` in manual account responses
|
|
@@ -34,7 +32,7 @@ The Lunch Money API spec uses a modified version of SEMVER for its versioning me
|
|
|
34
32
|
- `DELETE /balance_history/{account_type}/{account_id}`
|
|
35
33
|
- `DELETE /balance_history/crypto_synced/{account_id}/{symbol}`
|
|
36
34
|
- `PUT /balance_history/deleted/{account_id}/details`
|
|
37
|
-
-
|
|
35
|
+
- Correct the `GET /summary` schema by removing `rollover_pool` from category objects. The server returned `rollover_pool` only at the top level.
|
|
38
36
|
- Allow setting `external_id` on Plaid-account transactions
|
|
39
37
|
- Allow `null` for `category_id` and `notes` on split children to clear those values instead of inheriting from the parent
|
|
40
38
|
|
package/v2/spec/AGENTS.md
CHANGED
|
@@ -41,12 +41,6 @@ Follow these rules whenever editing `v2/spec/lunch-money-api-v2.yaml`:
|
|
|
41
41
|
- Add links when they materially help consumers discover a related endpoint or relevant guide.
|
|
42
42
|
- Do not add links that merely restate obvious navigation.
|
|
43
43
|
|
|
44
|
-
### YAML formatting
|
|
45
|
-
|
|
46
|
-
- Write each description paragraph as a single line. Never hard-wrap prose to a column: inside a folded scalar a line break becomes a space, so a wrap landing beside punctuation or markup silently corrupts the rendered text.
|
|
47
|
-
- Use a folded block (`>-`) only when a description has more than one paragraph, separated by a blank line. A single-paragraph description stays on the key line.
|
|
48
|
-
- Never use a literal block (`|`, `|-`) for prose — newlines become significant, so reflowing later changes the output.
|
|
49
|
-
|
|
50
44
|
### Examples
|
|
51
45
|
|
|
52
46
|
Examples are selective documentation aids, not a required artifact for every spec change.
|