{"arazzo":"1.0.0","info":{"title":"Money Manager — Common workflows","summary":"Reusable multi-step recipes for tracking finances via the API.","description":"These workflows are written for LLM agents and orchestration tools (n8n, Zapier, Make). They reference operations defined in the OpenAPI document and can be replayed deterministically with the right inputs.","version":"1.0.0"},"sourceDescriptions":[{"name":"moneyManager","url":"/api/openapi.json","type":"openapi"}],"workflows":[{"workflowId":"registerExpenseFromText","summary":"Register an expense given a free-text description","description":"Given a natural-language description (e.g. 'gasolina 500'), the agent infers wallet & category, then creates the transaction. Idempotent via the Idempotency-Key header.","inputs":{"type":"object","properties":{"description":{"type":"string"},"amount":{"type":"number"},"date":{"type":"string","format":"date"},"preferredWalletName":{"type":"string"},"preferredCategoryName":{"type":"string"}},"required":["description","amount"]},"steps":[{"stepId":"loadContext","description":"Pull current workspace context (wallets, categories, default currency).","operationId":"agentGetContext","successCriteria":[{"condition":"$statusCode == 200"}],"outputs":{"context":"$response.body"}},{"stepId":"createExpense","description":"Create the transaction. The agent picks a wallet & category from context.","operationId":"createTransaction","requestBody":{"contentType":"application/json","payload":{"type":"expense","amount":"$inputs.amount","date":"$inputs.date","concept":"$inputs.description","walletId":"$steps.loadContext.outputs.context.wallets[0].id","categoryId":"$steps.loadContext.outputs.context.categories[0].id"}},"successCriteria":[{"condition":"$statusCode == 200"}],"outputs":{"transactionId":"$response.body.transaction.id"}}],"outputs":{"transactionId":"$steps.createExpense.outputs.transactionId"}},{"workflowId":"monthlyReportEmail","summary":"Generate a monthly report PDF and email it to the owner","description":"Builds the PDF from `/api/reports?format=pdf` and posts to a webhook for email delivery.","inputs":{"type":"object","properties":{"month":{"type":"string","description":"YYYY-MM"}},"required":["month"]},"steps":[{"stepId":"buildPdf","operationId":"listReports","parameters":[{"name":"from","in":"query","value":"$inputs.month-01"},{"name":"to","in":"query","value":"$inputs.month-31"},{"name":"format","in":"query","value":"pdf"}],"successCriteria":[{"condition":"$statusCode == 200"}],"outputs":{"url":"$response.body.downloadUrl"}}],"outputs":{"url":"$steps.buildPdf.outputs.url"}},{"workflowId":"topUpGoalFromWallet","summary":"Move funds from a wallet into a savings goal","description":"Reads the goal + wallet, then deposits the requested amount.","inputs":{"type":"object","properties":{"goalId":{"type":"string","format":"uuid"},"walletId":{"type":"string","format":"uuid"},"amount":{"type":"number"}},"required":["goalId","walletId","amount"]},"steps":[{"stepId":"deposit","operationId":"depositGoals","parameters":[{"name":"id","in":"path","value":"$inputs.goalId"}],"requestBody":{"contentType":"application/json","payload":{"amount":"$inputs.amount","walletId":"$inputs.walletId"}},"successCriteria":[{"condition":"$statusCode == 200"}],"outputs":{"goal":"$response.body.goal"}}],"outputs":{"goal":"$steps.deposit.outputs.goal"}}]}