{"openapi":"3.0.1","info":{"title":"FinGuide API","version":"v1"},"servers":[{"url":"https://finguide.les13.tech/finguide-api","description":"Generated server url"}],"paths":{"/api/v1/plans/current":{"get":{"tags":["plan-read-controller"],"operationId":"currentPlan","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]},"put":{"tags":["plan-management-controller"],"operationId":"switchCurrent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrentPlanRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/scenarios":{"get":{"tags":["scenario-controller"],"operationId":"scenarios","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["scenario-controller"],"operationId":"createScenario","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRequest"}}},"required":true},"responses":{"201":{"description":"Scenario was created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/scenarios/compare":{"post":{"tags":["scenario-controller"],"operationId":"compare","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompareRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans":{"get":{"tags":["plan-management-controller"],"operationId":"plans","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["plan-management-controller"],"operationId":"createPlan","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanNameRequest"}}},"required":true},"responses":{"201":{"description":"Plan created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/tracker/entries":{"get":{"tags":["financial-item-controller"],"operationId":"operationJournal","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"year","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"month","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["financial-item-controller"],"operationId":"createOperationJournalEntry","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationJournalEntryRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/incomes":{"get":{"tags":["financial-item-controller"],"operationId":"incomes","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["financial-item-controller"],"operationId":"createIncome","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncomeRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/goals":{"get":{"tags":["financial-item-controller"],"operationId":"goals","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["financial-item-controller"],"operationId":"createGoal","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/goals/reorder":{"post":{"tags":["financial-item-controller"],"operationId":"reorderGoals","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalReorderRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/expenses":{"get":{"tags":["financial-item-controller"],"operationId":"expenses","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["financial-item-controller"],"operationId":"createExpense","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpenseRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/copy":{"post":{"tags":["plan-management-controller"],"operationId":"copyPlan","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanNameRequest"}}},"required":true},"responses":{"201":{"description":"Plan copied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/contributions":{"get":{"tags":["financial-item-controller"],"operationId":"contributions","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"deprecated":true,"security":[{"bearerAuth":[]}]},"post":{"tags":["financial-item-controller"],"operationId":"createContribution","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContributionRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"deprecated":true,"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/calendar/monthly-tracker":{"get":{"tags":["financial-item-controller"],"operationId":"monthlyTracker","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"year","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]},"post":{"tags":["financial-item-controller"],"operationId":"upsertMonthlyTracker","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonthlyTrackerRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found"},"400":{"description":"Validation failed"}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/budget/envelopes/autogenerate":{"post":{"tags":["financial-item-controller"],"operationId":"autogenerateBudgetEnvelopes","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/auth/register":{"post":{"tags":["registration-controller"],"operationId":"register","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationRequest"}}},"required":true},"responses":{"201":{"description":"User registered in Keycloak","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}}}},"/api/v1/auth/password/forgot":{"post":{"tags":["registration-controller"],"operationId":"forgotPassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetRequest"}}},"required":true},"responses":{"202":{"description":"Password reset email accepted"}}}},"/api/v1/scenarios/{scenarioId}":{"get":{"tags":["scenario-controller"],"operationId":"scenario","parameters":[{"name":"scenarioId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]},"delete":{"tags":["scenario-controller"],"operationId":"deleteScenario","parameters":[{"name":"scenarioId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Scenario was deleted"}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["scenario-controller"],"operationId":"updateScenario","parameters":[{"name":"scenarioId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/tracker/entries/{entryId}":{"delete":{"tags":["financial-item-controller"],"operationId":"deleteOperationJournalEntry","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"entryId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found"},"400":{"description":"Validation failed"}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["financial-item-controller"],"operationId":"updateOperationJournalEntry","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"entryId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationJournalEntryRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/pension":{"get":{"tags":["plan-read-controller"],"operationId":"pension","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["plan-read-controller"],"operationId":"updatePension","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PensionSettings"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/incomes/{id}":{"get":{"tags":["financial-item-controller"],"operationId":"income","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]},"delete":{"tags":["financial-item-controller"],"operationId":"deleteIncome","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found"},"400":{"description":"Validation failed"}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["financial-item-controller"],"operationId":"updateIncome","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncomeRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/goals/{id}":{"get":{"tags":["financial-item-controller"],"operationId":"goal","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]},"delete":{"tags":["financial-item-controller"],"operationId":"deleteGoal","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found"},"400":{"description":"Validation failed"}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["financial-item-controller"],"operationId":"updateGoal","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/expenses/{id}":{"get":{"tags":["financial-item-controller"],"operationId":"expense","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]},"delete":{"tags":["financial-item-controller"],"operationId":"deleteExpense","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found"},"400":{"description":"Validation failed"}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["financial-item-controller"],"operationId":"updateExpense","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpenseRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/contributions/{id}":{"get":{"tags":["financial-item-controller"],"operationId":"contribution","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"deprecated":true,"security":[{"bearerAuth":[]}]},"delete":{"tags":["financial-item-controller"],"operationId":"deleteContribution","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found"},"400":{"description":"Validation failed"}},"deprecated":true,"security":[{"bearerAuth":[]}]},"patch":{"tags":["financial-item-controller"],"operationId":"updateContribution","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContributionRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"deprecated":true,"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/budget":{"get":{"tags":["financial-item-controller"],"operationId":"budget","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["financial-item-controller"],"operationId":"updateBudget","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetRequest"}}},"required":true},"responses":{"404":{"description":"Resource was not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}},"400":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/analytics/assumptions":{"get":{"tags":["plan-read-controller"],"operationId":"assumptions","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]},"patch":{"tags":["plan-read-controller"],"operationId":"updateAssumptions","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelAssumptions"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/pension/projection":{"get":{"tags":["plan-read-controller"],"operationId":"pensionProjection","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/dashboard":{"get":{"tags":["plan-read-controller"],"operationId":"dashboard","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/analytics/projection":{"get":{"tags":["plan-read-controller"],"operationId":"projection","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"years","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":30}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/analytics/health":{"get":{"tags":["plan-read-controller"],"operationId":"health","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/analytics/cashflow":{"get":{"tags":["plan-read-controller"],"operationId":"cashflow","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"years","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/analytics/cashflow/monthly":{"get":{"tags":["plan-read-controller"],"operationId":"monthlyCashflow","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/plans/{planId}/analytics/balance/current":{"get":{"tags":["plan-read-controller"],"operationId":"currentBalance","parameters":[{"name":"planId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/me":{"get":{"tags":["user-profile-controller"],"operationId":"me","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1/":{"get":{"tags":["plan-read-controller"],"operationId":"apiRoot","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}},"/api/v1":{"get":{"tags":["plan-read-controller"],"operationId":"apiRoot_1","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiEnvelopeMapStringObject"}}}}},"security":[{"bearerAuth":[]}]}}},"components":{"schemas":{"CurrentPlanRequest":{"type":"object","properties":{"planId":{"type":"string","format":"uuid"}}},"ApiEnvelopeMapStringObject":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{"type":"object"}}}},"AdjustmentsRequest":{"type":"object","properties":{"incomeAdjPct":{"type":"number"},"expenseAdjPct":{"type":"number"},"returnAdjPct":{"type":"number"},"inflationAdjPct":{"type":"number"},"retirementAgeShift":{"type":"integer","format":"int32"},"goalsCostAdjPct":{"type":"number"}}},"ScenarioRequest":{"type":"object","properties":{"name":{"type":"string"},"emoji":{"type":"string"},"description":{"type":"string"},"adjustments":{"$ref":"#/components/schemas/AdjustmentsRequest"}}},"CompareRequest":{"type":"object","properties":{"scenarioIds":{"type":"array","items":{"type":"string"}}}},"PlanNameRequest":{"type":"object","properties":{"name":{"type":"string"}}},"OperationJournalEntryRequest":{"type":"object","properties":{"date":{"type":"string"},"title":{"type":"string"},"amount":{"type":"number"},"type":{"type":"string"},"status":{"type":"string"}}},"IncomeRequest":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"amount":{"type":"number"},"currency":{"type":"string"},"frequency":{"type":"string"},"growthType":{"type":"string"},"growthPct":{"type":"number"},"growthSchedule":{"type":"array","items":{"$ref":"#/components/schemas/YearRatePoint"}},"continueAfterRetirement":{"type":"boolean"},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"}},"description":"Income create/patch request. For PATCH, omitted fields keep current values; nullable fields set to null are treated as unchanged in the current H2 implementation."},"YearRatePoint":{"type":"object","properties":{"year":{"type":"integer","format":"int32"},"ratePct":{"type":"number"}}},"GoalRequest":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"currentCost":{"type":"number"},"savedAmount":{"type":"number"},"currency":{"type":"string"},"targetYear":{"minimum":2024,"type":"integer","description":"Target year, aligned with the public OpenAPI contract minimum.","format":"int32"},"targetMonth":{"maximum":12,"minimum":1,"type":"integer","description":"Target month. Defaults to December when omitted.","format":"int32"},"type":{"type":"string"},"growthType":{"type":"string"},"growthPct":{"type":"number"},"indexLabel":{"type":"string"},"priority":{"type":"integer","format":"int32"}},"description":"Goal create/patch request. For PATCH, omitted fields keep current values; nullable fields set to null are treated as unchanged in the current H2 implementation."},"GoalReorderRequest":{"type":"object","properties":{"goalIds":{"type":"array","items":{"type":"string","format":"uuid"}}}},"ApiEnvelopeObject":{"type":"object","properties":{"data":{"type":"object"}}},"ExpenseRequest":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"amount":{"type":"number"},"currency":{"type":"string"},"frequency":{"type":"string"},"growthType":{"type":"string"},"growthPct":{"type":"number"},"growthSchedule":{"type":"array","items":{"$ref":"#/components/schemas/YearRatePoint"}},"growthLabel":{"type":"string"},"budgetClass":{"type":"string"},"startDate":{"type":"string","format":"date"},"endDate":{"type":"string","format":"date"}},"description":"Expense create/patch request. For PATCH, omitted fields keep current values; nullable fields set to null are treated as unchanged in the current H2 implementation."},"ContributionRequest":{"type":"object","properties":{"goalId":{"type":"string","format":"uuid"},"amount":{"type":"number"},"currency":{"type":"string"},"date":{"type":"string","format":"date"},"note":{"type":"string"}}},"MonthlyTrackerRequest":{"type":"object","properties":{"month":{"type":"string"},"status":{"type":"string"},"amount":{"type":"number"},"note":{"type":"string"}}},"RegistrationRequest":{"required":["email","firstName","lastName","password"],"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"email":{"type":"string"},"password":{"maxLength":2147483647,"minLength":8,"type":"string"}}},"PasswordResetRequest":{"required":["email"],"type":"object","properties":{"email":{"type":"string"}}},"PensionSettings":{"type":"object","properties":{"planId":{"type":"string","format":"uuid"},"currentAge":{"type":"integer","format":"int32"},"retirementAge":{"type":"integer","format":"int32"},"monthlyExpenses":{"type":"number"},"desiredMonthlyExpensesCurrentPrices":{"type":"number"},"currency":{"type":"string"},"expectedReturnPct":{"type":"number"},"inflationPct":{"type":"number"},"withdrawalStrategy":{"type":"string","enum":["preserve_capital","spend_down_30y"]},"statePensionEnabled":{"type":"boolean"},"statePensionMonthly":{"type":"number"}}},"BudgetRequest":{"type":"object","properties":{"method":{"type":"string"},"envelopes":{"type":"array","items":{"$ref":"#/components/schemas/EnvelopeRequest"}},"classifications":{"type":"object","additionalProperties":{"type":"string"}}}},"EnvelopeRequest":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"limit":{"type":"number"},"icon":{"type":"string"},"color":{"type":"string"}}},"ModelAssumptions":{"type":"object","properties":{"startYear":{"type":"integer","format":"int32"},"projectionEndYear":{"type":"integer","format":"int32"},"horizonYears":{"type":"integer","format":"int32"},"birthYear":{"type":"integer","format":"int32"},"monthsPerYear":{"type":"integer","format":"int32"},"currency":{"type":"string"},"initialCapital":{"type":"number"},"investmentReturnPct":{"type":"number"},"inflationSchedule":{"type":"array","items":{"$ref":"#/components/schemas/YearRatePoint"}},"sourceModel":{"type":"string"}}}},"securitySchemes":{"bearerAuth":{"type":"http","description":"Keycloak OIDC access token","scheme":"bearer","bearerFormat":"JWT"}}}}