{ "openapi": "3.0.3", "info": { "title": "Poveroh API", "version": "1.0.0", "description": "OpenAPI definition for the Poveroh v1 API" }, "servers": [ { "url": "http://localhost:3001/v1", "description": "API Poveroh Localhost v1" }, { "url": "http://api.poveroh.local/v1", "description": "API Poveroh Localhost proxy v1" }, { "url": "http://api.poveroh.com/v1", "description": "API Poveroh Production v1" } ], "tags": [ { "name": "Default", "description": "Default endpoints that are included with Better Auth by default. These endpoints are not part of any plugin." } ], "components": { "schemas": { "User": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string", "minLength": 1 }, "surname": { "type": "string", "minLength": 1 }, "email": { "type": "string", "format": "email" }, "emailVerified": { "type": "boolean" }, "onBoardingStep": { "$ref": "#/components/schemas/OnBoardingStepEnum" }, "onBoardingAt": { "type": "string", "nullable": true }, "image": { "type": "string", "nullable": true, "format": "uri" }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" }, "snapshotFrequency": { "$ref": "#/components/schemas/SnapshotFrequencyEnum" }, "preferredCurrency": { "$ref": "#/components/schemas/CurrencyEnum" }, "preferredLanguage": { "$ref": "#/components/schemas/LanguageEnum" }, "dateFormat": { "$ref": "#/components/schemas/DateFormatEnum" }, "country": { "$ref": "#/components/schemas/CountriesEnum" }, "timezone": { "$ref": "#/components/schemas/TimezoneEnum" } }, "required": [ "id", "name", "surname", "email", "emailVerified", "onBoardingStep", "onBoardingAt", "image", "createdAt", "updatedAt", "snapshotFrequency", "preferredCurrency", "preferredLanguage", "dateFormat", "country", "timezone" ] }, "Session": { "type": "object", "properties": { "id": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" }, "token": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time", "default": "Generated at runtime" }, "updatedAt": { "type": "string", "format": "date-time" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" }, "userId": { "type": "string" } }, "required": [ "expiresAt", "token", "createdAt", "updatedAt", "userId" ] }, "Account": { "type": "object", "properties": { "id": { "type": "string" }, "accountId": { "type": "string" }, "providerId": { "type": "string" }, "userId": { "type": "string" }, "accessToken": { "type": "string" }, "refreshToken": { "type": "string" }, "idToken": { "type": "string" }, "accessTokenExpiresAt": { "type": "string", "format": "date-time" }, "refreshTokenExpiresAt": { "type": "string", "format": "date-time" }, "scope": { "type": "string" }, "password": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time", "default": "Generated at runtime" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "accountId", "providerId", "userId", "createdAt", "updatedAt" ] }, "Verification": { "type": "object", "properties": { "id": { "type": "string" }, "identifier": { "type": "string" }, "value": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" }, "createdAt": { "type": "string", "format": "date-time", "default": "Generated at runtime" }, "updatedAt": { "type": "string", "format": "date-time", "default": "Generated at runtime" } }, "required": [ "identifier", "value", "expiresAt", "createdAt", "updatedAt" ] }, "TransactionActionEnum": { "type": "string", "enum": [ "EXPENSES", "INCOME", "TRANSFER" ] }, "Subcategory": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "categoryId": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "icon": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "categoryId", "title", "icon", "createdAt", "updatedAt" ] }, "Category": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "userId": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "for": { "$ref": "#/components/schemas/TransactionActionEnum" }, "icon": { "type": "string" }, "color": { "type": "string", "default": "#8B5CF6" }, "subcategories": { "type": "array", "items": { "$ref": "#/components/schemas/Subcategory" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "title", "for", "icon", "createdAt", "updatedAt" ] }, "CategoryData": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "for": { "$ref": "#/components/schemas/TransactionActionEnum" }, "icon": { "type": "string" }, "color": { "type": "string", "default": "#8B5CF6" }, "subcategories": { "type": "array", "items": { "$ref": "#/components/schemas/Subcategory" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "title", "for", "icon", "createdAt", "updatedAt" ] }, "GetCategoryListResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryData" }, "description": "Response data" } }, "required": [ "success", "message", "data" ] }, "GetCategoryResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/CategoryData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "CreateCategoryRequest": { "type": "object", "properties": { "title": { "type": "string" }, "for": { "$ref": "#/components/schemas/TransactionActionEnum" }, "icon": { "type": "string" }, "color": { "type": "string", "default": "#8B5CF6" } }, "required": [ "title", "for", "icon" ] }, "CreateCategoryResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/CategoryData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UpdateCategoryRequest": { "type": "object", "properties": { "title": { "type": "string" }, "for": { "$ref": "#/components/schemas/TransactionActionEnum" }, "icon": { "type": "string" }, "color": { "type": "string", "default": "#8B5CF6" } } }, "UpdateCategoryResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "DeleteCategoryResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "CategoryParamsId": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "required": [ "id" ] }, "StringFilter": { "type": "object", "properties": { "equals": { "type": "string" }, "contains": { "type": "string" } } }, "CategoryFilters": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/CategoryParamsId" }, "title": { "$ref": "#/components/schemas/StringFilter" }, "for": { "$ref": "#/components/schemas/TransactionActionEnum" } } }, "FilterOptions": { "type": "object", "properties": { "skip": { "type": "integer", "minimum": 0, "default": 0 }, "take": { "type": "integer", "minimum": 0, "exclusiveMinimum": true, "default": 20 }, "sortBy": { "type": "string", "default": "createdAt" }, "sortOrder": { "type": "string", "enum": [ "asc", "desc" ], "default": "desc" } } }, "QueryCategoryFilters": { "type": "object", "properties": { "filter": { "$ref": "#/components/schemas/CategoryFilters" }, "options": { "$ref": "#/components/schemas/FilterOptions" } } }, "CategoryForm": { "type": "object", "properties": { "title": { "type": "string" }, "for": { "$ref": "#/components/schemas/TransactionActionEnum" }, "icon": { "type": "string" }, "color": { "type": "string", "default": "#8B5CF6" } }, "required": [ "title", "for", "icon" ] }, "DashboardWidgetEnum": { "type": "string", "enum": [ "net-worth-evolution", "kpi-row", "liquidity-evolution", "income-expense-month", "month-comparison", "category-trend", "account-balances", "expense-macro-distribution", "recent-transactions" ] }, "ColSpanEnum": { "type": "string", "enum": [ "12", "6", "4", "3" ] }, "DashboardLayoutItem": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/DashboardWidgetEnum" }, "colSpan": { "$ref": "#/components/schemas/ColSpanEnum" }, "minHeight": { "type": "number" }, "visible": { "type": "boolean", "default": true } }, "required": [ "id", "colSpan", "minHeight" ] }, "DashboardLayout": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "userId": { "type": "string", "format": "uuid" }, "version": { "type": "number" }, "layout": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardLayoutItem" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "version", "layout", "createdAt", "updatedAt" ] }, "GetDashboardLayout": { "type": "object", "properties": { "layout": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardLayoutItem" } }, "version": { "type": "number" } }, "required": [ "layout", "version" ] }, "GetDashboardLayoutResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/GetDashboardLayout" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UpdateDashboardLayoutRequest": { "type": "object", "properties": { "version": { "type": "number" }, "layout": { "type": "array", "items": { "$ref": "#/components/schemas/DashboardLayoutItem" } } }, "required": [ "version", "layout" ] }, "UpdateDashboardLayoutResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "TimezoneEnum": { "type": "string", "enum": [ "AFRICA_ALGIERS", "AFRICA_CAIRO", "AFRICA_CASABLANCA", "AFRICA_HARARE", "AFRICA_JOHANNESBURG", "AFRICA_MONROVIA", "AFRICA_NAIROBI", "AFRICA_WEST_CENTRAL", "AMERICA_ARGENTINA_BUENOS_AIRES", "AMERICA_BOGOTA", "AMERICA_CARACAS", "AMERICA_CHICAGO", "AMERICA_CHIHUAHUA", "AMERICA_DENVER", "AMERICA_GUATEMALA", "AMERICA_GUYANA", "AMERICA_HALIFAX", "AMERICA_INDIANA_INDIANAPOLIS", "AMERICA_JUNEAU", "AMERICA_LA_PAZ", "AMERICA_LIMA", "AMERICA_QUITO", "AMERICA_LOS_ANGELES", "AMERICA_MAZATLAN", "AMERICA_MEXICO_CITY", "AMERICA_GUADALAJARA", "AMERICA_MONTERREY", "AMERICA_MONTEVIDEO", "AMERICA_NEW_YORK", "AMERICA_PHOENIX", "AMERICA_PUERTO_RICO", "AMERICA_REGINA", "AMERICA_SANTIAGO", "AMERICA_SAO_PAULO", "AMERICA_ST_JOHNS", "AMERICA_TIJUANA", "ASIA_ALMATY", "ASIA_ASTANA", "ASIA_BAGHDAD", "ASIA_BAKU", "ASIA_BANGKOK", "ASIA_CHENNAI", "ASIA_HANOI", "ASIA_CHONGQING", "ASIA_COLOMBO", "ASIA_DHAKA", "ASIA_HONG_KONG", "ASIA_IRKUTSK", "ASIA_JAKARTA", "ASIA_JERUSALEM", "ASIA_KABUL", "ASIA_KAMCHATKA", "ASIA_KARACHI", "ASIA_ISLAMABAD", "ASIA_KATHMANDU", "ASIA_KOLKATA", "ASIA_MUMBAI", "ASIA_NEW_DELHI", "ASIA_KRASNOYARSK", "ASIA_KUALA_LUMPUR", "ASIA_KUWAIT", "ASIA_MAGADAN", "ASIA_MUSCAT", "ASIA_ABU_DHABI", "ASIA_NOVOSIBIRSK", "ASIA_RIYADH", "ASIA_SEOUL", "ASIA_SHANGHAI", "ASIA_SINGAPORE", "ASIA_SREDNEKOLYMSK", "ASIA_TAIPEI", "ASIA_TASHKENT", "ASIA_TBILISI", "ASIA_TEHRAN", "ASIA_TOKYO", "ASIA_OSAKA", "ASIA_SAPPORO", "ASIA_ULAANBAATAR", "ASIA_URUMQI", "ASIA_VLADIVOSTOK", "ASIA_YAKUTSK", "ASIA_YEKATERINBURG", "ASIA_YEREVAN", "ATLANTIC_AZORES", "ATLANTIC_CAPE_VERDE", "ATLANTIC_SOUTH_GEORGIA", "AUSTRALIA_ADELAIDE", "AUSTRALIA_BRISBANE", "AUSTRALIA_CANBERRA", "AUSTRALIA_DARWIN", "AUSTRALIA_HOBART", "AUSTRALIA_MELBOURNE", "AUSTRALIA_PERTH", "AUSTRALIA_SYDNEY", "ETC_GMT_PLUS_12", "ETC_UTC", "EUROPE_AMSTERDAM", "EUROPE_ATHENS", "EUROPE_BELGRADE", "EUROPE_BERN", "EUROPE_BERLIN", "EUROPE_BRATISLAVA", "EUROPE_BRUSSELS", "EUROPE_BUCHAREST", "EUROPE_BUDAPEST", "EUROPE_COPENHAGEN", "EUROPE_DUBLIN", "EUROPE_HELSINKI", "EUROPE_ISTANBUL", "EUROPE_KALININGRAD", "EUROPE_LISBON", "EUROPE_LJUBLJANA", "EUROPE_LONDON", "EUROPE_EDINBURGH", "EUROPE_MADRID", "EUROPE_MINSK", "EUROPE_MOSCOW", "EUROPE_ST_PETERSBURG", "EUROPE_PARIS", "EUROPE_PRAGUE", "EUROPE_RIGA", "EUROPE_ROME", "EUROPE_SAMARA", "EUROPE_SARAJEVO", "EUROPE_SKOPJE", "EUROPE_SOFIA", "EUROPE_STOCKHOLM", "EUROPE_TALLINN", "EUROPE_VIENNA", "EUROPE_VILNIUS", "EUROPE_VOLGOGRAD", "EUROPE_WARSAW", "EUROPE_ZAGREB", "EUROPE_ZURICH", "PACIFIC_APIA", "PACIFIC_AUCKLAND", "PACIFIC_WELLINGTON", "PACIFIC_CHATHAM", "PACIFIC_FAKAOFO", "PACIFIC_FIJI", "PACIFIC_GUADALCANAL", "PACIFIC_GUAM", "PACIFIC_HONOLULU", "PACIFIC_MAJURO", "PACIFIC_MIDWAY", "PACIFIC_NOUMEA", "PACIFIC_PAGO_PAGO", "PACIFIC_PORT_MORESBY", "PACIFIC_TONGATAPU" ] }, "SnapshotFrequencyEnum": { "type": "string", "enum": [ "NONE", "DAILY", "WEEKLY", "MONTHLY", "QUARTERLY", "SEMIANNUAL", "ANNUAL" ] }, "AssetTypeEnum": { "type": "string", "enum": [ "STOCK", "BOND", "ETF", "MUTUAL_FUND", "CRYPTOCURRENCY", "REAL_ESTATE", "COLLECTIBLE", "PRIVATE_EQUITY", "VENTURE_CAPITAL", "PRIVATE_DEBT", "P2P_LENDING", "INSURANCE_POLICY", "AGRICULTURAL_LAND", "OTHER" ] }, "FinancialAccountTypeEnum": { "type": "string", "enum": [ "ONLINE_BANK", "BANK_ACCOUNT", "CIRCUIT", "DEPOSIT_BANK", "BROKER", "WALLET", "CASH", "CREDIT_CARD", "OTHER" ] }, "TransactionStatusEnum": { "type": "string", "enum": [ "APPROVED", "REJECTED", "IMPORT_PENDING", "IMPORT_REJECTED", "IMPORT_APPROVED" ] }, "CurrencyEnum": { "type": "string", "enum": [ "USD", "EUR", "GBP", "JPY", "CNY", "INR", "AUD", "CAD", "CHF", "SEK", "NZD", "MXN", "SGD", "HKD", "NOK", "KRW", "TRY", "UNKNOWN" ] }, "RememberPeriodEnum": { "type": "string", "enum": [ "SAME_DAY", "THREE_DAYS", "SEVEN_DAYS", "FOURTEEN_DAYS", "THIRTY_DAYS", "NINETY_DAYS" ] }, "CyclePeriodEnum": { "type": "string", "enum": [ "DAY", "WEEK", "MONTH", "YEAR" ] }, "AppearanceModeEnum": { "type": "string", "enum": [ "LOGO", "ICON" ] }, "FileTypeEnum": { "type": "string", "enum": [ "CSV", "PDF" ] }, "LanguageEnum": { "type": "string", "enum": [ "EN", "ES", "FR", "DE", "IT", "PT", "NL", "RU", "ZH", "JA", "KO", "AR", "HI", "TH", "VI", "TR", "PL", "CS", "HU", "RO", "BG", "HR", "SK", "SL", "ET", "LV", "LT", "MT", "FI", "SV", "DA", "NO", "IS", "EL", "HE", "FA", "UR", "BN", "TA", "TE", "ML", "KN", "GU", "MR", "PA", "OR", "AS", "NE", "SI", "MY", "KH", "LO", "KA", "AM", "TI", "SW", "ZU", "AF", "XH", "ST", "TN", "SS", "VE", "TS", "NR", "IG", "YO", "HA", "FF", "WO", "BM", "DY", "SN" ] }, "DateFormatEnum": { "type": "string", "enum": [ "DD_MM_YYYY", "MM_DD_YYYY", "YYYY_MM_DD", "DD_MM_YY", "MM_DD_YY", "YY_MM_DD", "DD_MMMM_YYYY", "MMMM_DD_YYYY", "YYYY_MMMM_DD" ] }, "OnBoardingStepEnum": { "type": "string", "enum": [ "EMAIL", "GENERALITES", "PREFERENCES", "COMPLETED" ] }, "CountriesEnum": { "type": "string", "enum": [ "AFGHANISTAN", "ALBANIA", "ALGERIA", "ANDORRA", "ANGOLA", "ANTIGUA_AND_BARBUDA", "ARGENTINA", "ARMENIA", "AUSTRALIA", "AUSTRIA", "AZERBAIJAN", "BAHAMAS", "BAHRAIN", "BANGLADESH", "BARBADOS", "BELARUS", "BELGIUM", "BELIZE", "BENIN", "BHUTAN", "BOLIVIA", "BOSNIA_AND_HERZEGOVINA", "BOTSWANA", "BRAZIL", "BRUNEI", "BULGARIA", "BURKINA_FASO", "BURUNDI", "CABO_VERDE", "CAMBODIA", "CAMEROON", "CANADA", "CENTRAL_AFRICAN_REPUBLIC", "CHAD", "CHILE", "CHINA", "COLOMBIA", "COMOROS", "CONGO_DEMOCRATIC_REPUBLIC", "CONGO_REPUBLIC", "COSTA_RICA", "CROATIA", "CUBA", "CYPRUS", "CZECH_REPUBLIC", "DENMARK", "DJIBOUTI", "DOMINICA", "DOMINICAN_REPUBLIC", "ECUADOR", "EGYPT", "EL_SALVADOR", "EQUATORIAL_GUINEA", "ERITREA", "ESTONIA", "ESWATINI", "ETHIOPIA", "FIJI", "FINLAND", "FRANCE", "GABON", "GAMBIA", "GEORGIA", "GERMANY", "GHANA", "GREECE", "GRENADA", "GUATEMALA", "GUINEA", "GUINEA_BISSAU", "GUYANA", "HAITI", "HONDURAS", "HUNGARY", "ICELAND", "INDIA", "INDONESIA", "IRAN", "IRAQ", "IRELAND", "ISRAEL", "ITALY", "JAMAICA", "JAPAN", "JORDAN", "KAZAKHSTAN", "KENYA", "KIRIBATI", "KOREA_NORTH", "KOREA_SOUTH", "KUWAIT", "KYRGYZSTAN", "LAOS", "LATVIA", "LEBANON", "LESOTHO", "LIBERIA", "LIBYA", "LIECHTENSTEIN", "LITHUANIA", "LUXEMBOURG", "MADAGASCAR", "MALAWI", "MALAYSIA", "MALDIVES", "MALI", "MALTA", "MARSHALL_ISLANDS", "MAURITANIA", "MAURITIUS", "MEXICO", "MICRONESIA", "MOLDOVA", "MONACO", "MONGOLIA", "MONTENEGRO", "MOROCCO", "MOZAMBIQUE", "MYANMAR", "NAMIBIA", "NAURU", "NEPAL", "NETHERLANDS", "NEW_ZEALAND", "NICARAGUA", "NIGER", "NIGERIA", "NORTH_MACEDONIA", "NORWAY", "OMAN", "PAKISTAN", "PALAU", "PALESTINE", "PANAMA", "PAPUA_NEW_GUINEA", "PARAGUAY", "PERU", "PHILIPPINES", "POLAND", "PORTUGAL", "QATAR", "ROMANIA", "RUSSIA", "RWANDA", "SAINT_KITTS_AND_NEVIS", "SAINT_LUCIA", "SAINT_VINCENT_AND_GRENADINES", "SAMOA", "SAN_MARINO", "SAO_TOME_AND_PRINCIPE", "SAUDI_ARABIA", "SENEGAL", "SERBIA", "SEYCHELLES", "SIERRA_LEONE", "SINGAPORE", "SLOVAKIA", "SLOVENIA", "SOLOMON_ISLANDS", "SOMALIA", "SOUTH_AFRICA", "SOUTH_SUDAN", "SPAIN", "SRI_LANKA", "SUDAN", "SURINAME", "SWEDEN", "SWITZERLAND", "SYRIA", "TAIWAN", "TAJIKISTAN", "TANZANIA", "THAILAND", "TIMOR_LESTE", "TOGO", "TONGA", "TRINIDAD_AND_TOBAGO", "TUNISIA", "TURKEY", "TURKMENISTAN", "TUVALU", "UGANDA", "UKRAINE", "UNITED_ARAB_EMIRATES", "UNITED_KINGDOM", "UNITED_STATES", "URUGUAY", "UZBEKISTAN", "VANUATU", "VATICAN_CITY", "VENEZUELA", "VIETNAM", "YEMEN", "ZAMBIA", "ZIMBABWE" ] }, "ErrorResponse": { "type": "object", "properties": { "success": { "type": "boolean", "enum": [ false ], "description": "Always false for error responses" }, "message": { "type": "string", "description": "Error message describing what went wrong" }, "error": { "nullable": true, "description": "Optional additional error details or context" } }, "required": [ "success", "message" ] }, "DateFilter": { "type": "object", "properties": { "gte": { "type": "string", "format": "date-time" }, "lte": { "type": "string", "format": "date-time" } } }, "FinancialAccount": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "userId": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "balance": { "type": "number" }, "type": { "$ref": "#/components/schemas/FinancialAccountTypeEnum" }, "logoIcon": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "title", "balance", "type", "logoIcon", "createdAt", "updatedAt" ] }, "FinancialAccountData": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "balance": { "type": "number" }, "type": { "$ref": "#/components/schemas/FinancialAccountTypeEnum" }, "logoIcon": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "title", "balance", "type", "logoIcon", "createdAt", "updatedAt" ] }, "GetFinancialAccountListResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/FinancialAccountData" }, "description": "Response data" } }, "required": [ "success", "message", "data" ] }, "GetFinancialAccountResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/FinancialAccountData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "CreateFinancialAccountRequest": { "type": "object", "properties": { "title": { "type": "string" }, "type": { "$ref": "#/components/schemas/FinancialAccountTypeEnum" }, "logoIcon": { "type": "string" } }, "required": [ "title", "type", "logoIcon" ] }, "CreateFinancialAccountMultipartRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreateFinancialAccountRequest" }, "file": { "type": "array", "items": { "type": "string", "format": "binary", "description": "Optional file upload" } } }, "required": [ "file" ] }, "CreateFinancialAccountResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/FinancialAccountData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UpdateFinancialAccountRequest": { "type": "object", "properties": { "title": { "type": "string" }, "type": { "$ref": "#/components/schemas/FinancialAccountTypeEnum" }, "logoIcon": { "type": "string" } } }, "UpdateFinancialAccountResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "DeleteFinancialAccountResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "FinancialAccountParamsId": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "required": [ "id" ] }, "FinancialAccountFilters": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/FinancialAccountParamsId" }, "title": { "$ref": "#/components/schemas/StringFilter" }, "type": { "$ref": "#/components/schemas/FinancialAccountTypeEnum" } } }, "QueryFinancialAccountFilters": { "type": "object", "properties": { "filter": { "$ref": "#/components/schemas/FinancialAccountFilters" }, "options": { "$ref": "#/components/schemas/FilterOptions" } } }, "FinancialAccountForm": { "type": "object", "properties": { "title": { "type": "string" }, "type": { "$ref": "#/components/schemas/FinancialAccountTypeEnum" }, "logoIcon": { "type": "string" } }, "required": [ "title", "type", "logoIcon" ] }, "ImportFile": { "type": "object", "properties": { "id": { "type": "string" }, "importId": { "type": "string", "format": "uuid" }, "filename": { "type": "string" }, "filetype": { "$ref": "#/components/schemas/FileTypeEnum" }, "path": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "importId", "filename", "filetype", "path", "createdAt", "updatedAt" ] }, "TransactionMedia": { "type": "object", "properties": { "id": { "type": "string" }, "transactionId": { "type": "string", "format": "uuid" }, "filename": { "type": "string" }, "filetype": { "type": "string" }, "path": { "type": "string", "format": "uri" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "transactionId", "filename", "filetype", "path", "createdAt", "updatedAt" ] }, "Amount": { "type": "object", "properties": { "id": { "type": "string" }, "transactionId": { "type": "string", "format": "uuid" }, "amount": { "type": "number" }, "currency": { "$ref": "#/components/schemas/CurrencyEnum" }, "action": { "$ref": "#/components/schemas/TransactionActionEnum" }, "financialAccountId": { "type": "string", "format": "uuid" }, "importReferenceId": { "type": "string", "nullable": true }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "transactionId", "amount", "currency", "action", "financialAccountId", "importReferenceId", "createdAt", "updatedAt" ] }, "Transaction": { "type": "object", "properties": { "id": { "type": "string" }, "userId": { "type": "string" }, "date": { "type": "string", "format": "date-time" }, "title": { "type": "string" }, "note": { "type": "string", "nullable": true }, "icon": { "type": "string", "nullable": true }, "categoryId": { "type": "string", "nullable": true }, "subcategoryId": { "type": "string", "nullable": true }, "importId": { "type": "string", "nullable": true }, "action": { "$ref": "#/components/schemas/TransactionActionEnum" }, "status": { "$ref": "#/components/schemas/TransactionStatusEnum" }, "ignore": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" }, "media": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionMedia" } }, "amounts": { "type": "array", "items": { "$ref": "#/components/schemas/Amount" } }, "transferId": { "type": "string", "nullable": true }, "transferHash": { "type": "string", "nullable": true } }, "required": [ "id", "userId", "date", "title", "note", "icon", "categoryId", "subcategoryId", "importId", "action", "status", "ignore", "createdAt", "updatedAt", "media", "amounts", "transferId", "transferHash" ] }, "Import": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "userId": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "financialAccountId": { "type": "string", "format": "uuid" }, "status": { "$ref": "#/components/schemas/TransactionStatusEnum" }, "transactions": { "type": "array", "items": { "$ref": "#/components/schemas/Transaction" } }, "files": { "type": "array", "items": { "$ref": "#/components/schemas/ImportFile" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "title", "financialAccountId", "status", "createdAt", "updatedAt" ] }, "ImportData": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "financialAccountId": { "type": "string", "format": "uuid" }, "status": { "$ref": "#/components/schemas/TransactionStatusEnum" }, "transactions": { "type": "array", "items": { "$ref": "#/components/schemas/Transaction" } }, "files": { "type": "array", "items": { "$ref": "#/components/schemas/ImportFile" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "title", "financialAccountId", "status", "createdAt", "updatedAt" ] }, "ImportTransactionDataResponse": { "type": "object", "properties": { "id": { "type": "string" }, "date": { "type": "string", "format": "date-time" }, "title": { "type": "string" }, "note": { "type": "string", "nullable": true }, "icon": { "type": "string", "nullable": true }, "categoryId": { "type": "string", "nullable": true }, "subcategoryId": { "type": "string", "nullable": true }, "action": { "$ref": "#/components/schemas/TransactionActionEnum" }, "status": { "$ref": "#/components/schemas/TransactionStatusEnum" }, "ignore": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "media": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionMedia" } }, "amounts": { "type": "array", "items": { "$ref": "#/components/schemas/Amount" } }, "transferId": { "type": "string", "nullable": true }, "transferHash": { "type": "string", "nullable": true } }, "required": [ "id", "date", "title", "note", "icon", "categoryId", "subcategoryId", "action", "status", "ignore", "createdAt", "updatedAt", "media", "amounts", "transferId", "transferHash" ] }, "GetImportListResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ImportData" }, "description": "Response data" } }, "required": [ "success", "message", "data" ] }, "GetImportResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/ImportData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "GetImportTransactionsResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/ImportTransactionDataResponse" }, "description": "Response data" } }, "required": [ "success", "message", "data" ] }, "CreateImportRequest": { "type": "object", "properties": { "financialAccountId": { "type": "string", "format": "uuid" } }, "required": [ "financialAccountId" ] }, "CreateImportMultipartRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreateImportRequest" }, "file": { "type": "array", "items": { "type": "string", "format": "binary", "description": "Optional file upload" } } }, "required": [ "file" ] }, "CreateImportResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/ImportData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UpdateImportRequest": { "type": "object", "properties": { "title": { "type": "string" } } }, "UpdateImportResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/ImportData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "DeleteImportResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "ImportParamsId": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "required": [ "id" ] }, "ImportFilters": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/ImportParamsId" }, "title": { "$ref": "#/components/schemas/StringFilter" }, "date": { "$ref": "#/components/schemas/DateFilter" }, "includeTransactions": { "type": "boolean", "default": true } }, "additionalProperties": { "anyOf": [ { "type": "string" }, { "$ref": "#/components/schemas/StringFilter" }, { "$ref": "#/components/schemas/DateFilter" } ] } }, "QueryImportFilters": { "type": "object", "properties": { "filter": { "$ref": "#/components/schemas/ImportFilters" }, "options": { "$ref": "#/components/schemas/FilterOptions" } } }, "NetWorthEvolution": { "type": "object", "properties": { "date": { "type": "string", "format": "date-time" }, "netWorth": { "type": "number" } }, "required": [ "date", "netWorth" ] }, "NetWorthEvolutionReport": { "type": "object", "properties": { "currentNetWorth": { "type": "number" }, "evolution": { "type": "array", "items": { "$ref": "#/components/schemas/NetWorthEvolution" } } }, "required": [ "currentNetWorth", "evolution" ] }, "GetNetWorthEvolutionReportResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/NetWorthEvolutionReport" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "NetWorthEvolutionFilters": { "type": "object", "properties": { "date": { "$ref": "#/components/schemas/DateFilter" } }, "additionalProperties": { "anyOf": [ { "type": "string" }, { "$ref": "#/components/schemas/DateFilter" } ] } }, "QueryNetWorthEvolutionFilters": { "type": "object", "properties": { "filter": { "$ref": "#/components/schemas/NetWorthEvolutionFilters" }, "options": { "$ref": "#/components/schemas/FilterOptions" } } }, "SimpleSuccessResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" } }, "required": [ "success", "message" ] }, "SnapshotAccountBalance": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "snapshotId": { "type": "string", "format": "uuid" }, "accountId": { "type": "string", "format": "uuid" }, "balance": { "type": "number" } }, "required": [ "id", "snapshotId", "accountId", "balance" ] }, "SnapshotAssetValue": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "snapshotId": { "type": "string", "format": "uuid" }, "assetId": { "type": "string", "format": "uuid" }, "quantity": { "type": "number" }, "unitPrice": { "type": "number" }, "totalValue": { "type": "number" } }, "required": [ "id", "snapshotId", "assetId", "quantity", "unitPrice", "totalValue" ] }, "Snapshot": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "userId": { "type": "string", "format": "uuid" }, "snapshotDate": { "type": "string", "format": "date-time" }, "note": { "type": "string", "nullable": true }, "totalCash": { "type": "number" }, "totalInvestments": { "type": "number" }, "totalNetWorth": { "type": "number" }, "accountBalances": { "type": "array", "items": { "$ref": "#/components/schemas/SnapshotAccountBalance" } }, "assetValues": { "type": "array", "items": { "$ref": "#/components/schemas/SnapshotAssetValue" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "snapshotDate", "note", "totalCash", "totalInvestments", "totalNetWorth", "accountBalances", "assetValues", "createdAt", "updatedAt" ] }, "SnapshotData": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "snapshotDate": { "type": "string", "format": "date-time" }, "note": { "type": "string", "nullable": true }, "totalCash": { "type": "number" }, "totalInvestments": { "type": "number" }, "totalNetWorth": { "type": "number" }, "accountBalances": { "type": "array", "items": { "$ref": "#/components/schemas/SnapshotAccountBalance" } }, "assetValues": { "type": "array", "items": { "$ref": "#/components/schemas/SnapshotAssetValue" } }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "snapshotDate", "note", "totalCash", "totalInvestments", "totalNetWorth", "accountBalances", "assetValues", "createdAt", "updatedAt" ] }, "CreateSnapshotAccountBalanceRequest": { "type": "object", "properties": { "accountId": { "type": "string", "format": "uuid" }, "balance": { "type": "number" }, "snapshotDate": { "type": "string", "format": "date-time" } }, "required": [ "accountId", "balance", "snapshotDate" ] }, "CreateSnapshotAccountBalanceResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/Snapshot" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "StatusResponse": { "type": "object", "properties": { "status": { "type": "string" }, "uptime": { "type": "number" }, "version": { "type": "string" }, "timestamp": { "type": "string", "format": "date-time" } }, "required": [ "status", "uptime", "version", "timestamp" ] }, "SubcategoryData": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "categoryId": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "icon": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "categoryId", "title", "icon", "createdAt", "updatedAt" ] }, "GetSubcategoryListResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/SubcategoryData" }, "description": "Response data" } }, "required": [ "success", "message", "data" ] }, "GetSubcategoryResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/SubcategoryData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "CreateSubcategoryRequest": { "type": "object", "properties": { "categoryId": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "icon": { "type": "string" } }, "required": [ "categoryId", "title", "icon" ] }, "CreateSubcategoryResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/SubcategoryData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UpdateSubcategoryRequest": { "type": "object", "properties": { "title": { "type": "string" }, "icon": { "type": "string" } } }, "UpdateSubcategoryResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "DeleteSubcategoryResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "SubcategoryParamsId": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "required": [ "id" ] }, "SubcategoryFilters": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/SubcategoryParamsId" }, "title": { "$ref": "#/components/schemas/StringFilter" }, "categoryId": { "type": "object", "properties": { "categoryId": { "type": "string", "format": "uuid" } }, "required": [ "categoryId" ] } }, "additionalProperties": { "anyOf": [ { "type": "string" }, { "$ref": "#/components/schemas/StringFilter" } ] } }, "QuerySubcategoryFilters": { "type": "object", "properties": { "filter": { "$ref": "#/components/schemas/SubcategoryFilters" }, "options": { "$ref": "#/components/schemas/FilterOptions" } } }, "SubcategoryForm": { "type": "object", "properties": { "categoryId": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "icon": { "type": "string" } }, "required": [ "categoryId", "title", "icon" ] }, "Subscription": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "userId": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "description": { "type": "string" }, "amount": { "type": "number" }, "currency": { "$ref": "#/components/schemas/CurrencyEnum" }, "appearanceMode": { "$ref": "#/components/schemas/AppearanceModeEnum" }, "appearanceLogoIcon": { "type": "string" }, "firstPayment": { "type": "string", "format": "date-time" }, "cycleNumber": { "type": "number" }, "cyclePeriod": { "$ref": "#/components/schemas/CyclePeriodEnum" }, "rememberPeriod": { "$ref": "#/components/schemas/RememberPeriodEnum" }, "financialAccountId": { "type": "string", "format": "uuid" }, "isEnabled": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "userId", "title", "description", "amount", "currency", "appearanceMode", "appearanceLogoIcon", "firstPayment", "cycleNumber", "cyclePeriod", "rememberPeriod", "financialAccountId", "isEnabled", "createdAt", "updatedAt" ] }, "SubscriptionData": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "title": { "type": "string" }, "description": { "type": "string" }, "amount": { "type": "number" }, "currency": { "$ref": "#/components/schemas/CurrencyEnum" }, "appearanceMode": { "$ref": "#/components/schemas/AppearanceModeEnum" }, "appearanceLogoIcon": { "type": "string" }, "firstPayment": { "type": "string", "format": "date-time" }, "cycleNumber": { "type": "number" }, "cyclePeriod": { "$ref": "#/components/schemas/CyclePeriodEnum" }, "rememberPeriod": { "$ref": "#/components/schemas/RememberPeriodEnum" }, "financialAccountId": { "type": "string", "format": "uuid" }, "isEnabled": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" } }, "required": [ "id", "title", "description", "amount", "currency", "appearanceMode", "appearanceLogoIcon", "firstPayment", "cycleNumber", "cyclePeriod", "rememberPeriod", "financialAccountId", "isEnabled", "createdAt", "updatedAt" ] }, "GetSubscriptionListResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/SubscriptionData" }, "description": "Response data" } }, "required": [ "success", "message", "data" ] }, "GetSubscriptionResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/SubscriptionData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "CreateSubscriptionRequest": { "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "amount": { "type": "number" }, "currency": { "$ref": "#/components/schemas/CurrencyEnum" }, "appearanceMode": { "$ref": "#/components/schemas/AppearanceModeEnum" }, "appearanceLogoIcon": { "type": "string" }, "firstPayment": { "type": "string", "format": "date-time" }, "cycleNumber": { "type": "number" }, "cyclePeriod": { "$ref": "#/components/schemas/CyclePeriodEnum" }, "rememberPeriod": { "$ref": "#/components/schemas/RememberPeriodEnum" }, "financialAccountId": { "type": "string", "format": "uuid" }, "isEnabled": { "type": "boolean" } }, "required": [ "title", "description", "amount", "currency", "appearanceMode", "appearanceLogoIcon", "firstPayment", "cycleNumber", "cyclePeriod", "rememberPeriod", "financialAccountId", "isEnabled" ] }, "CreateSubscriptionMultipartRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreateSubscriptionRequest" }, "file": { "type": "array", "items": { "type": "string", "format": "binary", "description": "Optional file upload" } } }, "required": [ "file" ] }, "CreateSubscriptionResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/SubscriptionData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UpdateSubscriptionRequest": { "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "amount": { "type": "number" }, "currency": { "$ref": "#/components/schemas/CurrencyEnum" }, "appearanceMode": { "$ref": "#/components/schemas/AppearanceModeEnum" }, "appearanceLogoIcon": { "type": "string" }, "firstPayment": { "type": "string", "format": "date-time" }, "cycleNumber": { "type": "number" }, "cyclePeriod": { "$ref": "#/components/schemas/CyclePeriodEnum" }, "rememberPeriod": { "$ref": "#/components/schemas/RememberPeriodEnum" }, "financialAccountId": { "type": "string", "format": "uuid" }, "isEnabled": { "type": "boolean" } } }, "UpdateSubscriptionResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "DeleteSubscriptionResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "SubscriptionParamsId": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "required": [ "id" ] }, "SubscriptionFilters": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/SubscriptionParamsId" }, "title": { "$ref": "#/components/schemas/StringFilter" }, "description": { "$ref": "#/components/schemas/StringFilter" }, "type": { "$ref": "#/components/schemas/FinancialAccountTypeEnum" } }, "additionalProperties": { "anyOf": [ { "type": "string" }, { "$ref": "#/components/schemas/StringFilter" }, { "$ref": "#/components/schemas/FinancialAccountTypeEnum" } ] } }, "QuerySubscriptionFilters": { "type": "object", "properties": { "filter": { "$ref": "#/components/schemas/SubscriptionFilters" }, "options": { "$ref": "#/components/schemas/FilterOptions" } } }, "SubscriptionForm": { "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "amount": { "type": "number" }, "currency": { "$ref": "#/components/schemas/CurrencyEnum" }, "appearanceMode": { "$ref": "#/components/schemas/AppearanceModeEnum" }, "appearanceLogoIcon": { "type": "string" }, "firstPayment": { "type": "string", "format": "date-time" }, "cycleNumber": { "type": "number" }, "cyclePeriod": { "$ref": "#/components/schemas/CyclePeriodEnum" }, "rememberPeriod": { "$ref": "#/components/schemas/RememberPeriodEnum" }, "financialAccountId": { "type": "string", "format": "uuid" }, "isEnabled": { "type": "boolean" } }, "required": [ "title", "description", "amount", "currency", "appearanceMode", "appearanceLogoIcon", "firstPayment", "cycleNumber", "cyclePeriod", "rememberPeriod", "financialAccountId", "isEnabled" ] }, "CreateTransactionMediaRequest": { "type": "object", "properties": { "transactionId": { "type": "string", "format": "uuid" }, "filename": { "type": "string" }, "filetype": { "type": "string" }, "path": { "type": "string", "format": "uri" } }, "required": [ "transactionId", "filename", "filetype", "path" ] }, "CreateTransactionMediaMultipartRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreateTransactionMediaRequest" }, "file": { "type": "array", "items": { "type": "string", "format": "binary", "description": "Optional file upload" } } }, "required": [ "file" ] }, "TransactionMediaParamsId": { "type": "object", "properties": { "id": { "type": "string" } }, "required": [ "id" ] }, "TransactionMediaFilters": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/TransactionMediaParamsId" }, "transactionId": { "type": "string", "format": "uuid" }, "filetype": { "$ref": "#/components/schemas/StringFilter" } }, "additionalProperties": { "anyOf": [ { "type": "string" }, { "$ref": "#/components/schemas/StringFilter" } ] } }, "CreateAmountRequest": { "type": "object", "properties": { "transactionId": { "type": "string", "format": "uuid" }, "amount": { "type": "number" }, "currency": { "$ref": "#/components/schemas/CurrencyEnum" }, "action": { "$ref": "#/components/schemas/TransactionActionEnum" }, "financialAccountId": { "type": "string", "format": "uuid" }, "importReferenceId": { "type": "string", "nullable": true } }, "required": [ "transactionId", "amount", "currency", "action", "financialAccountId", "importReferenceId" ] }, "AmountParamsId": { "type": "object", "properties": { "id": { "type": "string" } }, "required": [ "id" ] }, "TransactionData": { "type": "object", "properties": { "id": { "type": "string" }, "date": { "type": "string", "format": "date-time" }, "title": { "type": "string" }, "note": { "type": "string", "nullable": true }, "icon": { "type": "string", "nullable": true }, "categoryId": { "type": "string", "nullable": true }, "subcategoryId": { "type": "string", "nullable": true }, "importId": { "type": "string", "nullable": true }, "action": { "$ref": "#/components/schemas/TransactionActionEnum" }, "status": { "$ref": "#/components/schemas/TransactionStatusEnum" }, "ignore": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "media": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionMedia" } }, "amounts": { "type": "array", "items": { "$ref": "#/components/schemas/Amount" } }, "transferId": { "type": "string", "nullable": true }, "transferHash": { "type": "string", "nullable": true } }, "required": [ "id", "date", "title", "note", "icon", "categoryId", "subcategoryId", "importId", "action", "status", "ignore", "createdAt", "updatedAt", "media", "amounts", "transferId", "transferHash" ] }, "TransactionDataResponse": { "type": "object", "properties": { "id": { "type": "string" }, "date": { "type": "string", "format": "date-time" }, "title": { "type": "string" }, "note": { "type": "string", "nullable": true }, "icon": { "type": "string", "nullable": true }, "categoryId": { "type": "string", "nullable": true }, "subcategoryId": { "type": "string", "nullable": true }, "importId": { "type": "string", "nullable": true }, "action": { "$ref": "#/components/schemas/TransactionActionEnum" }, "status": { "$ref": "#/components/schemas/TransactionStatusEnum" }, "ignore": { "type": "boolean" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "media": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionMedia" } }, "amounts": { "type": "array", "items": { "$ref": "#/components/schemas/Amount" } }, "transferId": { "type": "string", "nullable": true }, "transferHash": { "type": "string", "nullable": true } }, "required": [ "id", "date", "title", "note", "icon", "categoryId", "subcategoryId", "importId", "action", "status", "ignore", "createdAt", "updatedAt", "media", "amounts", "transferId", "transferHash" ] }, "GetTransactionListResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/TransactionData" }, "description": "Response data" } }, "required": [ "success", "message", "data" ] }, "GetTransactionResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/TransactionData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "CreateTransactionRequest": { "type": "object", "properties": { "date": { "type": "string", "format": "date-time" }, "title": { "type": "string" }, "note": { "type": "string", "nullable": true }, "icon": { "type": "string", "nullable": true }, "categoryId": { "type": "string", "nullable": true }, "subcategoryId": { "type": "string", "nullable": true }, "ignore": { "type": "boolean" } }, "required": [ "date", "title", "note", "icon", "categoryId", "subcategoryId", "ignore" ] }, "CreateTransactionMultipartRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/CreateTransactionRequest" }, "file": { "type": "array", "items": { "type": "string", "format": "binary", "description": "Optional file upload" } } }, "required": [ "file" ] }, "CreateTransactionResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/TransactionData" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UpdateTransactionRequest": { "type": "object", "properties": { "date": { "type": "string", "format": "date-time" }, "title": { "type": "string" }, "note": { "type": "string", "nullable": true }, "icon": { "type": "string", "nullable": true }, "categoryId": { "type": "string", "nullable": true }, "subcategoryId": { "type": "string", "nullable": true }, "ignore": { "type": "boolean" } } }, "UpdateTransactionResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "DeleteTransactionResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "nullable": true, "description": "Response data" } }, "required": [ "success", "message" ] }, "TransactionParamsId": { "type": "object", "properties": { "id": { "type": "string" } }, "required": [ "id" ] }, "TransactionFilters": { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/TransactionParamsId" }, "title": { "$ref": "#/components/schemas/StringFilter" }, "note": { "$ref": "#/components/schemas/StringFilter" }, "action": { "$ref": "#/components/schemas/TransactionActionEnum" }, "categoryId": { "type": "string", "format": "uuid" }, "subcategoryId": { "type": "string", "format": "uuid" }, "financialAccountId": { "type": "string", "format": "uuid" }, "date": { "$ref": "#/components/schemas/DateFilter" } } }, "QueryTransactionFilters": { "type": "object", "properties": { "filter": { "$ref": "#/components/schemas/TransactionFilters" }, "options": { "$ref": "#/components/schemas/FilterOptions" } } }, "TransactionForm": { "type": "object", "properties": { "date": { "type": "string", "format": "date-time" }, "title": { "type": "string" }, "note": { "type": "string", "nullable": true }, "icon": { "type": "string", "nullable": true }, "categoryId": { "type": "string", "nullable": true }, "subcategoryId": { "type": "string", "nullable": true }, "ignore": { "type": "boolean" } }, "required": [ "date", "title", "note", "icon", "categoryId", "subcategoryId", "ignore" ] }, "UserPreferences": { "type": "object", "properties": { "snapshotFrequency": { "$ref": "#/components/schemas/SnapshotFrequencyEnum" }, "preferredCurrency": { "$ref": "#/components/schemas/CurrencyEnum" }, "preferredLanguage": { "$ref": "#/components/schemas/LanguageEnum" }, "dateFormat": { "$ref": "#/components/schemas/DateFormatEnum" }, "country": { "$ref": "#/components/schemas/CountriesEnum" }, "timezone": { "$ref": "#/components/schemas/TimezoneEnum" } }, "required": [ "snapshotFrequency", "preferredCurrency", "preferredLanguage", "dateFormat", "country", "timezone" ] }, "GetUserResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/User" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UpdateUserRequest": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string", "minLength": 1 }, "surname": { "type": "string", "minLength": 1 }, "email": { "type": "string", "format": "email" }, "emailVerified": { "type": "boolean" }, "onBoardingStep": { "$ref": "#/components/schemas/OnBoardingStepEnum" }, "onBoardingAt": { "type": "string", "nullable": true }, "image": { "type": "string", "nullable": true, "format": "uri" }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" }, "snapshotFrequency": { "$ref": "#/components/schemas/SnapshotFrequencyEnum" }, "preferredCurrency": { "$ref": "#/components/schemas/CurrencyEnum" }, "preferredLanguage": { "$ref": "#/components/schemas/LanguageEnum" }, "dateFormat": { "$ref": "#/components/schemas/DateFormatEnum" }, "country": { "$ref": "#/components/schemas/CountriesEnum" }, "timezone": { "$ref": "#/components/schemas/TimezoneEnum" } } }, "UpdateUserResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "allOf": [ { "$ref": "#/components/schemas/User" }, { "description": "Response data" } ] } }, "required": [ "success", "message", "data" ] }, "UserSession": { "type": "object", "properties": { "session": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "createdAt": { "type": "string" }, "updatedAt": { "type": "string" }, "userId": { "type": "string", "format": "uuid" }, "expiresAt": { "type": "string" }, "token": { "type": "string" }, "ipAddress": { "type": "string", "nullable": true, "format": "ip" }, "userAgent": { "type": "string", "nullable": true } }, "required": [ "id", "createdAt", "updatedAt", "userId", "expiresAt", "token", "ipAddress", "userAgent" ] }, "user": { "$ref": "#/components/schemas/User" } }, "required": [ "session", "user" ] }, "UserLogin": { "type": "object", "properties": { "email": { "type": "string", "minLength": 1, "format": "email" }, "password": { "type": "string", "minLength": 6 } }, "required": [ "email", "password" ] }, "UserFormPreferencesForm": { "type": "object", "properties": { "preferredCurrency": { "$ref": "#/components/schemas/CurrencyEnum" }, "preferredLanguage": { "$ref": "#/components/schemas/LanguageEnum" }, "dateFormat": { "$ref": "#/components/schemas/DateFormatEnum" }, "timezone": { "$ref": "#/components/schemas/TimezoneEnum" } }, "required": [ "preferredCurrency", "preferredLanguage", "dateFormat", "timezone" ] }, "UserFormGeneralitiesForm": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "surname": { "type": "string", "minLength": 1 }, "country": { "$ref": "#/components/schemas/CountriesEnum" } }, "required": [ "name", "surname", "country" ] }, "UserProfileForm": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "surname": { "type": "string", "minLength": 1 }, "email": { "type": "string", "format": "email" }, "country": { "$ref": "#/components/schemas/CountriesEnum" } }, "required": [ "name", "surname", "email", "country" ] }, "UserProfileSecurityForm": { "type": "object", "properties": { "oldPassword": { "type": "string", "minLength": 6 }, "newPassword": { "type": "string", "minLength": 6 }, "confirmPassword": { "type": "string", "minLength": 6 } }, "required": [ "oldPassword", "newPassword", "confirmPassword" ] }, "CreateUpdateFinancialAccountRequest": { "anyOf": [ { "$ref": "#/components/schemas/CreateFinancialAccountRequest" }, { "$ref": "#/components/schemas/UpdateFinancialAccountRequest" } ] }, "CreateUpdateCategoryRequest": { "anyOf": [ { "$ref": "#/components/schemas/CreateCategoryRequest" }, { "$ref": "#/components/schemas/UpdateCategoryRequest" } ] }, "CreateUpdateSubcategoryRequest": { "anyOf": [ { "$ref": "#/components/schemas/CreateSubcategoryRequest" }, { "$ref": "#/components/schemas/UpdateSubcategoryRequest" } ] }, "CreateUpdateSubscriptionRequest": { "anyOf": [ { "$ref": "#/components/schemas/CreateSubscriptionRequest" }, { "$ref": "#/components/schemas/UpdateSubscriptionRequest" } ] }, "CreateUpdateImportRequest": { "anyOf": [ { "$ref": "#/components/schemas/CreateImportRequest" }, { "$ref": "#/components/schemas/UpdateImportRequest" } ] }, "UpdateFinancialAccountMultipartRequest": { "type": "object", "properties": { "data": { "$ref": "#/components/schemas/UpdateFinancialAccountRequest" }, "file": { "type": "array", "items": { "type": "string", "format": "binary", "description": "Optional file upload" } } }, "required": [ "file" ] }, "ImportTemplateActionEnum": { "type": "string", "enum": [ "categories" ] }, "ImportTemplateActionParams": { "type": "object", "properties": { "action": { "$ref": "#/components/schemas/ImportTemplateActionEnum" } }, "required": [ "action" ] }, "CreateImportTemplateResponse": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "description": "Optional success message" }, "data": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryData" }, "description": "Response data" } }, "required": [ "success", "message", "data" ] }, "CreateCategoryTemplate": { "type": "object", "properties": { "title": { "type": "string" }, "for": { "$ref": "#/components/schemas/TransactionActionEnum" }, "icon": { "type": "string", "format": "uri" }, "color": { "type": "string", "default": "#8B5CF6" }, "subcategories": { "type": "array", "items": { "$ref": "#/components/schemas/Subcategory" } } }, "required": [ "title", "for", "icon" ] }, "CreateCategoryTemplateRequest": { "type": "object", "properties": { "title": { "type": "string" }, "for": { "$ref": "#/components/schemas/TransactionActionEnum" }, "icon": { "type": "string" }, "color": { "type": "string", "default": "#8B5CF6" }, "subcategories": { "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string" }, "icon": { "type": "string" } }, "required": [ "title", "icon" ] } } }, "required": [ "title", "for", "icon" ] } }, "parameters": {}, "securitySchemes": { "apiKeyCookie": { "type": "apiKey", "in": "cookie", "name": "apiKeyCookie", "description": "API Key authentication via cookie" }, "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT" } } }, "paths": { "/": { "get": { "tags": [ "Status" ], "operationId": "getRootStatus", "summary": "Healthcheck", "security": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "500": { "description": "Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/status": { "get": { "tags": [ "Status" ], "operationId": "getStatus", "summary": "Healthcheck", "security": [], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusResponse" } } } }, "500": { "description": "Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/user/me": { "get": { "tags": [ "User" ], "operationId": "getAuthenticatedUser", "summary": "Get authenticated user", "description": "Get authenticated user information and preferences", "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "User found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetUserResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Authenticated user not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "patch": { "tags": [ "User" ], "operationId": "updateAuthenticatedUser", "summary": "Update authenticated user", "description": "Updates the authenticated user's profile. Email changes require verification and may be subject to additional security checks.", "security": [ { "bearerAuth": [] } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserRequest" } } } }, "responses": { "200": { "description": "User updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateUserResponse" } } } }, "400": { "description": "Invalid request body", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Authenticated user not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/categories": { "get": { "tags": [ "Category" ], "operationId": "getCategories", "summary": "Get all categories", "description": "Retrieve a list of all categories associated with the user", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "$ref": "#/components/schemas/CategoryFilters" }, "required": false, "name": "filter", "in": "query" }, { "schema": { "$ref": "#/components/schemas/FilterOptions" }, "required": false, "name": "options", "in": "query" } ], "responses": { "200": { "description": "List of categories", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetCategoryListResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Category not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "post": { "tags": [ "Category" ], "operationId": "createCategory", "summary": "Create category", "description": "Create a new category with the provided data", "security": [ { "bearerAuth": [] } ], "requestBody": { "description": "Category data to create", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCategoryRequest" } } } }, "responses": { "200": { "description": "Category created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Category" ], "operationId": "deleteCategories", "summary": "Delete all categories", "description": "Delete all categories associated with the user", "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Categories deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteCategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/categories/{id}": { "get": { "tags": [ "Category" ], "operationId": "getCategoryById", "summary": "Get category by ID", "description": "Retrieve a specific category by its ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Category found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetCategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Category not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "patch": { "tags": [ "Category" ], "operationId": "updateCategory", "summary": "Update category", "description": "Update an existing category with the provided data", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "requestBody": { "description": "Category data to update", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCategoryRequest" } } } }, "responses": { "200": { "description": "Category updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateCategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Category not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Category" ], "operationId": "deleteCategory", "summary": "Delete category", "description": "Delete an existing category with the provided ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Category deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteCategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Category not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/subcategories": { "get": { "tags": [ "Subcategory" ], "operationId": "getSubcategories", "summary": "Get all subcategories", "description": "Retrieve a list of all subcategories associated with the user", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "$ref": "#/components/schemas/SubcategoryFilters" }, "required": false, "name": "filter", "in": "query" }, { "schema": { "$ref": "#/components/schemas/FilterOptions" }, "required": false, "name": "options", "in": "query" } ], "responses": { "200": { "description": "List of subcategories", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSubcategoryListResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Subcategory not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "post": { "tags": [ "Subcategory" ], "operationId": "createSubcategory", "summary": "Create subcategory", "description": "Create a new subcategory with the provided data", "security": [ { "bearerAuth": [] } ], "requestBody": { "description": "Subcategory data to create", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSubcategoryRequest" }, "encoding": { "data": { "contentType": "application/json" } } } } }, "responses": { "200": { "description": "Subcategory created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSubcategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Subcategory" ], "operationId": "deleteSubcategories", "summary": "Delete all subcategories", "description": "Delete all subcategories associated with the user", "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Subcategories deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteSubcategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/subcategories/{id}": { "get": { "tags": [ "Subcategory" ], "operationId": "getSubcategoryById", "summary": "Get subcategory by ID", "description": "Retrieve a specific subcategory by its ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Subcategory found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSubcategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Subcategory not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "patch": { "tags": [ "Subcategory" ], "operationId": "updateSubcategory", "summary": "Update subcategory", "description": "Update an existing subcategory with the provided data", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "requestBody": { "description": "Subcategory data to update", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSubcategoryRequest" } } } }, "responses": { "200": { "description": "Subcategory updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSubcategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Subcategory not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Subcategory" ], "operationId": "deleteSubcategory", "summary": "Delete subcategory", "description": "Delete an existing subcategory with the provided ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Subcategory deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteSubcategoryResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Subcategory not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/transactions": { "get": { "tags": [ "Transaction" ], "operationId": "getTransactions", "summary": "Get all transactions", "description": "Retrieve a list of all transactions associated with the user", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "$ref": "#/components/schemas/TransactionFilters" }, "required": false, "name": "filter", "in": "query" }, { "schema": { "$ref": "#/components/schemas/FilterOptions" }, "required": false, "name": "options", "in": "query" } ], "responses": { "200": { "description": "List of transactions", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTransactionListResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Transaction not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "post": { "tags": [ "Transaction" ], "operationId": "createTransaction", "summary": "Create transaction", "description": "Create a new transaction with the provided data", "security": [ { "bearerAuth": [] } ], "requestBody": { "description": "Transaction data to create", "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CreateTransactionMultipartRequest" }, "encoding": { "data": { "contentType": "application/json" } } } } }, "responses": { "200": { "description": "Transaction created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransactionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Transaction" ], "operationId": "deleteTransactions", "summary": "Delete all transactions", "description": "Delete all transactions associated with the user", "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Transactions deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTransactionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/transactions/{id}": { "get": { "tags": [ "Transaction" ], "operationId": "getTransactionById", "summary": "Get transaction by ID", "description": "Retrieve a specific transaction by its ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Transaction found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetTransactionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Transaction not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "patch": { "tags": [ "Transaction" ], "operationId": "updateTransaction", "summary": "Update transaction", "description": "Update an existing transaction with the provided data", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "name": "id", "in": "path" } ], "requestBody": { "description": "Transaction data to update", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTransactionRequest" } } } }, "responses": { "200": { "description": "Transaction updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateTransactionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Financial account not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Transaction" ], "operationId": "deleteTransaction", "summary": "Delete transaction", "description": "Delete an existing transaction with the provided ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Transaction deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteTransactionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Financial account not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/subscriptions": { "get": { "tags": [ "Subscription" ], "operationId": "getSubscriptions", "summary": "Get all subscriptions", "description": "Retrieve a list of all subscriptions associated with the user", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "$ref": "#/components/schemas/SubscriptionFilters" }, "required": false, "name": "filter", "in": "query" }, { "schema": { "$ref": "#/components/schemas/FilterOptions" }, "required": false, "name": "options", "in": "query" } ], "responses": { "200": { "description": "List of subscriptions", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSubscriptionListResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Subscription not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "post": { "tags": [ "Subscription" ], "operationId": "createSubscription", "summary": "Create subscription", "description": "Create a new subscription with the provided data", "security": [ { "bearerAuth": [] } ], "requestBody": { "description": "Subscription data to create", "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CreateSubscriptionMultipartRequest" }, "encoding": { "data": { "contentType": "application/json" } } } } }, "responses": { "200": { "description": "Subscription created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSubscriptionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Subscription" ], "operationId": "deleteSubscriptions", "summary": "Delete all subscriptions", "description": "Delete all subscriptions associated with the user", "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Subscriptions deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteSubscriptionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/subscriptions/{id}": { "get": { "tags": [ "Subscription" ], "operationId": "getSubscriptionById", "summary": "Get subscription by ID", "description": "Retrieve a specific subscription by its ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Subscription found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetSubscriptionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Subscription not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "patch": { "tags": [ "Subscription" ], "operationId": "updateSubscription", "summary": "Update subscription", "description": "Update an existing subscription with the provided data", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "requestBody": { "description": "Subscription data to update", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSubscriptionRequest" } } } }, "responses": { "200": { "description": "Subscription updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateSubscriptionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Financial account not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Subscription" ], "operationId": "deleteSubscription", "summary": "Delete subscription", "description": "Delete an existing subscription with the provided ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Subscription deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteSubscriptionResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Subscription not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/financial-accounts": { "get": { "tags": [ "Financial Account" ], "operationId": "getFinancialAccounts", "summary": "Get all financial accounts", "description": "Retrieve a list of all financial accounts associated with the user", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "$ref": "#/components/schemas/FinancialAccountFilters" }, "required": false, "name": "filter", "in": "query" }, { "schema": { "$ref": "#/components/schemas/FilterOptions" }, "required": false, "name": "options", "in": "query" } ], "responses": { "200": { "description": "List of financial accounts", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetFinancialAccountListResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Account not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "post": { "tags": [ "Financial Account" ], "operationId": "createFinancialAccount", "summary": "Create financial account", "description": "Create a new financial account with the provided data", "security": [ { "bearerAuth": [] } ], "requestBody": { "description": "Financial account data to create", "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CreateFinancialAccountMultipartRequest" }, "encoding": { "data": { "contentType": "application/json" } } } } }, "responses": { "200": { "description": "Financial account created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateFinancialAccountResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Financial Account" ], "operationId": "deleteFinancialAccounts", "summary": "Delete all financial accounts", "description": "Delete all financial accounts associated with the user", "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Financial accounts deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteFinancialAccountResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/financial-accounts/{id}": { "get": { "tags": [ "Financial Account" ], "operationId": "getFinancialAccountById", "summary": "Get financial account by ID", "description": "Retrieve a specific financial account by its ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Financial account found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetFinancialAccountResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Financial account not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "patch": { "tags": [ "Financial Account" ], "operationId": "updateFinancialAccount", "summary": "Update financial account", "description": "Update an existing financial account with the provided data", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "requestBody": { "description": "Financial account data to update", "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UpdateFinancialAccountMultipartRequest" }, "encoding": { "data": { "contentType": "application/json" } } } } }, "responses": { "200": { "description": "Financial account updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateFinancialAccountResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Financial account not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Financial Account" ], "operationId": "deleteFinancialAccount", "summary": "Delete financial account", "description": "Delete an existing financial account with the provided ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Financial account deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteFinancialAccountResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Financial account not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/imports": { "get": { "tags": [ "Import" ], "operationId": "getImports", "summary": "Get all imports", "description": "Retrieve a list of all imports associated with the user", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "$ref": "#/components/schemas/ImportFilters" }, "required": false, "name": "filter", "in": "query" }, { "schema": { "$ref": "#/components/schemas/FilterOptions" }, "required": false, "name": "options", "in": "query" } ], "responses": { "200": { "description": "List of imports", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetImportListResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Import not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "post": { "tags": [ "Import" ], "operationId": "createImport", "summary": "Create import", "description": "Create a new import with the provided data", "security": [ { "bearerAuth": [] } ], "requestBody": { "description": "Import data to create", "required": true, "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CreateImportMultipartRequest" }, "encoding": { "data": { "contentType": "application/json" } } } } }, "responses": { "200": { "description": "Import created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateImportResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Import" ], "operationId": "deleteImports", "summary": "Delete all imports", "description": "Delete all imports associated with the user", "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Imports deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteImportResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/imports/{id}": { "get": { "tags": [ "Import" ], "operationId": "getImportById", "summary": "Get import by ID", "description": "Retrieve a specific import by its ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Import retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetImportResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Import not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "put": { "tags": [ "Import" ], "operationId": "updateImport", "summary": "Update import", "description": "Update an existing import with the provided data", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "requestBody": { "description": "Import data to update", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateImportRequest" } } } }, "responses": { "200": { "description": "Import updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateImportResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Import not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "delete": { "tags": [ "Import" ], "operationId": "deleteImport", "summary": "Delete import", "description": "Delete an existing import with the provided ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Import deleted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteImportResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Import not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/imports/{id}/transactions": { "get": { "tags": [ "Import" ], "operationId": "getImportTransactionsById", "summary": "Get import transactions by ID", "description": "Retrieve transactions for a specific import by its ID", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Import transactions retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetImportTransactionsResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Import transactions not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/imports/complete/{id}": { "patch": { "tags": [ "Import" ], "operationId": "completeImport", "summary": "Complete import", "description": "Mark an existing import as complete", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "type": "string", "format": "uuid" }, "required": true, "name": "id", "in": "path" } ], "responses": { "200": { "description": "Import completed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateImportResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Import not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/dashboard": { "get": { "tags": [ "Dashboard" ], "operationId": "getDashboardLayout", "summary": "Get dashboard layout", "description": "Retrieve a specific dashboard layout", "security": [ { "bearerAuth": [] } ], "responses": { "200": { "description": "Dashboard layout found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetDashboardLayoutResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Dashboard layout not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } }, "put": { "tags": [ "Dashboard" ], "operationId": "updateDashboardLayout", "summary": "Update dashboard layout", "description": "Update a specific dashboard layout", "security": [ { "bearerAuth": [] } ], "requestBody": { "description": "Dashboard layout data to update", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDashboardLayoutRequest" } } } }, "responses": { "200": { "description": "Dashboard layout updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateDashboardLayoutResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Dashboard layout not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/account-balances": { "post": { "tags": [ "Snapshot" ], "operationId": "createSnapshotAccountBalance", "summary": "Create snapshot account balance", "description": "Create a new snapshot account balance with the provided data", "security": [ { "bearerAuth": [] } ], "requestBody": { "description": "Snapshot account balance data to create", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSnapshotAccountBalanceRequest" }, "encoding": { "data": { "contentType": "application/json" } } } } }, "responses": { "200": { "description": "Snapshot account balance created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSnapshotAccountBalanceResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/reports/trend": { "get": { "tags": [ "Report" ], "operationId": "getTrendReport", "summary": "Get trend report", "description": "Retrieve a trend report based on the users imports", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "$ref": "#/components/schemas/NetWorthEvolutionFilters" }, "required": false, "name": "filter", "in": "query" }, { "schema": { "$ref": "#/components/schemas/FilterOptions" }, "required": false, "name": "options", "in": "query" } ], "responses": { "200": { "description": "Trend report retrieved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetNetWorthEvolutionReportResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Import not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/auth/sign-in/social": { "post": { "tags": [ "Default" ], "description": "Sign in with a social provider", "operationId": "socialSignIn", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "callbackURL": { "type": [ "string", "null" ], "description": "Callback URL to redirect to after the user has signed in" }, "newUserCallbackURL": { "type": [ "string", "null" ] }, "errorCallbackURL": { "type": [ "string", "null" ], "description": "Callback URL to redirect to if an error happens" }, "provider": { "type": "string" }, "disableRedirect": { "type": [ "boolean", "null" ], "description": "Disable automatic redirection to the provider. Useful for handling the redirection yourself" }, "idToken": { "type": [ "object", "null" ], "properties": { "token": { "type": "string", "description": "ID token from the provider" }, "nonce": { "type": [ "string", "null" ], "description": "Nonce used to generate the token" }, "accessToken": { "type": [ "string", "null" ], "description": "Access token from the provider" }, "refreshToken": { "type": [ "string", "null" ], "description": "Refresh token from the provider" }, "expiresAt": { "type": [ "number", "null" ], "description": "Expiry date of the token" }, "user": { "type": [ "object", "null" ], "properties": { "name": { "type": [ "object", "null" ], "properties": { "firstName": { "type": [ "string", "null" ] }, "lastName": { "type": [ "string", "null" ] } } }, "email": { "type": [ "string", "null" ] } }, "description": "The user object from the provider. Only available for some providers like Apple." } }, "required": [ "token" ] }, "scopes": { "type": [ "array", "null" ], "description": "Array of scopes to request from the provider. This will override the default scopes passed." }, "requestSignUp": { "type": [ "boolean", "null" ], "description": "Explicitly request sign-up. Useful when disableImplicitSignUp is true for this provider" }, "loginHint": { "type": [ "string", "null" ], "description": "The login hint to use for the authorization code request" }, "additionalData": { "type": [ "string", "null" ] } }, "required": [ "provider" ] } } } }, "responses": { "200": { "description": "Success - Returns either session details or redirect URL", "content": { "application/json": { "schema": { "type": "object", "description": "Session response when idToken is provided", "properties": { "token": { "type": "string" }, "user": { "type": "object", "$ref": "#/components/schemas/User" }, "url": { "type": "string" }, "redirect": { "type": "boolean", "enum": [ false ] } }, "required": [ "redirect", "token", "user" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/callback/{id}": { "get": { "tags": [ "Default" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } }, "post": { "tags": [ "Default" ], "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/get-session": { "get": { "tags": [ "Default" ], "description": "Get the current session", "operationId": "getSession", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "nullable": true, "properties": { "session": { "$ref": "#/components/schemas/Session" }, "user": { "$ref": "#/components/schemas/User" } }, "required": [ "session", "user" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } }, "post": { "tags": [ "Default" ], "description": "Get the current session", "operationId": "getSession", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "nullable": true, "properties": { "session": { "$ref": "#/components/schemas/Session" }, "user": { "$ref": "#/components/schemas/User" } }, "required": [ "session", "user" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/sign-out": { "post": { "tags": [ "Default" ], "description": "Sign out the current user", "operationId": "signOut", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/sign-up/email": { "post": { "tags": [ "Default" ], "description": "Sign up a user using email and password", "operationId": "signUpWithEmailAndPassword", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the user" }, "email": { "type": "string", "description": "The email of the user" }, "password": { "type": "string", "description": "The password of the user" }, "image": { "type": "string", "description": "The profile image URL of the user" }, "callbackURL": { "type": "string", "description": "The URL to use for email verification callback" }, "rememberMe": { "type": "boolean", "description": "If this is false, the session will not be remembered. Default is `true`." } }, "required": [ "name", "email", "password" ] } } } }, "responses": { "200": { "description": "Successfully created user", "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string", "nullable": true, "description": "Authentication token for the session" }, "user": { "type": "object", "properties": { "id": { "type": "string", "description": "The unique identifier of the user" }, "email": { "type": "string", "format": "email", "description": "The email address of the user" }, "name": { "type": "string", "description": "The name of the user" }, "image": { "type": "string", "format": "uri", "nullable": true, "description": "The profile image URL of the user" }, "emailVerified": { "type": "boolean", "description": "Whether the email has been verified" }, "createdAt": { "type": "string", "format": "date-time", "description": "When the user was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "When the user was last updated" } }, "required": [ "id", "email", "name", "emailVerified", "createdAt", "updatedAt" ] } }, "required": [ "user" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "422": { "description": "Unprocessable Entity. User already exists or failed to create user.", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } } }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/sign-in/email": { "post": { "tags": [ "Default" ], "description": "Sign in with email and password", "operationId": "signInEmail", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string", "description": "Email of the user" }, "password": { "type": "string", "description": "Password of the user" }, "callbackURL": { "type": [ "string", "null" ], "description": "Callback URL to use as a redirect for email verification" }, "rememberMe": { "type": [ "boolean", "null" ], "description": "If this is false, the session will not be remembered. Default is `true`.", "default": true } }, "required": [ "email", "password" ] } } } }, "responses": { "200": { "description": "Success - Returns either session details or redirect URL", "content": { "application/json": { "schema": { "type": "object", "description": "Session response when idToken is provided", "properties": { "redirect": { "type": "boolean", "enum": [ false ] }, "token": { "type": "string", "description": "Session token" }, "url": { "type": "string", "nullable": true }, "user": { "type": "object", "$ref": "#/components/schemas/User" } }, "required": [ "redirect", "token", "user" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/reset-password": { "post": { "tags": [ "Default" ], "description": "Reset the password for a user", "operationId": "resetPassword", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "newPassword": { "type": "string", "description": "The new password to set" }, "token": { "type": [ "string", "null" ], "description": "The token to reset the password" } }, "required": [ "newPassword" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/verify-password": { "post": { "tags": [ "Default" ], "description": "Verify the current user's password", "operationId": "verifyPassword", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "password": { "type": "string", "description": "The password to verify" } }, "required": [ "password" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/verify-email": { "get": { "tags": [ "Default" ], "description": "Verify the email of the user", "security": [ { "bearerAuth": [] } ], "parameters": [ { "name": "token", "in": "query", "description": "The token to verify the email", "required": true, "schema": { "type": "string" } }, { "name": "callbackURL", "in": "query", "description": "The URL to redirect to after email verification", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "user": { "type": "object", "$ref": "#/components/schemas/User" }, "status": { "type": "boolean", "description": "Indicates if the email was verified successfully" } }, "required": [ "user", "status" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/send-verification-email": { "post": { "tags": [ "Default" ], "description": "Send a verification email to the user", "operationId": "sendVerificationEmail", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string", "description": "The email to send the verification email to", "example": "user@example.com" }, "callbackURL": { "type": "string", "description": "The URL to use for email verification callback", "example": "https://example.com/callback", "nullable": true } }, "required": [ "email" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean", "description": "Indicates if the email was sent successfully", "example": true } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Verification email isn't enabled" } } } } } }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/change-email": { "post": { "tags": [ "Default" ], "operationId": "changeEmail", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "newEmail": { "type": "string", "description": "The new email address to set must be a valid email address" }, "callbackURL": { "type": [ "string", "null" ], "description": "The URL to redirect to after email verification" } }, "required": [ "newEmail" ] } } } }, "responses": { "200": { "description": "Email change request processed successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "user": { "type": "object", "$ref": "#/components/schemas/User" }, "status": { "type": "boolean", "description": "Indicates if the request was successful" }, "message": { "type": "string", "enum": [ "Email updated", "Verification email sent" ], "description": "Status message of the email change process", "nullable": true } }, "required": [ "status" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/change-password": { "post": { "tags": [ "Default" ], "description": "Change the password of the user", "operationId": "changePassword", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "newPassword": { "type": "string", "description": "The new password to set" }, "currentPassword": { "type": "string", "description": "The current password is required" }, "revokeOtherSessions": { "type": [ "boolean", "null" ], "description": "Must be a boolean value" } }, "required": [ "newPassword", "currentPassword" ] } } } }, "responses": { "200": { "description": "Password successfully changed", "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string", "nullable": true, "description": "New session token if other sessions were revoked" }, "user": { "type": "object", "properties": { "id": { "type": "string", "description": "The unique identifier of the user" }, "email": { "type": "string", "format": "email", "description": "The email address of the user" }, "name": { "type": "string", "description": "The name of the user" }, "image": { "type": "string", "format": "uri", "nullable": true, "description": "The profile image URL of the user" }, "emailVerified": { "type": "boolean", "description": "Whether the email has been verified" }, "createdAt": { "type": "string", "format": "date-time", "description": "When the user was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "When the user was last updated" } }, "required": [ "id", "email", "name", "emailVerified", "createdAt", "updatedAt" ] } }, "required": [ "user" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/update-session": { "post": { "tags": [ "Default" ], "description": "Update the current session", "operationId": "updateSession", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "session": { "type": "object", "$ref": "#/components/schemas/Session" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/update-user": { "post": { "tags": [ "Default" ], "description": "Update the current user", "operationId": "updateUser", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the user" }, "image": { "type": "string", "description": "The image of the user", "nullable": true } } } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "user": { "type": "object", "$ref": "#/components/schemas/User" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/delete-user": { "post": { "tags": [ "Default" ], "description": "Delete the user", "operationId": "deleteUser", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "callbackURL": { "type": "string", "description": "The callback URL to redirect to after the user is deleted" }, "password": { "type": "string", "description": "The user's password. Required if session is not fresh" }, "token": { "type": "string", "description": "The deletion verification token" } } } } } }, "responses": { "200": { "description": "User deletion processed successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the operation was successful" }, "message": { "type": "string", "enum": [ "User deleted", "Verification email sent" ], "description": "Status message of the deletion process" } }, "required": [ "success", "message" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/request-password-reset": { "post": { "tags": [ "Default" ], "description": "Send a password reset email to the user", "operationId": "requestPasswordReset", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string", "description": "The email address of the user to send a password reset email to" }, "redirectTo": { "type": [ "string", "null" ], "description": "The URL to redirect the user to reset their password. If the token isn't valid or expired, it'll be redirected with a query parameter `?error=INVALID_TOKEN`. If the token is valid, it'll be redirected with a query parameter `?token=VALID_TOKEN" } }, "required": [ "email" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean" }, "message": { "type": "string" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/reset-password/{token}": { "get": { "tags": [ "Default" ], "description": "Redirects the user to the callback URL with the token", "operationId": "resetPasswordCallback", "security": [ { "bearerAuth": [] } ], "parameters": [ { "name": "token", "in": "path", "required": true, "description": "The token to reset the password", "schema": { "type": "string" } }, { "name": "callbackURL", "in": "query", "required": true, "description": "The URL to redirect the user to reset their password", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/list-sessions": { "get": { "tags": [ "Default" ], "description": "List all active sessions for the user", "operationId": "listUserSessions", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Session" } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/revoke-session": { "post": { "tags": [ "Default" ], "description": "Revoke a single session", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string", "description": "The token to revoke" } }, "required": [ "token" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean", "description": "Indicates if the session was revoked successfully" } }, "required": [ "status" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/revoke-sessions": { "post": { "tags": [ "Default" ], "description": "Revoke all sessions for the user", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean", "description": "Indicates if all sessions were revoked successfully" } }, "required": [ "status" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/revoke-other-sessions": { "post": { "tags": [ "Default" ], "description": "Revoke all other sessions for the user except the current one", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean", "description": "Indicates if all other sessions were revoked successfully" } }, "required": [ "status" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/link-social": { "post": { "tags": [ "Default" ], "description": "Link a social account to the user", "operationId": "linkSocialAccount", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "callbackURL": { "type": [ "string", "null" ], "description": "The URL to redirect to after the user has signed in" }, "provider": { "type": "string" }, "idToken": { "type": [ "object", "null" ], "properties": { "token": { "type": "string" }, "nonce": { "type": [ "string", "null" ] }, "accessToken": { "type": [ "string", "null" ] }, "refreshToken": { "type": [ "string", "null" ] }, "scopes": { "type": [ "array", "null" ] } }, "required": [ "token" ] }, "requestSignUp": { "type": [ "boolean", "null" ] }, "scopes": { "type": [ "array", "null" ], "description": "Additional scopes to request from the provider" }, "errorCallbackURL": { "type": [ "string", "null" ], "description": "The URL to redirect to if there is an error during the link process" }, "disableRedirect": { "type": [ "boolean", "null" ], "description": "Disable automatic redirection to the provider. Useful for handling the redirection yourself" }, "additionalData": { "type": [ "string", "null" ] } }, "required": [ "provider" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "url": { "type": "string", "description": "The authorization URL to redirect the user to" }, "redirect": { "type": "boolean", "description": "Indicates if the user should be redirected to the authorization URL" }, "status": { "type": "boolean" } }, "required": [ "redirect" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/list-accounts": { "get": { "tags": [ "Default" ], "description": "List all accounts linked to the user", "operationId": "listUserAccounts", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "providerId": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "accountId": { "type": "string" }, "userId": { "type": "string" }, "scopes": { "type": "array", "items": { "type": "string" } } }, "required": [ "id", "providerId", "createdAt", "updatedAt", "accountId", "userId", "scopes" ] } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/delete-user/callback": { "get": { "tags": [ "Default" ], "description": "Callback to complete user deletion with verification token", "security": [ { "bearerAuth": [] } ], "parameters": [ { "name": "token", "in": "query", "schema": { "type": "string", "description": "The token to verify the deletion request" } }, { "name": "callbackURL", "in": "query", "schema": { "type": [ "string", "null" ], "description": "The URL to redirect to after deletion" } } ], "responses": { "200": { "description": "User successfully deleted", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Indicates if the deletion was successful" }, "message": { "type": "string", "enum": [ "User deleted" ], "description": "Confirmation message" } }, "required": [ "success", "message" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/unlink-account": { "post": { "tags": [ "Default" ], "description": "Unlink an account", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "providerId": { "type": "string" }, "accountId": { "type": [ "string", "null" ] } }, "required": [ "providerId" ] } } } }, "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "status": { "type": "boolean" } } } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/refresh-token": { "post": { "tags": [ "Default" ], "description": "Refresh the access token using a refresh token", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "providerId": { "type": "string", "description": "The provider ID for the OAuth provider" }, "accountId": { "type": [ "string", "null" ], "description": "The account ID associated with the refresh token" }, "userId": { "type": [ "string", "null" ], "description": "The user ID associated with the account" } }, "required": [ "providerId" ] } } } }, "responses": { "200": { "description": "Access token refreshed successfully", "content": { "application/json": { "schema": { "type": "object", "properties": { "tokenType": { "type": "string" }, "idToken": { "type": "string" }, "accessToken": { "type": "string" }, "refreshToken": { "type": "string" }, "accessTokenExpiresAt": { "type": "string", "format": "date-time" }, "refreshTokenExpiresAt": { "type": "string", "format": "date-time" } } } } } }, "400": { "description": "Invalid refresh token or provider configuration" }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/get-access-token": { "post": { "tags": [ "Default" ], "description": "Get a valid access token, doing a refresh if needed", "security": [ { "bearerAuth": [] } ], "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "providerId": { "type": "string", "description": "The provider ID for the OAuth provider" }, "accountId": { "type": [ "string", "null" ], "description": "The account ID associated with the refresh token" }, "userId": { "type": [ "string", "null" ], "description": "The user ID associated with the account" } }, "required": [ "providerId" ] } } } }, "responses": { "200": { "description": "A Valid access token", "content": { "application/json": { "schema": { "type": "object", "properties": { "tokenType": { "type": "string" }, "idToken": { "type": "string" }, "accessToken": { "type": "string" }, "accessTokenExpiresAt": { "type": "string", "format": "date-time" } } } } } }, "400": { "description": "Invalid refresh token or provider configuration" }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/account-info": { "get": { "tags": [ "Default" ], "description": "Get the account info provided by the provider", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "properties": { "user": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "email": { "type": "string" }, "image": { "type": "string" }, "emailVerified": { "type": "boolean" } }, "required": [ "id", "emailVerified" ] }, "data": { "type": "object", "properties": {}, "additionalProperties": true } }, "required": [ "user", "data" ], "additionalProperties": false } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/ok": { "get": { "tags": [ "Default" ], "description": "Check if the API is working", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "API is working", "content": { "application/json": { "schema": { "type": "object", "properties": { "ok": { "type": "boolean", "description": "Indicates if the API is working" } }, "required": [ "ok" ] } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/auth/error": { "get": { "tags": [ "Default" ], "description": "Displays an error page", "security": [ { "bearerAuth": [] } ], "parameters": [], "responses": { "200": { "description": "Success", "content": { "text/html": { "schema": { "type": "string", "description": "The HTML content of the error page" } } } }, "400": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Bad Request. Usually due to missing parameters, or invalid parameters." }, "401": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } }, "required": [ "message" ] } } }, "description": "Unauthorized. Due to missing or invalid authentication." }, "403": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Forbidden. You do not have permission to access this resource or to perform this action." }, "404": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Not Found. The requested resource was not found." }, "429": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Too Many Requests. You have exceeded the rate limit. Try again later." }, "500": { "content": { "application/json": { "schema": { "type": "object", "properties": { "message": { "type": "string" } } } } }, "description": "Internal Server Error. This is a problem with the server that you cannot fix." } } } }, "/imports/template/{action}": { "post": { "tags": [ "Import" ], "operationId": "createImportTemplate", "summary": "Create import template", "description": "Create a new import template with the provided data", "security": [ { "bearerAuth": [] } ], "parameters": [ { "schema": { "$ref": "#/components/schemas/ImportTemplateActionEnum" }, "required": true, "name": "action", "in": "path" } ], "responses": { "200": { "description": "Import created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateImportTemplateResponse" } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal server error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } } }, "security": [ { "bearerAuth": [] } ] }