{"openapi":"3.1.0","info":{"title":"Securo","version":"0.1.0"},"paths":{"/api/auth/login":{"post":{"tags":["auth"],"summary":"Login","operationId":"login_api_auth_login_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_api_auth_login_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["auth"],"summary":"Logout","operationId":"logout_api_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/2fa/setup":{"post":{"tags":["auth"],"summary":"Setup 2Fa","operationId":"setup_2fa_api_auth_2fa_setup_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorSetupResponse"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/2fa/enable":{"post":{"tags":["auth"],"summary":"Enable 2Fa","operationId":"enable_2fa_api_auth_2fa_enable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorEnableRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/2fa/disable":{"post":{"tags":["auth"],"summary":"Disable 2Fa","operationId":"disable_2fa_api_auth_2fa_disable_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorDisableRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/2fa/verify":{"post":{"tags":["auth"],"summary":"Verify 2Fa","operationId":"verify_2fa_api_auth_2fa_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TwoFactorVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkeys":{"get":{"tags":["auth"],"summary":"List Passkeys","operationId":"list_passkeys_api_auth_passkeys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PasskeyRead"},"type":"array","title":"Response List Passkeys Api Auth Passkeys Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/passkeys/register/options":{"post":{"tags":["auth"],"summary":"Passkey Registration Options","operationId":"passkey_registration_options_api_auth_passkeys_register_options_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyRegisterOptionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyOptionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/passkeys/register/verify":{"post":{"tags":["auth"],"summary":"Verify Passkey Registration","operationId":"verify_passkey_registration_api_auth_passkeys_register_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyRegisterVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/auth/passkeys/{passkey_id}":{"delete":{"tags":["auth"],"summary":"Delete Passkey","operationId":"delete_passkey_api_auth_passkeys__passkey_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"passkey_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Passkey Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkeys/authenticate/options":{"post":{"tags":["auth"],"summary":"Passkey Authentication Options","operationId":"passkey_authentication_options_api_auth_passkeys_authenticate_options_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyAuthenticateOptionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyOptionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkeys/authenticate/verify":{"post":{"tags":["auth"],"summary":"Verify Passkey Authentication","operationId":"verify_passkey_authentication_api_auth_passkeys_authenticate_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyAuthenticateVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkeys/2fa/options":{"post":{"tags":["auth"],"summary":"Passkey Second Factor Options","operationId":"passkey_second_factor_options_api_auth_passkeys_2fa_options_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeySecondFactorOptionsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeyOptionsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/passkeys/2fa/verify":{"post":{"tags":["auth"],"summary":"Verify Passkey Second Factor","operationId":"verify_passkey_second_factor_api_auth_passkeys_2fa_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasskeySecondFactorVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/oidc/config":{"get":{"tags":["auth"],"summary":"Oidc Config","operationId":"oidc_config_api_auth_oidc_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OIDCConfigResponse"}}}}}}},"/api/auth/oidc/login":{"get":{"tags":["auth"],"summary":"Oidc Login","operationId":"oidc_login_api_auth_oidc_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/oidc/callback":{"get":{"tags":["auth"],"summary":"Oidc Callback","operationId":"oidc_callback_api_auth_oidc_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/register":{"post":{"tags":["auth"],"summary":"Register:Register","operationId":"register_register_api_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"},"examples":{"REGISTER_USER_ALREADY_EXISTS":{"summary":"A user with this email already exists.","value":{"detail":"REGISTER_USER_ALREADY_EXISTS"}},"REGISTER_INVALID_PASSWORD":{"summary":"Password validation failed.","value":{"detail":{"code":"REGISTER_INVALID_PASSWORD","reason":"Password should beat least 3 characters"}}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/forgot-password":{"post":{"tags":["auth"],"summary":"Reset:Forgot Password","operationId":"reset_forgot_password_api_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_reset_forgot_password_api_auth_forgot_password_post"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/reset-password":{"post":{"tags":["auth"],"summary":"Reset:Reset Password","operationId":"reset_reset_password_api_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_reset_reset_password_api_auth_reset_password_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"},"examples":{"RESET_PASSWORD_BAD_TOKEN":{"summary":"Bad or expired token.","value":{"detail":"RESET_PASSWORD_BAD_TOKEN"}},"RESET_PASSWORD_INVALID_PASSWORD":{"summary":"Password validation failed.","value":{"detail":{"code":"RESET_PASSWORD_INVALID_PASSWORD","reason":"Password should be at least 3 characters"}}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/lookup":{"get":{"tags":["users"],"summary":"Lookup User By Email","operationId":"lookup_user_by_email_api_users_lookup_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","description":"Exact email to look up","format":"email","title":"Email"},"description":"Exact email to look up"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserLookupResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/users/directory":{"get":{"tags":["users"],"summary":"List Users Directory","description":"List every user on the instance — for the member-picker dropdown.\n\nSingle-tenant assumption: scope to org once multi-tenancy lands.","operationId":"list_users_directory_api_users_directory_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UserLookupResult"},"type":"array","title":"Response List Users Directory Api Users Directory Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/users/me":{"get":{"tags":["users"],"summary":"Users:Current User","operationId":"users_current_user_api_users_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"401":{"description":"Missing token or inactive user."}},"security":[{"OAuth2PasswordBearer":[]}]},"patch":{"tags":["users"],"summary":"Users:Patch Current User","operationId":"users_patch_current_user_api_users_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"401":{"description":"Missing token or inactive user."},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorModel"},"examples":{"UPDATE_USER_EMAIL_ALREADY_EXISTS":{"summary":"A user with this email already exists.","value":{"detail":"UPDATE_USER_EMAIL_ALREADY_EXISTS"}},"UPDATE_USER_INVALID_PASSWORD":{"summary":"Password validation failed.","value":{"detail":{"code":"UPDATE_USER_INVALID_PASSWORD","reason":"Password should beat least 3 characters"}}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/users/{id}":{"get":{"tags":["users"],"summary":"Users:User","operationId":"users_user_api_users__id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"401":{"description":"Missing token or inactive user."},"403":{"description":"Not a superuser."},"404":{"description":"The user does not exist."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["users"],"summary":"Users:Patch User","operationId":"users_patch_user_api_users__id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserRead"}}}},"401":{"description":"Missing token or inactive user."},"403":{"description":"Not a superuser."},"404":{"description":"The user does not exist."},"400":{"content":{"application/json":{"examples":{"UPDATE_USER_EMAIL_ALREADY_EXISTS":{"summary":"A user with this email already exists.","value":{"detail":"UPDATE_USER_EMAIL_ALREADY_EXISTS"}},"UPDATE_USER_INVALID_PASSWORD":{"summary":"Password validation failed.","value":{"detail":{"code":"UPDATE_USER_INVALID_PASSWORD","reason":"Password should beat least 3 characters"}}}},"schema":{"$ref":"#/components/schemas/ErrorModel"}}},"description":"Bad Request"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["users"],"summary":"Users:Delete User","operationId":"users_delete_user_api_users__id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"204":{"description":"Successful Response"},"401":{"description":"Missing token or inactive user."},"403":{"description":"Not a superuser."},"404":{"description":"The user does not exist."},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/categories":{"get":{"tags":["categories"],"summary":"List Categories","operationId":"list_categories_api_categories_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryRead"},"title":"Response List Categories Api Categories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["categories"],"summary":"Create Category","operationId":"create_category_api_categories_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/categories/{category_id}":{"patch":{"tags":["categories"],"summary":"Update Category","operationId":"update_category_api_categories__category_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["categories"],"summary":"Delete Category","operationId":"delete_category_api_categories__category_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Category Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/category-groups":{"get":{"tags":["category-groups"],"summary":"List Groups","operationId":"list_groups_api_category_groups_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryGroupRead"},"title":"Response List Groups Api Category Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["category-groups"],"summary":"Create Group","operationId":"create_group_api_category_groups_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryGroupCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/category-groups/{group_id}":{"patch":{"tags":["category-groups"],"summary":"Update Group","operationId":"update_group_api_category_groups__group_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryGroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["category-groups"],"summary":"Delete Group","operationId":"delete_group_api_category_groups__group_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rules":{"get":{"tags":["rules"],"summary":"List Rules","operationId":"list_rules_api_rules_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RuleRead"},"title":"Response List Rules Api Rules Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["rules"],"summary":"Create Rule","operationId":"create_rule_api_rules_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rules/export":{"get":{"tags":["rules"],"summary":"Export Rules","operationId":"export_rules_api_rules_export_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rules/import":{"post":{"tags":["rules"],"summary":"Import Rules","operationId":"import_rules_api_rules_import_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleImportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleImportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rules/{rule_id}":{"patch":{"tags":["rules"],"summary":"Update Rule","operationId":"update_rule_api_rules__rule_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RuleMutationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["rules"],"summary":"Delete Rule","operationId":"delete_rule_api_rules__rule_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rules/packs":{"get":{"tags":["rules"],"summary":"List Rule Packs","description":"List available country-specific rule packs with installed status.","operationId":"list_rule_packs_api_rules_packs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Rule Packs Api Rules Packs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rules/packs/{pack_code}/install":{"post":{"tags":["rules"],"summary":"Install Rule Pack","description":"Install a country-specific rule pack.\n\n`create_missing_categories=true` opts into seeding any default\ncategories the pack needs that the user doesn't already have.","operationId":"install_rule_pack_api_rules_packs__pack_code__install_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"pack_code","in":"path","required":true,"schema":{"type":"string","title":"Pack Code"}},{"name":"create_missing_categories","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Create Missing Categories"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Install Rule Pack Api Rules Packs  Pack Code  Install Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/rules/apply-all":{"post":{"tags":["rules"],"summary":"Apply All Rules","description":"Re-apply all active rules to all existing transactions.","operationId":"apply_all_rules_api_rules_apply_all_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Apply All Rules Api Rules Apply All Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions":{"get":{"tags":["transactions"],"summary":"List Transactions","operationId":"list_transactions_api_transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"}},{"name":"category_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Category Ids"}},{"name":"payee_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Payee Id"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"To"}},{"name":"bill_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter by credit-card bill (issue #92); takes precedence over from/to","title":"Bill Id"},"description":"Filter by credit-card bill (issue #92); takes precedence over from/to"},{"name":"group_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Filter to transactions split through this group; widens visibility for linked members","title":"Group Id"},"description":"Filter to transactions split through this group; widens visibility for linked members"},{"name":"unbilled_only","in":"query","required":false,"schema":{"type":"boolean","description":"Cycle-math fallback only: exclude txs already linked to any bill (used for in-progress CC cycles)","default":false,"title":"Unbilled Only"},"description":"Cycle-math fallback only: exclude txs already linked to any bill (used for in-progress CC cycles)"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"uncategorized","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Uncategorized"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"include_opening_balance","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Opening Balance"}},{"name":"exclude_transfers","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Exclude Transfers"}},{"name":"user_pnl_only","in":"query","required":false,"schema":{"type":"boolean","description":"Return only rows that count toward dashboard/user income/expense totals","default":false,"title":"User Pnl Only"},"description":"Return only rows that count toward dashboard/user income/expense totals"},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tags"}},{"name":"min_amount","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Filter to transactions with absolute amount >= this value (primary currency).","title":"Min Amount"},"description":"Filter to transactions with absolute amount >= this value (primary currency)."},{"name":"max_amount","in":"query","required":false,"schema":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Filter to transactions with absolute amount <= this value (primary currency).","title":"Max Amount"},"description":"Filter to transactions with absolute amount <= this value (primary currency)."},{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Column to sort by (date|amount|description|payee|category|account|type|status). Default: date desc.","title":"Sort By"},"description":"Column to sort by (date|amount|description|payee|category|account|type|status). Default: date desc."},{"name":"sort_dir","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Sort Dir"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedTransactions"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["transactions"],"summary":"Create Transaction","operationId":"create_transaction_api_transactions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/calendar":{"get":{"tags":["transactions"],"summary":"Transaction Calendar","operationId":"transaction_calendar_api_transactions_calendar_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Month"}},{"name":"account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionCalendarResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/export":{"get":{"tags":["transactions"],"summary":"Export Transactions","operationId":"export_transactions_api_transactions_export_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"category_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"}},{"name":"category_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Category Ids"}},{"name":"payee_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Payee Id"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"To"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"uncategorized","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Uncategorized"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"tags","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"title":"Tags"}},{"name":"transaction_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"description":"If set, exports exactly these rows (scoped to the workspace); other filters are ignored.","title":"Transaction Ids"},"description":"If set, exports exactly these rows (scoped to the workspace); other filters are ignored."},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/bulk-categorize":{"patch":{"tags":["transactions"],"summary":"Bulk Categorize","operationId":"bulk_categorize_api_transactions_bulk_categorize_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkCategorizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/bulk-add-tags":{"patch":{"tags":["transactions"],"summary":"Bulk Add Tags","operationId":"bulk_add_tags_api_transactions_bulk_add_tags_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkTagsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/bulk-remove-tags":{"patch":{"tags":["transactions"],"summary":"Bulk Remove Tags","operationId":"bulk_remove_tags_api_transactions_bulk_remove_tags_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkTagsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/bulk-add-to-group":{"patch":{"tags":["transactions"],"summary":"Bulk Add To Group","operationId":"bulk_add_to_group_api_transactions_bulk_add_to_group_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkAddToGroupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/transfer":{"post":{"tags":["transactions"],"summary":"Create Transfer","operationId":"create_transfer_api_transactions_transfer_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/link-transfer":{"post":{"tags":["transactions"],"summary":"Link Transfer","description":"Link two existing transactions as an inter-account transfer pair.","operationId":"link_transfer_api_transactions_link_transfer_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkTransferRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/{transaction_id}/create-counterpart":{"post":{"tags":["transactions"],"summary":"Create Counterpart","description":"Mark a transaction as a transfer by auto-creating its counterpart in\nanother (typically manual) account.","operationId":"create_counterpart_api_transactions__transaction_id__create_counterpart_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCounterpartRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/{transaction_id}/transfer-candidates":{"get":{"tags":["transactions"],"summary":"Get Transfer Candidates","description":"Return ranked candidate transactions to link as a transfer counterpart.","operationId":"get_transfer_candidates_api_transactions__transaction_id__transfer_candidates_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}},{"name":"window_days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Window Days"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransactionRead"},"title":"Response Get Transfer Candidates Api Transactions  Transaction Id  Transfer Candidates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/{transaction_id}":{"get":{"tags":["transactions"],"summary":"Get Transaction","operationId":"get_transaction_api_transactions__transaction_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["transactions"],"summary":"Update Transaction","operationId":"update_transaction_api_transactions__transaction_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["transactions"],"summary":"Delete Transaction","operationId":"delete_transaction_api_transactions__transaction_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/{transaction_id}/ignore":{"patch":{"tags":["transactions"],"summary":"Toggle Ignore Transaction","operationId":"toggle_ignore_transaction_api_transactions__transaction_id__ignore_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/{transaction_id}/unlink-recurring":{"patch":{"tags":["transactions"],"summary":"Unlink Recurring Transaction","operationId":"unlink_recurring_transaction_api_transactions__transaction_id__unlink_recurring_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/import/preview":{"post":{"tags":["import"],"summary":"Preview Import","operationId":"preview_import_api_transactions_import_preview_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_preview_import_api_transactions_import_preview_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionImportPreview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/import":{"post":{"tags":["import"],"summary":"Import Transactions","operationId":"import_transactions_api_transactions_import_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionImportRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/import-logs":{"get":{"tags":["import-logs"],"summary":"List Import Logs","operationId":"list_import_logs_api_import_logs_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ImportLogRead"},"title":"Response List Import Logs Api Import Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/import-logs/{import_log_id}":{"delete":{"tags":["import-logs"],"summary":"Delete Import Log","operationId":"delete_import_log_api_import_logs__import_log_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"import_log_id","in":"path","required":true,"schema":{"type":"string","title":"Import Log Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts":{"get":{"tags":["accounts"],"summary":"List Accounts","operationId":"list_accounts_api_accounts_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"include_closed","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Closed"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AccountRead"},"title":"Response List Accounts Api Accounts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["accounts"],"summary":"Create Account","operationId":"create_account_api_accounts_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/{account_id}/summary":{"get":{"tags":["accounts"],"summary":"Get Account Summary","operationId":"get_account_summary_api_accounts__account_id__summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"From"},"description":"YYYY-MM-DD"},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"To"},"description":"YYYY-MM-DD"},{"name":"bill_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Aggregate by bill_id (issue #92); takes precedence over from/to","title":"Bill Id"},"description":"Aggregate by bill_id (issue #92); takes precedence over from/to"},{"name":"unbilled_only","in":"query","required":false,"schema":{"type":"boolean","description":"Cycle-math fallback only: exclude txs already linked to any bill","default":false,"title":"Unbilled Only"},"description":"Cycle-math fallback only: exclude txs already linked to any bill"},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/{account_id}/balance-history":{"get":{"tags":["accounts"],"summary":"Get Account Balance History","operationId":"get_account_balance_history_api_accounts__account_id__balance_history_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"From"},"description":"YYYY-MM-DD"},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD","title":"To"},"description":"YYYY-MM-DD"},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/{account_id}/bills":{"get":{"tags":["accounts"],"summary":"Get Account Bills","description":"List credit-card bills for an account, newest due_date first.\n\nReturns an empty list for non-CC accounts and for CC accounts that have\nno synced bills (provider doesn't expose them, or first sync hasn't\nhappened). Issue #92.","operationId":"get_account_bills_api_accounts__account_id__bills_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"description":"Max bills to return, newest due_date first","default":24,"title":"Limit"},"description":"Max bills to return, newest due_date first"},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CreditCardBillRead"},"title":"Response Get Account Bills Api Accounts  Account Id  Bills Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/{account_id}":{"get":{"tags":["accounts"],"summary":"Get Account","operationId":"get_account_api_accounts__account_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["accounts"],"summary":"Update Account","operationId":"update_account_api_accounts__account_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["accounts"],"summary":"Delete Account","operationId":"delete_account_api_accounts__account_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/{account_id}/close":{"post":{"tags":["accounts"],"summary":"Close Account","operationId":"close_account_api_accounts__account_id__close_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/accounts/{account_id}/reopen":{"post":{"tags":["accounts"],"summary":"Reopen Account","operationId":"reopen_account_api_accounts__account_id__reopen_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"account_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Account Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/providers":{"get":{"tags":["connections"],"summary":"Get Available Providers","description":"List all known open finance providers with configuration status.","operationId":"get_available_providers_api_connections_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/connections/connect-token":{"post":{"tags":["connections"],"summary":"Create Connect Token","description":"Create a connect token for widget-based bank connection flows.","operationId":"create_connect_token_api_connections_connect_token_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectTokenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections":{"get":{"tags":["connections"],"summary":"List Connections","operationId":"list_connections_api_connections_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BankConnectionRead"},"title":"Response List Connections Api Connections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/oauth/url":{"post":{"tags":["connections"],"summary":"Get Oauth Url","operationId":"get_oauth_url_api_connections_oauth_url_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthUrlRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/{provider}/institutions":{"get":{"tags":["connections"],"summary":"List Provider Institutions","operationId":"list_provider_institutions_api_connections__provider__institutions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","title":"Provider"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstitutionListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/oauth/callback":{"post":{"tags":["connections"],"summary":"Oauth Callback","operationId":"oauth_callback_api_connections_oauth_callback_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthCallbackRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankConnectionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/{connection_id}/oauth/reauth-url":{"post":{"tags":["connections"],"summary":"Get Reauth Url","operationId":"get_reauth_url_api_connections__connection_id__oauth_reauth_url_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReauthUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/{connection_id}/sync":{"post":{"tags":["connections"],"summary":"Sync Connection","operationId":"sync_connection_api_connections__connection_id__sync_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/{connection_id}/reconnect-token":{"post":{"tags":["connections"],"summary":"Get Reconnect Token","description":"Get a connect token for reconnecting an errored/expired connection.","operationId":"get_reconnect_token_api_connections__connection_id__reconnect_token_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconnectTokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/{connection_id}/settings":{"patch":{"tags":["connections"],"summary":"Update Settings","operationId":"update_settings_api_connections__connection_id__settings_patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankConnectionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/{connection_id}":{"delete":{"tags":["connections"],"summary":"Delete Connection","operationId":"delete_connection_api_connections__connection_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"connection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Connection Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/transfers/detect":{"post":{"tags":["connections"],"summary":"Detect Transfers","description":"One-time backfill scan: detect transfer pairs across all existing transactions in this workspace.","operationId":"detect_transfers_api_connections_transfers_detect_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/connections/transfers/{pair_id}":{"delete":{"tags":["connections"],"summary":"Unlink Transfer","description":"Manual unlink: remove a transfer pair link so both transactions are treated normally.","operationId":"unlink_transfer_api_connections_transfers__pair_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"pair_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Pair Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recurring-transactions":{"get":{"tags":["recurring-transactions"],"summary":"List Recurring Transactions","operationId":"list_recurring_transactions_api_recurring_transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RecurringTransactionRead"},"title":"Response List Recurring Transactions Api Recurring Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["recurring-transactions"],"summary":"Create Recurring Transaction","operationId":"create_recurring_transaction_api_recurring_transactions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringTransactionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringTransactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recurring-transactions/{recurring_id}":{"patch":{"tags":["recurring-transactions"],"summary":"Update Recurring Transaction","operationId":"update_recurring_transaction_api_recurring_transactions__recurring_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"recurring_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recurring Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringTransactionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringTransactionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["recurring-transactions"],"summary":"Delete Recurring Transaction","operationId":"delete_recurring_transaction_api_recurring_transactions__recurring_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"recurring_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Recurring Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/recurring-transactions/generate":{"post":{"tags":["recurring-transactions"],"summary":"Generate Recurring Transactions","operationId":"generate_recurring_transactions_api_recurring_transactions_generate_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/budgets":{"get":{"tags":["budgets"],"summary":"List Budgets","operationId":"list_budgets_api_budgets_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Month"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BudgetRead"},"title":"Response List Budgets Api Budgets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["budgets"],"summary":"Create Budget","operationId":"create_budget_api_budgets_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/budgets/{budget_id}":{"patch":{"tags":["budgets"],"summary":"Update Budget","operationId":"update_budget_api_budgets__budget_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"budget_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Budget Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["budgets"],"summary":"Delete Budget","operationId":"delete_budget_api_budgets__budget_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"budget_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Budget Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/budgets/comparison":{"get":{"tags":["budgets"],"summary":"Budget Comparison","operationId":"budget_comparison_api_budgets_comparison_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Month"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BudgetVsActual"},"title":"Response Budget Comparison Api Budgets Comparison Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/goals":{"get":{"tags":["goals"],"summary":"List Goals","operationId":"list_goals_api_goals_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GoalRead"},"title":"Response List Goals Api Goals Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["goals"],"summary":"Create Goal","operationId":"create_goal_api_goals_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/goals/summary":{"get":{"tags":["goals"],"summary":"Goal Summary","operationId":"goal_summary_api_goals_summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10,"minimum":1,"default":3,"title":"Limit"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GoalSummary"},"title":"Response Goal Summary Api Goals Summary Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/goals/{goal_id}":{"get":{"tags":["goals"],"summary":"Get Goal","operationId":"get_goal_api_goals__goal_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"goal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Goal Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["goals"],"summary":"Update Goal","operationId":"update_goal_api_goals__goal_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"goal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Goal Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoalRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["goals"],"summary":"Delete Goal","operationId":"delete_goal_api_goals__goal_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"goal_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Goal Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/groups":{"get":{"tags":["groups"],"summary":"List Groups","operationId":"list_groups_api_groups_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupRead"},"title":"Response List Groups Api Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["groups"],"summary":"Create Group","operationId":"create_group_api_groups_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/groups/{group_id}":{"get":{"tags":["groups"],"summary":"Get Group","operationId":"get_group_api_groups__group_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["groups"],"summary":"Update Group","operationId":"update_group_api_groups__group_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["groups"],"summary":"Delete Group","operationId":"delete_group_api_groups__group_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/groups/{group_id}/members":{"get":{"tags":["groups"],"summary":"List Members","operationId":"list_members_api_groups__group_id__members_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupMemberRead"},"title":"Response List Members Api Groups  Group Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["groups"],"summary":"Create Member","operationId":"create_member_api_groups__group_id__members_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMemberCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMemberRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/groups/{group_id}/members/{member_id}":{"patch":{"tags":["groups"],"summary":"Update Member","operationId":"update_member_api_groups__group_id__members__member_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMemberUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMemberRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["groups"],"summary":"Delete Member","operationId":"delete_member_api_groups__group_id__members__member_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"member_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/groups/{group_id}/transactions":{"get":{"tags":["groups"],"summary":"List Group Transactions","operationId":"list_group_transactions_api_groups__group_id__transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransactionRead"},"title":"Response List Group Transactions Api Groups  Group Id  Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/groups/{group_id}/balances":{"get":{"tags":["groups"],"summary":"Get Balances","operationId":"get_balances_api_groups__group_id__balances_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupBalances"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/groups/{group_id}/settlements":{"get":{"tags":["groups"],"summary":"List Settlements","operationId":"list_settlements_api_groups__group_id__settlements_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/GroupSettlementRead"},"title":"Response List Settlements Api Groups  Group Id  Settlements Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["groups"],"summary":"Create Settlement","operationId":"create_settlement_api_groups__group_id__settlements_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupSettlementCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupSettlementRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/groups/{group_id}/settlements/{settlement_id}":{"patch":{"tags":["groups"],"summary":"Update Settlement","operationId":"update_settlement_api_groups__group_id__settlements__settlement_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"settlement_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Settlement Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupSettlementUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupSettlementRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["groups"],"summary":"Delete Settlement","operationId":"delete_settlement_api_groups__group_id__settlements__settlement_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"settlement_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Settlement Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/market/search":{"get":{"tags":["assets"],"summary":"Market Search","description":"Autocomplete ticker symbols for the Add-Asset form.\n\nIntentionally thin — just proxies to the configured market-price\nprovider. Upstream errors turn into an empty list so the UI degrades\ngracefully (a user typing a query shouldn't ever see a 500).","operationId":"market_search_api_assets_market_search_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Ticker or company name","title":"Q"},"description":"Ticker or company name"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":300,"minimum":1,"default":15,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MarketSymbolMatch"},"title":"Response Market Search Api Assets Market Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/market/quote":{"get":{"tags":["assets"],"summary":"Market Quote","description":"Fetch a single live quote — used to preview value before saving an asset.","operationId":"market_quote_api_assets_market_quote_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":32,"title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketSymbolQuote"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/{asset_id}/refresh-price":{"post":{"tags":["assets"],"summary":"Refresh Asset Price","description":"Trigger an immediate price refresh for a single market-priced asset.\n\nMirrors what the scheduled daily task does for one asset — re-quotes\nthe ticker, updates ``last_price`` + ``last_price_at``, and upserts\ntoday's ``AssetValue``. Returns the refreshed asset with the same\nshape as the list endpoint (including ``current_value_primary``).","operationId":"refresh_asset_price_api_assets__asset_id__refresh_price_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets":{"get":{"tags":["assets"],"summary":"List Assets","operationId":"list_assets_api_assets_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetRead"},"title":"Response List Assets Api Assets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["assets"],"summary":"Create Asset","operationId":"create_asset_api_assets_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/portfolio-trend":{"get":{"tags":["assets"],"summary":"Portfolio Trend","operationId":"portfolio_trend_api_assets_portfolio_trend_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/transactions":{"get":{"tags":["assets"],"summary":"List Workspace Transactions","description":"All buy/sell transactions in the workspace — powers the Transactions tab.","operationId":"list_workspace_transactions_api_assets_transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Ticker"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(buy|sell)$"},{"type":"null"}],"title":"Kind"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":2000,"minimum":1,"default":500,"title":"Limit"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetTransactionRead"},"title":"Response List Workspace Transactions Api Assets Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/buy":{"post":{"tags":["assets"],"summary":"Buy Into Holding","description":"Record a buy, consolidating onto the existing ticker holding (in the\nchosen wallet) or creating a new market-priced one.","operationId":"buy_into_holding_api_assets_buy_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetBuyCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/{asset_id}/transactions":{"get":{"tags":["assets"],"summary":"List Asset Transactions","operationId":"list_asset_transactions_api_assets__asset_id__transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetTransactionRead"},"title":"Response List Asset Transactions Api Assets  Asset Id  Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["assets"],"summary":"Add Asset Transaction","operationId":"add_asset_transaction_api_assets__asset_id__transactions_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetTransactionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/transactions/{tx_id}":{"patch":{"tags":["assets"],"summary":"Update Asset Transaction","operationId":"update_asset_transaction_api_assets_transactions__tx_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tx_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tx Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetTransactionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["assets"],"summary":"Delete Asset Transaction","operationId":"delete_asset_transaction_api_assets_transactions__tx_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"tx_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Tx Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/{asset_id}":{"get":{"tags":["assets"],"summary":"Get Asset","operationId":"get_asset_api_assets__asset_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["assets"],"summary":"Update Asset","operationId":"update_asset_api_assets__asset_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"regenerate_growth","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Regenerate Growth"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["assets"],"summary":"Delete Asset","operationId":"delete_asset_api_assets__asset_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/{asset_id}/values":{"get":{"tags":["assets"],"summary":"List Asset Values","operationId":"list_asset_values_api_assets__asset_id__values_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetValueRead"},"title":"Response List Asset Values Api Assets  Asset Id  Values Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["assets"],"summary":"Add Asset Value","operationId":"add_asset_value_api_assets__asset_id__values_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetValueCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetValueRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/{asset_id}/value-trend":{"get":{"tags":["assets"],"summary":"Get Asset Value Trend","operationId":"get_asset_value_trend_api_assets__asset_id__value_trend_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":120,"minimum":1,"default":12,"title":"Months"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/assets/values/{value_id}":{"delete":{"tags":["assets"],"summary":"Delete Asset Value","operationId":"delete_asset_value_api_assets_values__value_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"value_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Value Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/asset-groups":{"get":{"tags":["asset-groups"],"summary":"List Groups","operationId":"list_groups_api_asset_groups_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AssetGroupRead"},"title":"Response List Groups Api Asset Groups Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["asset-groups"],"summary":"Create Group","operationId":"create_group_api_asset_groups_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetGroupCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/asset-groups/{group_id}":{"patch":{"tags":["asset-groups"],"summary":"Update Group","operationId":"update_group_api_asset_groups__group_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetGroupUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetGroupRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["asset-groups"],"summary":"Delete Group","operationId":"delete_group_api_asset_groups__group_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Group Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/collections":{"get":{"tags":["collections"],"summary":"List Collections","operationId":"list_collections_api_collections_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CollectionRead"},"title":"Response List Collections Api Collections Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["collections"],"summary":"Create Collection","operationId":"create_collection_api_collections_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/collections/{collection_id}":{"patch":{"tags":["collections"],"summary":"Update Collection","operationId":"update_collection_api_collections__collection_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["collections"],"summary":"Delete Collection","operationId":"delete_collection_api_collections__collection_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Collection Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/summary":{"get":{"tags":["dashboard"],"summary":"Get Summary","operationId":"get_summary_api_dashboard_summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Month"}},{"name":"balance_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Balance Date"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"asset_group_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Asset Group Ids"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/spending-by-category":{"get":{"tags":["dashboard"],"summary":"Get Spending By Category","operationId":"get_spending_by_category_api_dashboard_spending_by_category_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Month"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SpendingByCategory"},"title":"Response Get Spending By Category Api Dashboard Spending By Category Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/monthly-trend":{"get":{"tags":["dashboard"],"summary":"Get Monthly Trend","operationId":"get_monthly_trend_api_dashboard_monthly_trend_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":1,"default":6,"title":"Months"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MonthlyTrend"},"title":"Response Get Monthly Trend Api Dashboard Monthly Trend Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/balance-history":{"get":{"tags":["dashboard"],"summary":"Get Balance History","operationId":"get_balance_history_api_dashboard_balance_history_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Month"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceHistory"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dashboard/projected-transactions":{"get":{"tags":["dashboard"],"summary":"Get Projected Transactions","operationId":"get_projected_transactions_api_dashboard_projected_transactions_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Month"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProjectedTransaction"},"title":"Response Get Projected Transactions Api Dashboard Projected Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/net-worth":{"get":{"tags":["reports"],"summary":"Get Net Worth","operationId":"get_net_worth_api_reports_net_worth_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":12,"title":"Months"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","pattern":"^(daily|weekly|monthly|yearly)$","default":"monthly","title":"Interval"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"asset_group_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Asset Group Ids"}},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^ytd$"},{"type":"null"}],"title":"Period"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/income-expenses":{"get":{"tags":["reports"],"summary":"Get Income Expenses","description":"`days` overrides `months` with an exact rolling window ending today.","operationId":"get_income_expenses_api_reports_income_expenses_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":24,"minimum":1,"default":12,"title":"Months"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","pattern":"^(daily|weekly|monthly|yearly)$","default":"monthly","title":"Interval"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^ytd$"},{"type":"null"}],"title":"Period"}},{"name":"days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":730,"minimum":1},{"type":"null"}],"title":"Days"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/reports/cash-flow":{"get":{"tags":["reports"],"summary":"Get Cash Flow","operationId":"get_cash_flow_api_reports_cash_flow_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"months","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":1,"default":6,"title":"Months"}},{"name":"interval","in":"query","required":false,"schema":{"type":"string","pattern":"^(daily|weekly|monthly)$","default":"daily","title":"Interval"}},{"name":"baseline","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Baseline"}},{"name":"account_ids","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"type":"string","format":"uuid"}},{"type":"null"}],"title":"Account Ids"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/search":{"get":{"tags":["search"],"summary":"Global Search","description":"Global search across transactions, accounts, payees, categories, goals and assets.\n\nUsed by the command palette (Cmd/Ctrl+K). Returns a flat list of\ntyped hits limited to ``limit`` results per entity type.","operationId":"global_search_api_search_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","minLength":0,"maxLength":100,"default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"default":5,"title":"Limit"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/setup/status":{"get":{"tags":["setup"],"summary":"Get Setup Status","operationId":"get_setup_status_api_setup_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetupStatus"}}}}}}},"/api/setup/create-admin":{"post":{"tags":["setup"],"summary":"Create Admin","operationId":"create_admin_api_setup_create_admin_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdminRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/currencies":{"get":{"tags":["currencies"],"summary":"List Currencies","description":"Return the list of supported currencies configured for this instance.","operationId":"list_currencies_api_currencies_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/fx-rates/refresh":{"post":{"tags":["fx-rates"],"summary":"Refresh Rates","description":"Trigger immediate FX rate sync.","operationId":"refresh_rates_api_fx_rates_refresh_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/fx-rates/status":{"get":{"tags":["fx-rates"],"summary":"Rates Status","description":"Return last sync date and total stored rates.","operationId":"rates_status_api_fx_rates_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/export/backup":{"get":{"tags":["export"],"summary":"Backup","description":"Export every entity in the current workspace as a JSON zip.\n\nBackup is scoped to one workspace at a time — users with multiple\nworkspaces back each one up separately. AssetValue inherits its\nworkspace from its Asset and is filtered transitively.","operationId":"backup_api_export_backup_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/{transaction_id}/attachments":{"post":{"tags":["attachments"],"summary":"Upload Attachment","operationId":"upload_attachment_api_transactions__transaction_id__attachments_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_attachment_api_transactions__transaction_id__attachments_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["attachments"],"summary":"List Attachments","operationId":"list_attachments_api_transactions__transaction_id__attachments_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AttachmentRead"},"title":"Response List Attachments Api Transactions  Transaction Id  Attachments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/transactions/{transaction_id}/attachments/{attachment_id}":{"get":{"tags":["attachments"],"summary":"Download Attachment","operationId":"download_attachment_api_transactions__transaction_id__attachments__attachment_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Attachment Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["attachments"],"summary":"Rename Attachment","operationId":"rename_attachment_api_transactions__transaction_id__attachments__attachment_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Attachment Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentRename"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["attachments"],"summary":"Delete Attachment","operationId":"delete_attachment_api_transactions__transaction_id__attachments__attachment_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"transaction_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Transaction Id"}},{"name":"attachment_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Attachment Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payees":{"get":{"tags":["payees"],"summary":"List Payees","operationId":"list_payees_api_payees_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"is_favorite","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Favorite"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PayeeRead"},"title":"Response List Payees Api Payees Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["payees"],"summary":"Create Payee","operationId":"create_payee_api_payees_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayeeCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayeeRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payees/{payee_id}":{"get":{"tags":["payees"],"summary":"Get Payee","operationId":"get_payee_api_payees__payee_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"payee_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payee Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayeeRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["payees"],"summary":"Update Payee","operationId":"update_payee_api_payees__payee_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"payee_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payee Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayeeUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayeeRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["payees"],"summary":"Delete Payee","operationId":"delete_payee_api_payees__payee_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"payee_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payee Id"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payees/{payee_id}/summary":{"get":{"tags":["payees"],"summary":"Get Payee Summary","operationId":"get_payee_summary_api_payees__payee_id__summary_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"payee_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Payee Id"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"From"}},{"name":"to","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"To"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayeeSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/payees/merge":{"post":{"tags":["payees"],"summary":"Merge Payees","operationId":"merge_payees_api_payees_merge_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayeeMergeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/settings/attachments":{"get":{"tags":["settings"],"summary":"Get Attachment Settings","description":"Return attachment configuration for this instance.","operationId":"get_attachment_settings_api_settings_attachments_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/workspaces":{"get":{"tags":["workspaces"],"summary":"List My Workspaces","description":"Return every workspace the current user can access.\n\nUnions two sets:\n  - workspaces where the user has a `workspace_members` row (role\n    comes from that row)\n  - workspaces where `workspaces.managed_by_user_id` matches the\n    user but they have no membership (role = 'manager')\n\nA user who is both a member AND the external manager is reported\nwith their concrete membership role (not the virtual manager one)\nsince their explicit role is the more specific signal.","operationId":"list_my_workspaces_api_workspaces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WorkspaceRead"},"type":"array","title":"Response List My Workspaces Api Workspaces Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]},"post":{"tags":["workspaces"],"summary":"Create Workspace Endpoint","description":"Create a new workspace; the caller becomes its manager.\n\nUse case: a user provisioning a workspace they'll operate (either\nfor themselves as a second container, or on behalf of someone else\nwho'll be invited later as the day-to-day owner).","operationId":"create_workspace_endpoint_api_workspaces_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/workspaces/current":{"get":{"tags":["workspaces"],"summary":"Get Current Workspace","description":"Return the workspace resolved from X-Workspace-Id (or the default).","operationId":"get_current_workspace_api_workspaces_current_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspaces/{workspace_id}":{"patch":{"tags":["workspaces"],"summary":"Update Workspace","operationId":"update_workspace_api_workspaces__workspace_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspaces/{workspace_id}/members":{"get":{"tags":["workspaces"],"summary":"List Workspace Members","operationId":"list_workspace_members_api_workspaces__workspace_id__members_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberRead"},"title":"Response List Workspace Members Api Workspaces  Workspace Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workspaces"],"summary":"Invite Member","operationId":"invite_member_api_workspaces__workspace_id__members_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberInvite"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspaces/{workspace_id}/members/{member_user_id}":{"patch":{"tags":["workspaces"],"summary":"Change Member Role","operationId":"change_member_role_api_workspaces__workspace_id__members__member_user_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}},{"name":"member_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberRoleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspaces"],"summary":"Remove Workspace Member","operationId":"remove_workspace_member_api_workspaces__workspace_id__members__member_user_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}},{"name":"member_user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Member User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspaces/{workspace_id}/stats":{"get":{"tags":["workspaces"],"summary":"Workspace Stats","description":"KPIs surfaced on the settings page (members / accounts / transactions).","operationId":"workspace_stats_api_workspaces__workspace_id__stats_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/workspaces/{workspace_id}/archive":{"post":{"tags":["workspaces"],"summary":"Archive Workspace Endpoint","description":"Soft-delete: flips is_archived. Requires owner role. Refuses to\narchive the requester's last accessible workspace.","operationId":"archive_workspace_endpoint_api_workspaces__workspace_id__archive_post","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users":{"get":{"tags":["admin"],"summary":"List Users","operationId":"list_users_api_admin_users_get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"type":"string","title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Create User","operationId":"create_user_api_admin_users_post","security":[{"OAuth2PasswordBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users/{user_id}":{"get":{"tags":["admin"],"summary":"Get User","operationId":"get_user_api_admin_users__user_id__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin"],"summary":"Update User","operationId":"update_user_api_admin_users__user_id__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminUserRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["admin"],"summary":"Delete User","operationId":"delete_user_api_admin_users__user_id__delete","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/settings/{key}":{"get":{"tags":["admin"],"summary":"Get Setting","operationId":"get_setting_api_admin_settings__key__get","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSettingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["admin"],"summary":"Update Setting","operationId":"update_setting_api_admin_settings__key__patch","security":[{"OAuth2PasswordBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSettingUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSettingRead"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/registration-status":{"get":{"tags":["admin"],"summary":"Registration Status","operationId":"registration_status_api_admin_registration_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/default-colors":{"get":{"tags":["admin"],"summary":"Default Colors","operationId":"default_colors_api_admin_default_colors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/accounting-mode":{"get":{"tags":["admin"],"summary":"Accounting Mode","operationId":"accounting_mode_api_admin_accounting_mode_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/number-format":{"get":{"tags":["admin"],"summary":"Number Format","description":"Global display format for numbers and dates. Readable by any signed-in\nuser (not just admins) so the frontend can format consistently for everyone.\nDefaults to 'auto' — derive separators from each user's display currency.","operationId":"number_format_api_admin_number_format_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/admin/date-format":{"get":{"tags":["admin"],"summary":"Date Format","description":"Global display format for dates. Readable by any signed-in user.\nDefaults to 'auto' — derive the field order from the number format /\ndisplay currency. Month names always follow the user's app language.","operationId":"date_format_api_admin_date_format_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/api/info":{"get":{"tags":["info"],"summary":"Get App Info","operationId":"get_app_info_api_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/auth/demo-login":{"post":{"tags":["info"],"summary":"Demo Login","description":"Mint a JWT for the seeded demo user.\n\nOnly available when DEMO_MODE is on. Lets the public demo frontend\nskip the login form entirely so first-time visitors land directly on\nthe dashboard.","operationId":"demo_login_api_auth_demo_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/health":{"get":{"summary":"Health Check","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AccountCreate":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"balance":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Balance","default":"0.00"},"balance_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Balance Date"},"currency":{"type":"string","title":"Currency","default":"USD"},"credit_limit":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Credit Limit"},"statement_close_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Statement Close Day"},"payment_due_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Due Day"},"minimum_payment":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Minimum Payment"},"card_brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Brand"},"card_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Level"}},"type":"object","required":["name","type"],"title":"AccountCreate"},"AccountRead":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"balance":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Balance"},"currency":{"type":"string","title":"Currency","default":"USD"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"masked_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Masked Number"},"institution_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution Name"},"institution_logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution Logo Url"},"current_balance":{"type":"number","title":"Current Balance","default":0.0},"previous_balance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Previous Balance"},"balance_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Balance Primary"},"credit_limit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credit Limit"},"available_credit":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Available Credit"},"statement_close_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Statement Close Day"},"payment_due_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Due Day"},"next_close_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Next Close Date"},"next_due_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Next Due Date"},"minimum_payment":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Minimum Payment"},"card_brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Brand"},"card_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Level"},"is_closed":{"type":"boolean","title":"Is Closed","default":false},"closed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Closed At"}},"type":"object","required":["name","type","balance","id","user_id"],"title":"AccountRead"},"AccountSummary":{"properties":{"account_id":{"type":"string","format":"uuid","title":"Account Id"},"current_balance":{"type":"number","title":"Current Balance"},"monthly_income":{"type":"number","title":"Monthly Income"},"monthly_expenses":{"type":"number","title":"Monthly Expenses"},"current_balance_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Balance Primary"},"monthly_income_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Income Primary"},"monthly_expenses_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Expenses Primary"}},"type":"object","required":["account_id","current_balance","monthly_income","monthly_expenses"],"title":"AccountSummary"},"AccountUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"balance":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Balance"},"balance_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Balance Date"},"credit_limit":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Credit Limit"},"statement_close_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Statement Close Day"},"payment_due_day":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Due Day"},"minimum_payment":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Minimum Payment"},"card_brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Brand"},"card_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Level"}},"type":"object","title":"AccountUpdate"},"AdminUserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":72,"minLength":8,"title":"Password"},"is_superuser":{"type":"boolean","title":"Is Superuser","default":false},"preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preferences"}},"type":"object","required":["email","password"],"title":"AdminUserCreate"},"AdminUserList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AdminUserRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"AdminUserList"},"AdminUserRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"is_active":{"type":"boolean","title":"Is Active"},"is_superuser":{"type":"boolean","title":"Is Superuser"},"is_verified":{"type":"boolean","title":"Is Verified"},"preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preferences"}},"type":"object","required":["id","email","is_active","is_superuser","is_verified"],"title":"AdminUserRead"},"AdminUserUpdate":{"properties":{"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"password":{"anyOf":[{"type":"string","maxLength":72,"minLength":8},{"type":"null"}],"title":"Password"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser"},"preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preferences"}},"type":"object","title":"AdminUserUpdate"},"AppSettingRead":{"properties":{"key":{"type":"string","title":"Key"},"value":{"type":"string","title":"Value"}},"type":"object","required":["key","value"],"title":"AppSettingRead"},"AppSettingUpdate":{"properties":{"value":{"type":"string","title":"Value"}},"type":"object","required":["value"],"title":"AppSettingUpdate"},"AssetBuyCreate":{"properties":{"ticker":{"type":"string","title":"Ticker"},"quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Quantity"},"price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Price"},"fee":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Fee","default":"0"},"date":{"type":"string","format":"date","title":"Date"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["ticker","quantity","price","date"],"title":"AssetBuyCreate","description":"Find-or-create a ticker holding (in `group_id`) and record a buy."},"AssetCreate":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"currency":{"type":"string","title":"Currency","default":"USD"},"units":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Units"},"valuation_method":{"type":"string","title":"Valuation Method","default":"manual"},"purchase_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Purchase Date"},"purchase_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Purchase Price"},"sell_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Sell Date"},"sell_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Sell Price"},"current_value":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Current Value"},"growth_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Type"},"growth_rate":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Growth Rate"},"growth_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Frequency"},"growth_start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Growth Start Date"},"is_archived":{"type":"boolean","title":"Is Archived","default":false},"position":{"type":"integer","title":"Position","default":0},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"ticker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"},"ticker_exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker Exchange"},"maturity_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Maturity Date"},"unit_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Unit Price"}},"type":"object","required":["name","type"],"title":"AssetCreate"},"AssetGroupCreate":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"type":"string","title":"Icon","default":"wallet"},"color":{"type":"string","title":"Color","default":"#0EA5E9"},"position":{"type":"integer","title":"Position","default":0}},"type":"object","required":["name"],"title":"AssetGroupCreate"},"AssetGroupRead":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"type":"string","title":"Icon","default":"wallet"},"color":{"type":"string","title":"Color","default":"#0EA5E9"},"position":{"type":"integer","title":"Position","default":0},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"source":{"type":"string","title":"Source","default":"manual"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"},"institution_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Institution Name"},"asset_count":{"type":"integer","title":"Asset Count","default":0},"current_value":{"type":"number","title":"Current Value","default":0.0},"current_value_primary":{"type":"number","title":"Current Value Primary","default":0.0}},"type":"object","required":["name","id","user_id"],"title":"AssetGroupRead"},"AssetGroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"AssetGroupUpdate"},"AssetRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"currency":{"type":"string","title":"Currency"},"units":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Units"},"valuation_method":{"type":"string","title":"Valuation Method"},"purchase_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Purchase Date"},"purchase_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Purchase Price"},"sell_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Sell Date"},"sell_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sell Price"},"growth_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Type"},"growth_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Growth Rate"},"growth_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Frequency"},"growth_start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Growth Start Date"},"is_archived":{"type":"boolean","title":"Is Archived"},"position":{"type":"integer","title":"Position"},"current_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Value"},"current_value_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Value Primary"},"gain_loss":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gain Loss"},"gain_loss_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gain Loss Primary"},"value_count":{"type":"integer","title":"Value Count","default":0},"source":{"type":"string","title":"Source","default":"manual"},"connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Connection Id"},"isin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Isin"},"maturity_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Maturity Date"},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"ticker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"},"ticker_exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker Exchange"},"last_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Price"},"last_price_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Price At"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"average_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Price"},"total_invested":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Invested"},"realized_gain":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Realized Gain"},"transaction_count":{"type":"integer","title":"Transaction Count","default":0}},"type":"object","required":["id","user_id","name","type","currency","valuation_method","is_archived","position"],"title":"AssetRead"},"AssetTransactionCreate":{"properties":{"kind":{"type":"string","title":"Kind"},"quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Quantity"},"price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Price"},"fee":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Fee","default":"0"},"date":{"type":"string","format":"date","title":"Date"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["kind","quantity","price","date"],"title":"AssetTransactionCreate"},"AssetTransactionRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"asset_id":{"type":"string","format":"uuid","title":"Asset Id"},"kind":{"type":"string","title":"Kind"},"quantity":{"type":"number","title":"Quantity"},"price":{"type":"number","title":"Price"},"fee":{"type":"number","title":"Fee"},"date":{"type":"string","format":"date","title":"Date"},"source":{"type":"string","title":"Source"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"asset_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Name"},"ticker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","required":["id","asset_id","kind","quantity","price","fee","date","source"],"title":"AssetTransactionRead"},"AssetTransactionUpdate":{"properties":{"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"},"quantity":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Quantity"},"price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Price"},"fee":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Fee"},"date":{"type":"null","title":"Date"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"AssetTransactionUpdate"},"AssetUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"units":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Units"},"valuation_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valuation Method"},"purchase_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Purchase Date"},"purchase_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Purchase Price"},"sell_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Sell Date"},"sell_price":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Sell Price"},"growth_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Type"},"growth_rate":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Growth Rate"},"growth_frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Growth Frequency"},"growth_start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Growth Start Date"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Archived"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"ticker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"},"ticker_exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker Exchange"}},"type":"object","title":"AssetUpdate"},"AssetValueCreate":{"properties":{"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"date":{"type":"string","format":"date","title":"Date"}},"type":"object","required":["amount","date"],"title":"AssetValueCreate"},"AssetValueRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"asset_id":{"type":"string","format":"uuid","title":"Asset Id"},"amount":{"type":"number","title":"Amount"},"date":{"type":"string","format":"date","title":"Date"},"source":{"type":"string","title":"Source"}},"type":"object","required":["id","asset_id","amount","date","source"],"title":"AssetValueRead"},"AttachmentRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"transaction_id":{"type":"string","format":"uuid","title":"Transaction Id"},"filename":{"type":"string","title":"Filename"},"content_type":{"type":"string","title":"Content Type"},"size":{"type":"integer","title":"Size"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","transaction_id","filename","content_type","size","created_at"],"title":"AttachmentRead"},"AttachmentRename":{"properties":{"filename":{"type":"string","title":"Filename"}},"type":"object","required":["filename"],"title":"AttachmentRename"},"BalanceHistory":{"properties":{"current":{"items":{"$ref":"#/components/schemas/DailyBalance"},"type":"array","title":"Current"},"previous":{"items":{"$ref":"#/components/schemas/DailyBalance"},"type":"array","title":"Previous"}},"type":"object","required":["current","previous"],"title":"BalanceHistory"},"BankConnectionRead":{"properties":{"provider":{"type":"string","title":"Provider"},"institution_name":{"type":"string","title":"Institution Name"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"external_id":{"type":"string","title":"External Id"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"settings":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Settings"},"status":{"type":"string","title":"Status"},"last_sync_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sync At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["provider","institution_name","id","user_id","external_id","status","created_at"],"title":"BankConnectionRead"},"Body_login_api_auth_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","format":"password","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"format":"password","title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_api_auth_login_post"},"Body_preview_import_api_transactions_import_preview_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"date_format":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Format"},"flip_amount":{"type":"boolean","title":"Flip Amount","default":false},"inflow_column":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inflow Column"},"outflow_column":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Outflow Column"},"column_mapping":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Column Mapping"}},"type":"object","required":["file"],"title":"Body_preview_import_api_transactions_import_preview_post"},"Body_reset_forgot_password_api_auth_forgot_password_post":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"Body_reset_forgot_password_api_auth_forgot_password_post"},"Body_reset_reset_password_api_auth_reset_password_post":{"properties":{"token":{"type":"string","title":"Token"},"password":{"type":"string","title":"Password"}},"type":"object","required":["token","password"],"title":"Body_reset_reset_password_api_auth_reset_password_post"},"Body_upload_attachment_api_transactions__transaction_id__attachments_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_attachment_api_transactions__transaction_id__attachments_post"},"BudgetCreate":{"properties":{"category_id":{"type":"string","format":"uuid","title":"Category Id"},"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"month":{"type":"string","format":"date","title":"Month"},"is_recurring":{"type":"boolean","title":"Is Recurring","default":false}},"type":"object","required":["category_id","amount","month"],"title":"BudgetCreate"},"BudgetRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"category_id":{"type":"string","format":"uuid","title":"Category Id"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"month":{"type":"string","format":"date","title":"Month"},"is_recurring":{"type":"boolean","title":"Is Recurring"}},"type":"object","required":["id","user_id","category_id","amount","month","is_recurring"],"title":"BudgetRead"},"BudgetUpdate":{"properties":{"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount"},"effective_month":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Effective Month"}},"type":"object","title":"BudgetUpdate"},"BudgetVsActual":{"properties":{"category_id":{"type":"string","format":"uuid","title":"Category Id"},"category_name":{"type":"string","title":"Category Name"},"category_icon":{"type":"string","title":"Category Icon"},"category_color":{"type":"string","title":"Category Color"},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"group_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group Name"},"budget_amount":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Budget Amount"},"actual_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Actual Amount"},"prev_month_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Prev Month Amount","default":"0"},"percentage_used":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage Used"},"is_recurring":{"type":"boolean","title":"Is Recurring","default":false}},"type":"object","required":["category_id","category_name","category_icon","category_color","actual_amount"],"title":"BudgetVsActual"},"BulkAddToGroupRequest":{"properties":{"transaction_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Transaction Ids"},"group_id":{"type":"string","format":"uuid","title":"Group Id"},"share_type":{"type":"string","enum":["equal","percent"],"title":"Share Type","default":"equal"},"member_splits":{"items":{"$ref":"#/components/schemas/TransactionSplitInput"},"type":"array","title":"Member Splits"}},"type":"object","required":["transaction_ids","group_id"],"title":"BulkAddToGroupRequest"},"BulkCategorizeRequest":{"properties":{"transaction_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Transaction Ids"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"}},"type":"object","required":["transaction_ids"],"title":"BulkCategorizeRequest"},"BulkTagsRequest":{"properties":{"transaction_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Transaction Ids"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["transaction_ids","tags"],"title":"BulkTagsRequest"},"CategoryCreate":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"type":"string","title":"Icon","default":"circle-help"},"color":{"type":"string","title":"Color","default":"#6B7280"},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"treat_as_transfer":{"type":"boolean","title":"Treat As Transfer","default":false},"is_ignored":{"type":"boolean","title":"Is Ignored","default":false}},"type":"object","required":["name"],"title":"CategoryCreate"},"CategoryGroupCreate":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"type":"string","title":"Icon","default":"folder"},"color":{"type":"string","title":"Color","default":"#6B7280"},"position":{"type":"integer","title":"Position","default":0}},"type":"object","required":["name"],"title":"CategoryGroupCreate"},"CategoryGroupRead":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"type":"string","title":"Icon","default":"folder"},"color":{"type":"string","title":"Color","default":"#6B7280"},"position":{"type":"integer","title":"Position","default":0},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"is_system":{"type":"boolean","title":"Is System"},"categories":{"items":{"$ref":"#/components/schemas/CategoryRead"},"type":"array","title":"Categories","default":[]}},"type":"object","required":["name","id","user_id","is_system"],"title":"CategoryGroupRead"},"CategoryGroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"}},"type":"object","title":"CategoryGroupUpdate"},"CategoryRead":{"properties":{"name":{"type":"string","title":"Name"},"icon":{"type":"string","title":"Icon","default":"circle-help"},"color":{"type":"string","title":"Color","default":"#6B7280"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"is_system":{"type":"boolean","title":"Is System"},"treat_as_transfer":{"type":"boolean","title":"Treat As Transfer","default":false},"is_ignored":{"type":"boolean","title":"Is Ignored","default":false}},"type":"object","required":["name","id","user_id","is_system"],"title":"CategoryRead"},"CategoryTrendItem":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"color":{"type":"string","title":"Color"},"total":{"type":"number","title":"Total"},"group":{"type":"string","title":"Group"},"series":{"items":{"$ref":"#/components/schemas/ReportDataPoint"},"type":"array","title":"Series"}},"type":"object","required":["key","label","color","total","group","series"],"title":"CategoryTrendItem"},"CategoryUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"treat_as_transfer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Treat As Transfer"},"is_ignored":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Ignored"}},"type":"object","title":"CategoryUpdate"},"CollectionCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"icon":{"type":"string","title":"Icon","default":"folder"},"color":{"type":"string","title":"Color","default":"#6366F1"},"position":{"type":"integer","title":"Position","default":0},"account_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Account Ids","default":[]},"wallet_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Wallet Ids","default":[]}},"type":"object","required":["name"],"title":"CollectionCreate"},"CollectionRead":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"icon":{"type":"string","title":"Icon","default":"folder"},"color":{"type":"string","title":"Color","default":"#6366F1"},"position":{"type":"integer","title":"Position","default":0},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"account_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Account Ids","default":[]},"account_count":{"type":"integer","title":"Account Count","default":0},"wallet_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Wallet Ids","default":[]},"wallet_count":{"type":"integer","title":"Wallet Count","default":0}},"type":"object","required":["name","id","user_id"],"title":"CollectionRead"},"CollectionUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"account_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Account Ids"},"wallet_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Wallet Ids"}},"type":"object","title":"CollectionUpdate"},"ConnectTokenRequest":{"properties":{"provider":{"type":"string","title":"Provider","default":"pluggy"}},"type":"object","title":"ConnectTokenRequest"},"ConnectTokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"}},"type":"object","required":["access_token"],"title":"ConnectTokenResponse"},"ConnectionSettingsUpdate":{"properties":{"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"payee_source":{"anyOf":[{"type":"string","enum":["auto","merchant","payment_data","description","none"]},{"type":"null"}],"title":"Payee Source"},"import_pending":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Import Pending"},"sync_assets":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sync Assets"}},"type":"object","title":"ConnectionSettingsUpdate"},"CreateAdminRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"currency":{"type":"string","title":"Currency","default":"USD"},"name":{"type":"string","title":"Name","default":""},"language":{"type":"string","title":"Language","default":"pt-BR"}},"type":"object","required":["email","password"],"title":"CreateAdminRequest"},"CreateCounterpartRequest":{"properties":{"to_account_id":{"type":"string","format":"uuid","title":"To Account Id"}},"type":"object","required":["to_account_id"],"title":"CreateCounterpartRequest","description":"Mark a transaction as a transfer by auto-creating its counterpart in\nanother account. Used when the counterpart account is manual, so no\nmatching transaction exists to link against."},"CreditCardBillRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"account_id":{"type":"string","format":"uuid","title":"Account Id"},"external_id":{"type":"string","title":"External Id"},"due_date":{"type":"string","format":"date","title":"Due Date"},"total_amount":{"type":"number","title":"Total Amount"},"currency":{"type":"string","title":"Currency"},"minimum_payment":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Minimum Payment"}},"type":"object","required":["id","account_id","external_id","due_date","total_amount","currency"],"title":"CreditCardBillRead","description":"Provider-agnostic credit-card bill (fatura) — issue #92.\n\nProvider-specific extras live in `raw_data` on the model but are not\nexposed here so that consumers don't form provider-shaped dependencies."},"DailyBalance":{"properties":{"day":{"type":"integer","title":"Day"},"balance":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Balance"}},"type":"object","required":["day","balance"],"title":"DailyBalance"},"DashboardSummary":{"properties":{"total_balance":{"additionalProperties":{"type":"number"},"type":"object","title":"Total Balance"},"total_balance_primary":{"type":"number","title":"Total Balance Primary","default":0.0},"balance_date":{"type":"string","title":"Balance Date"},"monthly_income":{"type":"number","title":"Monthly Income"},"monthly_expenses":{"type":"number","title":"Monthly Expenses"},"monthly_income_primary":{"type":"number","title":"Monthly Income Primary","default":0.0},"monthly_expenses_primary":{"type":"number","title":"Monthly Expenses Primary","default":0.0},"accounts_count":{"type":"integer","title":"Accounts Count"},"pending_categorization":{"type":"integer","title":"Pending Categorization"},"pending_categorization_amount":{"type":"number","title":"Pending Categorization Amount"},"assets_value":{"additionalProperties":{"type":"number"},"type":"object","title":"Assets Value","default":{}},"assets_value_primary":{"type":"number","title":"Assets Value Primary","default":0.0},"primary_currency":{"type":"string","title":"Primary Currency","default":"USD"},"pending_shares_net":{"type":"number","title":"Pending Shares Net","default":0.0}},"type":"object","required":["total_balance","balance_date","monthly_income","monthly_expenses","accounts_count","pending_categorization","pending_categorization_amount"],"title":"DashboardSummary"},"ErrorModel":{"properties":{"detail":{"anyOf":[{"type":"string"},{"additionalProperties":{"type":"string"},"type":"object"}],"title":"Detail"}},"type":"object","required":["detail"],"title":"ErrorModel"},"GoalCreate":{"properties":{"name":{"type":"string","title":"Name"},"target_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Target Amount"},"current_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Current Amount","default":"0"},"currency":{"type":"string","title":"Currency","default":"USD"},"target_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Date"},"tracking_type":{"type":"string","title":"Tracking Type","default":"manual"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"asset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"},"asset_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Group Id"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"metadata_json":{"anyOf":[{},{"type":"null"}],"title":"Metadata Json"}},"type":"object","required":["name","target_amount"],"title":"GoalCreate"},"GoalRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"name":{"type":"string","title":"Name"},"target_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Target Amount"},"current_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Current Amount"},"currency":{"type":"string","title":"Currency"},"target_amount_primary":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Target Amount Primary"},"current_amount_primary":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Current Amount Primary"},"target_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Date"},"tracking_type":{"type":"string","title":"Tracking Type"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"asset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"},"asset_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Group Id"},"status":{"type":"string","title":"Status"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"position":{"type":"integer","title":"Position"},"metadata_json":{"anyOf":[{},{"type":"null"}],"title":"Metadata Json"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"percentage":{"type":"number","title":"Percentage","default":0},"monthly_contribution":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Contribution"},"on_track":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"On Track"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"asset_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Name"},"asset_group_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset Group Name"}},"type":"object","required":["id","user_id","name","target_amount","current_amount","currency","tracking_type","status","position","created_at","updated_at"],"title":"GoalRead"},"GoalSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"target_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Target Amount"},"current_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Current Amount"},"currency":{"type":"string","title":"Currency"},"target_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Date"},"status":{"type":"string","title":"Status"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"percentage":{"type":"number","title":"Percentage","default":0},"monthly_contribution":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Contribution"},"on_track":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"On Track"}},"type":"object","required":["id","name","target_amount","current_amount","currency","status"],"title":"GoalSummary"},"GoalUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"target_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Target Amount"},"current_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Current Amount"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"target_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Target Date"},"tracking_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tracking Type"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"asset_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Id"},"asset_group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Asset Group Id"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"position":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Position"},"metadata_json":{"anyOf":[{},{"type":"null"}],"title":"Metadata Json"}},"type":"object","title":"GoalUpdate"},"GroupBalanceLine":{"properties":{"member_id":{"type":"string","format":"uuid","title":"Member Id"},"currency":{"type":"string","title":"Currency"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"amount_in_default_currency":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount In Default Currency"}},"type":"object","required":["member_id","currency","amount","amount_in_default_currency"],"title":"GroupBalanceLine"},"GroupBalances":{"properties":{"group_id":{"type":"string","format":"uuid","title":"Group Id"},"self_member_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Self Member Id"},"default_currency":{"type":"string","title":"Default Currency"},"lines":{"items":{"$ref":"#/components/schemas/GroupBalanceLine"},"type":"array","title":"Lines","default":[]}},"type":"object","required":["group_id","default_currency"],"title":"GroupBalances"},"GroupCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"kind":{"type":"string","enum":["social","cost_center","project","client","other"],"title":"Kind","default":"social"},"default_currency":{"type":"string","maxLength":3,"minLength":3,"title":"Default Currency","default":"USD"},"icon":{"type":"string","title":"Icon","default":"users"},"color":{"type":"string","title":"Color","default":"#6B7280"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name"],"title":"GroupCreate"},"GroupMemberCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"linked_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Linked User Id"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"is_self":{"type":"boolean","title":"Is Self","default":false}},"type":"object","required":["name"],"title":"GroupMemberCreate"},"GroupMemberRead":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"linked_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Linked User Id"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"is_self":{"type":"boolean","title":"Is Self","default":false},"id":{"type":"string","format":"uuid","title":"Id"},"group_id":{"type":"string","format":"uuid","title":"Group Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["name","id","group_id","created_at"],"title":"GroupMemberRead"},"GroupMemberUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"linked_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Linked User Id"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"is_self":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Self"}},"type":"object","title":"GroupMemberUpdate"},"GroupRead":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"kind":{"type":"string","enum":["social","cost_center","project","client","other"],"title":"Kind","default":"social"},"default_currency":{"type":"string","maxLength":3,"minLength":3,"title":"Default Currency","default":"USD"},"icon":{"type":"string","title":"Icon","default":"users"},"color":{"type":"string","title":"Color","default":"#6B7280"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"is_archived":{"type":"boolean","title":"Is Archived"},"is_owner":{"type":"boolean","title":"Is Owner","default":true},"created_at":{"type":"string","format":"date-time","title":"Created At"},"members":{"items":{"$ref":"#/components/schemas/GroupMemberRead"},"type":"array","title":"Members","default":[]}},"type":"object","required":["name","id","user_id","is_archived","created_at"],"title":"GroupRead"},"GroupSettlementCreate":{"properties":{"from_member_id":{"type":"string","format":"uuid","title":"From Member Id"},"to_member_id":{"type":"string","format":"uuid","title":"To Member Id"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency"},"date":{"type":"string","format":"date","title":"Date"},"transaction_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Transaction Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["from_member_id","to_member_id","amount","currency","date"],"title":"GroupSettlementCreate"},"GroupSettlementRead":{"properties":{"from_member_id":{"type":"string","format":"uuid","title":"From Member Id"},"to_member_id":{"type":"string","format":"uuid","title":"To Member Id"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"currency":{"type":"string","maxLength":3,"minLength":3,"title":"Currency"},"date":{"type":"string","format":"date","title":"Date"},"transaction_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Transaction Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"id":{"type":"string","format":"uuid","title":"Id"},"group_id":{"type":"string","format":"uuid","title":"Group Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["from_member_id","to_member_id","amount","currency","date","id","group_id","created_at"],"title":"GroupSettlementRead"},"GroupSettlementUpdate":{"properties":{"from_member_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"From Member Id"},"to_member_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"To Member Id"},"amount":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount"},"currency":{"anyOf":[{"type":"string","maxLength":3,"minLength":3},{"type":"null"}],"title":"Currency"},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"},"transaction_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Transaction Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"GroupSettlementUpdate"},"GroupUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"kind":{"anyOf":[{"type":"string","enum":["social","cost_center","project","client","other"]},{"type":"null"}],"title":"Kind"},"default_currency":{"anyOf":[{"type":"string","maxLength":3,"minLength":3},{"type":"null"}],"title":"Default Currency"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Archived"}},"type":"object","title":"GroupUpdate"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImportLogRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"account_id":{"type":"string","format":"uuid","title":"Account Id"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"filename":{"type":"string","title":"Filename"},"format":{"type":"string","title":"Format"},"transaction_count":{"type":"integer","title":"Transaction Count"},"total_credit":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Credit"},"total_debit":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Debit"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","user_id","account_id","filename","format","transaction_count","total_credit","total_debit","created_at"],"title":"ImportLogRead"},"InstitutionListResponse":{"properties":{"countries":{"items":{"type":"string"},"type":"array","title":"Countries"},"institutions":{"items":{"$ref":"#/components/schemas/InstitutionRead"},"type":"array","title":"Institutions"}},"type":"object","required":["countries","institutions"],"title":"InstitutionListResponse"},"InstitutionRead":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"country":{"type":"string","title":"Country"},"logo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo"},"bic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bic"},"psu_types":{"items":{"type":"string"},"type":"array","title":"Psu Types","default":[]},"max_consent_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Consent Days"},"max_history_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max History Days"}},"type":"object","required":["name","display_name","country"],"title":"InstitutionRead"},"LinkTransferRequest":{"properties":{"transaction_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Transaction Ids"}},"type":"object","required":["transaction_ids"],"title":"LinkTransferRequest"},"MarketSymbolMatch":{"properties":{"symbol":{"type":"string","title":"Symbol"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange"},"quote_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quote Type"}},"type":"object","required":["symbol"],"title":"MarketSymbolMatch","description":"A single search result returned by /assets/market/search."},"MarketSymbolQuote":{"properties":{"symbol":{"type":"string","title":"Symbol"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange"},"currency":{"type":"string","title":"Currency"},"price":{"type":"number","title":"Price"},"quote_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quote Type"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","required":["symbol","currency","price"],"title":"MarketSymbolQuote","description":"Live quote for a ticker, used by the add-asset form to preview value."},"MemberInvite":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"role":{"type":"string","title":"Role","default":"editor"},"password":{"anyOf":[{"type":"string","maxLength":128,"minLength":8},{"type":"null"}],"title":"Password"}},"type":"object","required":["email"],"title":"MemberInvite"},"MemberRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"type":"string","title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"role":{"type":"string","title":"Role"},"joined_at":{"type":"string","format":"date-time","title":"Joined At"}},"type":"object","required":["id","user_id","email","role","joined_at"],"title":"MemberRead"},"MemberRoleUpdate":{"properties":{"role":{"type":"string","title":"Role"}},"type":"object","required":["role"],"title":"MemberRoleUpdate"},"MonthlyTrend":{"properties":{"month":{"type":"string","title":"Month"},"income":{"type":"number","title":"Income"},"expenses":{"type":"number","title":"Expenses"}},"type":"object","required":["month","income","expenses"],"title":"MonthlyTrend"},"OAuthCallbackRequest":{"properties":{"code":{"type":"string","title":"Code"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"},"sync_assets":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sync Assets"},"reconnect_connection_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Reconnect Connection Id"}},"type":"object","required":["code"],"title":"OAuthCallbackRequest"},"OAuthUrlRequest":{"properties":{"provider":{"type":"string","title":"Provider","default":"pluggy"},"flow_params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Flow Params"}},"type":"object","title":"OAuthUrlRequest"},"OAuthUrlResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"OAuthUrlResponse"},"OIDCConfigResponse":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"provider_name":{"type":"string","title":"Provider Name","default":"OIDC"}},"type":"object","required":["enabled"],"title":"OIDCConfigResponse"},"PaginatedTransactions":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TransactionRead"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"limit":{"type":"integer","title":"Limit"},"summary":{"anyOf":[{"$ref":"#/components/schemas/TransactionsSummary"},{"type":"null"}]}},"type":"object","required":["items","total","page","limit"],"title":"PaginatedTransactions"},"PasskeyAuthenticateOptionsRequest":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},"type":"object","title":"PasskeyAuthenticateOptionsRequest"},"PasskeyAuthenticateVerifyRequest":{"properties":{"challenge_id":{"type":"string","title":"Challenge Id"},"credential":{"additionalProperties":true,"type":"object","title":"Credential"}},"type":"object","required":["challenge_id","credential"],"title":"PasskeyAuthenticateVerifyRequest"},"PasskeyOptionsResponse":{"properties":{"challenge_id":{"type":"string","title":"Challenge Id"},"options":{"additionalProperties":true,"type":"object","title":"Options"}},"type":"object","required":["challenge_id","options"],"title":"PasskeyOptionsResponse"},"PasskeyRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"transports":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transports"},"aaguid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aaguid"},"device_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Type"},"backed_up":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Backed Up"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["id","name","created_at"],"title":"PasskeyRead"},"PasskeyRegisterOptionsRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","default":"Passkey"}},"type":"object","title":"PasskeyRegisterOptionsRequest"},"PasskeyRegisterVerifyRequest":{"properties":{"challenge_id":{"type":"string","title":"Challenge Id"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name","default":"Passkey"},"credential":{"additionalProperties":true,"type":"object","title":"Credential"}},"type":"object","required":["challenge_id","credential"],"title":"PasskeyRegisterVerifyRequest"},"PasskeySecondFactorOptionsRequest":{"properties":{"temp_token":{"type":"string","title":"Temp Token"}},"type":"object","required":["temp_token"],"title":"PasskeySecondFactorOptionsRequest"},"PasskeySecondFactorVerifyRequest":{"properties":{"temp_token":{"type":"string","title":"Temp Token"},"challenge_id":{"type":"string","title":"Challenge Id"},"credential":{"additionalProperties":true,"type":"object","title":"Credential"}},"type":"object","required":["temp_token","challenge_id","credential"],"title":"PasskeySecondFactorVerifyRequest"},"PayeeCreate":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type","default":"merchant"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name"],"title":"PayeeCreate"},"PayeeMergeRequest":{"properties":{"source_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Source Ids"},"target_id":{"type":"string","format":"uuid","title":"Target Id"}},"type":"object","required":["source_ids","target_id"],"title":"PayeeMergeRequest"},"PayeeRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"is_favorite":{"type":"boolean","title":"Is Favorite"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"transaction_count":{"type":"integer","title":"Transaction Count","default":0}},"type":"object","required":["id","user_id","name","type","is_favorite","created_at"],"title":"PayeeRead"},"PayeeSummary":{"properties":{"payee":{"$ref":"#/components/schemas/PayeeRead"},"total_spent":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Spent","default":"0"},"total_received":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Total Received","default":"0"},"transaction_count":{"type":"integer","title":"Transaction Count","default":0},"most_common_category":{"anyOf":[{"$ref":"#/components/schemas/CategoryRead"},{"type":"null"}]},"last_transaction_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Last Transaction Date"}},"type":"object","required":["payee"],"title":"PayeeSummary"},"PayeeUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"is_favorite":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Favorite"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"PayeeUpdate"},"ProjectedTransaction":{"properties":{"recurring_id":{"type":"string","title":"Recurring Id"},"description":{"type":"string","title":"Description"},"amount":{"type":"number","title":"Amount"},"amount_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Primary"},"currency":{"type":"string","title":"Currency"},"type":{"type":"string","title":"Type"},"date":{"type":"string","title":"Date"},"category_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Id"},"category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Name"},"category_icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Icon"},"category_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Color"}},"type":"object","required":["recurring_id","description","amount","currency","type","date","category_id","category_name","category_icon"],"title":"ProjectedTransaction"},"ReauthUrlResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"ReauthUrlResponse"},"ReconnectTokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"}},"type":"object","required":["access_token"],"title":"ReconnectTokenResponse"},"RecurringTransactionCreate":{"properties":{"description":{"type":"string","title":"Description"},"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"currency":{"type":"string","title":"Currency","default":"USD"},"type":{"type":"string","title":"Type"},"frequency":{"type":"string","title":"Frequency"},"day_of_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day Of Month"},"start_date":{"type":"string","format":"date","title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"account_id":{"type":"string","format":"uuid","title":"Account Id"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"skip_first":{"type":"boolean","title":"Skip First","default":false},"auto_generate":{"type":"boolean","title":"Auto Generate","default":true}},"type":"object","required":["description","amount","type","frequency","start_date","account_id"],"title":"RecurringTransactionCreate"},"RecurringTransactionRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"description":{"type":"string","title":"Description"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"currency":{"type":"string","title":"Currency"},"type":{"type":"string","title":"Type"},"frequency":{"type":"string","title":"Frequency"},"day_of_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day Of Month"},"start_date":{"type":"string","format":"date","title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"is_active":{"type":"boolean","title":"Is Active"},"auto_generate":{"type":"boolean","title":"Auto Generate","default":true},"next_occurrence":{"type":"string","format":"date","title":"Next Occurrence"},"amount_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Primary"},"fx_rate_used":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fx Rate Used"}},"type":"object","required":["id","user_id","description","amount","currency","type","frequency","start_date","is_active","next_occurrence"],"title":"RecurringTransactionRead"},"RecurringTransactionUpdate":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"frequency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Frequency"},"day_of_month":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Day Of Month"},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date"},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"auto_generate":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Generate"}},"type":"object","title":"RecurringTransactionUpdate"},"ReportBreakdown":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"value":{"type":"number","title":"Value"},"color":{"type":"string","title":"Color"}},"type":"object","required":["key","label","value","color"],"title":"ReportBreakdown"},"ReportCompositionItem":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"value":{"type":"number","title":"Value"},"color":{"type":"string","title":"Color"},"group":{"type":"string","title":"Group"}},"type":"object","required":["key","label","value","color","group"],"title":"ReportCompositionItem"},"ReportDataPoint":{"properties":{"date":{"type":"string","title":"Date"},"value":{"type":"number","title":"Value"},"breakdowns":{"additionalProperties":{"type":"number"},"type":"object","title":"Breakdowns"},"change":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Change"},"composition":{"items":{"$ref":"#/components/schemas/ReportCompositionItem"},"type":"array","title":"Composition","default":[]}},"type":"object","required":["date","value","breakdowns"],"title":"ReportDataPoint"},"ReportMeta":{"properties":{"type":{"type":"string","title":"Type"},"series_keys":{"items":{"type":"string"},"type":"array","title":"Series Keys"},"currency":{"type":"string","title":"Currency"},"interval":{"type":"string","title":"Interval"},"forecast_start_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forecast Start Date"},"baseline_active":{"type":"boolean","title":"Baseline Active","default":false},"baseline_lookback_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Baseline Lookback Days"}},"type":"object","required":["type","series_keys","currency","interval"],"title":"ReportMeta"},"ReportResponse":{"properties":{"summary":{"$ref":"#/components/schemas/ReportSummary"},"trend":{"items":{"$ref":"#/components/schemas/ReportDataPoint"},"type":"array","title":"Trend"},"meta":{"$ref":"#/components/schemas/ReportMeta"},"composition":{"items":{"$ref":"#/components/schemas/ReportCompositionItem"},"type":"array","title":"Composition","default":[]},"category_trend":{"items":{"$ref":"#/components/schemas/CategoryTrendItem"},"type":"array","title":"Category Trend","default":[]}},"type":"object","required":["summary","trend","meta"],"title":"ReportResponse"},"ReportSummary":{"properties":{"primary_value":{"type":"number","title":"Primary Value"},"change_amount":{"type":"number","title":"Change Amount"},"change_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Change Percent"},"breakdowns":{"items":{"$ref":"#/components/schemas/ReportBreakdown"},"type":"array","title":"Breakdowns"}},"type":"object","required":["primary_value","change_amount","change_percent","breakdowns"],"title":"ReportSummary"},"RuleAction":{"properties":{"op":{"type":"string","title":"Op"},"value":{"title":"Value"}},"type":"object","required":["op","value"],"title":"RuleAction"},"RuleCondition":{"properties":{"field":{"type":"string","title":"Field"},"op":{"type":"string","title":"Op"},"value":{"title":"Value"}},"type":"object","required":["field","op","value"],"title":"RuleCondition"},"RuleCreate":{"properties":{"name":{"type":"string","title":"Name"},"conditions_op":{"type":"string","title":"Conditions Op","default":"and"},"conditions":{"items":{"$ref":"#/components/schemas/RuleCondition"},"type":"array","title":"Conditions"},"actions":{"items":{"$ref":"#/components/schemas/RuleAction"},"type":"array","title":"Actions"},"priority":{"type":"integer","title":"Priority","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true},"apply_to_existing":{"type":"boolean","title":"Apply To Existing","default":true},"overwrite_existing_categories":{"type":"boolean","title":"Overwrite Existing Categories","default":false}},"type":"object","required":["name","conditions","actions"],"title":"RuleCreate"},"RuleCreateResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"name":{"type":"string","title":"Name"},"conditions_op":{"type":"string","title":"Conditions Op"},"conditions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conditions"},"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions"},"priority":{"type":"integer","title":"Priority"},"is_active":{"type":"boolean","title":"Is Active"},"applied_count":{"type":"integer","title":"Applied Count","default":0}},"type":"object","required":["id","user_id","name","conditions_op","conditions","actions","priority","is_active"],"title":"RuleCreateResponse","description":"A created rule response kept for API compatibility."},"RuleExportItem":{"properties":{"name":{"type":"string","title":"Name"},"conditions_op":{"type":"string","title":"Conditions Op","default":"and"},"conditions":{"items":{"$ref":"#/components/schemas/RuleCondition"},"type":"array","title":"Conditions"},"actions":{"items":{"$ref":"#/components/schemas/RuleAction"},"type":"array","title":"Actions"},"priority":{"type":"integer","title":"Priority","default":0},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["name","conditions","actions"],"title":"RuleExportItem"},"RuleExportPayload":{"properties":{"format":{"type":"string","title":"Format","default":"securo-categorization-rules"},"version":{"type":"integer","title":"Version","default":1},"rules":{"items":{"$ref":"#/components/schemas/RuleExportItem"},"type":"array","title":"Rules"}},"type":"object","required":["rules"],"title":"RuleExportPayload"},"RuleImportRequest":{"properties":{"payload":{"$ref":"#/components/schemas/RuleExportPayload"},"overwrite":{"type":"boolean","title":"Overwrite","default":false}},"type":"object","required":["payload"],"title":"RuleImportRequest"},"RuleImportResponse":{"properties":{"imported":{"type":"integer","title":"Imported"},"skipped":{"type":"integer","title":"Skipped"},"overwritten":{"type":"integer","title":"Overwritten"}},"type":"object","required":["imported","skipped","overwritten"],"title":"RuleImportResponse"},"RuleMutationResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"name":{"type":"string","title":"Name"},"conditions_op":{"type":"string","title":"Conditions Op"},"conditions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conditions"},"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions"},"priority":{"type":"integer","title":"Priority"},"is_active":{"type":"boolean","title":"Is Active"},"applied_count":{"type":"integer","title":"Applied Count","default":0}},"type":"object","required":["id","user_id","name","conditions_op","conditions","actions","priority","is_active"],"title":"RuleMutationResponse","description":"A changed rule plus how many existing transactions it just affected."},"RuleRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"name":{"type":"string","title":"Name"},"conditions_op":{"type":"string","title":"Conditions Op"},"conditions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conditions"},"actions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Actions"},"priority":{"type":"integer","title":"Priority"},"is_active":{"type":"boolean","title":"Is Active"}},"type":"object","required":["id","user_id","name","conditions_op","conditions","actions","priority","is_active"],"title":"RuleRead"},"RuleUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"conditions_op":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Conditions Op"},"conditions":{"anyOf":[{"items":{"$ref":"#/components/schemas/RuleCondition"},"type":"array"},{"type":"null"}],"title":"Conditions"},"actions":{"anyOf":[{"items":{"$ref":"#/components/schemas/RuleAction"},"type":"array"},{"type":"null"}],"title":"Actions"},"priority":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Priority"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"apply_to_existing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Apply To Existing"},"overwrite_existing_categories":{"type":"boolean","title":"Overwrite Existing Categories","default":false}},"type":"object","title":"RuleUpdate"},"SetupStatus":{"properties":{"has_users":{"type":"boolean","title":"Has Users"}},"type":"object","required":["has_users"],"title":"SetupStatus"},"SpendingByCategory":{"properties":{"category_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Id"},"category_name":{"type":"string","title":"Category Name"},"category_icon":{"type":"string","title":"Category Icon"},"category_color":{"type":"string","title":"Category Color"},"total":{"type":"number","title":"Total"},"percentage":{"type":"number","title":"Percentage"}},"type":"object","required":["category_id","category_name","category_icon","category_color","total","percentage"],"title":"SpendingByCategory"},"TransactionCalendarDay":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"in_month":{"type":"boolean","title":"In Month"},"ending_balance":{"type":"number","title":"Ending Balance"},"income":{"type":"number","title":"Income","default":0.0},"expense":{"type":"number","title":"Expense","default":0.0},"transfer_net":{"type":"number","title":"Transfer Net","default":0.0},"actual_count":{"type":"integer","title":"Actual Count","default":0},"projected_count":{"type":"integer","title":"Projected Count","default":0},"has_income":{"type":"boolean","title":"Has Income","default":false},"has_expense":{"type":"boolean","title":"Has Expense","default":false},"has_transfer":{"type":"boolean","title":"Has Transfer","default":false},"items":{"items":{"$ref":"#/components/schemas/TransactionCalendarItem"},"type":"array","title":"Items"}},"type":"object","required":["date","in_month","ending_balance"],"title":"TransactionCalendarDay"},"TransactionCalendarItem":{"properties":{"kind":{"type":"string","enum":["actual","projected"],"title":"Kind"},"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"recurring_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Recurring Id"},"date":{"type":"string","format":"date","title":"Date"},"description":{"type":"string","title":"Description"},"amount":{"type":"number","title":"Amount"},"amount_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Primary"},"currency":{"type":"string","title":"Currency"},"type":{"type":"string","enum":["debit","credit"],"title":"Type"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"account_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Name"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Name"},"category_icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Icon"},"category_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Color"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"transfer_pair_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Transfer Pair Id"},"is_transfer":{"type":"boolean","title":"Is Transfer","default":false},"is_ignored":{"type":"boolean","title":"Is Ignored","default":false}},"type":"object","required":["kind","date","description","amount","currency","type"],"title":"TransactionCalendarItem"},"TransactionCalendarResponse":{"properties":{"month":{"type":"string","title":"Month"},"currency":{"type":"string","title":"Currency"},"account_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array"},{"type":"null"}],"title":"Account Ids"},"days":{"items":{"$ref":"#/components/schemas/TransactionCalendarDay"},"type":"array","title":"Days"}},"type":"object","required":["month","currency","days"],"title":"TransactionCalendarResponse"},"TransactionCreate":{"properties":{"description":{"type":"string","title":"Description"},"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"date":{"type":"string","format":"date","title":"Date"},"type":{"type":"string","title":"Type"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"fx_rate":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Fx Rate"},"payee_raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Raw"},"account_id":{"type":"string","format":"uuid","title":"Account Id"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"payee_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Payee Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"amount_primary":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Primary"},"fx_rate_used":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Fx Rate Used"},"effective_bill_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Effective Bill Date"},"splits":{"anyOf":[{"$ref":"#/components/schemas/TransactionSplitsInput"},{"type":"null"}]}},"type":"object","required":["description","amount","date","type","account_id"],"title":"TransactionCreate"},"TransactionImport-Input":{"properties":{"description":{"type":"string","title":"Description"},"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"date":{"type":"string","format":"date","title":"Date"},"type":{"type":"string","title":"Type"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"fx_rate":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Fx Rate"},"payee_raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Raw"},"category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Name"},"suggested_category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Suggested Category Id"},"suggested_category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggested Category Name"},"excluded":{"type":"boolean","title":"Excluded","default":false},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"force_uncategorized":{"type":"boolean","title":"Force Uncategorized","default":false}},"type":"object","required":["description","amount","date","type"],"title":"TransactionImport","description":"TransactionBase extended with import-only fields not exposed in read responses."},"TransactionImport-Output":{"properties":{"description":{"type":"string","title":"Description"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"date":{"type":"string","format":"date","title":"Date"},"type":{"type":"string","title":"Type"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"fx_rate":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Fx Rate"},"payee_raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Raw"},"category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category Name"},"suggested_category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Suggested Category Id"},"suggested_category_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggested Category Name"},"excluded":{"type":"boolean","title":"Excluded","default":false},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"force_uncategorized":{"type":"boolean","title":"Force Uncategorized","default":false}},"type":"object","required":["description","amount","date","type"],"title":"TransactionImport","description":"TransactionBase extended with import-only fields not exposed in read responses."},"TransactionImportPreview":{"properties":{"transactions":{"items":{"$ref":"#/components/schemas/TransactionImport-Output"},"type":"array","title":"Transactions"},"detected_format":{"type":"string","title":"Detected Format"},"csv_columns":{"items":{"type":"string"},"type":"array","title":"Csv Columns","default":[]},"parse_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parse Error"}},"type":"object","required":["transactions","detected_format"],"title":"TransactionImportPreview"},"TransactionImportRequest":{"properties":{"account_id":{"type":"string","format":"uuid","title":"Account Id"},"transactions":{"items":{"$ref":"#/components/schemas/TransactionImport-Input"},"type":"array","title":"Transactions"},"filename":{"type":"string","title":"Filename","default":""},"detected_format":{"type":"string","title":"Detected Format","default":""},"detect_duplicates":{"type":"boolean","title":"Detect Duplicates","default":true}},"type":"object","required":["account_id","transactions"],"title":"TransactionImportRequest"},"TransactionRead":{"properties":{"description":{"type":"string","title":"Description"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount"},"date":{"type":"string","format":"date","title":"Date"},"type":{"type":"string","title":"Type"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id"},"currency":{"type":"string","title":"Currency","default":"USD"},"fx_rate":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Fx Rate"},"payee_raw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Raw"},"id":{"type":"string","format":"uuid","title":"Id"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"category":{"anyOf":[{"$ref":"#/components/schemas/CategoryRead"},{"type":"null"}]},"source":{"type":"string","title":"Source"},"status":{"type":"string","title":"Status","default":"posted"},"payee":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee"},"payee_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Payee Id"},"payee_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payee Name"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"transfer_pair_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Transfer Pair Id"},"amount_primary":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount Primary"},"fx_rate_used":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fx Rate Used"},"fx_fallback":{"type":"boolean","title":"Fx Fallback","default":false},"attachment_count":{"type":"integer","title":"Attachment Count","default":0},"installment_number":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Installment Number"},"total_installments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Installments"},"installment_total_amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Installment Total Amount"},"installment_purchase_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Installment Purchase Date"},"bill_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Bill Id"},"effective_bill_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Effective Bill Date"},"recurring_transaction_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Recurring Transaction Id"},"splits":{"items":{"$ref":"#/components/schemas/TransactionSplitRead"},"type":"array","title":"Splits","default":[]},"is_shared":{"type":"boolean","title":"Is Shared","default":false},"viewer_share":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Viewer Share"},"group_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Group Id"},"parent_owner_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Owner Name"},"is_ignored":{"type":"boolean","title":"Is Ignored","default":false}},"type":"object","required":["description","amount","date","type","id","user_id","source"],"title":"TransactionRead"},"TransactionSplitInput":{"properties":{"group_member_id":{"type":"string","format":"uuid","title":"Group Member Id"},"share_amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Share Amount"},"share_pct":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Share Pct"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["group_member_id"],"title":"TransactionSplitInput","description":"One row in a splits payload. Required fields depend on share_type:\nequal -> only group_member_id; exact -> + share_amount; percent ->\n+ share_pct."},"TransactionSplitRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"transaction_id":{"type":"string","format":"uuid","title":"Transaction Id"},"group_member_id":{"type":"string","format":"uuid","title":"Group Member Id"},"share_amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Share Amount"},"share_type":{"type":"string","title":"Share Type"},"share_pct":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Share Pct"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","transaction_id","group_member_id","share_amount","share_type","created_at"],"title":"TransactionSplitRead"},"TransactionSplitsInput":{"properties":{"share_type":{"type":"string","enum":["equal","exact","percent"],"title":"Share Type"},"splits":{"items":{"$ref":"#/components/schemas/TransactionSplitInput"},"type":"array","title":"Splits"}},"type":"object","required":["share_type","splits"],"title":"TransactionSplitsInput","description":"Whole splits payload attached to a transaction."},"TransactionUpdate":{"properties":{"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount"},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"account_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Account Id"},"category_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Category Id"},"payee_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Payee Id"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"amount_primary":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Amount Primary"},"fx_rate_used":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Fx Rate Used"},"is_ignored":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Ignored"},"apply_to_transfer_pair":{"type":"boolean","title":"Apply To Transfer Pair","default":false},"effective_bill_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Effective Bill Date"},"splits":{"anyOf":[{"$ref":"#/components/schemas/TransactionSplitsInput"},{"type":"null"}]}},"type":"object","title":"TransactionUpdate"},"TransactionsSummary":{"properties":{"income":{"type":"number","title":"Income"},"expense":{"type":"number","title":"Expense"},"net":{"type":"number","title":"Net"},"excluded":{"type":"number","title":"Excluded"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["income","expense","net","excluded","currency"],"title":"TransactionsSummary","description":"Income / expense / net totals across all rows matching the active\nfilters (issue #185). Amounts are in the user's primary currency.\nFloats (not Decimal) so the JSON payload matches `amount_primary`\nand the frontend gets plain numbers.\n\n`excluded` (issue #242) is the absolute total of everything filtered\nout of income/expense for the same rows — paired transfers,\n`treat_as_transfer` categories (transfers, investments, custom) and\nignored items — i.e. the complement of `counts_as_pnl()`."},"TransferCreate":{"properties":{"from_account_id":{"type":"string","format":"uuid","title":"From Account Id"},"to_account_id":{"type":"string","format":"uuid","title":"To Account Id"},"amount":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount"},"date":{"type":"string","format":"date","title":"Date"},"description":{"type":"string","title":"Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"fx_rate":{"anyOf":[{"type":"number"},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Fx Rate"}},"type":"object","required":["from_account_id","to_account_id","amount","date","description"],"title":"TransferCreate"},"TransferRead":{"properties":{"debit":{"$ref":"#/components/schemas/TransactionRead"},"credit":{"$ref":"#/components/schemas/TransactionRead"},"transfer_pair_id":{"type":"string","format":"uuid","title":"Transfer Pair Id"}},"type":"object","required":["debit","credit","transfer_pair_id"],"title":"TransferRead"},"TwoFactorDisableRequest":{"properties":{"password":{"type":"string","title":"Password"},"code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^\\d{6}$","title":"Code"}},"type":"object","required":["password","code"],"title":"TwoFactorDisableRequest"},"TwoFactorEnableRequest":{"properties":{"code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^\\d{6}$","title":"Code"}},"type":"object","required":["code"],"title":"TwoFactorEnableRequest"},"TwoFactorSetupResponse":{"properties":{"secret":{"type":"string","title":"Secret"},"otpauth_uri":{"type":"string","title":"Otpauth Uri"}},"type":"object","required":["secret","otpauth_uri"],"title":"TwoFactorSetupResponse"},"TwoFactorVerifyRequest":{"properties":{"temp_token":{"type":"string","title":"Temp Token"},"code":{"type":"string","maxLength":6,"minLength":6,"pattern":"^\\d{6}$","title":"Code"}},"type":"object","required":["temp_token","code"],"title":"TwoFactorVerifyRequest"},"UserCreate":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active","default":true},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser","default":false},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified","default":false},"preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preferences"}},"type":"object","required":["email","password"],"title":"UserCreate"},"UserLookupResult":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["id","email"],"title":"UserLookupResult"},"UserRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","format":"email","title":"Email"},"is_active":{"type":"boolean","title":"Is Active","default":true},"is_superuser":{"type":"boolean","title":"Is Superuser","default":false},"is_verified":{"type":"boolean","title":"Is Verified","default":false},"preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preferences"},"is_2fa_enabled":{"type":"boolean","title":"Is 2Fa Enabled","default":false}},"type":"object","required":["id","email"],"title":"UserRead"},"UserUpdate":{"properties":{"password":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Password"},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"title":"Email"},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Active"},"is_superuser":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Superuser"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"preferences":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Preferences"}},"type":"object","title":"UserUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WorkspaceCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"kind":{"type":"string","title":"Kind","default":"personal"},"default_currency":{"anyOf":[{"type":"string","maxLength":3,"minLength":3},{"type":"null"}],"title":"Default Currency"},"locale":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Locale"},"icon":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string","maxLength":7},{"type":"null"}],"title":"Color"},"self_membership":{"type":"boolean","title":"Self Membership","default":false}},"type":"object","required":["name"],"title":"WorkspaceCreate"},"WorkspaceRead":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"kind":{"type":"string","title":"Kind"},"is_archived":{"type":"boolean","title":"Is Archived"},"default_currency":{"type":"string","title":"Default Currency"},"locale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Locale"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"created_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By User Id"},"managed_by_user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Managed By User Id"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"}},"type":"object","required":["id","name","kind","is_archived","default_currency","created_at"],"title":"WorkspaceRead"},"WorkspaceUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"icon":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Icon"},"color":{"anyOf":[{"type":"string","maxLength":7},{"type":"null"}],"title":"Color"},"default_currency":{"anyOf":[{"type":"string","maxLength":3,"minLength":3},{"type":"null"}],"title":"Default Currency"},"locale":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Locale"}},"type":"object","title":"WorkspaceUpdate"}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"api/auth/login"}}}}}}