Files
lifetrack/apps/api/openapi.json
T
MeeJayandClaude Opus 5 fa3db7ff22 Fix 20+ defects found by real Docker/PostgreSQL deployment
Première exécution réelle de la stack (build des images, PostgreSQL 16,
parcours fonctionnels en HTTP) : 28 tables, 105 index, extension pg_trgm,
et 181 assertions rejouées après correction.

Santé : filtres enum invalides renvoyaient 500 au lieu d'une erreur
française ; plan_line s'arrêtait à la fin de la fenêtre du graphique au
lieu de la date d'atteinte de l'objectif ; deficit_target_kcal était
recalculé après le plancher calorique ; « dernière pesée » affichait deux
valeurs différentes selon l'endpoint ; objectif protéines absent.

Vape : durée de vie moyenne des résistances incluait la résistance en
cours ; archiver la recette active la laissait active ; coût théorique
inventé avant la date d'arrêt ; économies projetées dans le futur ;
€/ml arrondi à 2 décimales écrasait le modèle de coût DIY.

Finances : le sankey compensait crédits et débits non catégorisés ;
rows_total excluait les lignes filtrées, faussant l'arithmétique du
rapport d'import.

Socle : les erreurs HTTP du framework fuitaient en anglais dans
l'enveloppe française ; nginx renvoyait sa page 413 HTML au lieu du JSON
français ; fins de ligne normalisées en LF.

348 tests pytest (+7), ruff, tsc et vite build au vert.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-14 11:40:05 +02:00

18293 lines
430 KiB
JSON

{
"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"
}
}
}
}