{ "openapi": "3.1.0", "info": { "title": "LifeTrack API", "version": "1.0.0" }, "paths": { "/api/auth/status": { "get": { "tags": [ "auth" ], "summary": "Auth Status", "operationId": "auth_status_api_auth_status_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthStatus" } } } } } } }, "/api/auth/setup": { "post": { "tags": [ "auth" ], "summary": "Setup", "operationId": "setup_api_auth_setup_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetupRequest" } } }, "required": true }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/auth/login": { "post": { "tags": [ "auth" ], "summary": "Login", "operationId": "login_api_auth_login_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LoginRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/auth/me": { "get": { "tags": [ "auth" ], "summary": "Me", "operationId": "me_api_auth_me_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserRead" } } } } }, "security": [ { "HTTPBearer": [] } ] }, "patch": { "tags": [ "auth" ], "summary": "Update Me", "operationId": "update_me_api_auth_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" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/auth/device-keys": { "get": { "tags": [ "auth" ], "summary": "List Device Keys", "operationId": "list_device_keys_api_auth_device_keys_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/DeviceKeyRead" }, "type": "array", "title": "Response List Device Keys Api Auth Device Keys Get" } } } } }, "security": [ { "HTTPBearer": [] } ] }, "post": { "tags": [ "auth" ], "summary": "Create Device Key", "operationId": "create_device_key_api_auth_device_keys_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeviceKeyCreate" } } }, "required": true }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeviceKeyCreated" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/auth/device-keys/{key_id}": { "delete": { "tags": [ "auth" ], "summary": "Revoke Device Key", "operationId": "revoke_device_key_api_auth_device_keys__key_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "key_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Key Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/accounts": { "get": { "tags": [ "finance" ], "summary": "List Accounts", "operationId": "list_accounts_api_finance_accounts_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "include_archived", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Include Archived" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/AccountRead" }, "title": "Response List Accounts Api Finance Accounts Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "finance" ], "summary": "Create Account", "operationId": "create_account_api_finance_accounts_post", "security": [ { "HTTPBearer": [] } ], "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/finance/accounts/{account_id}": { "patch": { "tags": [ "finance" ], "summary": "Update Account", "operationId": "update_account_api_finance_accounts__account_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "account_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Account 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": [ "finance" ], "summary": "Delete Account", "operationId": "delete_account_api_finance_accounts__account_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "account_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Account Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/categories": { "get": { "tags": [ "finance" ], "summary": "List Categories", "operationId": "list_categories_api_finance_categories_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/CategoryRead" }, "type": "array", "title": "Response List Categories Api Finance Categories Get" } } } } }, "security": [ { "HTTPBearer": [] } ] }, "post": { "tags": [ "finance" ], "summary": "Create Category", "operationId": "create_category_api_finance_categories_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CategoryCreate" } } }, "required": true }, "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" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/categories/{category_id}": { "patch": { "tags": [ "finance" ], "summary": "Update Category", "operationId": "update_category_api_finance_categories__category_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "category_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Category 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": [ "finance" ], "summary": "Delete Category", "operationId": "delete_category_api_finance_categories__category_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "category_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Category Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/source-profiles": { "get": { "tags": [ "finance" ], "summary": "List Source Profiles", "operationId": "list_source_profiles_api_finance_source_profiles_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SourceProfileRead" }, "type": "array", "title": "Response List Source Profiles Api Finance Source Profiles Get" } } } } }, "security": [ { "HTTPBearer": [] } ] }, "post": { "tags": [ "finance" ], "summary": "Create Source Profile", "operationId": "create_source_profile_api_finance_source_profiles_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SourceProfileCreate" } } }, "required": true }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SourceProfileRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/source-profiles/{profile_id}/clone": { "post": { "tags": [ "finance" ], "summary": "Clone Source Profile", "operationId": "clone_source_profile_api_finance_source_profiles__profile_id__clone_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Profile Id" } } ], "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SourceProfileRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/source-profiles/{profile_id}": { "patch": { "tags": [ "finance" ], "summary": "Update Source Profile", "operationId": "update_source_profile_api_finance_source_profiles__profile_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Profile Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SourceProfileUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SourceProfileRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "finance" ], "summary": "Delete Source Profile", "operationId": "delete_source_profile_api_finance_source_profiles__profile_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "profile_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Profile Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/transactions": { "get": { "tags": [ "finance" ], "summary": "List Transactions", "operationId": "list_transactions_api_finance_transactions_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "date_from", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date From" } }, { "name": "date_to", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date To" } }, { "name": "account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string", "format": "uuid" } }, { "type": "null" } ], "title": "Account Id" } }, { "name": "category_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "null" } ], "title": "Category Id" } }, { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Q" } }, { "name": "direction", "in": "query", "required": false, "schema": { "anyOf": [ { "enum": [ "debit", "credit" ], "type": "string" }, { "type": "null" } ], "title": "Direction" } }, { "name": "amount_min", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "number" }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Amount Min" } }, { "name": "amount_max", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "number" }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Amount Max" } }, { "name": "is_transfer", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Transfer" } }, { "name": "import_run_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Import Run Id" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_TransactionRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "finance" ], "summary": "Create Transaction", "operationId": "create_transaction_api_finance_transactions_post", "security": [ { "HTTPBearer": [] } ], "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/finance/transactions/{transaction_id}": { "patch": { "tags": [ "finance" ], "summary": "Update Transaction", "operationId": "update_transaction_api_finance_transactions__transaction_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "transaction_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Transaction 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": [ "finance" ], "summary": "Delete Transaction", "operationId": "delete_transaction_api_finance_transactions__transaction_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "transaction_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Transaction Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/transactions/bulk-categorize": { "post": { "tags": [ "finance" ], "summary": "Bulk Categorize", "operationId": "bulk_categorize_api_finance_transactions_bulk_categorize_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkCategorizeRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkCategorizeResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/rules": { "get": { "tags": [ "finance" ], "summary": "List Rules", "operationId": "list_rules_api_finance_rules_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RuleRead" }, "type": "array", "title": "Response List Rules Api Finance Rules Get" } } } } }, "security": [ { "HTTPBearer": [] } ] }, "post": { "tags": [ "finance" ], "summary": "Create Rule", "operationId": "create_rule_api_finance_rules_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RuleCreate" } } }, "required": true }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RuleRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/rules/{rule_id}": { "patch": { "tags": [ "finance" ], "summary": "Update Rule", "operationId": "update_rule_api_finance_rules__rule_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "rule_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Rule Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RuleUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RuleRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "finance" ], "summary": "Delete Rule", "operationId": "delete_rule_api_finance_rules__rule_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "rule_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Rule Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/rules/reorder": { "post": { "tags": [ "finance" ], "summary": "Reorder Rules", "operationId": "reorder_rules_api_finance_rules_reorder_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RuleReorderRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/RuleRead" }, "type": "array", "title": "Response Reorder Rules Api Finance Rules Reorder Post" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/rules/apply": { "post": { "tags": [ "finance" ], "summary": "Apply Rules", "operationId": "apply_rules_api_finance_rules_apply_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RuleApplyRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RuleApplyResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/rules/preview": { "post": { "tags": [ "finance" ], "summary": "Preview Rule", "operationId": "preview_rule_api_finance_rules_preview_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RulePreviewRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RulePreviewResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/budgets": { "get": { "tags": [ "finance" ], "summary": "List Budgets", "operationId": "list_budgets_api_finance_budgets_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "month", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Month" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/app__modules__finance__schemas__BudgetRead" }, "title": "Response List Budgets Api Finance Budgets Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "finance" ], "summary": "Create Budget", "operationId": "create_budget_api_finance_budgets_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BudgetCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__finance__schemas__BudgetRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/budgets/{budget_id}": { "patch": { "tags": [ "finance" ], "summary": "Update Budget", "operationId": "update_budget_api_finance_budgets__budget_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "budget_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Budget Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BudgetUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/app__modules__finance__schemas__BudgetRead" }, "title": "Response Update Budget Api Finance Budgets Budget Id Patch" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "finance" ], "summary": "Delete Budget", "operationId": "delete_budget_api_finance_budgets__budget_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "budget_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Budget Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/imports/preview": { "post": { "tags": [ "finance" ], "summary": "Preview Import", "operationId": "preview_import_api_finance_imports_preview_post", "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_preview_import_api_finance_imports_preview_post" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ImportPreviewResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/imports": { "post": { "tags": [ "finance" ], "summary": "Run Import", "operationId": "run_import_api_finance_imports_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_run_import_api_finance_imports_post" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__finance__schemas__ImportRunRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": [ "finance" ], "summary": "List Imports", "operationId": "list_imports_api_finance_imports_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__core__pagination__Page_ImportRunRead___1" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/imports/{run_id}": { "get": { "tags": [ "finance" ], "summary": "Get Import", "operationId": "get_import_api_finance_imports__run_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Run Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__finance__schemas__ImportRunRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "finance" ], "summary": "Rollback Import", "operationId": "rollback_import_api_finance_imports__run_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Run Id" } }, { "name": "force", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Force" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/transfers/detect": { "post": { "tags": [ "finance" ], "summary": "Detect Transfers", "operationId": "detect_transfers_api_finance_transfers_detect_post", "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/TransferDetectRequest" }, { "type": "null" } ], "title": "Payload" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferDetectResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/transfers/link": { "post": { "tags": [ "finance" ], "summary": "Link Transfer", "operationId": "link_transfer_api_finance_transfers_link_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferLinkRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TransferLinkResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/finance/transfers/{transfer_group_id}": { "delete": { "tags": [ "finance" ], "summary": "Unlink Transfer", "operationId": "unlink_transfer_api_finance_transfers__transfer_group_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "transfer_group_id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "title": "Transfer Group Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/stats/monthly-by-category": { "get": { "tags": [ "finance" ], "summary": "Stats Monthly By Category", "operationId": "stats_monthly_by_category_api_finance_stats_monthly_by_category_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "months", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 60, "minimum": 1, "default": 12, "title": "Months" } }, { "name": "level", "in": "query", "required": false, "schema": { "enum": [ "root", "child" ], "type": "string", "default": "root", "title": "Level" } }, { "name": "direction", "in": "query", "required": false, "schema": { "enum": [ "debit", "credit" ], "type": "string", "default": "debit", "title": "Direction" } }, { "name": "account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string", "format": "uuid" } }, { "type": "null" } ], "title": "Account Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MonthlyByCategoryResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/stats/cashflow": { "get": { "tags": [ "finance" ], "summary": "Stats Cashflow", "operationId": "stats_cashflow_api_finance_stats_cashflow_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "months", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 60, "minimum": 1, "default": 12, "title": "Months" } }, { "name": "account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string", "format": "uuid" } }, { "type": "null" } ], "title": "Account Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CashflowResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/stats/top-merchants": { "get": { "tags": [ "finance" ], "summary": "Stats Top Merchants", "operationId": "stats_top_merchants_api_finance_stats_top_merchants_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "months", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 60, "minimum": 1, "default": 3, "title": "Months" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 100, "minimum": 1, "default": 15, "title": "Limit" } }, { "name": "direction", "in": "query", "required": false, "schema": { "enum": [ "debit", "credit" ], "type": "string", "default": "debit", "title": "Direction" } }, { "name": "account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string", "format": "uuid" } }, { "type": "null" } ], "title": "Account Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TopMerchantsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/stats/recurring": { "get": { "tags": [ "finance" ], "summary": "Stats Recurring", "operationId": "stats_recurring_api_finance_stats_recurring_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "direction", "in": "query", "required": false, "schema": { "enum": [ "debit", "credit" ], "type": "string", "default": "debit", "title": "Direction" } }, { "name": "include_inactive", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Include Inactive" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecurringResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/stats/budget-progress": { "get": { "tags": [ "finance" ], "summary": "Stats Budget Progress", "operationId": "stats_budget_progress_api_finance_stats_budget_progress_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "month", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Month" } }, { "name": "account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string", "format": "uuid" } }, { "type": "null" } ], "title": "Account Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BudgetProgressResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/stats/sankey": { "get": { "tags": [ "finance" ], "summary": "Stats Sankey", "operationId": "stats_sankey_api_finance_stats_sankey_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "month", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Month" } }, { "name": "months", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 60, "minimum": 1, "default": 1, "title": "Months" } }, { "name": "account_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string", "format": "uuid" } }, { "type": "null" } ], "title": "Account Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SankeyResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/finance/dashboard": { "get": { "tags": [ "finance" ], "summary": "Dashboard", "operationId": "dashboard_api_finance_dashboard_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__finance__schemas__DashboardResponse" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/health/profile": { "get": { "tags": [ "health" ], "summary": "Get Profile", "operationId": "get_profile_api_health_profile_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthProfileRead" } } } } }, "security": [ { "HTTPBearer": [] } ] }, "put": { "tags": [ "health" ], "summary": "Put Profile", "operationId": "put_profile_api_health_profile_put", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthProfileUpdate" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HealthProfileRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/health/weights/stats": { "get": { "tags": [ "health" ], "summary": "Weights Stats", "operationId": "weights_stats_api_health_weights_stats_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__health__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/weights": { "get": { "tags": [ "health" ], "summary": "List Weights", "operationId": "list_weights_api_health_weights_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_WeightEntryRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "health" ], "summary": "Create Weight", "operationId": "create_weight_api_health_weights_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WeightEntryCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WeightEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/weights/{entry_id}": { "put": { "tags": [ "health" ], "summary": "Update Weight", "operationId": "update_weight_api_health_weights__entry_id__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WeightEntryUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WeightEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": [ "health" ], "summary": "Update Weight", "operationId": "update_weight_api_health_weights__entry_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WeightEntryUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WeightEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "health" ], "summary": "Delete Weight", "operationId": "delete_weight_api_health_weights__entry_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/measurements/stats": { "get": { "tags": [ "health" ], "summary": "Measurements Stats", "operationId": "measurements_stats_api_health_measurements_stats_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__health__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/measurements": { "get": { "tags": [ "health" ], "summary": "List Measurements", "operationId": "list_measurements_api_health_measurements_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_BodyMeasurementRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "health" ], "summary": "Create Measurement", "operationId": "create_measurement_api_health_measurements_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BodyMeasurementCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BodyMeasurementRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/measurements/{row_id}": { "put": { "tags": [ "health" ], "summary": "Update Measurement", "operationId": "update_measurement_api_health_measurements__row_id__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "row_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Row Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BodyMeasurementUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BodyMeasurementRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": [ "health" ], "summary": "Update Measurement", "operationId": "update_measurement_api_health_measurements__row_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "row_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Row Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BodyMeasurementUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BodyMeasurementRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "health" ], "summary": "Delete Measurement", "operationId": "delete_measurement_api_health_measurements__row_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "row_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Row Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/activity/stats": { "get": { "tags": [ "health" ], "summary": "Activity Stats", "operationId": "activity_stats_api_health_activity_stats_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__health__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/activity": { "get": { "tags": [ "health" ], "summary": "List Activity", "operationId": "list_activity_api_health_activity_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } }, { "name": "raw", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Raw" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "health" ], "summary": "Upsert Activity", "operationId": "upsert_activity_api_health_activity_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DailyActivityUpsert" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DailyActivityRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/activity/{row_id}": { "delete": { "tags": [ "health" ], "summary": "Delete Activity", "operationId": "delete_activity_api_health_activity__row_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "row_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Row Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/workouts/stats": { "get": { "tags": [ "health" ], "summary": "Workouts Stats", "operationId": "workouts_stats_api_health_workouts_stats_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__health__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/workouts": { "get": { "tags": [ "health" ], "summary": "List Workouts", "operationId": "list_workouts_api_health_workouts_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } }, { "name": "sport_type", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/SportType" }, { "type": "null" } ], "title": "Sport Type" } }, { "name": "include_hidden", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Include Hidden" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_WorkoutRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "health" ], "summary": "Create Workout", "operationId": "create_workout_api_health_workouts_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkoutCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkoutRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/workouts/{workout_id}": { "put": { "tags": [ "health" ], "summary": "Update Workout", "operationId": "update_workout_api_health_workouts__workout_id__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "workout_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Workout Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkoutUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkoutRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": [ "health" ], "summary": "Update Workout", "operationId": "update_workout_api_health_workouts__workout_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "workout_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Workout Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkoutUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkoutRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "health" ], "summary": "Delete Workout", "operationId": "delete_workout_api_health_workouts__workout_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "workout_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Workout Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/goals/active": { "get": { "tags": [ "health" ], "summary": "Get Active Goal", "operationId": "get_active_goal_api_health_goals_active_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActiveGoalRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/goals": { "get": { "tags": [ "health" ], "summary": "List Goals", "operationId": "list_goals_api_health_goals_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/GoalStatus" }, { "type": "null" } ], "title": "Status" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_GoalRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "health" ], "summary": "Create Goal", "operationId": "create_goal_api_health_goals_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "replace_active", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Replace Active" } } ], "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/health/goals/{goal_id}/activate": { "post": { "tags": [ "health" ], "summary": "Activate Goal", "operationId": "activate_goal_api_health_goals__goal_id__activate_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "goal_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Goal 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" } } } } } } }, "/api/health/goals/{goal_id}": { "put": { "tags": [ "health" ], "summary": "Update Goal", "operationId": "update_goal_api_health_goals__goal_id__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "goal_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Goal 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" } } } } } }, "patch": { "tags": [ "health" ], "summary": "Update Goal", "operationId": "update_goal_api_health_goals__goal_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "goal_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Goal 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": [ "health" ], "summary": "Delete Goal", "operationId": "delete_goal_api_health_goals__goal_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "goal_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Goal Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/energy-balance": { "get": { "tags": [ "health" ], "summary": "Energy Balance", "operationId": "energy_balance_api_health_energy_balance_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__health__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/dashboard": { "get": { "tags": [ "health" ], "summary": "Dashboard", "operationId": "dashboard_api_health_dashboard_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__health__schemas__DashboardResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/stats": { "get": { "tags": [ "health" ], "summary": "Nutrition Stats", "operationId": "nutrition_stats_api_health_nutrition_stats_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__health__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/days": { "get": { "tags": [ "health" ], "summary": "Nutrition Days", "operationId": "nutrition_days_api_health_nutrition_days_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NutritionDayRead" }, "title": "Response Nutrition Days Api Health Nutrition Days Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/days/{day}": { "get": { "tags": [ "health" ], "summary": "Nutrition Day", "operationId": "nutrition_day_api_health_nutrition_days__day__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "day", "in": "path", "required": true, "schema": { "type": "string", "format": "date", "title": "Day" } }, { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NutritionDayDetail" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/recent": { "get": { "tags": [ "health" ], "summary": "Recent Foods", "operationId": "recent_foods_api_health_nutrition_recent_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 50, "minimum": 1, "default": 20, "title": "Limit" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RecentFoodRead" }, "title": "Response Recent Foods Api Health Nutrition Recent Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/favorites": { "get": { "tags": [ "health" ], "summary": "List Favorites", "operationId": "list_favorites_api_health_nutrition_favorites_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_FoodFavoriteRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "health" ], "summary": "Create Favorite", "operationId": "create_favorite_api_health_nutrition_favorites_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodFavoriteCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodFavoriteRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/favorites/{favorite_id}": { "put": { "tags": [ "health" ], "summary": "Update Favorite", "operationId": "update_favorite_api_health_nutrition_favorites__favorite_id__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "favorite_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Favorite Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodFavoriteUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodFavoriteRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": [ "health" ], "summary": "Update Favorite", "operationId": "update_favorite_api_health_nutrition_favorites__favorite_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "favorite_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Favorite Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodFavoriteUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodFavoriteRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "health" ], "summary": "Delete Favorite", "operationId": "delete_favorite_api_health_nutrition_favorites__favorite_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "favorite_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Favorite Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/water/stats": { "get": { "tags": [ "health" ], "summary": "Water Stats", "operationId": "water_stats_api_health_nutrition_water_stats_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__health__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/water": { "get": { "tags": [ "health" ], "summary": "List Water", "operationId": "list_water_api_health_nutrition_water_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_WaterEntryRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "health" ], "summary": "Create Water", "operationId": "create_water_api_health_nutrition_water_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaterEntryCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaterEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/water/{entry_id}": { "delete": { "tags": [ "health" ], "summary": "Delete Water", "operationId": "delete_water_api_health_nutrition_water__entry_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/entries": { "get": { "tags": [ "health" ], "summary": "List Food Entries", "operationId": "list_food_entries_api_health_nutrition_entries_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "day", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Day" } }, { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } }, { "name": "meal", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/MealType" }, { "type": "null" } ], "title": "Meal" } }, { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Q" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_FoodEntryRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "health" ], "summary": "Create Food Entry", "operationId": "create_food_entry_api_health_nutrition_entries_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodEntryCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/nutrition/entries/{entry_id}": { "put": { "tags": [ "health" ], "summary": "Update Food Entry", "operationId": "update_food_entry_api_health_nutrition_entries__entry_id__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodEntryUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "patch": { "tags": [ "health" ], "summary": "Update Food Entry", "operationId": "update_food_entry_api_health_nutrition_entries__entry_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodEntryUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "health" ], "summary": "Delete Food Entry", "operationId": "delete_food_entry_api_health_nutrition_entries__entry_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/foods/search": { "get": { "tags": [ "health" ], "summary": "Search Foods", "operationId": "search_foods_api_health_foods_search_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "q", "in": "query", "required": true, "schema": { "type": "string", "minLength": 1, "maxLength": 100, "title": "Q" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 50, "minimum": 1, "default": 20, "title": "Limit" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodSearchResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/foods/barcode/{barcode}": { "get": { "tags": [ "health" ], "summary": "Food By Barcode", "operationId": "food_by_barcode_api_health_foods_barcode__barcode__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "barcode", "in": "path", "required": true, "schema": { "type": "string", "title": "Barcode" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FoodSearchItem" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/schedules": { "get": { "tags": [ "health" ], "summary": "List Schedules", "operationId": "list_schedules_api_health_schedules_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ScheduleRead" }, "type": "array", "title": "Response List Schedules Api Health Schedules Get" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/health/schedules/{kind}": { "put": { "tags": [ "health" ], "summary": "Put Schedule", "operationId": "put_schedule_api_health_schedules__kind__put", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "kind", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/ScheduleKind" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScheduleUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ScheduleRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/today": { "get": { "tags": [ "health" ], "summary": "Today", "operationId": "today_api_health_today_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TodayResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/health/stats/adherence": { "get": { "tags": [ "health" ], "summary": "Adherence", "operationId": "adherence_api_health_stats_adherence_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } }, { "name": "kind", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/ScheduleKind" }, { "type": "null" } ], "title": "Kind" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AdherenceResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/imports/sources": { "get": { "tags": [ "imports" ], "summary": "List Sources", "operationId": "list_sources_api_imports_sources_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/SourceInfo" }, "type": "array", "title": "Response List Sources Api Imports Sources Get" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/imports": { "post": { "tags": [ "imports" ], "summary": "Upload Import", "operationId": "upload_import_api_imports_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Body_upload_import_api_imports_post" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__imports__schemas__ImportRunRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "get": { "tags": [ "imports" ], "summary": "List Imports", "operationId": "list_imports_api_imports_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "domain", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Domain" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__core__pagination__Page_ImportRunRead___2" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/imports/{run_id}": { "get": { "tags": [ "imports" ], "summary": "Get Import", "operationId": "get_import_api_imports__run_id__get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Run Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__imports__schemas__ImportRunRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "imports" ], "summary": "Rollback Import", "operationId": "rollback_import_api_imports__run_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "run_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Run Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/ingest/{domain}": { "post": { "tags": [ "ingest" ], "summary": "Ingest", "operationId": "ingest_api_ingest__domain__post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "domain", "in": "path", "required": true, "schema": { "type": "string", "title": "Domain" } }, { "name": "X-API-Key", "in": "header", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "X-Api-Key" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngestPayload" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IngestResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/settings": { "get": { "tags": [ "vape" ], "summary": "Read Settings", "operationId": "read_settings_api_vape_settings_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VapeSettingsRead" } } } } }, "security": [ { "HTTPBearer": [] } ] }, "put": { "tags": [ "vape" ], "summary": "Write Settings", "operationId": "write_settings_api_vape_settings_put", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VapeSettingsPut" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VapeSettingsRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/vape/products": { "get": { "tags": [ "vape" ], "summary": "List Products", "operationId": "list_products_api_vape_products_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "kind", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/ProductKind" }, { "type": "null" } ], "title": "Kind" } }, { "name": "include_archived", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Include Archived" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_ProductRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "vape" ], "summary": "Create Product", "operationId": "create_product_api_vape_products_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/products/{product_id}": { "patch": { "tags": [ "vape" ], "summary": "Update Product", "operationId": "update_product_api_vape_products__product_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "product_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Product Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "vape" ], "summary": "Delete Product", "operationId": "delete_product_api_vape_products__product_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "product_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Product Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/mixes": { "get": { "tags": [ "vape" ], "summary": "List Mixes", "operationId": "list_mixes_api_vape_mixes_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "include_archived", "in": "query", "required": false, "schema": { "type": "boolean", "default": false, "title": "Include Archived" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_MixRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "vape" ], "summary": "Create Mix", "operationId": "create_mix_api_vape_mixes_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MixCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MixRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/mixes/calculator": { "post": { "tags": [ "vape" ], "summary": "Mix Calculator", "description": "Stateless recipe assistant — persists nothing (§6.3).", "operationId": "mix_calculator_api_vape_mixes_calculator_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MixCalculatorRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MixCalculatorResult" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "HTTPBearer": [] } ] } }, "/api/vape/mixes/{mix_id}/activate": { "post": { "tags": [ "vape" ], "summary": "Activate Mix", "operationId": "activate_mix_api_vape_mixes__mix_id__activate_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "mix_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mix Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MixRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/mixes/{mix_id}": { "patch": { "tags": [ "vape" ], "summary": "Update Mix", "operationId": "update_mix_api_vape_mixes__mix_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "mix_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mix Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MixUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MixRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "vape" ], "summary": "Delete Mix", "operationId": "delete_mix_api_vape_mixes__mix_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "mix_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Mix Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/liquids": { "get": { "tags": [ "vape" ], "summary": "List Liquids", "operationId": "list_liquids_api_vape_liquids_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "kind", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/LiquidEntryKind" }, { "type": "null" } ], "title": "Kind" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_LiquidEntryRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "vape" ], "summary": "Create Liquid", "operationId": "create_liquid_api_vape_liquids_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LiquidEntryCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LiquidEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/liquids/{entry_id}": { "patch": { "tags": [ "vape" ], "summary": "Update Liquid", "operationId": "update_liquid_api_vape_liquids__entry_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LiquidEntryUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LiquidEntryRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "vape" ], "summary": "Delete Liquid", "operationId": "delete_liquid_api_vape_liquids__entry_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "entry_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Entry Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/coils": { "get": { "tags": [ "vape" ], "summary": "List Coils", "operationId": "list_coils_api_vape_coils_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_CoilChangeRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "vape" ], "summary": "Create Coil", "operationId": "create_coil_api_vape_coils_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CoilChangeCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CoilChangeCreated" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/coils/stats": { "get": { "tags": [ "vape" ], "summary": "Coil Stats", "operationId": "coil_stats_api_vape_coils_stats_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__vape__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/coils/change": { "post": { "tags": [ "vape" ], "summary": "Quick Coil Change", "description": "One-click « Résistance changée » : registers a change at `now` (§12.6).", "operationId": "quick_coil_change_api_vape_coils_change_post", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/CoilChangeCreate" }, { "type": "null" } ], "title": "Payload" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CoilChangeCreated" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/coils/{coil_id}": { "patch": { "tags": [ "vape" ], "summary": "Update Coil", "operationId": "update_coil_api_vape_coils__coil_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "coil_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Coil Id" } }, { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CoilChangeUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CoilChangeRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "vape" ], "summary": "Delete Coil", "operationId": "delete_coil_api_vape_coils__coil_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "coil_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Coil Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/purchases": { "get": { "tags": [ "vape" ], "summary": "List Purchases", "operationId": "list_purchases_api_vape_purchases_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "product_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Product Id" } }, { "name": "sort", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sort" } }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "default": 1, "title": "Page" } }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 200, "minimum": 1, "default": 50, "title": "Page Size" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Page_PurchaseRead_" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "post": { "tags": [ "vape" ], "summary": "Create Purchase", "operationId": "create_purchase_api_vape_purchases_post", "security": [ { "HTTPBearer": [] } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PurchaseCreate" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PurchaseRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/purchases/{purchase_id}": { "patch": { "tags": [ "vape" ], "summary": "Update Purchase", "operationId": "update_purchase_api_vape_purchases__purchase_id__patch", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "purchase_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Purchase Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PurchaseUpdate" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PurchaseRead" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } }, "delete": { "tags": [ "vape" ], "summary": "Delete Purchase", "operationId": "delete_purchase_api_vape_purchases__purchase_id__delete", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "purchase_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Purchase Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/stats/consumption": { "get": { "tags": [ "vape" ], "summary": "Consumption Stats", "operationId": "consumption_stats_api_vape_stats_consumption_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__vape__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/stats/nicotine": { "get": { "tags": [ "vape" ], "summary": "Nicotine Stats", "operationId": "nicotine_stats_api_vape_stats_nicotine_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__vape__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/stats/costs": { "get": { "tags": [ "vape" ], "summary": "Cost Stats", "operationId": "cost_stats_api_vape_stats_costs_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__vape__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/stats/savings": { "get": { "tags": [ "vape" ], "summary": "Savings Stats", "operationId": "savings_stats_api_vape_stats_savings_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "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": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/app__modules__vape__schemas__StatsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/milestones": { "get": { "tags": [ "vape" ], "summary": "Milestones", "operationId": "milestones_api_vape_milestones_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MilestoneRead" }, "title": "Response Milestones Api Vape Milestones Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/api/vape/dashboard": { "get": { "tags": [ "vape" ], "summary": "Dashboard", "operationId": "dashboard_api_vape_dashboard_get", "security": [ { "HTTPBearer": [] } ], "parameters": [ { "name": "tz", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tz" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VapeDashboard" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } } }, "components": { "schemas": { "AccountCreate": { "properties": { "name": { "type": "string", "maxLength": 100, "minLength": 1, "title": "Name" }, "kind": { "$ref": "#/components/schemas/AccountKind", "default": "checking" }, "currency": { "type": "string", "maxLength": 3, "minLength": 3, "title": "Currency", "default": "EUR" }, "institution": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Institution" }, "iban_masked": { "anyOf": [ { "type": "string", "maxLength": 34 }, { "type": "null" } ], "title": "Iban Masked" }, "initial_balance": { "anyOf": [ { "type": "number" }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Initial Balance", "default": "0.00" } }, "type": "object", "required": [ "name" ], "title": "AccountCreate" }, "AccountKind": { "type": "string", "enum": [ "checking", "savings", "paypal", "cash", "other" ], "title": "AccountKind" }, "AccountRead": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "kind": { "$ref": "#/components/schemas/AccountKind" }, "currency": { "type": "string", "title": "Currency" }, "institution": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Institution" }, "iban_masked": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iban Masked" }, "initial_balance": { "type": "number", "title": "Initial Balance" }, "is_archived": { "type": "boolean", "title": "Is Archived" }, "balance": { "type": "number", "title": "Balance" }, "transaction_count": { "type": "integer", "title": "Transaction Count" }, "last_transaction_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Last Transaction Date" } }, "type": "object", "required": [ "id", "name", "kind", "currency", "institution", "iban_masked", "initial_balance", "is_archived", "balance", "transaction_count" ], "title": "AccountRead" }, "AccountUpdate": { "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "kind": { "anyOf": [ { "$ref": "#/components/schemas/AccountKind" }, { "type": "null" } ] }, "currency": { "anyOf": [ { "type": "string", "maxLength": 3, "minLength": 3 }, { "type": "null" } ], "title": "Currency" }, "institution": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Institution" }, "iban_masked": { "anyOf": [ { "type": "string", "maxLength": 34 }, { "type": "null" } ], "title": "Iban Masked" }, "initial_balance": { "anyOf": [ { "type": "number" }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Initial Balance" }, "is_archived": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Archived" } }, "type": "object", "title": "AccountUpdate" }, "ActiveGoalRead": { "properties": { "goal": { "anyOf": [ { "$ref": "#/components/schemas/GoalRead" }, { "type": "null" } ] }, "budget": { "anyOf": [ { "$ref": "#/components/schemas/app__modules__health__schemas__BudgetRead" }, { "type": "null" } ] }, "projection": { "anyOf": [ { "$ref": "#/components/schemas/ProjectionRead" }, { "type": "null" } ] }, "trend_weight_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Trend Weight Kg" }, "done_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Done Kg" }, "remaining_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Remaining Kg" }, "progress_pct": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Progress Pct" } }, "type": "object", "title": "ActiveGoalRead" }, "ActivityLevel": { "type": "string", "enum": [ "sedentary", "light", "moderate", "active", "very_active" ], "title": "ActivityLevel" }, "AdherenceDay": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "planned": { "type": "boolean", "title": "Planned" }, "done": { "type": "boolean", "title": "Done" }, "status": { "type": "string", "title": "Status" } }, "type": "object", "required": [ "date", "planned", "done", "status" ], "title": "AdherenceDay" }, "AdherenceKind": { "properties": { "kind": { "$ref": "#/components/schemas/ScheduleKind" }, "weekdays": { "items": { "type": "integer" }, "type": "array", "title": "Weekdays" }, "enabled": { "type": "boolean", "title": "Enabled", "default": false }, "planned_days": { "type": "integer", "title": "Planned Days", "default": 0 }, "done_days": { "type": "integer", "title": "Done Days", "default": 0 }, "missed_days": { "type": "integer", "title": "Missed Days", "default": 0 }, "adherence_pct": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Adherence Pct" }, "streak": { "$ref": "#/components/schemas/StreakRead" }, "days": { "items": { "$ref": "#/components/schemas/AdherenceDay" }, "type": "array", "title": "Days" } }, "type": "object", "required": [ "kind" ], "title": "AdherenceKind" }, "AdherenceResponse": { "properties": { "from": { "type": "string", "format": "date", "title": "From" }, "to": { "type": "string", "format": "date", "title": "To" }, "unit": { "type": "string", "title": "Unit" }, "series": { "items": { "$ref": "#/components/schemas/Series" }, "type": "array", "title": "Series" }, "meta": { "additionalProperties": true, "type": "object", "title": "Meta" }, "kinds": { "items": { "$ref": "#/components/schemas/AdherenceKind" }, "type": "array", "title": "Kinds" } }, "type": "object", "required": [ "from", "to", "unit" ], "title": "AdherenceResponse", "description": "`/health/stats/adherence` — a `stats/*` endpoint, so it carries the §8.1\nenvelope (one calendar-heatmap series per habit) plus the richer per-habit\nbreakdown of addendum-planning.md that the planning editor needs." }, "AuthStatus": { "properties": { "setup_required": { "type": "boolean", "title": "Setup Required" }, "needs_setup": { "type": "boolean", "title": "Needs Setup" } }, "type": "object", "required": [ "setup_required", "needs_setup" ], "title": "AuthStatus" }, "BodyMeasurementCreate": { "properties": { "measured_at": { "type": "string", "format": "date-time", "title": "Measured At" }, "neck_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Neck Cm" }, "chest_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Chest Cm" }, "waist_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Waist Cm" }, "hips_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Hips Cm" }, "biceps_left_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Biceps Left Cm" }, "biceps_right_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Biceps Right Cm" }, "thigh_left_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Thigh Left Cm" }, "thigh_right_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Thigh Right Cm" }, "calf_left_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Calf Left Cm" }, "calf_right_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Calf Right Cm" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "measured_at" ], "title": "BodyMeasurementCreate" }, "BodyMeasurementRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "measured_at": { "type": "string", "format": "date-time", "title": "Measured At" }, "neck_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Neck Cm" }, "chest_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Chest Cm" }, "waist_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Waist Cm" }, "hips_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Hips Cm" }, "biceps_left_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Biceps Left Cm" }, "biceps_right_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Biceps Right Cm" }, "thigh_left_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Thigh Left Cm" }, "thigh_right_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Thigh Right Cm" }, "calf_left_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Calf Left Cm" }, "calf_right_cm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Calf Right Cm" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" }, "source": { "type": "string", "title": "Source" } }, "type": "object", "required": [ "id", "measured_at", "neck_cm", "chest_cm", "waist_cm", "hips_cm", "biceps_left_cm", "biceps_right_cm", "thigh_left_cm", "thigh_right_cm", "calf_left_cm", "calf_right_cm", "note", "source" ], "title": "BodyMeasurementRead" }, "BodyMeasurementUpdate": { "properties": { "measured_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Measured At" }, "neck_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Neck Cm" }, "chest_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Chest Cm" }, "waist_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Waist Cm" }, "hips_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Hips Cm" }, "biceps_left_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Biceps Left Cm" }, "biceps_right_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Biceps Right Cm" }, "thigh_left_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Thigh Left Cm" }, "thigh_right_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Thigh Right Cm" }, "calf_left_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Calf Left Cm" }, "calf_right_cm": { "anyOf": [ { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Calf Right Cm" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "title": "BodyMeasurementUpdate" }, "Body_preview_import_api_finance_imports_preview_post": { "properties": { "file": { "type": "string", "contentMediaType": "application/octet-stream", "title": "File" }, "account_id": { "type": "string", "format": "uuid", "title": "Account Id" }, "source_profile_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Source Profile Id" } }, "type": "object", "required": [ "file", "account_id" ], "title": "Body_preview_import_api_finance_imports_preview_post" }, "Body_run_import_api_finance_imports_post": { "properties": { "file": { "type": "string", "contentMediaType": "application/octet-stream", "title": "File" }, "account_id": { "type": "string", "format": "uuid", "title": "Account Id" }, "source_profile_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Source Profile Id" } }, "type": "object", "required": [ "file", "account_id" ], "title": "Body_run_import_api_finance_imports_post" }, "Body_upload_import_api_imports_post": { "properties": { "file": { "type": "string", "contentMediaType": "application/octet-stream", "title": "File" }, "source": { "type": "string", "title": "Source" } }, "type": "object", "required": [ "file", "source" ], "title": "Body_upload_import_api_imports_post" }, "BudgetCreate": { "properties": { "category_id": { "type": "string", "format": "uuid", "title": "Category Id" }, "monthly_amount": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Monthly Amount" }, "start_month": { "type": "string", "format": "date", "title": "Start Month" }, "end_month": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "End Month" } }, "type": "object", "required": [ "category_id", "monthly_amount", "start_month" ], "title": "BudgetCreate" }, "BudgetProgressItem": { "properties": { "budget_id": { "type": "string", "format": "uuid", "title": "Budget Id" }, "category_id": { "type": "string", "format": "uuid", "title": "Category Id" }, "category_name": { "type": "string", "title": "Category Name" }, "category_color": { "type": "string", "title": "Category Color" }, "budget": { "type": "number", "title": "Budget" }, "actual": { "type": "number", "title": "Actual" }, "remaining": { "type": "number", "title": "Remaining" }, "progress_pct": { "type": "number", "title": "Progress Pct" }, "projected_eom": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Projected Eom" }, "status": { "type": "string", "title": "Status" } }, "type": "object", "required": [ "budget_id", "category_id", "category_name", "category_color", "budget", "actual", "remaining", "progress_pct", "projected_eom", "status" ], "title": "BudgetProgressItem" }, "BudgetProgressResponse": { "properties": { "month": { "type": "string", "title": "Month" }, "items": { "items": { "$ref": "#/components/schemas/BudgetProgressItem" }, "type": "array", "title": "Items" }, "totals": { "$ref": "#/components/schemas/BudgetProgressTotals" } }, "type": "object", "required": [ "month", "items", "totals" ], "title": "BudgetProgressResponse" }, "BudgetProgressTotals": { "properties": { "budget": { "type": "number", "title": "Budget" }, "actual": { "type": "number", "title": "Actual" }, "progress_pct": { "type": "number", "title": "Progress Pct" } }, "type": "object", "required": [ "budget", "actual", "progress_pct" ], "title": "BudgetProgressTotals" }, "BudgetUpdate": { "properties": { "monthly_amount": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Monthly Amount" }, "end_month": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "End Month" }, "effective_from": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Effective From" } }, "type": "object", "title": "BudgetUpdate" }, "BulkCategorizeRequest": { "properties": { "transaction_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "maxItems": 500, "minItems": 1, "title": "Transaction Ids" }, "category_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Category Id" } }, "type": "object", "required": [ "transaction_ids" ], "title": "BulkCategorizeRequest" }, "BulkCategorizeResponse": { "properties": { "updated": { "type": "integer", "title": "Updated" } }, "type": "object", "required": [ "updated" ], "title": "BulkCategorizeResponse" }, "CashflowResponse": { "properties": { "months": { "items": { "type": "string" }, "type": "array", "title": "Months" }, "income": { "items": { "type": "number" }, "type": "array", "title": "Income" }, "expenses": { "items": { "type": "number" }, "type": "array", "title": "Expenses" }, "net": { "items": { "type": "number" }, "type": "array", "title": "Net" }, "cumulative_net": { "items": { "type": "number" }, "type": "array", "title": "Cumulative Net" } }, "type": "object", "required": [ "months", "income", "expenses", "net", "cumulative_net" ], "title": "CashflowResponse" }, "CategoryCreate": { "properties": { "name": { "type": "string", "maxLength": 80, "minLength": 1, "title": "Name" }, "parent_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Parent Id" }, "icon": { "anyOf": [ { "type": "string", "maxLength": 50 }, { "type": "null" } ], "title": "Icon" }, "color": { "anyOf": [ { "type": "string", "maxLength": 7 }, { "type": "null" } ], "title": "Color" }, "kind": { "$ref": "#/components/schemas/CategoryKind", "default": "expense" }, "sort_order": { "type": "integer", "title": "Sort Order", "default": 0 } }, "type": "object", "required": [ "name" ], "title": "CategoryCreate" }, "CategoryKind": { "type": "string", "enum": [ "income", "expense", "transfer" ], "title": "CategoryKind" }, "CategoryRead": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "parent_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Parent Id" }, "name": { "type": "string", "title": "Name" }, "icon": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Icon" }, "color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Color" }, "kind": { "$ref": "#/components/schemas/CategoryKind" }, "is_system": { "type": "boolean", "title": "Is System" }, "sort_order": { "type": "integer", "title": "Sort Order" }, "transaction_count": { "type": "integer", "title": "Transaction Count", "default": 0 }, "children": { "items": { "$ref": "#/components/schemas/CategoryRead" }, "type": "array", "title": "Children" } }, "type": "object", "required": [ "id", "parent_id", "name", "icon", "color", "kind", "is_system", "sort_order" ], "title": "CategoryRead" }, "CategorySource": { "type": "string", "enum": [ "rule", "user" ], "title": "CategorySource" }, "CategoryUpdate": { "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 80, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "parent_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Parent Id" }, "icon": { "anyOf": [ { "type": "string", "maxLength": 50 }, { "type": "null" } ], "title": "Icon" }, "color": { "anyOf": [ { "type": "string", "maxLength": 7 }, { "type": "null" } ], "title": "Color" }, "sort_order": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Sort Order" } }, "type": "object", "title": "CategoryUpdate" }, "CoilChangeCreate": { "properties": { "changed_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Changed At" }, "product_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Product Id" }, "reason": { "anyOf": [ { "type": "string", "maxLength": 50 }, { "type": "null" } ], "title": "Reason" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "title": "CoilChangeCreate" }, "CoilChangeCreated": { "properties": { "id": { "type": "integer", "title": "Id" }, "changed_at": { "type": "string", "format": "date-time", "title": "Changed At" }, "product_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Product Id" }, "product_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Product Name" }, "reason": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Reason" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" }, "is_current": { "type": "boolean", "title": "Is Current" }, "lifespan_days": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Lifespan Days" }, "ml_through": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Ml Through" }, "previous_lifespan_days": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Previous Lifespan Days" } }, "type": "object", "required": [ "id", "changed_at", "product_id", "product_name", "reason", "note", "is_current", "lifespan_days", "ml_through", "previous_lifespan_days" ], "title": "CoilChangeCreated" }, "CoilChangeRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "changed_at": { "type": "string", "format": "date-time", "title": "Changed At" }, "product_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Product Id" }, "product_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Product Name" }, "reason": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Reason" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" }, "is_current": { "type": "boolean", "title": "Is Current" }, "lifespan_days": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Lifespan Days" }, "ml_through": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Ml Through" } }, "type": "object", "required": [ "id", "changed_at", "product_id", "product_name", "reason", "note", "is_current", "lifespan_days", "ml_through" ], "title": "CoilChangeRead" }, "CoilChangeUpdate": { "properties": { "changed_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Changed At" }, "product_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Product Id" }, "reason": { "anyOf": [ { "type": "string", "maxLength": 50 }, { "type": "null" } ], "title": "Reason" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "title": "CoilChangeUpdate" }, "DailyActivityRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "date": { "type": "string", "format": "date", "title": "Date" }, "steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Steps" }, "active_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Active Kcal" }, "total_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Total Kcal" }, "distance_m": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Distance M" }, "active_minutes": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Active Minutes" }, "floors": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Floors" }, "source": { "type": "string", "title": "Source" } }, "type": "object", "required": [ "id", "date", "steps", "active_kcal", "total_kcal", "distance_m", "active_minutes", "floors", "source" ], "title": "DailyActivityRead" }, "DailyActivityUpsert": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "steps": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Steps" }, "active_kcal": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Active Kcal" }, "total_kcal": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Total Kcal" }, "distance_m": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Distance M" }, "active_minutes": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Active Minutes" }, "floors": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Floors" } }, "type": "object", "required": [ "date" ], "title": "DailyActivityUpsert", "description": "POST /health/activity — manual upsert of one local day." }, "DeviceKeyCreate": { "properties": { "name": { "type": "string", "maxLength": 100, "minLength": 1, "title": "Name" }, "scopes": { "items": { "type": "string" }, "type": "array", "minItems": 1, "title": "Scopes" } }, "type": "object", "required": [ "name", "scopes" ], "title": "DeviceKeyCreate" }, "DeviceKeyCreated": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "key_prefix": { "type": "string", "title": "Key Prefix" }, "scopes": { "items": { "type": "string" }, "type": "array", "title": "Scopes" }, "last_used_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Last Used At" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" }, "revoked_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Revoked At" }, "key": { "type": "string", "title": "Key" } }, "type": "object", "required": [ "id", "name", "key_prefix", "scopes", "last_used_at", "created_at", "revoked_at", "key" ], "title": "DeviceKeyCreated", "description": "Returned once at creation time: the only moment the plaintext key exists." }, "DeviceKeyRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "key_prefix": { "type": "string", "title": "Key Prefix" }, "scopes": { "items": { "type": "string" }, "type": "array", "title": "Scopes" }, "last_used_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Last Used At" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" }, "revoked_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Revoked At" } }, "type": "object", "required": [ "id", "name", "key_prefix", "scopes", "last_used_at", "created_at", "revoked_at" ], "title": "DeviceKeyRead" }, "FoodEntryCreate": { "properties": { "eaten_at": { "type": "string", "format": "date-time", "title": "Eaten At" }, "meal": { "$ref": "#/components/schemas/MealType" }, "name": { "type": "string", "maxLength": 200, "minLength": 1, "title": "Name" }, "brand": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Brand" }, "quantity": { "type": "number", "exclusiveMinimum": 0.0, "title": "Quantity", "default": 100.0 }, "unit": { "type": "string", "maxLength": 20, "title": "Unit", "default": "g" }, "kcal": { "type": "number", "minimum": 0.0, "title": "Kcal" }, "protein_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Protein G" }, "carbs_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Carbs G" }, "fat_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Fat G" }, "fiber_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Fiber G" }, "sugar_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Sugar G" }, "sat_fat_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Sat Fat G" }, "sodium_mg": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Sodium Mg" }, "favorite_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Favorite Id" } }, "type": "object", "required": [ "eaten_at", "meal", "name", "kcal" ], "title": "FoodEntryCreate" }, "FoodEntryRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "eaten_at": { "type": "string", "format": "date-time", "title": "Eaten At" }, "meal": { "$ref": "#/components/schemas/MealType" }, "name": { "type": "string", "title": "Name" }, "brand": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Brand" }, "quantity": { "type": "number", "title": "Quantity" }, "unit": { "type": "string", "title": "Unit" }, "kcal": { "type": "number", "title": "Kcal" }, "protein_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Protein G" }, "carbs_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Carbs G" }, "fat_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fat G" }, "fiber_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fiber G" }, "sugar_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Sugar G" }, "sat_fat_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Sat Fat G" }, "sodium_mg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Sodium Mg" }, "source": { "type": "string", "title": "Source" } }, "type": "object", "required": [ "id", "eaten_at", "meal", "name", "brand", "quantity", "unit", "kcal", "protein_g", "carbs_g", "fat_g", "fiber_g", "sugar_g", "sat_fat_g", "sodium_mg", "source" ], "title": "FoodEntryRead" }, "FoodEntryUpdate": { "properties": { "eaten_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Eaten At" }, "meal": { "anyOf": [ { "$ref": "#/components/schemas/MealType" }, { "type": "null" } ] }, "name": { "anyOf": [ { "type": "string", "maxLength": 200, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "brand": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Brand" }, "quantity": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Quantity" }, "unit": { "anyOf": [ { "type": "string", "maxLength": 20 }, { "type": "null" } ], "title": "Unit" }, "kcal": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Kcal" }, "protein_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Protein G" }, "carbs_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Carbs G" }, "fat_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Fat G" }, "fiber_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Fiber G" }, "sugar_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Sugar G" }, "sat_fat_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Sat Fat G" }, "sodium_mg": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Sodium Mg" } }, "type": "object", "title": "FoodEntryUpdate" }, "FoodFavoriteCreate": { "properties": { "name": { "type": "string", "maxLength": 200, "minLength": 1, "title": "Name" }, "brand": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Brand" }, "default_quantity": { "type": "number", "exclusiveMinimum": 0.0, "title": "Default Quantity", "default": 100.0 }, "unit": { "type": "string", "maxLength": 20, "title": "Unit", "default": "g" }, "kcal": { "type": "number", "minimum": 0.0, "title": "Kcal" }, "protein_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Protein G" }, "carbs_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Carbs G" }, "fat_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Fat G" }, "fiber_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Fiber G" }, "default_meal": { "anyOf": [ { "$ref": "#/components/schemas/MealType" }, { "type": "null" } ] } }, "type": "object", "required": [ "name", "kcal" ], "title": "FoodFavoriteCreate" }, "FoodFavoriteRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "brand": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Brand" }, "default_quantity": { "type": "number", "title": "Default Quantity" }, "unit": { "type": "string", "title": "Unit" }, "kcal": { "type": "number", "title": "Kcal" }, "protein_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Protein G" }, "carbs_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Carbs G" }, "fat_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fat G" }, "fiber_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fiber G" }, "default_meal": { "anyOf": [ { "$ref": "#/components/schemas/MealType" }, { "type": "null" } ] }, "use_count": { "type": "integer", "title": "Use Count" }, "last_used_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Last Used At" } }, "type": "object", "required": [ "id", "name", "brand", "default_quantity", "unit", "kcal", "protein_g", "carbs_g", "fat_g", "fiber_g", "default_meal", "use_count", "last_used_at" ], "title": "FoodFavoriteRead" }, "FoodFavoriteUpdate": { "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 200, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "brand": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Brand" }, "default_quantity": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "null" } ], "title": "Default Quantity" }, "unit": { "anyOf": [ { "type": "string", "maxLength": 20 }, { "type": "null" } ], "title": "Unit" }, "kcal": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Kcal" }, "protein_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Protein G" }, "carbs_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Carbs G" }, "fat_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Fat G" }, "fiber_g": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Fiber G" }, "default_meal": { "anyOf": [ { "$ref": "#/components/schemas/MealType" }, { "type": "null" } ] } }, "type": "object", "title": "FoodFavoriteUpdate" }, "FoodSearchItem": { "properties": { "id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Id" }, "source": { "type": "string", "title": "Source" }, "source_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Source Id" }, "name": { "type": "string", "title": "Name" }, "brand": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Brand" }, "energy_kcal_100g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Energy Kcal 100G" }, "protein_g_100g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Protein G 100G" }, "carbs_g_100g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Carbs G 100G" }, "sugar_g_100g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Sugar G 100G" }, "fat_g_100g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fat G 100G" }, "sat_fat_g_100g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Sat Fat G 100G" }, "fiber_g_100g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fiber G 100G" }, "salt_g_100g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Salt G 100G" }, "serving_size_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Serving Size G" } }, "type": "object", "required": [ "source", "name" ], "title": "FoodSearchItem" }, "FoodSearchResponse": { "properties": { "query": { "type": "string", "title": "Query" }, "items": { "items": { "$ref": "#/components/schemas/FoodSearchItem" }, "type": "array", "title": "Items" }, "origin": { "type": "string", "title": "Origin", "default": "cache" } }, "type": "object", "required": [ "query" ], "title": "FoodSearchResponse" }, "GoalCreate": { "properties": { "mode": { "$ref": "#/components/schemas/GoalMode" }, "start_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Start Date" }, "start_weight_kg": { "anyOf": [ { "type": "number", "exclusiveMaximum": 400.0, "exclusiveMinimum": 20.0 }, { "type": "null" } ], "title": "Start Weight Kg" }, "target_weight_kg": { "type": "number", "exclusiveMaximum": 400.0, "exclusiveMinimum": 20.0, "title": "Target Weight Kg" }, "target_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Target Date" }, "weekly_rate_kg": { "anyOf": [ { "type": "number", "maximum": 1.5, "exclusiveMinimum": -1.01 }, { "type": "null" } ], "title": "Weekly Rate Kg" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "mode", "target_weight_kg" ], "title": "GoalCreate" }, "GoalMode": { "type": "string", "enum": [ "weekly_rate", "target_date", "maintain" ], "title": "GoalMode" }, "GoalRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "mode": { "$ref": "#/components/schemas/GoalMode" }, "start_date": { "type": "string", "format": "date", "title": "Start Date" }, "start_weight_kg": { "type": "number", "title": "Start Weight Kg" }, "target_weight_kg": { "type": "number", "title": "Target Weight Kg" }, "target_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Target Date" }, "weekly_rate_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Weekly Rate Kg" }, "status": { "$ref": "#/components/schemas/GoalStatus" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "id", "mode", "start_date", "start_weight_kg", "target_weight_kg", "target_date", "weekly_rate_kg", "status", "note" ], "title": "GoalRead" }, "GoalStatus": { "type": "string", "enum": [ "active", "completed", "abandoned" ], "title": "GoalStatus" }, "GoalUpdate": { "properties": { "mode": { "anyOf": [ { "$ref": "#/components/schemas/GoalMode" }, { "type": "null" } ] }, "start_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Start Date" }, "start_weight_kg": { "anyOf": [ { "type": "number", "exclusiveMaximum": 400.0, "exclusiveMinimum": 20.0 }, { "type": "null" } ], "title": "Start Weight Kg" }, "target_weight_kg": { "anyOf": [ { "type": "number", "exclusiveMaximum": 400.0, "exclusiveMinimum": 20.0 }, { "type": "null" } ], "title": "Target Weight Kg" }, "target_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Target Date" }, "weekly_rate_kg": { "anyOf": [ { "type": "number", "maximum": 1.5, "exclusiveMinimum": -1.01 }, { "type": "null" } ], "title": "Weekly Rate Kg" }, "status": { "anyOf": [ { "$ref": "#/components/schemas/GoalStatus" }, { "type": "null" } ] }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "title": "GoalUpdate" }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "HealthProfileRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "height_cm": { "type": "number", "title": "Height Cm" }, "sex": { "$ref": "#/components/schemas/Sex" }, "birthdate": { "type": "string", "format": "date", "title": "Birthdate" }, "activity_level": { "$ref": "#/components/schemas/ActivityLevel" }, "timezone": { "type": "string", "title": "Timezone" }, "water_goal_ml": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Water Goal Ml" }, "calorie_floor_kcal": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Calorie Floor Kcal" }, "age": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Age" }, "bmr_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Bmr Kcal" }, "tdee_estimated_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Tdee Estimated Kcal" }, "current_weight_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Current Weight Kg" }, "bmi": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Bmi" } }, "type": "object", "required": [ "id", "height_cm", "sex", "birthdate", "activity_level", "timezone", "water_goal_ml", "calorie_floor_kcal" ], "title": "HealthProfileRead" }, "HealthProfileUpdate": { "properties": { "height_cm": { "type": "number", "exclusiveMaximum": 300.0, "exclusiveMinimum": 0.0, "title": "Height Cm" }, "sex": { "$ref": "#/components/schemas/Sex" }, "birthdate": { "type": "string", "format": "date", "title": "Birthdate" }, "activity_level": { "$ref": "#/components/schemas/ActivityLevel", "default": "sedentary" }, "timezone": { "type": "string", "maxLength": 64, "title": "Timezone", "default": "Europe/Paris" }, "water_goal_ml": { "anyOf": [ { "type": "integer", "maximum": 20000.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Water Goal Ml", "default": 2000 }, "calorie_floor_kcal": { "anyOf": [ { "type": "integer", "maximum": 5000.0, "minimum": 800.0 }, { "type": "null" } ], "title": "Calorie Floor Kcal" } }, "type": "object", "required": [ "height_cm", "sex", "birthdate" ], "title": "HealthProfileUpdate", "description": "PUT /health/profile — full singleton upsert." }, "ImportPreviewResponse": { "properties": { "rows_preview": { "items": { "$ref": "#/components/schemas/NormalizedRowRead" }, "type": "array", "title": "Rows Preview" }, "rows_total": { "type": "integer", "title": "Rows Total" }, "rows_error": { "type": "integer", "title": "Rows Error" }, "rows_skipped_filtered": { "type": "integer", "title": "Rows Skipped Filtered" }, "would_skip_duplicates": { "type": "integer", "title": "Would Skip Duplicates" }, "date_min": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date Min" }, "date_max": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date Max" }, "errors": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Errors" }, "duplicate_file_of": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Duplicate File Of" } }, "type": "object", "required": [ "rows_preview", "rows_total", "rows_error", "rows_skipped_filtered", "would_skip_duplicates", "date_min", "date_max", "errors" ], "title": "ImportPreviewResponse" }, "ImportStatus": { "type": "string", "enum": [ "pending", "running", "completed", "failed" ], "title": "ImportStatus" }, "IngestPayload": { "properties": { "source": { "type": "string", "maxLength": 50, "minLength": 1, "title": "Source", "default": "ingest" }, "records": { "items": { "$ref": "#/components/schemas/IngestRecordIn" }, "type": "array", "maxItems": 1000, "minItems": 1, "title": "Records" } }, "type": "object", "required": [ "records" ], "title": "IngestPayload" }, "IngestRecordError": { "properties": { "index": { "type": "integer", "title": "Index" }, "type": { "type": "string", "title": "Type" }, "message": { "type": "string", "title": "Message" } }, "type": "object", "required": [ "index", "type", "message" ], "title": "IngestRecordError" }, "IngestRecordIn": { "properties": { "type": { "type": "string", "title": "Type" }, "data": { "additionalProperties": true, "type": "object", "title": "Data" }, "external_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "External Id" } }, "type": "object", "required": [ "type", "data" ], "title": "IngestRecordIn" }, "IngestResponse": { "properties": { "domain": { "type": "string", "title": "Domain" }, "received": { "type": "integer", "title": "Received" }, "inserted": { "type": "integer", "title": "Inserted" }, "updated": { "type": "integer", "title": "Updated" }, "duplicates": { "type": "integer", "title": "Duplicates" }, "errors": { "items": { "$ref": "#/components/schemas/IngestRecordError" }, "type": "array", "title": "Errors" } }, "type": "object", "required": [ "domain", "received", "inserted", "updated", "duplicates", "errors" ], "title": "IngestResponse" }, "LiquidEntryCreate": { "properties": { "entry_date": { "type": "string", "format": "date", "title": "Entry Date" }, "ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Ml" }, "kind": { "$ref": "#/components/schemas/LiquidEntryKind", "default": "refill" }, "nicotine_mg_ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Nicotine Mg Ml" }, "mix_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Mix Id" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "entry_date", "ml" ], "title": "LiquidEntryCreate" }, "LiquidEntryKind": { "type": "string", "enum": [ "refill", "daily_total" ], "title": "LiquidEntryKind" }, "LiquidEntryRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "entry_date": { "type": "string", "format": "date", "title": "Entry Date" }, "kind": { "$ref": "#/components/schemas/LiquidEntryKind" }, "ml": { "type": "number", "title": "Ml" }, "nicotine_mg_ml": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Nicotine Mg Ml" }, "nicotine_effective_mg_ml": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Nicotine Effective Mg Ml" }, "nicotine_mg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Nicotine Mg" }, "mix_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Mix Id" }, "source": { "type": "string", "title": "Source" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "id", "entry_date", "kind", "ml", "nicotine_mg_ml", "nicotine_effective_mg_ml", "nicotine_mg", "mix_id", "source", "note" ], "title": "LiquidEntryRead" }, "LiquidEntryUpdate": { "properties": { "entry_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Entry Date" }, "ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Ml" }, "kind": { "anyOf": [ { "$ref": "#/components/schemas/LiquidEntryKind" }, { "type": "null" } ] }, "nicotine_mg_ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Nicotine Mg Ml" }, "mix_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Mix Id" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "title": "LiquidEntryUpdate" }, "LoginRequest": { "properties": { "email": { "type": "string", "title": "Email" }, "password": { "type": "string", "title": "Password" } }, "type": "object", "required": [ "email", "password" ], "title": "LoginRequest" }, "MealTotals": { "properties": { "meal": { "$ref": "#/components/schemas/MealType" }, "kcal": { "type": "number", "title": "Kcal", "default": 0.0 }, "protein_g": { "type": "number", "title": "Protein G", "default": 0.0 }, "carbs_g": { "type": "number", "title": "Carbs G", "default": 0.0 }, "fat_g": { "type": "number", "title": "Fat G", "default": 0.0 }, "entries": { "items": { "$ref": "#/components/schemas/FoodEntryRead" }, "type": "array", "title": "Entries" } }, "type": "object", "required": [ "meal" ], "title": "MealTotals" }, "MealType": { "type": "string", "enum": [ "breakfast", "lunch", "dinner", "snack" ], "title": "MealType" }, "MerchantRead": { "properties": { "merchant": { "type": "string", "title": "Merchant" }, "total": { "type": "number", "title": "Total" }, "count": { "type": "integer", "title": "Count" }, "average": { "type": "number", "title": "Average" }, "category_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category Name" }, "category_color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category Color" } }, "type": "object", "required": [ "merchant", "total", "count", "average" ], "title": "MerchantRead" }, "MilestoneRead": { "properties": { "code": { "type": "string", "title": "Code" }, "label_fr": { "type": "string", "title": "Label Fr" }, "reached_at": { "type": "string", "format": "date-time", "title": "Reached At" }, "achieved": { "type": "boolean", "title": "Achieved" }, "progress_pct": { "type": "number", "title": "Progress Pct" } }, "type": "object", "required": [ "code", "label_fr", "reached_at", "achieved", "progress_pct" ], "title": "MilestoneRead" }, "MixCalculatorRequest": { "properties": { "total_ml": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Total Ml" }, "target_nicotine_mg_ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Target Nicotine Mg Ml" }, "booster_product_id": { "type": "integer", "title": "Booster Product Id" }, "base_product_id": { "type": "integer", "title": "Base Product Id" }, "aroma_pct": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Aroma Pct", "default": "0" }, "aroma_product_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Aroma Product Id" } }, "type": "object", "required": [ "total_ml", "target_nicotine_mg_ml", "booster_product_id", "base_product_id" ], "title": "MixCalculatorRequest" }, "MixCalculatorResult": { "properties": { "total_ml": { "type": "number", "title": "Total Ml" }, "target_nicotine_mg_ml": { "type": "number", "title": "Target Nicotine Mg Ml" }, "booster_ml": { "type": "number", "title": "Booster Ml" }, "aroma_ml": { "type": "number", "title": "Aroma Ml" }, "base_ml": { "type": "number", "title": "Base Ml" }, "nicotine_check_mg_ml": { "type": "number", "title": "Nicotine Check Mg Ml" }, "cost_total_cents": { "type": "number", "title": "Cost Total Cents" }, "cost_per_ml_cents": { "type": "number", "title": "Cost Per Ml Cents" } }, "type": "object", "required": [ "total_ml", "target_nicotine_mg_ml", "booster_ml", "aroma_ml", "base_ml", "nicotine_check_mg_ml", "cost_total_cents", "cost_per_ml_cents" ], "title": "MixCalculatorResult" }, "MixComponentIn": { "properties": { "product_id": { "type": "integer", "title": "Product Id" }, "quantity": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Quantity" } }, "type": "object", "required": [ "product_id", "quantity" ], "title": "MixComponentIn" }, "MixComponentRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "product_id": { "type": "integer", "title": "Product Id" }, "product_name": { "type": "string", "title": "Product Name" }, "product_kind": { "$ref": "#/components/schemas/ProductKind" }, "quantity": { "type": "number", "title": "Quantity" }, "cost_cents": { "type": "number", "title": "Cost Cents" } }, "type": "object", "required": [ "id", "product_id", "product_name", "product_kind", "quantity", "cost_cents" ], "title": "MixComponentRead" }, "MixCreate": { "properties": { "name": { "type": "string", "maxLength": 150, "minLength": 1, "title": "Name" }, "total_ml": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Total Ml" }, "target_nicotine_mg_ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Target Nicotine Mg Ml" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" }, "components": { "items": { "$ref": "#/components/schemas/MixComponentIn" }, "type": "array", "title": "Components" } }, "type": "object", "required": [ "name", "total_ml", "target_nicotine_mg_ml" ], "title": "MixCreate" }, "MixRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "total_ml": { "type": "number", "title": "Total Ml" }, "target_nicotine_mg_ml": { "type": "number", "title": "Target Nicotine Mg Ml" }, "is_active": { "type": "boolean", "title": "Is Active" }, "is_archived": { "type": "boolean", "title": "Is Archived" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" }, "components": { "items": { "$ref": "#/components/schemas/MixComponentRead" }, "type": "array", "title": "Components" }, "cost_total_cents": { "type": "number", "title": "Cost Total Cents" }, "cost_per_ml_cents": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Cost Per Ml Cents" }, "nicotine_check_mg_ml": { "type": "number", "title": "Nicotine Check Mg Ml" }, "vg_pct_mix": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Vg Pct Mix" }, "warning": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Warning" } }, "type": "object", "required": [ "id", "name", "total_ml", "target_nicotine_mg_ml", "is_active", "is_archived", "note", "components", "cost_total_cents", "cost_per_ml_cents", "nicotine_check_mg_ml", "vg_pct_mix", "warning" ], "title": "MixRead" }, "MixUpdate": { "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 150, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "total_ml": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Total Ml" }, "target_nicotine_mg_ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Target Nicotine Mg Ml" }, "is_archived": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Archived" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" }, "components": { "anyOf": [ { "items": { "$ref": "#/components/schemas/MixComponentIn" }, "type": "array" }, { "type": "null" } ], "title": "Components" } }, "type": "object", "title": "MixUpdate" }, "MonthlyByCategoryResponse": { "properties": { "months": { "items": { "type": "string" }, "type": "array", "title": "Months" }, "series": { "items": { "$ref": "#/components/schemas/MonthlySeries" }, "type": "array", "title": "Series" }, "totals": { "items": { "type": "number" }, "type": "array", "title": "Totals" } }, "type": "object", "required": [ "months", "series", "totals" ], "title": "MonthlyByCategoryResponse" }, "MonthlySeries": { "properties": { "category_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Category Id" }, "name": { "type": "string", "title": "Name" }, "color": { "type": "string", "title": "Color" }, "data": { "items": { "type": "number" }, "type": "array", "title": "Data" } }, "type": "object", "required": [ "category_id", "name", "color", "data" ], "title": "MonthlySeries" }, "NormalizedRowRead": { "properties": { "booked_date": { "type": "string", "format": "date", "title": "Booked Date" }, "value_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Value Date" }, "amount": { "type": "number", "title": "Amount" }, "currency": { "type": "string", "title": "Currency" }, "label_raw": { "type": "string", "title": "Label Raw" }, "counterparty": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Counterparty" }, "external_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "External Id" }, "source_row_index": { "type": "integer", "title": "Source Row Index" } }, "type": "object", "required": [ "booked_date", "value_date", "amount", "currency", "label_raw", "counterparty", "external_id", "source_row_index" ], "title": "NormalizedRowRead" }, "NutritionDayDetail": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "totals": { "$ref": "#/components/schemas/NutritionDayRead" }, "water_ml": { "type": "integer", "title": "Water Ml", "default": 0 }, "water_goal_ml": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Water Goal Ml" }, "protein_goal_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Protein Goal G" }, "meals": { "items": { "$ref": "#/components/schemas/MealTotals" }, "type": "array", "title": "Meals" } }, "type": "object", "required": [ "date", "totals" ], "title": "NutritionDayDetail" }, "NutritionDayRead": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Kcal" }, "protein_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Protein G" }, "carbs_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Carbs G" }, "fat_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fat G" }, "fiber_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fiber G" }, "budget_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Budget Kcal" }, "vs_budget_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Vs Budget Kcal" } }, "type": "object", "required": [ "date" ], "title": "NutritionDayRead" }, "Page_BodyMeasurementRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/BodyMeasurementRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[BodyMeasurementRead]" }, "Page_CoilChangeRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/CoilChangeRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[CoilChangeRead]" }, "Page_FoodEntryRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/FoodEntryRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[FoodEntryRead]" }, "Page_FoodFavoriteRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/FoodFavoriteRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[FoodFavoriteRead]" }, "Page_GoalRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/GoalRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[GoalRead]" }, "Page_LiquidEntryRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/LiquidEntryRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[LiquidEntryRead]" }, "Page_MixRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/MixRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[MixRead]" }, "Page_ProductRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/ProductRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[ProductRead]" }, "Page_PurchaseRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/PurchaseRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[PurchaseRead]" }, "Page_TransactionRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/TransactionRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[TransactionRead]" }, "Page_WaterEntryRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/WaterEntryRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[WaterEntryRead]" }, "Page_WeightEntryRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/WeightEntryRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[WeightEntryRead]" }, "Page_WorkoutRead_": { "properties": { "items": { "items": { "$ref": "#/components/schemas/WorkoutRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[WorkoutRead]" }, "PeriodRead": { "properties": { "from": { "type": "string", "format": "date", "title": "From" }, "to": { "type": "string", "format": "date", "title": "To" } }, "type": "object", "required": [ "from", "to" ], "title": "PeriodRead" }, "ProductCreate": { "properties": { "kind": { "$ref": "#/components/schemas/ProductKind" }, "name": { "type": "string", "maxLength": 150, "minLength": 1, "title": "Name" }, "brand": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Brand" }, "price_cents": { "type": "integer", "minimum": 0.0, "title": "Price Cents" }, "size_value": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Size Value" }, "size_unit": { "$ref": "#/components/schemas/SizeUnit" }, "nicotine_mg_ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Nicotine Mg Ml" }, "vg_pct": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Vg Pct" }, "ohm": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Ohm" }, "is_archived": { "type": "boolean", "title": "Is Archived", "default": false }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "kind", "name", "price_cents", "size_value", "size_unit" ], "title": "ProductCreate" }, "ProductKind": { "type": "string", "enum": [ "coil", "base", "booster", "aroma", "hardware", "pod" ], "title": "ProductKind" }, "ProductRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "kind": { "$ref": "#/components/schemas/ProductKind" }, "name": { "type": "string", "title": "Name" }, "brand": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Brand" }, "price_cents": { "type": "integer", "title": "Price Cents" }, "size_value": { "type": "number", "title": "Size Value" }, "size_unit": { "$ref": "#/components/schemas/SizeUnit" }, "nicotine_mg_ml": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Nicotine Mg Ml" }, "vg_pct": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Vg Pct" }, "ohm": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Ohm" }, "is_archived": { "type": "boolean", "title": "Is Archived" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" }, "unit_price_cents": { "type": "number", "title": "Unit Price Cents" } }, "type": "object", "required": [ "id", "kind", "name", "brand", "price_cents", "size_value", "size_unit", "nicotine_mg_ml", "vg_pct", "ohm", "is_archived", "note", "unit_price_cents" ], "title": "ProductRead" }, "ProductUpdate": { "properties": { "kind": { "anyOf": [ { "$ref": "#/components/schemas/ProductKind" }, { "type": "null" } ] }, "name": { "anyOf": [ { "type": "string", "maxLength": 150, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "brand": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Brand" }, "price_cents": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Price Cents" }, "size_value": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Size Value" }, "size_unit": { "anyOf": [ { "$ref": "#/components/schemas/SizeUnit" }, { "type": "null" } ] }, "nicotine_mg_ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Nicotine Mg Ml" }, "vg_pct": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Vg Pct" }, "ohm": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Ohm" }, "is_archived": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Archived" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "title": "ProductUpdate" }, "ProjectionRead": { "properties": { "status": { "type": "string", "title": "Status" }, "date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date" } }, "type": "object", "required": [ "status" ], "title": "ProjectionRead" }, "PurchaseCreate": { "properties": { "purchased_on": { "type": "string", "format": "date", "title": "Purchased On" }, "product_id": { "type": "integer", "title": "Product Id" }, "qty": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Qty", "default": "1" }, "unit_price_cents": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Unit Price Cents" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "purchased_on", "product_id" ], "title": "PurchaseCreate" }, "PurchaseRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "purchased_on": { "type": "string", "format": "date", "title": "Purchased On" }, "product_id": { "type": "integer", "title": "Product Id" }, "product_name": { "type": "string", "title": "Product Name" }, "qty": { "type": "number", "title": "Qty" }, "unit_price_cents": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Unit Price Cents" }, "total_cents": { "type": "number", "title": "Total Cents" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "id", "purchased_on", "product_id", "product_name", "qty", "unit_price_cents", "total_cents", "note" ], "title": "PurchaseRead" }, "PurchaseUpdate": { "properties": { "purchased_on": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Purchased On" }, "product_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Product Id" }, "qty": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Qty" }, "unit_price_cents": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Unit Price Cents" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "title": "PurchaseUpdate" }, "RecentFoodRead": { "properties": { "name": { "type": "string", "title": "Name" }, "brand": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Brand" }, "unit": { "type": "string", "title": "Unit", "default": "g" }, "quantity": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Quantity" }, "kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Kcal" }, "protein_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Protein G" }, "carbs_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Carbs G" }, "fat_g": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Fat G" }, "meal": { "anyOf": [ { "$ref": "#/components/schemas/MealType" }, { "type": "null" } ] }, "last_eaten_at": { "type": "string", "format": "date-time", "title": "Last Eaten At" } }, "type": "object", "required": [ "name", "last_eaten_at" ], "title": "RecentFoodRead", "description": "Distinct (name, brand) recently logged — computed from food_entries." }, "RecurringItem": { "properties": { "merchant_key": { "type": "string", "title": "Merchant Key" }, "label_display": { "type": "string", "title": "Label Display" }, "category_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Category Id" }, "category_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category Name" }, "periodicity": { "type": "string", "title": "Periodicity" }, "occurrences": { "type": "integer", "title": "Occurrences" }, "average_amount": { "type": "number", "title": "Average Amount" }, "expected_amount": { "type": "number", "title": "Expected Amount" }, "last_date": { "type": "string", "format": "date", "title": "Last Date" }, "next_date_predicted": { "type": "string", "format": "date", "title": "Next Date Predicted" }, "is_active": { "type": "boolean", "title": "Is Active" } }, "type": "object", "required": [ "merchant_key", "label_display", "category_id", "category_name", "periodicity", "occurrences", "average_amount", "expected_amount", "last_date", "next_date_predicted", "is_active" ], "title": "RecurringItem" }, "RecurringResponse": { "properties": { "items": { "items": { "$ref": "#/components/schemas/RecurringItem" }, "type": "array", "title": "Items" }, "monthly_total_estimate": { "type": "number", "title": "Monthly Total Estimate" } }, "type": "object", "required": [ "items", "monthly_total_estimate" ], "title": "RecurringResponse" }, "RuleApplyByRule": { "properties": { "rule_id": { "type": "string", "format": "uuid", "title": "Rule Id" }, "name": { "type": "string", "title": "Name" }, "matched": { "type": "integer", "title": "Matched" } }, "type": "object", "required": [ "rule_id", "name", "matched" ], "title": "RuleApplyByRule" }, "RuleApplyRequest": { "properties": { "scope": { "type": "string", "enum": [ "uncategorized", "all_non_manual", "all" ], "title": "Scope", "default": "uncategorized" }, "date_from": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date From" }, "date_to": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date To" }, "account_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Account Id" }, "rule_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Rule Id" }, "dry_run": { "type": "boolean", "title": "Dry Run", "default": false }, "force": { "type": "boolean", "title": "Force", "default": false } }, "type": "object", "title": "RuleApplyRequest" }, "RuleApplyResponse": { "properties": { "scanned": { "type": "integer", "title": "Scanned" }, "matched": { "type": "integer", "title": "Matched" }, "updated": { "type": "integer", "title": "Updated" }, "dry_run": { "type": "boolean", "title": "Dry Run" }, "by_rule": { "items": { "$ref": "#/components/schemas/RuleApplyByRule" }, "type": "array", "title": "By Rule" } }, "type": "object", "required": [ "scanned", "matched", "updated", "dry_run", "by_rule" ], "title": "RuleApplyResponse" }, "RuleCreate": { "properties": { "name": { "type": "string", "maxLength": 100, "minLength": 1, "title": "Name" }, "priority": { "type": "integer", "title": "Priority", "default": 100 }, "enabled": { "type": "boolean", "title": "Enabled", "default": true }, "stop": { "type": "boolean", "title": "Stop", "default": true }, "matchers": { "additionalProperties": true, "type": "object", "title": "Matchers" }, "actions": { "additionalProperties": true, "type": "object", "title": "Actions" } }, "type": "object", "required": [ "name", "matchers", "actions" ], "title": "RuleCreate" }, "RulePreviewRequest": { "properties": { "matchers": { "additionalProperties": true, "type": "object", "title": "Matchers" } }, "type": "object", "required": [ "matchers" ], "title": "RulePreviewRequest" }, "RulePreviewResponse": { "properties": { "items": { "items": { "$ref": "#/components/schemas/TransactionRead" }, "type": "array", "title": "Items" }, "total_matched": { "type": "integer", "title": "Total Matched" } }, "type": "object", "required": [ "items", "total_matched" ], "title": "RulePreviewResponse" }, "RuleRead": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "priority": { "type": "integer", "title": "Priority" }, "enabled": { "type": "boolean", "title": "Enabled" }, "stop": { "type": "boolean", "title": "Stop" }, "matchers": { "additionalProperties": true, "type": "object", "title": "Matchers" }, "actions": { "additionalProperties": true, "type": "object", "title": "Actions" }, "hit_count": { "type": "integer", "title": "Hit Count" }, "last_applied_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Last Applied At" } }, "type": "object", "required": [ "id", "name", "priority", "enabled", "stop", "matchers", "actions", "hit_count", "last_applied_at" ], "title": "RuleRead" }, "RuleReorderRequest": { "properties": { "ordered_ids": { "items": { "type": "string", "format": "uuid" }, "type": "array", "minItems": 1, "title": "Ordered Ids" } }, "type": "object", "required": [ "ordered_ids" ], "title": "RuleReorderRequest" }, "RuleUpdate": { "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "priority": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Priority" }, "enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Enabled" }, "stop": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Stop" }, "matchers": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Matchers" }, "actions": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Actions" } }, "type": "object", "title": "RuleUpdate" }, "SankeyLink": { "properties": { "source": { "type": "string", "title": "Source" }, "target": { "type": "string", "title": "Target" }, "value": { "type": "number", "title": "Value" } }, "type": "object", "required": [ "source", "target", "value" ], "title": "SankeyLink" }, "SankeyNode": { "properties": { "name": { "type": "string", "title": "Name" }, "color": { "type": "string", "title": "Color" } }, "type": "object", "required": [ "name", "color" ], "title": "SankeyNode" }, "SankeyResponse": { "properties": { "period": { "$ref": "#/components/schemas/PeriodRead" }, "nodes": { "items": { "$ref": "#/components/schemas/SankeyNode" }, "type": "array", "title": "Nodes" }, "links": { "items": { "$ref": "#/components/schemas/SankeyLink" }, "type": "array", "title": "Links" } }, "type": "object", "required": [ "period", "nodes", "links" ], "title": "SankeyResponse" }, "ScheduleKind": { "type": "string", "enum": [ "weigh_in", "workout", "food_log" ], "title": "ScheduleKind" }, "ScheduleRead": { "properties": { "kind": { "$ref": "#/components/schemas/ScheduleKind" }, "weekdays": { "items": { "type": "integer" }, "type": "array", "title": "Weekdays" }, "enabled": { "type": "boolean", "title": "Enabled", "default": false } }, "type": "object", "required": [ "kind" ], "title": "ScheduleRead" }, "ScheduleUpdate": { "properties": { "weekdays": { "items": { "type": "integer" }, "type": "array", "title": "Weekdays" }, "enabled": { "type": "boolean", "title": "Enabled", "default": true } }, "type": "object", "title": "ScheduleUpdate" }, "Series": { "properties": { "name": { "type": "string", "title": "Name" }, "type": { "type": "string", "title": "Type" }, "points": { "items": { "items": {}, "type": "array" }, "type": "array", "title": "Points" } }, "type": "object", "required": [ "name", "type" ], "title": "Series" }, "SeriesModel": { "properties": { "name": { "type": "string", "title": "Name" }, "type": { "type": "string", "title": "Type" }, "points": { "items": { "prefixItems": [ { "type": "string" }, { "anyOf": [ { "type": "number" }, { "type": "null" } ] } ], "type": "array", "maxItems": 2, "minItems": 2 }, "type": "array", "title": "Points" } }, "type": "object", "required": [ "name", "type", "points" ], "title": "SeriesModel" }, "SetupRequest": { "properties": { "email": { "type": "string", "maxLength": 255, "minLength": 3, "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$", "title": "Email" }, "password": { "type": "string", "maxLength": 128, "minLength": 8, "title": "Password" }, "display_name": { "type": "string", "maxLength": 100, "minLength": 1, "title": "Display Name" } }, "type": "object", "required": [ "email", "password", "display_name" ], "title": "SetupRequest" }, "Sex": { "type": "string", "enum": [ "male", "female", "other" ], "title": "Sex" }, "SizeUnit": { "type": "string", "enum": [ "ml", "unit", "g" ], "title": "SizeUnit" }, "SourceInfo": { "properties": { "id": { "type": "string", "title": "Id" }, "label": { "type": "string", "title": "Label" }, "domain": { "type": "string", "title": "Domain" }, "accepted_extensions": { "items": { "type": "string" }, "type": "array", "title": "Accepted Extensions" } }, "type": "object", "required": [ "id", "label", "domain", "accepted_extensions" ], "title": "SourceInfo" }, "SourceKind": { "type": "string", "enum": [ "csv", "ofx", "paypal_csv" ], "title": "SourceKind" }, "SourceProfileCreate": { "properties": { "name": { "type": "string", "maxLength": 100, "minLength": 1, "title": "Name" }, "kind": { "$ref": "#/components/schemas/SourceKind" }, "config": { "additionalProperties": true, "type": "object", "title": "Config" } }, "type": "object", "required": [ "name", "kind" ], "title": "SourceProfileCreate" }, "SourceProfileRead": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "kind": { "$ref": "#/components/schemas/SourceKind" }, "config": { "additionalProperties": true, "type": "object", "title": "Config" }, "is_builtin": { "type": "boolean", "title": "Is Builtin" } }, "type": "object", "required": [ "id", "name", "kind", "config", "is_builtin" ], "title": "SourceProfileRead" }, "SourceProfileUpdate": { "properties": { "name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 1 }, { "type": "null" } ], "title": "Name" }, "config": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Config" } }, "type": "object", "title": "SourceProfileUpdate" }, "SportType": { "type": "string", "enum": [ "treadmill_walk", "treadmill_run", "walking", "running", "cycling", "swimming", "strength", "hiit", "yoga", "hiking", "other" ], "title": "SportType" }, "StreakRead": { "properties": { "current": { "type": "integer", "title": "Current", "default": 0 }, "best": { "type": "integer", "title": "Best", "default": 0 } }, "type": "object", "title": "StreakRead" }, "TodayItem": { "properties": { "kind": { "$ref": "#/components/schemas/ScheduleKind" }, "planned": { "type": "boolean", "title": "Planned" }, "done": { "type": "boolean", "title": "Done" }, "value": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Value" } }, "type": "object", "required": [ "kind", "planned", "done" ], "title": "TodayItem" }, "TodayResponse": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "items": { "items": { "$ref": "#/components/schemas/TodayItem" }, "type": "array", "title": "Items" }, "streaks": { "additionalProperties": { "$ref": "#/components/schemas/StreakRead" }, "type": "object", "title": "Streaks" } }, "type": "object", "required": [ "date" ], "title": "TodayResponse" }, "TokenResponse": { "properties": { "access_token": { "type": "string", "title": "Access Token" }, "token_type": { "type": "string", "title": "Token Type", "default": "bearer" }, "user": { "$ref": "#/components/schemas/UserRead" } }, "type": "object", "required": [ "access_token", "user" ], "title": "TokenResponse" }, "TopMerchantsResponse": { "properties": { "period": { "$ref": "#/components/schemas/PeriodRead" }, "items": { "items": { "$ref": "#/components/schemas/MerchantRead" }, "type": "array", "title": "Items" } }, "type": "object", "required": [ "period", "items" ], "title": "TopMerchantsResponse" }, "TransactionCreate": { "properties": { "account_id": { "type": "string", "format": "uuid", "title": "Account Id" }, "booked_date": { "type": "string", "format": "date", "title": "Booked Date" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Amount" }, "label_clean": { "type": "string", "minLength": 1, "title": "Label Clean" }, "value_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Value Date" }, "currency": { "anyOf": [ { "type": "string", "maxLength": 3, "minLength": 3 }, { "type": "null" } ], "title": "Currency" }, "category_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Category Id" }, "counterparty": { "anyOf": [ { "type": "string", "maxLength": 150 }, { "type": "null" } ], "title": "Counterparty" }, "notes": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Notes" } }, "type": "object", "required": [ "account_id", "booked_date", "amount", "label_clean" ], "title": "TransactionCreate" }, "TransactionRead": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "account_id": { "type": "string", "format": "uuid", "title": "Account Id" }, "account_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Account Name" }, "booked_date": { "type": "string", "format": "date", "title": "Booked Date" }, "value_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Value Date" }, "amount": { "type": "number", "title": "Amount" }, "currency": { "type": "string", "title": "Currency" }, "label_raw": { "type": "string", "title": "Label Raw" }, "label_clean": { "type": "string", "title": "Label Clean" }, "counterparty": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Counterparty" }, "category_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Category Id" }, "category_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category Name" }, "category_color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category Color" }, "category_source": { "anyOf": [ { "$ref": "#/components/schemas/CategorySource" }, { "type": "null" } ] }, "notes": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Notes" }, "transfer_group_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Transfer Group Id" }, "external_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "External Id" }, "import_run_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Import Run Id" } }, "type": "object", "required": [ "id", "account_id", "booked_date", "amount", "currency", "label_raw", "label_clean" ], "title": "TransactionRead" }, "TransactionUpdate": { "properties": { "label_clean": { "anyOf": [ { "type": "string", "minLength": 1 }, { "type": "null" } ], "title": "Label Clean" }, "counterparty": { "anyOf": [ { "type": "string", "maxLength": 150 }, { "type": "null" } ], "title": "Counterparty" }, "category_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Category Id" }, "notes": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Notes" }, "booked_date": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Booked Date" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" }, { "type": "null" } ], "title": "Amount" } }, "additionalProperties": false, "type": "object", "title": "TransactionUpdate" }, "TransferDetectRequest": { "properties": { "date_from": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date From" }, "date_to": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "Date To" } }, "type": "object", "title": "TransferDetectRequest" }, "TransferDetectResponse": { "properties": { "pairs_created": { "type": "integer", "title": "Pairs Created" } }, "type": "object", "required": [ "pairs_created" ], "title": "TransferDetectResponse" }, "TransferLinkRequest": { "properties": { "transaction_id_a": { "type": "string", "format": "uuid", "title": "Transaction Id A" }, "transaction_id_b": { "type": "string", "format": "uuid", "title": "Transaction Id B" } }, "type": "object", "required": [ "transaction_id_a", "transaction_id_b" ], "title": "TransferLinkRequest" }, "TransferLinkResponse": { "properties": { "transfer_group_id": { "type": "string", "format": "uuid", "title": "Transfer Group Id" } }, "type": "object", "required": [ "transfer_group_id" ], "title": "TransferLinkResponse" }, "UserRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "email": { "type": "string", "title": "Email" }, "display_name": { "type": "string", "title": "Display Name" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" } }, "type": "object", "required": [ "id", "email", "display_name", "created_at" ], "title": "UserRead" }, "UserUpdate": { "properties": { "email": { "anyOf": [ { "type": "string", "maxLength": 255, "minLength": 3, "pattern": "^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$" }, { "type": "null" } ], "title": "Email" }, "display_name": { "anyOf": [ { "type": "string", "maxLength": 100, "minLength": 1 }, { "type": "null" } ], "title": "Display Name" }, "password": { "anyOf": [ { "type": "string", "maxLength": 128, "minLength": 8 }, { "type": "null" } ], "title": "Password" }, "current_password": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Current Password" } }, "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" }, "VapeDashboard": { "properties": { "quit_date": { "type": "string", "format": "date", "title": "Quit Date" }, "days_since_quit": { "type": "integer", "title": "Days Since Quit" }, "ml_today": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Ml Today" }, "ml_per_day_7": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Ml Per Day 7" }, "ml_per_day_30": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Ml Per Day 30" }, "nicotine_today_mg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Nicotine Today Mg" }, "cost_per_ml_cents": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Cost Per Ml Cents" }, "coil_cost_per_day_cents": { "type": "number", "title": "Coil Cost Per Day Cents" }, "vape_cost_per_day_cents": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Vape Cost Per Day Cents" }, "cig_cost_per_day_cents": { "type": "number", "title": "Cig Cost Per Day Cents" }, "savings_theoretical_cents": { "type": "number", "title": "Savings Theoretical Cents" }, "savings_real_cents": { "type": "number", "title": "Savings Real Cents" }, "savings_display_cents": { "type": "number", "title": "Savings Display Cents" }, "has_purchases": { "type": "boolean", "title": "Has Purchases" }, "cigarettes_avoided": { "type": "integer", "title": "Cigarettes Avoided" }, "packs_avoided": { "type": "number", "title": "Packs Avoided" }, "current_coil_age_days": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Current Coil Age Days" }, "coil_avg_lifespan_days": { "type": "number", "title": "Coil Avg Lifespan Days" }, "coil_lifespan_is_default": { "type": "boolean", "title": "Coil Lifespan Is Default" }, "next_milestone": { "anyOf": [ { "$ref": "#/components/schemas/MilestoneRead" }, { "type": "null" } ] } }, "type": "object", "required": [ "quit_date", "days_since_quit", "ml_today", "ml_per_day_7", "ml_per_day_30", "nicotine_today_mg", "cost_per_ml_cents", "coil_cost_per_day_cents", "vape_cost_per_day_cents", "cig_cost_per_day_cents", "savings_theoretical_cents", "savings_real_cents", "savings_display_cents", "has_purchases", "cigarettes_avoided", "packs_avoided", "current_coil_age_days", "coil_avg_lifespan_days", "coil_lifespan_is_default", "next_milestone" ], "title": "VapeDashboard" }, "VapeSettingsPut": { "properties": { "quit_date": { "type": "string", "format": "date", "title": "Quit Date" }, "cigs_per_day_before": { "anyOf": [ { "type": "number", "maximum": 200.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Cigs Per Day Before" }, "cig_pack_price_cents": { "type": "integer", "minimum": 0.0, "title": "Cig Pack Price Cents" }, "cigs_per_pack": { "type": "integer", "exclusiveMinimum": 0.0, "title": "Cigs Per Pack", "default": 20 }, "default_nicotine_mg_ml": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "string", "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$" } ], "title": "Default Nicotine Mg Ml" }, "currency": { "type": "string", "maxLength": 3, "minLength": 3, "title": "Currency", "default": "EUR" } }, "type": "object", "required": [ "quit_date", "cigs_per_day_before", "cig_pack_price_cents", "default_nicotine_mg_ml" ], "title": "VapeSettingsPut" }, "VapeSettingsRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "quit_date": { "type": "string", "format": "date", "title": "Quit Date" }, "cigs_per_day_before": { "type": "number", "title": "Cigs Per Day Before" }, "cig_pack_price_cents": { "type": "integer", "title": "Cig Pack Price Cents" }, "cigs_per_pack": { "type": "integer", "title": "Cigs Per Pack" }, "default_nicotine_mg_ml": { "type": "number", "title": "Default Nicotine Mg Ml" }, "currency": { "type": "string", "title": "Currency" } }, "type": "object", "required": [ "id", "quit_date", "cigs_per_day_before", "cig_pack_price_cents", "cigs_per_pack", "default_nicotine_mg_ml", "currency" ], "title": "VapeSettingsRead" }, "WaterEntryCreate": { "properties": { "drunk_at": { "type": "string", "format": "date-time", "title": "Drunk At" }, "volume_ml": { "type": "integer", "maximum": 5000.0, "exclusiveMinimum": 0.0, "title": "Volume Ml" } }, "type": "object", "required": [ "drunk_at", "volume_ml" ], "title": "WaterEntryCreate" }, "WaterEntryRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "drunk_at": { "type": "string", "format": "date-time", "title": "Drunk At" }, "volume_ml": { "type": "integer", "title": "Volume Ml" }, "source": { "type": "string", "title": "Source" } }, "type": "object", "required": [ "id", "drunk_at", "volume_ml", "source" ], "title": "WaterEntryRead" }, "WeightEntryCreate": { "properties": { "measured_at": { "type": "string", "format": "date-time", "title": "Measured At" }, "weight_kg": { "type": "number", "exclusiveMaximum": 400.0, "exclusiveMinimum": 20.0, "title": "Weight Kg" }, "body_fat_pct": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Body Fat Pct" }, "muscle_mass_kg": { "anyOf": [ { "type": "number", "maximum": 200.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Muscle Mass Kg" }, "water_pct": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Water Pct" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "measured_at", "weight_kg" ], "title": "WeightEntryCreate" }, "WeightEntryRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "measured_at": { "type": "string", "format": "date-time", "title": "Measured At" }, "weight_kg": { "type": "number", "title": "Weight Kg" }, "body_fat_pct": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Body Fat Pct" }, "muscle_mass_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Muscle Mass Kg" }, "water_pct": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Water Pct" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" }, "source": { "type": "string", "title": "Source" } }, "type": "object", "required": [ "id", "measured_at", "weight_kg", "body_fat_pct", "muscle_mass_kg", "water_pct", "note", "source" ], "title": "WeightEntryRead" }, "WeightEntryUpdate": { "properties": { "measured_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Measured At" }, "weight_kg": { "anyOf": [ { "type": "number", "exclusiveMaximum": 400.0, "exclusiveMinimum": 20.0 }, { "type": "null" } ], "title": "Weight Kg" }, "body_fat_pct": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Body Fat Pct" }, "muscle_mass_kg": { "anyOf": [ { "type": "number", "maximum": 200.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Muscle Mass Kg" }, "water_pct": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Water Pct" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "title": "WeightEntryUpdate" }, "WorkoutCreate": { "properties": { "started_at": { "type": "string", "format": "date-time", "title": "Started At" }, "ended_at": { "type": "string", "format": "date-time", "title": "Ended At" }, "sport_type": { "$ref": "#/components/schemas/SportType" }, "sport_label": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Sport Label" }, "kcal": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Kcal" }, "distance_m": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Distance M" }, "steps": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Steps" }, "avg_hr": { "anyOf": [ { "type": "integer", "maximum": 300.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Avg Hr" }, "max_hr": { "anyOf": [ { "type": "integer", "maximum": 300.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Max Hr" }, "avg_speed_kmh": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Avg Speed Kmh" }, "elevation_m": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Elevation M" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" } }, "type": "object", "required": [ "started_at", "ended_at", "sport_type" ], "title": "WorkoutCreate" }, "WorkoutRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "started_at": { "type": "string", "format": "date-time", "title": "Started At" }, "ended_at": { "type": "string", "format": "date-time", "title": "Ended At" }, "duration_s": { "type": "integer", "title": "Duration S" }, "sport_type": { "$ref": "#/components/schemas/SportType" }, "sport_label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Sport Label" }, "kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Kcal" }, "distance_m": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Distance M" }, "steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Steps" }, "avg_hr": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Avg Hr" }, "max_hr": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Max Hr" }, "avg_speed_kmh": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Avg Speed Kmh" }, "elevation_m": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Elevation M" }, "is_hidden": { "type": "boolean", "title": "Is Hidden" }, "note": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Note" }, "source": { "type": "string", "title": "Source" } }, "type": "object", "required": [ "id", "started_at", "ended_at", "duration_s", "sport_type", "sport_label", "kcal", "distance_m", "steps", "avg_hr", "max_hr", "avg_speed_kmh", "elevation_m", "is_hidden", "note", "source" ], "title": "WorkoutRead" }, "WorkoutUpdate": { "properties": { "started_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Started At" }, "ended_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Ended At" }, "sport_type": { "anyOf": [ { "$ref": "#/components/schemas/SportType" }, { "type": "null" } ] }, "sport_label": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "title": "Sport Label" }, "kcal": { "anyOf": [ { "type": "number", "minimum": 0.0 }, { "type": "null" } ], "title": "Kcal" }, "distance_m": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Distance M" }, "steps": { "anyOf": [ { "type": "integer", "minimum": 0.0 }, { "type": "null" } ], "title": "Steps" }, "avg_hr": { "anyOf": [ { "type": "integer", "maximum": 300.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Avg Hr" }, "max_hr": { "anyOf": [ { "type": "integer", "maximum": 300.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Max Hr" }, "avg_speed_kmh": { "anyOf": [ { "type": "number", "maximum": 100.0, "minimum": 0.0 }, { "type": "null" } ], "title": "Avg Speed Kmh" }, "elevation_m": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Elevation M" }, "note": { "anyOf": [ { "type": "string", "maxLength": 255 }, { "type": "null" } ], "title": "Note" }, "is_hidden": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Hidden" } }, "type": "object", "title": "WorkoutUpdate" }, "app__core__pagination__Page_ImportRunRead___1": { "properties": { "items": { "items": { "$ref": "#/components/schemas/app__modules__finance__schemas__ImportRunRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[ImportRunRead]" }, "app__core__pagination__Page_ImportRunRead___2": { "properties": { "items": { "items": { "$ref": "#/components/schemas/app__modules__imports__schemas__ImportRunRead" }, "type": "array", "title": "Items" }, "total": { "type": "integer", "title": "Total" }, "page": { "type": "integer", "title": "Page" }, "page_size": { "type": "integer", "title": "Page Size" } }, "type": "object", "required": [ "items", "total", "page", "page_size" ], "title": "Page[ImportRunRead]" }, "app__modules__finance__schemas__BudgetRead": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "category_id": { "type": "string", "format": "uuid", "title": "Category Id" }, "category_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category Name" }, "category_color": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Category Color" }, "monthly_amount": { "type": "number", "title": "Monthly Amount" }, "start_month": { "type": "string", "format": "date", "title": "Start Month" }, "end_month": { "anyOf": [ { "type": "string", "format": "date" }, { "type": "null" } ], "title": "End Month" }, "actual": { "type": "number", "title": "Actual", "default": 0.0 }, "remaining": { "type": "number", "title": "Remaining", "default": 0.0 }, "progress_pct": { "type": "number", "title": "Progress Pct", "default": 0.0 }, "projected_eom": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Projected Eom" }, "status": { "type": "string", "title": "Status", "default": "ok" } }, "type": "object", "required": [ "id", "category_id", "monthly_amount", "start_month", "end_month" ], "title": "BudgetRead" }, "app__modules__finance__schemas__DashboardResponse": { "properties": { "month": { "type": "string", "title": "Month" }, "total_balance": { "type": "number", "title": "Total Balance" }, "accounts_count": { "type": "integer", "title": "Accounts Count" }, "month_expenses": { "type": "number", "title": "Month Expenses" }, "month_income": { "type": "number", "title": "Month Income" }, "month_net": { "type": "number", "title": "Month Net" }, "average_expenses_6m": { "type": "number", "title": "Average Expenses 6M" }, "budget_total": { "type": "number", "title": "Budget Total" }, "budget_actual": { "type": "number", "title": "Budget Actual" }, "budget_progress_pct": { "type": "number", "title": "Budget Progress Pct" }, "uncategorized_count": { "type": "integer", "title": "Uncategorized Count" } }, "type": "object", "required": [ "month", "total_balance", "accounts_count", "month_expenses", "month_income", "month_net", "average_expenses_6m", "budget_total", "budget_actual", "budget_progress_pct", "uncategorized_count" ], "title": "DashboardResponse" }, "app__modules__finance__schemas__ImportRunRead": { "properties": { "id": { "type": "string", "format": "uuid", "title": "Id" }, "import_run_id": { "type": "integer", "title": "Import Run Id" }, "account_id": { "type": "string", "format": "uuid", "title": "Account Id" }, "source_profile_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Source Profile Id" }, "filename": { "type": "string", "title": "Filename" }, "file_sha256": { "type": "string", "title": "File Sha256" }, "status": { "$ref": "#/components/schemas/ImportStatus" }, "started_at": { "type": "string", "format": "date-time", "title": "Started At" }, "finished_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Finished At" }, "stats": { "additionalProperties": true, "type": "object", "title": "Stats" }, "error_message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Error Message" } }, "type": "object", "required": [ "id", "import_run_id", "account_id", "source_profile_id", "filename", "file_sha256", "status", "started_at", "finished_at", "stats", "error_message" ], "title": "ImportRunRead" }, "app__modules__health__schemas__BudgetRead": { "properties": { "kcal": { "type": "number", "title": "Kcal" }, "deficit_target_kcal": { "type": "number", "title": "Deficit Target Kcal" }, "floor_applied": { "type": "boolean", "title": "Floor Applied" }, "rate_clamped": { "type": "boolean", "title": "Rate Clamped", "default": false }, "tdee_kcal": { "type": "number", "title": "Tdee Kcal" }, "tdee_method": { "type": "string", "title": "Tdee Method" } }, "type": "object", "required": [ "kcal", "deficit_target_kcal", "floor_applied", "tdee_kcal", "tdee_method" ], "title": "BudgetRead" }, "app__modules__health__schemas__DashboardResponse": { "properties": { "date": { "type": "string", "format": "date", "title": "Date" }, "weight_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Weight Kg" }, "weight_measured_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Weight Measured At" }, "trend_weight_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Trend Weight Kg" }, "trend_delta_7d_kg": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Trend Delta 7D Kg" }, "bmi": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Bmi" }, "intake_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Intake Kcal" }, "budget_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Budget Kcal" }, "remaining_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Remaining Kcal" }, "tdee_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Tdee Kcal" }, "tdee_method": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Tdee Method" }, "balance_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Balance Kcal" }, "cumulative_balance_30d_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Cumulative Balance 30D Kcal" }, "steps": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Steps" }, "active_kcal": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Active Kcal" }, "distance_m": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Distance M" }, "water_ml": { "type": "integer", "title": "Water Ml", "default": 0 }, "water_goal_ml": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Water Goal Ml" }, "workouts_this_week": { "type": "integer", "title": "Workouts This Week", "default": 0 }, "goal": { "anyOf": [ { "$ref": "#/components/schemas/GoalRead" }, { "type": "null" } ] }, "projection": { "anyOf": [ { "$ref": "#/components/schemas/ProjectionRead" }, { "type": "null" } ] }, "weight_series": { "items": { "items": {}, "type": "array" }, "type": "array", "title": "Weight Series" }, "today": { "anyOf": [ { "$ref": "#/components/schemas/TodayResponse" }, { "type": "null" } ] } }, "type": "object", "required": [ "date" ], "title": "DashboardResponse" }, "app__modules__health__schemas__StatsResponse": { "properties": { "from": { "type": "string", "format": "date", "title": "From" }, "to": { "type": "string", "format": "date", "title": "To" }, "unit": { "type": "string", "title": "Unit" }, "series": { "items": { "$ref": "#/components/schemas/Series" }, "type": "array", "title": "Series" }, "meta": { "additionalProperties": true, "type": "object", "title": "Meta" } }, "type": "object", "required": [ "from", "to", "unit" ], "title": "StatsResponse" }, "app__modules__imports__schemas__ImportRunRead": { "properties": { "id": { "type": "integer", "title": "Id" }, "importer_id": { "type": "string", "title": "Importer Id" }, "domain": { "type": "string", "title": "Domain" }, "filename": { "type": "string", "title": "Filename" }, "file_size": { "type": "integer", "title": "File Size" }, "status": { "type": "string", "title": "Status" }, "rows_total": { "type": "integer", "title": "Rows Total" }, "rows_inserted": { "type": "integer", "title": "Rows Inserted" }, "rows_updated": { "type": "integer", "title": "Rows Updated" }, "rows_duplicates": { "type": "integer", "title": "Rows Duplicates" }, "rows_errors": { "type": "integer", "title": "Rows Errors" }, "error_details": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Error Details" }, "started_at": { "type": "string", "format": "date-time", "title": "Started At" }, "finished_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Finished At" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" } }, "type": "object", "required": [ "id", "importer_id", "domain", "filename", "file_size", "status", "rows_total", "rows_inserted", "rows_updated", "rows_duplicates", "rows_errors", "error_details", "started_at", "finished_at", "created_at" ], "title": "ImportRunRead" }, "app__modules__vape__schemas__StatsResponse": { "properties": { "from": { "type": "string", "format": "date", "title": "From" }, "to": { "type": "string", "format": "date", "title": "To" }, "unit": { "type": "string", "title": "Unit" }, "series": { "items": { "$ref": "#/components/schemas/SeriesModel" }, "type": "array", "title": "Series" }, "meta": { "additionalProperties": true, "type": "object", "title": "Meta" } }, "type": "object", "required": [ "from", "to", "unit", "series", "meta" ], "title": "StatsResponse" } }, "securitySchemes": { "HTTPBearer": { "type": "http", "scheme": "bearer" } } } }