@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.
Files changed (182) hide show
  1. package/.env.example +33 -33
  2. package/.github/workflows/ci-tests.yml +45 -45
  3. package/.github/workflows/claude-code-review.yml +57 -57
  4. package/.github/workflows/claude.yml +50 -50
  5. package/.github/workflows/full-integration.yml +22 -22
  6. package/.github/workflows/publish.yml +12 -3
  7. package/.github/workflows/release.yml +2 -2
  8. package/CHANGELOG.md +10 -1
  9. package/CLAUDE.md +16 -12
  10. package/README.md +6 -1
  11. package/dist/bundle/index.cjs +49 -49
  12. package/dist/server/YNABMCPServer.d.ts +125 -54
  13. package/dist/server/YNABMCPServer.js +42 -11
  14. package/dist/server/cacheManager.js +6 -5
  15. package/dist/server/completions.d.ts +25 -0
  16. package/dist/server/completions.js +160 -0
  17. package/dist/server/config.d.ts +2 -2
  18. package/dist/server/errorHandler.js +1 -0
  19. package/dist/server/rateLimiter.js +3 -1
  20. package/dist/server/resources.d.ts +1 -0
  21. package/dist/server/resources.js +33 -16
  22. package/dist/server/securityMiddleware.d.ts +38 -8
  23. package/dist/server/securityMiddleware.js +1 -0
  24. package/dist/server/toolRegistry.d.ts +9 -0
  25. package/dist/server/toolRegistry.js +11 -0
  26. package/dist/tools/adapters.d.ts +3 -1
  27. package/dist/tools/adapters.js +1 -0
  28. package/dist/tools/reconciliation/executor.d.ts +2 -0
  29. package/dist/tools/reconciliation/executor.js +26 -1
  30. package/dist/tools/reconciliation/index.d.ts +3 -2
  31. package/dist/tools/reconciliation/index.js +4 -3
  32. package/dist/tools/schemas/outputs/index.d.ts +2 -2
  33. package/dist/tools/schemas/outputs/index.js +2 -2
  34. package/dist/tools/schemas/outputs/utilityOutputs.d.ts +0 -15
  35. package/dist/tools/schemas/outputs/utilityOutputs.js +0 -9
  36. package/dist/tools/utilityTools.d.ts +0 -7
  37. package/dist/tools/utilityTools.js +1 -50
  38. package/docs/maintainers/npm-publishing.md +27 -0
  39. package/docs/reference/API.md +83 -97
  40. package/docs/technical/reconciliation-system-architecture.md +2251 -2251
  41. package/package.json +6 -6
  42. package/scripts/analyze-bundle.mjs +41 -41
  43. package/scripts/generate-mcpb.ps1 +95 -95
  44. package/scripts/watch-and-restart.ps1 +49 -49
  45. package/src/__tests__/comprehensive.integration.test.ts +4 -32
  46. package/src/__tests__/performance.test.ts +5 -14
  47. package/src/__tests__/setup.ts +45 -14
  48. package/src/__tests__/smoke.e2e.test.ts +70 -0
  49. package/src/__tests__/testUtils.ts +2 -113
  50. package/src/server/YNABMCPServer.ts +64 -10
  51. package/src/server/__tests__/YNABMCPServer.test.ts +0 -1
  52. package/src/server/__tests__/completions.integration.test.ts +117 -0
  53. package/src/server/__tests__/completions.test.ts +319 -0
  54. package/src/server/__tests__/resources.template.test.ts +3 -3
  55. package/src/server/__tests__/resources.test.ts +3 -3
  56. package/src/server/__tests__/toolRegistration.test.ts +3 -3
  57. package/src/server/cacheManager.ts +7 -6
  58. package/src/server/completions.ts +279 -0
  59. package/src/server/errorHandler.ts +1 -0
  60. package/src/server/rateLimiter.ts +4 -1
  61. package/src/server/resources.ts +49 -13
  62. package/src/server/securityMiddleware.ts +1 -0
  63. package/src/server/toolRegistry.ts +42 -0
  64. package/src/tools/__tests__/transactionTools.integration.test.ts +63 -3
  65. package/src/tools/__tests__/utilityTools.integration.test.ts +1 -85
  66. package/src/tools/__tests__/utilityTools.test.ts +1 -123
  67. package/src/tools/adapters.ts +22 -1
  68. package/src/tools/reconciliation/__tests__/executor.progress.test.ts +462 -0
  69. package/src/tools/reconciliation/executor.ts +55 -1
  70. package/src/tools/reconciliation/index.ts +7 -3
  71. package/src/tools/schemas/outputs/index.ts +0 -3
  72. package/src/tools/schemas/outputs/utilityOutputs.ts +2 -43
  73. package/src/tools/toolCategories.ts +0 -1
  74. package/src/tools/utilityTools.ts +5 -76
  75. package/vitest.config.ts +4 -1
  76. package/.chunkhound.json +0 -11
  77. package/.code/agents/0098661e-0fa3-4990-beb9-c0cbf3f123aa/status.txt +0 -1
  78. package/.code/agents/01a13ef4-3f23-4f52-b33b-3585b73cfa60/error.txt +0 -3
  79. package/.code/agents/084fd32f-e298-4728-9103-a78d7dc39613/error.txt +0 -3
  80. package/.code/agents/0fed51e1-a943-4b97-a2a8-a6f0f27c844d/status.txt +0 -1
  81. package/.code/agents/1059b6bd-5ccd-4d83-a12c-7c9d89137399/error.txt +0 -5
  82. package/.code/agents/110/exec-call_F9BDNG7JfxKkq7Vc8ESAvdft.txt +0 -1569
  83. package/.code/agents/11ebcef3-b13f-4e44-ad80-d94a866804b7/error.txt +0 -3
  84. package/.code/agents/1324/exec-call_tIpx9uV1TpARbAMZonRQm8AO.txt +0 -757
  85. package/.code/agents/1398/exec-call_CjItcWMU1G6JoPshX62QvpaR.txt +0 -2832
  86. package/.code/agents/1398/exec-call_SUVq2ivmONQ5LMCmd7ngmOqr.txt +0 -2709
  87. package/.code/agents/1398/exec-call_SdNY4NOffdcC5pRYjVXHjPCK.txt +0 -2832
  88. package/.code/agents/1398/exec-call_qblJo9et1gsFFB63TtLOiji2.txt +0 -2832
  89. package/.code/agents/1398/exec-call_zaRrzlGz7GJcNzVfkAmML7Zg.txt +0 -2709
  90. package/.code/agents/1572/exec-call_GjVFBFOWcY7lE0idc5nWlLNh.txt +0 -781
  91. package/.code/agents/171834fd-5905-42fc-bbcc-2c755145b0fc/status.txt +0 -1
  92. package/.code/agents/1724/exec-call_HvHQe0w5CCG3T7Q3ULT6MO3g.txt +0 -5217
  93. package/.code/agents/1724/exec-call_QwUNESVzfxxk78K1frh1Vahb.txt +0 -2594
  94. package/.code/agents/1724/exec-call_aJ1Xwz71XmIpD4SBxSHERzLe.txt +0 -2594
  95. package/.code/agents/1846/exec-call_1YNAVD18RjrMN7JnfkkQhUP3.txt +0 -766
  96. package/.code/agents/1846/exec-call_lh3lDzE4WJAh1lFiomiiZ73D.txt +0 -766
  97. package/.code/agents/1d7d7ab7-7473-4b69-8b97-6e914f56056a/result.txt +0 -231
  98. package/.code/agents/2038/exec-call_DYwOukaYsL8VCONWmV2rUW5u.txt +0 -766
  99. package/.code/agents/2038/exec-call_c7fOQ7UrpVcTtvdfGBRM146V.txt +0 -652
  100. package/.code/agents/2038/exec-call_ySNyq9Mm55jWE480s54r5QcA.txt +0 -766
  101. package/.code/agents/210/exec-call_0tQCsKNJ1WTuIchb8wlcFJpW.txt +0 -2590
  102. package/.code/agents/210/exec-call_8ZlY9cUc8Ft1twi4ch8UJ6IN.txt +0 -5195
  103. package/.code/agents/2188/exec-call_5HqayBxIteJtoI8oPTiLWgvJ.txt +0 -286
  104. package/.code/agents/2188/exec-call_XRbBKBq3adZe6dcppAvQtM7G.txt +0 -218
  105. package/.code/agents/2188/exec-call_ehA0SjpYtrUi6GJXmibLjp4i.txt +0 -180
  106. package/.code/agents/21902821-ecaf-4759-bb9d-222b90921af5/error.txt +0 -3
  107. package/.code/agents/2256/exec-call_AtPcRWPmFPMcmX6qOFm1fCEY.txt +0 -766
  108. package/.code/agents/232073be-aa0e-46da-b478-5b64dbf03cf5/status.txt +0 -1
  109. package/.code/agents/234ff534-2336-4771-a8d9-aa04421a63be/result.txt +0 -747
  110. package/.code/agents/2454/exec-call_aFJpupwjfZeOBm7ixI5Vc8z2.txt +0 -766
  111. package/.code/agents/2454/exec-call_wogZ4HfXTodTEXvdgXlVUBpv.txt +0 -766
  112. package/.code/agents/253e2695-dc36-4022-b436-27655e0fc6c7/status.txt +0 -1
  113. package/.code/agents/2583/exec-call_M59I4eDjpjlBIWBiSxyS0YlJ.txt +0 -2594
  114. package/.code/agents/2583/exec-call_usLRGh7OhVHtsRBL4iUwRhjq.txt +0 -2594
  115. package/.code/agents/292aa3ff-dbab-470f-97c9-e7e8fd65e0db/result.txt +0 -144
  116. package/.code/agents/2e905864-aa07-4314-bcf9-c5b32277e4ac/result.txt +0 -36
  117. package/.code/agents/3073/exec-call_Peeagc9DxGYLgE6pNdMZhqIE.txt +0 -766
  118. package/.code/agents/3073/exec-call_d2YSE3hXF08KRSoUM3qd8Z3x.txt +0 -766
  119. package/.code/agents/3134/exec-call_IgCAMGx19lWfuo8zfYIt5FFC.txt +0 -416
  120. package/.code/agents/3134/exec-call_IxvLR2Oo7kba2QTsI1gHVko8.txt +0 -2590
  121. package/.code/agents/3134/exec-call_jYvc8hksZChSiysbzKjl2ZbB.txt +0 -2590
  122. package/.code/agents/329/exec-call_4QdP3SfSO7HGPCwVcqZIth6s.txt +0 -2590
  123. package/.code/agents/335aa031-466d-4fb7-925f-3cd864e264d0/result.txt +0 -191
  124. package/.code/agents/3364/exec-call_NbhIrsM5HhyDZDmJZG5CuCYL.txt +0 -766
  125. package/.code/agents/3364/exec-call_cKtJg0NrXiwXEFwlsE3uPZRA.txt +0 -766
  126. package/.code/agents/36d98414-5cde-4d9d-9a67-a240a18c1f07/result.txt +0 -189
  127. package/.code/agents/4604e866-b7b8-44f5-992f-2f683b0a523b/status.txt +0 -1
  128. package/.code/agents/472/exec-call_4AxzEEcWwkKhpqRB3bE8Ha4L.txt +0 -790
  129. package/.code/agents/472/exec-call_CB3LPYQA8QIZRi8I6kj4J17A.txt +0 -766
  130. package/.code/agents/472/exec-call_YeoUWvaFoktay2nqVUsa9KKX.txt +0 -790
  131. package/.code/agents/472/exec-call_jPWgKVquBBXTg0T3Lks5ZfkK.txt +0 -2594
  132. package/.code/agents/472/exec-call_qBkvunpGBDEHph2jPmTwtcsb.txt +0 -1000
  133. package/.code/agents/472/exec-call_v0ffRV1p0kTckBmJPzzHAEy0.txt +0 -3489
  134. package/.code/agents/472/exec-call_xAX5FXqWIlk02d9WubHbHWh8.txt +0 -766
  135. package/.code/agents/5346/exec-call_9q0muXUuLaucwEqI51Pt7idT.txt +0 -2594
  136. package/.code/agents/5346/exec-call_B2el3B79rVkq9LhWTI2VYlz7.txt +0 -2456
  137. package/.code/agents/5346/exec-call_BfX08f02qkZI9uJD5dvCvuoj.txt +0 -2594
  138. package/.code/agents/543328d0-61d6-4fd1-a723-bb168656e2e2/error.txt +0 -18
  139. package/.code/agents/5580c02c-1383-4d18-9cbd-cc8a06e3408d/result.txt +0 -48
  140. package/.code/agents/5f8dc01c-47b3-4163-b0b3-aa31be89fcdc/status.txt +0 -1
  141. package/.code/agents/60ce1a22-5126-44b2-b977-1d5b56142a7b/status.txt +0 -1
  142. package/.code/agents/6215d9db-7fa9-4429-aeec-3835c3212291/error.txt +0 -1
  143. package/.code/agents/6743db55-30e5-4b4e-9366-a8214fc7f714/error.txt +0 -1
  144. package/.code/agents/6bf9591b-b9c9-422c-b0a5-e968c7d8422a/status.txt +0 -1
  145. package/.code/agents/7/exec-call_HltHpkDox0Zm1vGEjdksUgpE.txt +0 -1120
  146. package/.code/agents/7/exec-call_LCATrOPPAgbxW9Q1z0XaVi2E.txt +0 -2646
  147. package/.code/agents/7/exec-call_W8DeRfNG9hvbgVFvf0clBf6R.txt +0 -2646
  148. package/.code/agents/7/exec-call_eww3GfdEiJZx61sJEQ9wNmt3.txt +0 -1271
  149. package/.code/agents/70/exec-call_owUtDMYiVgqDf8vsz1i32PFf.txt +0 -1570
  150. package/.code/agents/8/exec-call_UtrjAcLbhYLatxR4O97fZgnm.txt +0 -2590
  151. package/.code/agents/82490bc9-f34e-4b1b-8a8e-bccc2e6254f5/error.txt +0 -3
  152. package/.code/agents/841/exec-call_7nTNhSBCNjTDUIJv7py6CepO.txt +0 -3299
  153. package/.code/agents/841/exec-call_TLI0yUdUijuUAvI4o3DXEvHO.txt +0 -3299
  154. package/.code/agents/9/exec-call_XaABQT1hIlRpnKZ2uyBMWsTC.txt +0 -1882
  155. package/.code/agents/941/exec-call_GuGHRx7NNXWIDAnxUG2NEWPa.txt +0 -2594
  156. package/.code/agents/94a0ddf3-a304-4ec3-913e-3cceef509948/error.txt +0 -1
  157. package/.code/agents/95d9fbab-19a2-48af-83f9-c792566a347f/error.txt +0 -1
  158. package/.code/agents/b0098cb8-cb32-4ada-9bc4-37c587518896/result.txt +0 -170
  159. package/.code/agents/b4fe59a4-81df-42e2-a112-0153e504faca/error.txt +0 -1
  160. package/.code/agents/bf4ce152-f623-49d7-aa52-c18631625c3c/error.txt +0 -3
  161. package/.code/agents/d7d1db75-d7eb-468e-adea-4ef4d916d187/status.txt +0 -1
  162. package/.code/agents/e2baa9c8-bac3-49e3-a39d-024333e6a990/status.txt +0 -1
  163. package/.code/agents/e2c752b7-711d-423a-af57-f53c809deb84/result.txt +0 -160
  164. package/.code/agents/e350b8c3-8483-408c-b2bb-94515f492a11/error.txt +0 -3
  165. package/.code/agents/e63f9919-719f-4ad0-bccf-01b1a596e1e9/status.txt +0 -1
  166. package/.code/agents/e6601719-c31f-4a0e-8c71-d70787d0ab71/status.txt +0 -1
  167. package/.code/agents/e71695a8-3044-478d-8f12-ed13d02884c7/status.txt +0 -1
  168. package/.code/agents/f250b7ed-5bd5-4036-aa8c-ce63caee7d61/result.txt +0 -20
  169. package/.code/agents/f95b7464-3e25-4897-b153-c8dfd63fd605/error.txt +0 -5
  170. package/.code/agents/fa3c5ddf-cdf7-47a2-930a-b806c6363689/status.txt +0 -1
  171. package/AGENTS.md +0 -1
  172. package/NUL +0 -0
  173. package/package.json.tmp +0 -105
  174. package/src/__tests__/delta.performance.test.ts +0 -80
  175. package/src/__tests__/workflows.e2e.test.ts +0 -1702
  176. package/temp-recon.ts +0 -126
  177. package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_09-04-53.json +0 -23
  178. package/test-exports/ynab_account_e9ddc2a6_minimal_1items_2025-11-19_10-37-42.json +0 -23
  179. package/test-exports/ynab_account_e9ddc2a6_minimal_4items_2025-11-19_09-02-09.json +0 -44
  180. package/test-exports/ynab_account_e9ddc2a6_minimal_6items_2025-11-19_10-37-52.json +0 -58
  181. package/test-exports/ynab_since_2025-10-16_account_53298e13_238items_2025-11-28_13-46-20.json +0 -3662
  182. 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
- }