@dizzlkheinz/ynab-mcpb 0.17.0 → 0.18.0
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/.env.example +33 -33
- package/.github/workflows/ci-tests.yml +45 -45
- package/.github/workflows/claude-code-review.yml +57 -57
- package/.github/workflows/claude.yml +50 -50
- package/.github/workflows/full-integration.yml +22 -22
- package/.github/workflows/publish.yml +12 -3
- package/.github/workflows/release.yml +2 -2
- package/CHANGELOG.md +10 -1
- package/CLAUDE.md +16 -12
- package/README.md +6 -1
- package/dist/bundle/index.cjs +49 -49
- package/dist/server/YNABMCPServer.d.ts +125 -54
- package/dist/server/YNABMCPServer.js +42 -11
- package/dist/server/cacheManager.js +6 -5
- package/dist/server/completions.d.ts +25 -0
- package/dist/server/completions.js +160 -0
- package/dist/server/config.d.ts +2 -2
- package/dist/server/errorHandler.js +1 -0
- package/dist/server/rateLimiter.js +3 -1
- package/dist/server/resources.d.ts +1 -0
- package/dist/server/resources.js +33 -16
- package/dist/server/securityMiddleware.d.ts +38 -8
- package/dist/server/securityMiddleware.js +1 -0
- package/dist/server/toolRegistry.d.ts +9 -0
- package/dist/server/toolRegistry.js +11 -0
- package/dist/tools/adapters.d.ts +3 -1
- package/dist/tools/adapters.js +1 -0
- package/dist/tools/reconciliation/executor.d.ts +2 -0
- package/dist/tools/reconciliation/executor.js +26 -1
- package/dist/tools/reconciliation/index.d.ts +3 -2
- package/dist/tools/reconciliation/index.js +4 -3
- package/dist/tools/schemas/outputs/index.d.ts +2 -2
- package/dist/tools/schemas/outputs/index.js +2 -2
- package/dist/tools/schemas/outputs/utilityOutputs.d.ts +0 -15
- package/dist/tools/schemas/outputs/utilityOutputs.js +0 -9
- package/dist/tools/utilityTools.d.ts +0 -7
- package/dist/tools/utilityTools.js +1 -50
- package/docs/maintainers/npm-publishing.md +27 -0
- package/docs/reference/API.md +83 -97
- package/docs/technical/reconciliation-system-architecture.md +2251 -2251
- package/package.json +6 -6
- package/scripts/analyze-bundle.mjs +41 -41
- package/scripts/generate-mcpb.ps1 +95 -95
- package/scripts/watch-and-restart.ps1 +49 -49
- package/src/__tests__/comprehensive.integration.test.ts +4 -32
- package/src/__tests__/performance.test.ts +5 -14
- package/src/__tests__/setup.ts +45 -14
- package/src/__tests__/smoke.e2e.test.ts +70 -0
- package/src/__tests__/testUtils.ts +2 -113
- package/src/server/YNABMCPServer.ts +64 -10
- package/src/server/__tests__/YNABMCPServer.test.ts +0 -1
- package/src/server/__tests__/completions.integration.test.ts +117 -0
- package/src/server/__tests__/completions.test.ts +319 -0
- package/src/server/__tests__/resources.template.test.ts +3 -3
- package/src/server/__tests__/resources.test.ts +3 -3
- package/src/server/__tests__/toolRegistration.test.ts +3 -3
- package/src/server/cacheManager.ts +7 -6
- package/src/server/completions.ts +279 -0
- package/src/server/errorHandler.ts +1 -0
- package/src/server/rateLimiter.ts +4 -1
- package/src/server/resources.ts +49 -13
- package/src/server/securityMiddleware.ts +1 -0
- package/src/server/toolRegistry.ts +42 -0
- package/src/tools/__tests__/transactionTools.integration.test.ts +63 -3
- package/src/tools/__tests__/utilityTools.integration.test.ts +1 -85
- package/src/tools/__tests__/utilityTools.test.ts +1 -123
- package/src/tools/adapters.ts +22 -1
- package/src/tools/reconciliation/__tests__/executor.progress.test.ts +462 -0
- package/src/tools/reconciliation/executor.ts +55 -1
- package/src/tools/reconciliation/index.ts +7 -3
- package/src/tools/schemas/outputs/index.ts +0 -3
- package/src/tools/schemas/outputs/utilityOutputs.ts +2 -43
- package/src/tools/toolCategories.ts +0 -1
- package/src/tools/utilityTools.ts +5 -76
- package/vitest.config.ts +4 -1
- package/.chunkhound.json +0 -11
- package/.code/agents/0098661e-0fa3-4990-beb9-c0cbf3f123aa/status.txt +0 -1
- package/.code/agents/01a13ef4-3f23-4f52-b33b-3585b73cfa60/error.txt +0 -3
- package/.code/agents/084fd32f-e298-4728-9103-a78d7dc39613/error.txt +0 -3
- package/.code/agents/0fed51e1-a943-4b97-a2a8-a6f0f27c844d/status.txt +0 -1
- package/.code/agents/1059b6bd-5ccd-4d83-a12c-7c9d89137399/error.txt +0 -5
- package/.code/agents/110/exec-call_F9BDNG7JfxKkq7Vc8ESAvdft.txt +0 -1569
- package/.code/agents/11ebcef3-b13f-4e44-ad80-d94a866804b7/error.txt +0 -3
- package/.code/agents/1324/exec-call_tIpx9uV1TpARbAMZonRQm8AO.txt +0 -757
- package/.code/agents/1398/exec-call_CjItcWMU1G6JoPshX62QvpaR.txt +0 -2832
- package/.code/agents/1398/exec-call_SUVq2ivmONQ5LMCmd7ngmOqr.txt +0 -2709
- package/.code/agents/1398/exec-call_SdNY4NOffdcC5pRYjVXHjPCK.txt +0 -2832
- package/.code/agents/1398/exec-call_qblJo9et1gsFFB63TtLOiji2.txt +0 -2832
- package/.code/agents/1398/exec-call_zaRrzlGz7GJcNzVfkAmML7Zg.txt +0 -2709
- package/.code/agents/1572/exec-call_GjVFBFOWcY7lE0idc5nWlLNh.txt +0 -781
- package/.code/agents/171834fd-5905-42fc-bbcc-2c755145b0fc/status.txt +0 -1
- package/.code/agents/1724/exec-call_HvHQe0w5CCG3T7Q3ULT6MO3g.txt +0 -5217
- package/.code/agents/1724/exec-call_QwUNESVzfxxk78K1frh1Vahb.txt +0 -2594
- package/.code/agents/1724/exec-call_aJ1Xwz71XmIpD4SBxSHERzLe.txt +0 -2594
- package/.code/agents/1846/exec-call_1YNAVD18RjrMN7JnfkkQhUP3.txt +0 -766
- package/.code/agents/1846/exec-call_lh3lDzE4WJAh1lFiomiiZ73D.txt +0 -766
- package/.code/agents/1d7d7ab7-7473-4b69-8b97-6e914f56056a/result.txt +0 -231
- package/.code/agents/2038/exec-call_DYwOukaYsL8VCONWmV2rUW5u.txt +0 -766
- package/.code/agents/2038/exec-call_c7fOQ7UrpVcTtvdfGBRM146V.txt +0 -652
- package/.code/agents/2038/exec-call_ySNyq9Mm55jWE480s54r5QcA.txt +0 -766
- package/.code/agents/210/exec-call_0tQCsKNJ1WTuIchb8wlcFJpW.txt +0 -2590
- package/.code/agents/210/exec-call_8ZlY9cUc8Ft1twi4ch8UJ6IN.txt +0 -5195
- package/.code/agents/2188/exec-call_5HqayBxIteJtoI8oPTiLWgvJ.txt +0 -286
- package/.code/agents/2188/exec-call_XRbBKBq3adZe6dcppAvQtM7G.txt +0 -218
- package/.code/agents/2188/exec-call_ehA0SjpYtrUi6GJXmibLjp4i.txt +0 -180
- package/.code/agents/21902821-ecaf-4759-bb9d-222b90921af5/error.txt +0 -3
- package/.code/agents/2256/exec-call_AtPcRWPmFPMcmX6qOFm1fCEY.txt +0 -766
- package/.code/agents/232073be-aa0e-46da-b478-5b64dbf03cf5/status.txt +0 -1
- package/.code/agents/234ff534-2336-4771-a8d9-aa04421a63be/result.txt +0 -747
- package/.code/agents/2454/exec-call_aFJpupwjfZeOBm7ixI5Vc8z2.txt +0 -766
- package/.code/agents/2454/exec-call_wogZ4HfXTodTEXvdgXlVUBpv.txt +0 -766
- package/.code/agents/253e2695-dc36-4022-b436-27655e0fc6c7/status.txt +0 -1
- package/.code/agents/2583/exec-call_M59I4eDjpjlBIWBiSxyS0YlJ.txt +0 -2594
- package/.code/agents/2583/exec-call_usLRGh7OhVHtsRBL4iUwRhjq.txt +0 -2594
- package/.code/agents/292aa3ff-dbab-470f-97c9-e7e8fd65e0db/result.txt +0 -144
- package/.code/agents/2e905864-aa07-4314-bcf9-c5b32277e4ac/result.txt +0 -36
- package/.code/agents/3073/exec-call_Peeagc9DxGYLgE6pNdMZhqIE.txt +0 -766
- package/.code/agents/3073/exec-call_d2YSE3hXF08KRSoUM3qd8Z3x.txt +0 -766
- package/.code/agents/3134/exec-call_IgCAMGx19lWfuo8zfYIt5FFC.txt +0 -416
- package/.code/agents/3134/exec-call_IxvLR2Oo7kba2QTsI1gHVko8.txt +0 -2590
- package/.code/agents/3134/exec-call_jYvc8hksZChSiysbzKjl2ZbB.txt +0 -2590
- package/.code/agents/329/exec-call_4QdP3SfSO7HGPCwVcqZIth6s.txt +0 -2590
- package/.code/agents/335aa031-466d-4fb7-925f-3cd864e264d0/result.txt +0 -191
- package/.code/agents/3364/exec-call_NbhIrsM5HhyDZDmJZG5CuCYL.txt +0 -766
- package/.code/agents/3364/exec-call_cKtJg0NrXiwXEFwlsE3uPZRA.txt +0 -766
- package/.code/agents/36d98414-5cde-4d9d-9a67-a240a18c1f07/result.txt +0 -189
- package/.code/agents/4604e866-b7b8-44f5-992f-2f683b0a523b/status.txt +0 -1
- package/.code/agents/472/exec-call_4AxzEEcWwkKhpqRB3bE8Ha4L.txt +0 -790
- package/.code/agents/472/exec-call_CB3LPYQA8QIZRi8I6kj4J17A.txt +0 -766
- package/.code/agents/472/exec-call_YeoUWvaFoktay2nqVUsa9KKX.txt +0 -790
- package/.code/agents/472/exec-call_jPWgKVquBBXTg0T3Lks5ZfkK.txt +0 -2594
- package/.code/agents/472/exec-call_qBkvunpGBDEHph2jPmTwtcsb.txt +0 -1000
- package/.code/agents/472/exec-call_v0ffRV1p0kTckBmJPzzHAEy0.txt +0 -3489
- package/.code/agents/472/exec-call_xAX5FXqWIlk02d9WubHbHWh8.txt +0 -766
- package/.code/agents/5346/exec-call_9q0muXUuLaucwEqI51Pt7idT.txt +0 -2594
- package/.code/agents/5346/exec-call_B2el3B79rVkq9LhWTI2VYlz7.txt +0 -2456
- package/.code/agents/5346/exec-call_BfX08f02qkZI9uJD5dvCvuoj.txt +0 -2594
- package/.code/agents/543328d0-61d6-4fd1-a723-bb168656e2e2/error.txt +0 -18
- package/.code/agents/5580c02c-1383-4d18-9cbd-cc8a06e3408d/result.txt +0 -48
- package/.code/agents/5f8dc01c-47b3-4163-b0b3-aa31be89fcdc/status.txt +0 -1
- package/.code/agents/60ce1a22-5126-44b2-b977-1d5b56142a7b/status.txt +0 -1
- package/.code/agents/6215d9db-7fa9-4429-aeec-3835c3212291/error.txt +0 -1
- package/.code/agents/6743db55-30e5-4b4e-9366-a8214fc7f714/error.txt +0 -1
- package/.code/agents/6bf9591b-b9c9-422c-b0a5-e968c7d8422a/status.txt +0 -1
- package/.code/agents/7/exec-call_HltHpkDox0Zm1vGEjdksUgpE.txt +0 -1120
- package/.code/agents/7/exec-call_LCATrOPPAgbxW9Q1z0XaVi2E.txt +0 -2646
- package/.code/agents/7/exec-call_W8DeRfNG9hvbgVFvf0clBf6R.txt +0 -2646
- package/.code/agents/7/exec-call_eww3GfdEiJZx61sJEQ9wNmt3.txt +0 -1271
- package/.code/agents/70/exec-call_owUtDMYiVgqDf8vsz1i32PFf.txt +0 -1570
- package/.code/agents/8/exec-call_UtrjAcLbhYLatxR4O97fZgnm.txt +0 -2590
- package/.code/agents/82490bc9-f34e-4b1b-8a8e-bccc2e6254f5/error.txt +0 -3
- package/.code/agents/841/exec-call_7nTNhSBCNjTDUIJv7py6CepO.txt +0 -3299
- package/.code/agents/841/exec-call_TLI0yUdUijuUAvI4o3DXEvHO.txt +0 -3299
- package/.code/agents/9/exec-call_XaABQT1hIlRpnKZ2uyBMWsTC.txt +0 -1882
- package/.code/agents/941/exec-call_GuGHRx7NNXWIDAnxUG2NEWPa.txt +0 -2594
- package/.code/agents/94a0ddf3-a304-4ec3-913e-3cceef509948/error.txt +0 -1
- package/.code/agents/95d9fbab-19a2-48af-83f9-c792566a347f/error.txt +0 -1
- package/.code/agents/b0098cb8-cb32-4ada-9bc4-37c587518896/result.txt +0 -170
- package/.code/agents/b4fe59a4-81df-42e2-a112-0153e504faca/error.txt +0 -1
- package/.code/agents/bf4ce152-f623-49d7-aa52-c18631625c3c/error.txt +0 -3
- package/.code/agents/d7d1db75-d7eb-468e-adea-4ef4d916d187/status.txt +0 -1
- package/.code/agents/e2baa9c8-bac3-49e3-a39d-024333e6a990/status.txt +0 -1
- package/.code/agents/e2c752b7-711d-423a-af57-f53c809deb84/result.txt +0 -160
- package/.code/agents/e350b8c3-8483-408c-b2bb-94515f492a11/error.txt +0 -3
- package/.code/agents/e63f9919-719f-4ad0-bccf-01b1a596e1e9/status.txt +0 -1
- package/.code/agents/e6601719-c31f-4a0e-8c71-d70787d0ab71/status.txt +0 -1
- package/.code/agents/e71695a8-3044-478d-8f12-ed13d02884c7/status.txt +0 -1
- package/.code/agents/f250b7ed-5bd5-4036-aa8c-ce63caee7d61/result.txt +0 -20
- package/.code/agents/f95b7464-3e25-4897-b153-c8dfd63fd605/error.txt +0 -5
- package/.code/agents/fa3c5ddf-cdf7-47a2-930a-b806c6363689/status.txt +0 -1
- package/AGENTS.md +0 -1
- package/NUL +0 -0
- package/package.json.tmp +0 -105
- package/src/__tests__/delta.performance.test.ts +0 -80
- package/src/__tests__/workflows.e2e.test.ts +0 -1702
- package/temp-recon.ts +0 -126
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_09-04-53.json +0 -23
- package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_10-37-42.json +0 -23
- package/test-exports/ynab_account_e9ddc2a6_minimal_4items_2025-11-19_09-02-09.json +0 -44
- package/test-exports/ynab_account_e9ddc2a6_minimal_6items_2025-11-19_10-37-52.json +0 -58
- package/test-exports/ynab_since_2025-10-16_account_53298e13_238items_2025-11-28_13-46-20.json +0 -3662
- package/test-exports/ynab_since_2025-11-01_account_4c18e9f0_minimal_14items_2025-11-16_10-07-10.json +0 -115
package/temp-recon.ts
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import 'dotenv/config';
|
|
2
|
-
import * as ynab from 'ynab';
|
|
3
|
-
import { executeReconciliation } from './src/tools/reconciliation/executor.js';
|
|
4
|
-
|
|
5
|
-
async function main() {
|
|
6
|
-
const token = process.env['YNAB_ACCESS_TOKEN'];
|
|
7
|
-
if (!token) throw new Error('No token');
|
|
8
|
-
const api = new ynab.API(token);
|
|
9
|
-
const budgets = await api.budgets.getBudgets();
|
|
10
|
-
const budgetId = budgets.data.budgets[0]?.id;
|
|
11
|
-
if (!budgetId) throw new Error('no budget');
|
|
12
|
-
const accounts = await api.accounts.getAccounts(budgetId);
|
|
13
|
-
const account = accounts.data.accounts.find((a) => !a.closed);
|
|
14
|
-
if (!account) throw new Error('no account');
|
|
15
|
-
const snapshot = {
|
|
16
|
-
balance: account.balance,
|
|
17
|
-
cleared_balance: account.cleared_balance ?? account.balance,
|
|
18
|
-
uncleared_balance: account.uncleared_balance ?? 0,
|
|
19
|
-
};
|
|
20
|
-
const count = 2;
|
|
21
|
-
const transactionAmount = 7;
|
|
22
|
-
const clearedDollars = snapshot.cleared_balance / 1000;
|
|
23
|
-
const totalDelta = transactionAmount * count;
|
|
24
|
-
const statementBalance = clearedDollars + totalDelta;
|
|
25
|
-
const today = new Date().toISOString().slice(0, 10);
|
|
26
|
-
const unmatchedBank = Array.from({ length: count }, (_, i) => {
|
|
27
|
-
const date = new Date(Date.now() + i * 24 * 60 * 60 * 1000).toISOString().slice(0, 10);
|
|
28
|
-
return {
|
|
29
|
-
id: `integration-bank-${i}`,
|
|
30
|
-
date,
|
|
31
|
-
amount: transactionAmount,
|
|
32
|
-
payee: `Integration Payee ${i}`,
|
|
33
|
-
memo: `Integration memo ${i}`,
|
|
34
|
-
original_csv_row: i + 1,
|
|
35
|
-
};
|
|
36
|
-
});
|
|
37
|
-
const analysis = {
|
|
38
|
-
success: true,
|
|
39
|
-
phase: 'analysis',
|
|
40
|
-
summary: {
|
|
41
|
-
statement_date_range: 'Integration test',
|
|
42
|
-
bank_transactions_count: count,
|
|
43
|
-
ynab_transactions_count: 0,
|
|
44
|
-
auto_matched: 0,
|
|
45
|
-
suggested_matches: 0,
|
|
46
|
-
unmatched_bank: count,
|
|
47
|
-
unmatched_ynab: 0,
|
|
48
|
-
current_cleared_balance: clearedDollars,
|
|
49
|
-
target_statement_balance: statementBalance,
|
|
50
|
-
discrepancy: totalDelta,
|
|
51
|
-
discrepancy_explanation: 'Synthetic integration delta',
|
|
52
|
-
},
|
|
53
|
-
auto_matches: [],
|
|
54
|
-
suggested_matches: [],
|
|
55
|
-
unmatched_bank: unmatchedBank,
|
|
56
|
-
unmatched_ynab: [],
|
|
57
|
-
balance_info: {
|
|
58
|
-
current_cleared: clearedDollars,
|
|
59
|
-
current_uncleared: snapshot.uncleared_balance / 1000,
|
|
60
|
-
current_total: snapshot.balance / 1000,
|
|
61
|
-
target_statement: statementBalance,
|
|
62
|
-
discrepancy: totalDelta,
|
|
63
|
-
on_track: false,
|
|
64
|
-
},
|
|
65
|
-
next_steps: [],
|
|
66
|
-
insights: [],
|
|
67
|
-
} as const;
|
|
68
|
-
|
|
69
|
-
const params = {
|
|
70
|
-
budget_id: budgetId,
|
|
71
|
-
account_id: account.id,
|
|
72
|
-
csv_data: 'Date,Description,Amount',
|
|
73
|
-
statement_balance: statementBalance,
|
|
74
|
-
statement_date: today,
|
|
75
|
-
date_tolerance_days: 1,
|
|
76
|
-
amount_tolerance_cents: 1,
|
|
77
|
-
auto_match_threshold: 90,
|
|
78
|
-
suggestion_threshold: 60,
|
|
79
|
-
auto_create_transactions: true,
|
|
80
|
-
auto_update_cleared_status: false,
|
|
81
|
-
auto_unclear_missing: false,
|
|
82
|
-
auto_adjust_dates: false,
|
|
83
|
-
dry_run: false,
|
|
84
|
-
require_exact_match: true,
|
|
85
|
-
confidence_threshold: 0.8,
|
|
86
|
-
max_resolution_attempts: 3,
|
|
87
|
-
include_structured_data: false,
|
|
88
|
-
} as const;
|
|
89
|
-
|
|
90
|
-
const result = await executeReconciliation({
|
|
91
|
-
ynabAPI: api,
|
|
92
|
-
analysis: analysis as any,
|
|
93
|
-
params: params as any,
|
|
94
|
-
budgetId,
|
|
95
|
-
accountId: account.id,
|
|
96
|
-
initialAccount: snapshot,
|
|
97
|
-
currencyCode: 'USD',
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
console.log(
|
|
101
|
-
JSON.stringify(
|
|
102
|
-
{
|
|
103
|
-
summary: result.summary,
|
|
104
|
-
bulk: result.bulk_operation_details,
|
|
105
|
-
actions: result.actions_taken.slice(0, 5),
|
|
106
|
-
},
|
|
107
|
-
null,
|
|
108
|
-
2,
|
|
109
|
-
),
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
const ids: string[] = [];
|
|
113
|
-
for (const action of result.actions_taken) {
|
|
114
|
-
if (action.type === 'create_transaction' && (action.transaction as any)?.id) {
|
|
115
|
-
ids.push((action.transaction as any).id);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
for (const id of ids) {
|
|
119
|
-
await api.transactions.deleteTransaction(budgetId, id);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
main().catch((err) => {
|
|
124
|
-
console.error(err);
|
|
125
|
-
process.exit(1);
|
|
126
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"export_info": {
|
|
3
|
-
"exported_at": "2025-11-19T17:04:53.492Z",
|
|
4
|
-
"total_transactions": 1,
|
|
5
|
-
"minimal": true,
|
|
6
|
-
"filters": {
|
|
7
|
-
"budget_id": "7b47d8bb-ce4c-40c0-a9eb-c6d715af9a76",
|
|
8
|
-
"account_id": "e9ddc2a6-f4ae-4f95-b45a-831cf1d7b90c",
|
|
9
|
-
"category_id": null,
|
|
10
|
-
"since_date": null,
|
|
11
|
-
"type": null
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"transactions": [
|
|
15
|
-
{
|
|
16
|
-
"id": "93e4355b-6c45-4f73-899d-53b2c4ef8c7d",
|
|
17
|
-
"date": "2025-11-17",
|
|
18
|
-
"amount": 10000000,
|
|
19
|
-
"payee_name": "Starting Balance",
|
|
20
|
-
"cleared": "cleared"
|
|
21
|
-
}
|
|
22
|
-
]
|
|
23
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"export_info": {
|
|
3
|
-
"exported_at": "2025-11-19T18:37:42.030Z",
|
|
4
|
-
"total_transactions": 1,
|
|
5
|
-
"minimal": true,
|
|
6
|
-
"filters": {
|
|
7
|
-
"budget_id": "7b47d8bb-ce4c-40c0-a9eb-c6d715af9a76",
|
|
8
|
-
"account_id": "e9ddc2a6-f4ae-4f95-b45a-831cf1d7b90c",
|
|
9
|
-
"category_id": null,
|
|
10
|
-
"since_date": null,
|
|
11
|
-
"type": null
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"transactions": [
|
|
15
|
-
{
|
|
16
|
-
"id": "93e4355b-6c45-4f73-899d-53b2c4ef8c7d",
|
|
17
|
-
"date": "2025-11-17",
|
|
18
|
-
"amount": 10000000,
|
|
19
|
-
"payee_name": "Starting Balance",
|
|
20
|
-
"cleared": "cleared"
|
|
21
|
-
}
|
|
22
|
-
]
|
|
23
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"export_info": {
|
|
3
|
-
"exported_at": "2025-11-19T17:02:09.880Z",
|
|
4
|
-
"total_transactions": 4,
|
|
5
|
-
"minimal": true,
|
|
6
|
-
"filters": {
|
|
7
|
-
"budget_id": "7b47d8bb-ce4c-40c0-a9eb-c6d715af9a76",
|
|
8
|
-
"account_id": "e9ddc2a6-f4ae-4f95-b45a-831cf1d7b90c",
|
|
9
|
-
"category_id": null,
|
|
10
|
-
"since_date": null,
|
|
11
|
-
"type": null
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"transactions": [
|
|
15
|
-
{
|
|
16
|
-
"id": "93e4355b-6c45-4f73-899d-53b2c4ef8c7d",
|
|
17
|
-
"date": "2025-11-17",
|
|
18
|
-
"amount": 10000000,
|
|
19
|
-
"payee_name": "Starting Balance",
|
|
20
|
-
"cleared": "cleared"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"id": "1aa8be76-7b33-471d-8a6c-dd3193b8c7e0",
|
|
24
|
-
"date": "2025-11-19",
|
|
25
|
-
"amount": -3000,
|
|
26
|
-
"payee_name": "Test Update Payee 1763571729127",
|
|
27
|
-
"cleared": "uncleared"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"id": "fce0d2e4-91aa-4d37-abcd-33dfb4e9d803",
|
|
31
|
-
"date": "2025-11-19",
|
|
32
|
-
"amount": -2000,
|
|
33
|
-
"payee_name": "Test Payee 2 1763571728468",
|
|
34
|
-
"cleared": "uncleared"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"id": "b26a77cc-6cc4-4e2d-8ffa-72fcd00a2cde",
|
|
38
|
-
"date": "2025-11-19",
|
|
39
|
-
"amount": -1000,
|
|
40
|
-
"payee_name": "Test Payee 1 1763571728468",
|
|
41
|
-
"cleared": "uncleared"
|
|
42
|
-
}
|
|
43
|
-
]
|
|
44
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"export_info": {
|
|
3
|
-
"exported_at": "2025-11-19T18:37:52.409Z",
|
|
4
|
-
"total_transactions": 6,
|
|
5
|
-
"minimal": true,
|
|
6
|
-
"filters": {
|
|
7
|
-
"budget_id": "7b47d8bb-ce4c-40c0-a9eb-c6d715af9a76",
|
|
8
|
-
"account_id": "e9ddc2a6-f4ae-4f95-b45a-831cf1d7b90c",
|
|
9
|
-
"category_id": null,
|
|
10
|
-
"since_date": null,
|
|
11
|
-
"type": null
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"transactions": [
|
|
15
|
-
{
|
|
16
|
-
"id": "93e4355b-6c45-4f73-899d-53b2c4ef8c7d",
|
|
17
|
-
"date": "2025-11-17",
|
|
18
|
-
"amount": 10000000,
|
|
19
|
-
"payee_name": "Starting Balance",
|
|
20
|
-
"cleared": "cleared"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"id": "fa32d5e7-76c5-46f0-9daa-c96a06b0a16c",
|
|
24
|
-
"date": "2025-11-19",
|
|
25
|
-
"amount": -3000,
|
|
26
|
-
"payee_name": "Test Update Payee 1763577471655",
|
|
27
|
-
"cleared": "uncleared"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"id": "883f3e33-e8fd-48d7-bb1f-55803b7c310b",
|
|
31
|
-
"date": "2025-11-19",
|
|
32
|
-
"amount": -2500,
|
|
33
|
-
"payee_name": "Bulk Workflow Payee 2 1763577462035",
|
|
34
|
-
"cleared": "uncleared"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"id": "d0ef74ff-a0d3-4f81-ab00-355eee55d6f1",
|
|
38
|
-
"date": "2025-11-19",
|
|
39
|
-
"amount": -2000,
|
|
40
|
-
"payee_name": "Test Payee 2 1763577471385",
|
|
41
|
-
"cleared": "uncleared"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
"id": "863445bc-f3a6-4d5a-a2bf-6f91e39c2ec7",
|
|
45
|
-
"date": "2025-11-19",
|
|
46
|
-
"amount": -1500,
|
|
47
|
-
"payee_name": "Bulk Workflow Payee 1 1763577462035",
|
|
48
|
-
"cleared": "uncleared"
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"id": "d211482a-6082-471b-a318-6679a6c35bfd",
|
|
52
|
-
"date": "2025-11-19",
|
|
53
|
-
"amount": -1000,
|
|
54
|
-
"payee_name": "Test Payee 1 1763577471385",
|
|
55
|
-
"cleared": "uncleared"
|
|
56
|
-
}
|
|
57
|
-
]
|
|
58
|
-
}
|