{"openapi":"3.0.1","info":{"title":"Demo API","description":"API documentation for Spring Boot JWT app","version":"1.0"},"servers":[{"url":"https://miscsbmdb.misctechapps.org/"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Order Management","description":"APIs for checkout and order management"},{"name":"Task Management","description":"APIs for managing tasks within projects"},{"name":"Invoice Management","description":"APIs for invoice generation and retrieval"},{"name":"Product Management","description":"APIs for managing products in the e-commerce system"},{"name":"Project Management","description":"APIs for managing projects"},{"name":"Home Page","description":"APIs for home page data"},{"name":"Cart Management","description":"APIs for managing shopping cart"}],"paths":{"/api/tasks/{taskId}":{"put":{"tags":["Task Management"],"summary":"Update task","description":"Updates an existing task with the provided details","operationId":"updateTask","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRequest"}}},"required":true},"responses":{"404":{"description":"Task not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"200":{"description":"Task updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}}}},"delete":{"tags":["Task Management"],"summary":"Delete task","description":"Deletes a task by its ID","operationId":"deleteTask","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Task deleted successfully"},"404":{"description":"Task not found"}}},"patch":{"tags":["Task Management"],"summary":"Partial update task","description":"Partially updates an existing task (only provided fields are updated)","operationId":"partialUpdateTask","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRequest"}}},"required":true},"responses":{"404":{"description":"Task not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"200":{"description":"Task updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}}}}},"/api/recipes/{id}":{"get":{"tags":["recipe-controller"],"operationId":"getRecipeById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"put":{"tags":["recipe-controller"],"operationId":"updateRecipe","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}},"delete":{"tags":["recipe-controller"],"operationId":"deleteRecipe","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/projects/{id}":{"get":{"tags":["Project Management"],"summary":"Get project by ID","description":"Retrieves a specific project by its ID","operationId":"getProjectById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"404":{"description":"Project not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}}}},"put":{"tags":["Project Management"],"summary":"Update project","description":"Updates an existing project with the provided details","operationId":"updateProject","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectRequest"}}},"required":true},"responses":{"200":{"description":"Project updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"404":{"description":"Project not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}}}},"delete":{"tags":["Project Management"],"summary":"Delete project","description":"Deletes a project by its ID","operationId":"deleteProject","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Project not found"},"204":{"description":"Project deleted successfully"}}}},"/api/products/{id}":{"get":{"tags":["Product Management"],"summary":"Get product by ID","description":"Retrieves a specific product by its ID","operationId":"getProductById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Product found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"404":{"description":"Product not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}}}},"put":{"tags":["Product Management"],"summary":"Update product","description":"Updates an existing product with the provided details","operationId":"updateProduct","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Product updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"404":{"description":"Product not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}}}},"delete":{"tags":["Product Management"],"summary":"Delete product","description":"Deletes a product by its ID","operationId":"deleteProduct","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Product deleted successfully"},"404":{"description":"Product not found"}}}},"/api/plans/{id}":{"get":{"tags":["workout-plan-controller"],"operationId":"getPlanById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkoutPlanResponse"}}}}}},"put":{"tags":["workout-plan-controller"],"operationId":"updatePlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkoutPlanRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkoutPlanResponse"}}}}}},"delete":{"tags":["workout-plan-controller"],"operationId":"deletePlan","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/orders/{id}/status":{"put":{"tags":["Order Management"],"summary":"Update order status","description":"Updates the status of a specific order (user can only update their own orders)","operationId":"updateOrderStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrderStatusRequest"}}},"required":true},"responses":{"200":{"description":"Order status updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"404":{"description":"Order not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"400":{"description":"Invalid status","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}}}}},"/api/notes/{id}":{"get":{"tags":["note-controller"],"operationId":"getNoteById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Note"}}}}}},"put":{"tags":["note-controller"],"operationId":"updateNote","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Note"}}}}}},"delete":{"tags":["note-controller"],"operationId":"deleteNote","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"patch":{"tags":["note-controller"],"operationId":"partialUpdateNote","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Note"}}}}}}},"/api/notes/new":{"put":{"tags":["note-controller"],"operationId":"createNoteWithPut","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Note"}}}}}}},"/api/goals/{id}":{"get":{"tags":["fitness-goal-controller"],"operationId":"getGoalById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FitnessGoalResponse"}}}}}},"put":{"tags":["fitness-goal-controller"],"operationId":"updateGoal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FitnessGoalRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FitnessGoalResponse"}}}}}},"delete":{"tags":["fitness-goal-controller"],"operationId":"deleteGoal","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/folders/{id}":{"get":{"tags":["folder-controller"],"operationId":"getFolderById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Folder"}}}}}},"put":{"tags":["folder-controller"],"operationId":"updateFolder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Folder"}}}}}},"delete":{"tags":["folder-controller"],"operationId":"deleteFolder","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/exercises/finished/{id}":{"get":{"tags":["exercise-controller"],"operationId":"getFinishedExerciseById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FinishedExerciseResponse"}}}}}},"put":{"tags":["exercise-controller"],"operationId":"updateFinishedExercise","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinishedExerciseRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FinishedExerciseResponse"}}}}}},"delete":{"tags":["exercise-controller"],"operationId":"deleteFinishedExercise","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/api/cart/items/{productId}":{"put":{"tags":["Cart Management"],"summary":"Update cart item","description":"Updates the quantity of a specific item in the cart","operationId":"updateCartItem","parameters":[{"name":"productId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCartItemRequest"}}},"required":true},"responses":{"200":{"description":"Item updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"404":{"description":"Item not found in cart","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"400":{"description":"Invalid request","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}}}},"delete":{"tags":["Cart Management"],"summary":"Remove item from cart","description":"Removes a specific item from the cart","operationId":"removeCartItem","parameters":[{"name":"productId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Item removed successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"404":{"description":"Item not found in cart","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}}}}},"/api/bookmarks/{id}":{"put":{"tags":["bookmark-controller"],"operationId":"updateBookmark","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookmarkRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Bookmark"}}}}}},"delete":{"tags":["bookmark-controller"],"operationId":"deleteBookmark","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}},"patch":{"tags":["bookmark-controller"],"operationId":"partialUpdateBookmark","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookmarkRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Bookmark"}}}}}}},"/api/auth/update":{"put":{"tags":["auth-controller"],"operationId":"updateUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/auth/change-password":{"put":{"tags":["auth-controller"],"operationId":"changePassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/recipes":{"get":{"tags":["recipe-controller"],"operationId":"getAllRecipes","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Recipe"}}}}}}},"post":{"tags":["recipe-controller"],"operationId":"createRecipe","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Recipe"}}}}}}},"/api/projects":{"get":{"tags":["Project Management"],"summary":"Get all projects","description":"Retrieves a list of all projects","operationId":"getAllProjects","responses":{"200":{"description":"List of projects retrieved successfully","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProjectResponse"}}}}}}},"post":{"tags":["Project Management"],"summary":"Create a new project","description":"Creates a new project with the provided details","operationId":"createProject","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectRequest"}}},"required":true},"responses":{"201":{"description":"Project created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}}}}},"/api/projects/{projectId}/tasks":{"get":{"tags":["Task Management"],"summary":"Get tasks by project","description":"Retrieves all tasks for the specified project","operationId":"getTasksByProject","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"List of tasks retrieved successfully","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TaskResponse"}}}}}}},"post":{"tags":["Task Management"],"summary":"Create a new task","description":"Creates a new task for the specified project","operationId":"createTask","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRequest"}}},"required":true},"responses":{"201":{"description":"Task created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}}}}},"/api/products":{"get":{"tags":["Product Management"],"summary":"Get all products","description":"Retrieves a paginated list of products with optional sorting","operationId":"getAllProducts","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","default":"createdAt"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"Products retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageProductResponse"}}}}}},"post":{"tags":["Product Management"],"summary":"Create a new product","description":"Creates a new product with the provided details","operationId":"createProduct","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCreateRequest"}}},"required":true},"responses":{"400":{"description":"Invalid input data","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}},"201":{"description":"Product created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProductResponse"}}}}}}},"/api/plans":{"get":{"tags":["workout-plan-controller"],"operationId":"getAllPlans","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkoutPlanResponse"}}}}}}},"post":{"tags":["workout-plan-controller"],"operationId":"createPlan","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkoutPlanRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WorkoutPlanResponse"}}}}}}},"/api/notes":{"get":{"tags":["note-controller"],"operationId":"getNotes","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Note"}}}}}}},"post":{"tags":["note-controller"],"operationId":"createNote","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Note"}}}}}}},"/api/goals":{"get":{"tags":["fitness-goal-controller"],"operationId":"getAllGoals","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FitnessGoalResponse"}}}}}}},"post":{"tags":["fitness-goal-controller"],"operationId":"createGoal","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FitnessGoalRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FitnessGoalResponse"}}}}}}},"/api/folders":{"get":{"tags":["folder-controller"],"operationId":"getAllFolders","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Folder"}}}}}}},"post":{"tags":["folder-controller"],"operationId":"createFolder","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Folder"}}}}}}},"/api/exercises/finished":{"get":{"tags":["exercise-controller"],"operationId":"getFinishedExercises","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FinishedExerciseResponse"}}}}}}},"post":{"tags":["exercise-controller"],"operationId":"submitFinishedExercise","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinishedExerciseRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FinishedExerciseResponse"}}}}}}},"/api/checkout":{"post":{"tags":["Order Management"],"summary":"Checkout cart","description":"Converts the user's cart into an order with billing and payment details","operationId":"checkout","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"400":{"description":"Invalid request, empty cart, or insufficient stock","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"201":{"description":"Order created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}}}}},"/api/cart/items":{"post":{"tags":["Cart Management"],"summary":"Add item to cart","description":"Adds a product to the user's shopping cart","operationId":"addItemToCart","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddToCartRequest"}}},"required":true},"responses":{"400":{"description":"Invalid request or product not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"200":{"description":"Item added successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}}}}},"/api/bookmarks":{"get":{"tags":["bookmark-controller"],"operationId":"getBookmarks","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Bookmark"}}}}}}},"post":{"tags":["bookmark-controller"],"operationId":"createBookmark","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookmarkRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Bookmark"}}}}}}},"/api/auth/signup":{"post":{"tags":["auth-controller"],"operationId":"signup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/auth/refresh-token":{"post":{"tags":["auth-controller"],"operationId":"refreshToken","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/auth/login":{"post":{"tags":["auth-controller"],"operationId":"login","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/auth/forgot-password":{"post":{"tags":["auth-controller"],"operationId":"forgotPassword","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/api/tasks/{taskId}/status":{"patch":{"tags":["Task Management"],"summary":"Update task status","description":"Updates the status of an existing task","operationId":"updateTaskStatus","parameters":[{"name":"taskId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatusUpdateRequest"}}},"required":true},"responses":{"404":{"description":"Task not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"200":{"description":"Task status updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}},"400":{"description":"Invalid status","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TaskResponse"}}}}}}},"/api/projects/{id}/status":{"patch":{"tags":["Project Management"],"summary":"Update project status","description":"Updates only the status of an existing project","operationId":"updateProjectStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectStatusUpdateRequest"}}},"required":true},"responses":{"404":{"description":"Project not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"400":{"description":"Invalid status value","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}},"200":{"description":"Project status updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectResponse"}}}}}}},"/api/users":{"get":{"tags":["user-controller"],"operationId":"getAllUsers","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuthUser"}}}}}}}},"/api/users/paged":{"get":{"tags":["user-controller"],"operationId":"getAllUsersPaged","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","default":"name"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string","default":"asc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageAuthUser"}}}}}}},"/api/recipes/summary":{"get":{"tags":["recipe-controller"],"operationId":"getRecipeSummary","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}}}}},"/api/recipes/search":{"get":{"tags":["recipe-controller"],"operationId":"searchRecipes","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","default":"createdAt"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageRecipe"}}}}}}},"/api/recipes/paged":{"get":{"tags":["recipe-controller"],"operationId":"getAllRecipesPaged","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","default":"createdAt"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageRecipe"}}}}}}},"/api/projects/{projectId}/tasks/paged":{"get":{"tags":["Task Management"],"summary":"Get tasks by project with pagination","description":"Retrieves a paginated list of tasks for the specified project","operationId":"getTasksByProjectPaged","parameters":[{"name":"projectId","in":"path","required":true,"schema":{"type":"string"}},{"name":"pageable","in":"query","description":"Pagination parameters","required":true,"schema":{"$ref":"#/components/schemas/Pageable"}}],"responses":{"200":{"description":"Paginated list of tasks retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageTaskResponse"}}}}}}},"/api/projects/{id}/tasks/board":{"get":{"tags":["Project Management"],"summary":"Get kanban board tasks","description":"Retrieves all tasks for a project grouped by status for kanban board display","operationId":"getKanbanBoardTasks","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Kanban board tasks retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KanbanBoardResponse"}}}},"404":{"description":"Project not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/KanbanBoardResponse"}}}}}}},"/api/projects/{id}/summary":{"get":{"tags":["Project Management"],"summary":"Get project summary","description":"Retrieves project summary with task counts by status for dashboard consumption","operationId":"getProjectSummary","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project summary retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectSummaryResponse"}}}},"404":{"description":"Project not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProjectSummaryResponse"}}}}}}},"/api/projects/paged":{"get":{"tags":["Project Management"],"summary":"Get all projects with pagination","description":"Retrieves a paginated list of all projects","operationId":"getAllProjectsPaged","parameters":[{"name":"pageable","in":"query","description":"Pagination parameters","required":true,"schema":{"$ref":"#/components/schemas/Pageable"}}],"responses":{"200":{"description":"Paginated list of projects retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageProjectResponse"}}}}}}},"/api/orders":{"get":{"tags":["Order Management"],"summary":"Get user orders","description":"Retrieves paginated list of user's orders with optional sorting","operationId":"getUserOrders","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","default":"createdAt"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"Orders retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageOrderResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageOrderResponse"}}}}}}},"/api/orders/{orderId}":{"get":{"tags":["Order Management"],"summary":"Get order by ID","description":"Retrieves a specific order by its ID (user can only access their own orders)","operationId":"getOrder","parameters":[{"name":"orderId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"404":{"description":"Order not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"200":{"description":"Order retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrderResponse"}}}}}}},"/api/orders/{orderId}/invoice":{"get":{"tags":["Invoice Management"],"summary":"Get invoice for an order","description":"Retrieves the invoice associated with a specific order ID (user can only access their own orders' invoices)","operationId":"getInvoiceByOrderId","parameters":[{"name":"orderId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"200":{"description":"Invoice retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"404":{"description":"Invoice not found for this order","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}}}}},"/api/notes/paged":{"get":{"tags":["note-controller"],"operationId":"getNotesPaged","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","default":"createdAt"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageNote"}}}}}}},"/api/invoices":{"get":{"tags":["Invoice Management"],"summary":"Get all user invoices","description":"Retrieves all invoices for the authenticated user","operationId":"getUserInvoices","responses":{"200":{"description":"Invoices retrieved successfully","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceResponse"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceResponse"}}}}}}}},"/api/invoices/{invoiceId}":{"get":{"tags":["Invoice Management"],"summary":"Get invoice by ID","description":"Retrieves a specific invoice by its ID (user can only access their own invoices)","operationId":"getInvoiceById","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"403":{"description":"Access denied","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"404":{"description":"Invoice not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"200":{"description":"Invoice retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvoiceResponse"}}}}}}},"/api/home":{"get":{"tags":["Home Page"],"summary":"Get home page data","description":"Retrieves featured products, popular categories, and banner images for the home page","operationId":"getHomePageData","responses":{"200":{"description":"Home page data retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/HomePageResponse"}}}}}}},"/api/health":{"get":{"tags":["health-controller"],"operationId":"health","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"string"}}}}}}}},"/api/goals/current":{"get":{"tags":["fitness-goal-controller"],"operationId":"getCurrentGoal","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FitnessGoalResponse"}}}}}}},"/api/exercises/{id}":{"get":{"tags":["exercise-controller"],"operationId":"getAvailableExerciseById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AvailableExerciseResponse"}}}}}}},"/api/exercises/summary":{"get":{"tags":["exercise-controller"],"operationId":"getWeeklySummary","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WeeklySummaryResponse"}}}}}}},"/api/exercises/stats":{"get":{"tags":["exercise-controller"],"operationId":"getOverallStats","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExerciseStatsResponse"}}}}}}},"/api/exercises/stats/week":{"get":{"tags":["exercise-controller"],"operationId":"getWeekStats","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExerciseStatsResponse"}}}}}}},"/api/exercises/stats/today":{"get":{"tags":["exercise-controller"],"operationId":"getTodayStats","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExerciseStatsResponse"}}}}}}},"/api/exercises/finished/summary":{"get":{"tags":["exercise-controller"],"operationId":"getFinishedExercisesSummary","parameters":[{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"all"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ExerciseStatsResponse"}}}}}}},"/api/exercises/available":{"get":{"tags":["exercise-controller"],"operationId":"getAvailableExercises","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AvailableExerciseResponse"}}}}}}}},"/api/cart":{"get":{"tags":["Cart Management"],"summary":"Get cart","description":"Retrieves the user's shopping cart with all items and total","operationId":"getCart","responses":{"200":{"description":"Cart retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}}}}},"/api/cart/summary":{"get":{"tags":["Cart Management"],"summary":"Get cart summary","description":"Retrieves cart summary with total item count and total price, optimized for navbar/cart badge","operationId":"getCartSummary","responses":{"200":{"description":"Cart summary retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartSummaryResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartSummaryResponse"}}}}}}},"/api/bookmarks/summary":{"get":{"tags":["bookmark-controller"],"operationId":"getBookmarkSummary","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}}}}},"/api/bookmarks/search":{"get":{"tags":["bookmark-controller"],"operationId":"searchBookmarks","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","default":"createdAt"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageBookmark"}}}}}}},"/api/bookmarks/paged":{"get":{"tags":["bookmark-controller"],"operationId":"getBookmarksPaged","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":10}},{"name":"sortBy","in":"query","required":false,"schema":{"type":"string","default":"createdAt"}},{"name":"sortDir","in":"query","required":false,"schema":{"type":"string","default":"desc"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageBookmark"}}}}}}},"/api/users/{id}":{"delete":{"tags":["user-controller"],"operationId":"deleteUser","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/api/cart/clear":{"delete":{"tags":["Cart Management"],"summary":"Clear cart","description":"Removes all items from the cart","operationId":"clearCart","responses":{"200":{"description":"Cart cleared successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}},"401":{"description":"Unauthorized","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CartResponse"}}}}}}}},"components":{"schemas":{"TaskRequest":{"required":["priority","status","title"],"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["TODO","IN_PROGRESS","DONE"]},"priority":{"type":"string","enum":["LOW","MEDIUM","HIGH"]}}},"TaskResponse":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["TODO","IN_PROGRESS","DONE"]},"priority":{"type":"string","enum":["LOW","MEDIUM","HIGH"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"Recipe":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"},"imagePath":{"type":"string"},"ingredients":{"type":"array","items":{"type":"string"}},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"title":{"type":"string"}}},"ProjectRequest":{"required":["name","status"],"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PLANNING","ON_HOLD","COMPLETED","CANCELLED"]}}},"ProjectResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PLANNING","ON_HOLD","COMPLETED","CANCELLED"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"ProductUpdateRequest":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"price":{"type":"number","format":"double"},"category":{"type":"string"},"images":{"maxItems":10,"minItems":0,"type":"array","items":{"type":"string"}},"stock":{"type":"integer","format":"int32"}}},"ProductResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"price":{"type":"number","format":"double"},"category":{"type":"string"},"images":{"type":"array","items":{"type":"string"}},"stock":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"WorkoutPlanRequest":{"required":["exercises","name"],"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"exercises":{"type":"array","items":{"type":"string"}},"durationWeeks":{"type":"integer","format":"int32"},"difficulty":{"type":"string"},"active":{"type":"boolean"}}},"WorkoutPlanResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"userId":{"type":"string"},"exercises":{"type":"array","items":{"type":"string"}},"durationWeeks":{"type":"integer","format":"int32"},"difficulty":{"type":"string"},"active":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"UpdateOrderStatusRequest":{"required":["status"],"type":"object","properties":{"status":{"type":"string","enum":["CREATED","PAID","SHIPPED","DELIVERED","CANCELLED"]}}},"Address":{"type":"object","properties":{"street":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"},"zipCode":{"type":"string"},"country":{"type":"string"}}},"OrderItem":{"type":"object","properties":{"productId":{"type":"string"},"productName":{"type":"string"},"quantity":{"type":"integer","format":"int32"},"price":{"type":"number","format":"double"},"subtotal":{"type":"number","format":"double"}}},"OrderResponse":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/OrderItem"}},"subtotal":{"type":"number","format":"double"},"tax":{"type":"number","format":"double"},"total":{"type":"number","format":"double"},"billingAddress":{"$ref":"#/components/schemas/Address"},"paymentMethod":{"type":"string"},"status":{"type":"string","enum":["CREATED","PAID","SHIPPED","DELIVERED","CANCELLED"]},"createdAt":{"type":"string","format":"date-time"}}},"ChecklistItem":{"type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"checked":{"type":"boolean"},"order":{"type":"integer","format":"int32"}}},"NoteRequest":{"required":["title"],"type":"object","properties":{"title":{"type":"string"},"content":{"type":"string"},"color":{"type":"string"},"isChecklist":{"type":"boolean"},"checklistItems":{"type":"array","items":{"$ref":"#/components/schemas/ChecklistItem"}},"favorite":{"type":"boolean"},"deleted":{"type":"boolean"}}},"Note":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"title":{"type":"string"},"content":{"type":"string"},"color":{"type":"string"},"isChecklist":{"type":"boolean"},"checklistItems":{"type":"array","items":{"$ref":"#/components/schemas/ChecklistItem"}},"favorite":{"type":"boolean"},"deleted":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"FitnessGoalRequest":{"required":["goalType","targetValue","title","unit"],"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"goalType":{"type":"string"},"targetValue":{"type":"number","format":"double"},"unit":{"type":"string"},"currentValue":{"type":"number","format":"double"},"targetDate":{"type":"string"},"status":{"type":"string"},"current":{"type":"boolean"}}},"FitnessGoalResponse":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"goalType":{"type":"string"},"targetValue":{"type":"number","format":"double"},"unit":{"type":"string"},"currentValue":{"type":"number","format":"double"},"targetDate":{"type":"string"},"status":{"type":"string"},"current":{"type":"boolean"},"progressPercentage":{"type":"number","format":"double"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"FolderRequest":{"required":["color","icon","name","order"],"type":"object","properties":{"name":{"type":"string"},"icon":{"type":"string"},"color":{"type":"string"},"order":{"type":"integer","format":"int32"}}},"Folder":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"name":{"type":"string"},"icon":{"type":"string"},"color":{"type":"string"},"order":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"FinishedExerciseRequest":{"required":["calories","date","duration","name","state"],"type":"object","properties":{"name":{"type":"string"},"duration":{"type":"integer","format":"int32"},"calories":{"type":"integer","format":"int32"},"date":{"type":"string"},"state":{"type":"string","enum":["completed","cancelled"]}}},"FinishedExerciseResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"duration":{"type":"integer","format":"int32"},"calories":{"type":"integer","format":"int32"},"date":{"type":"string"},"state":{"type":"string","enum":["completed","cancelled"]},"userId":{"type":"string"}}},"UpdateCartItemRequest":{"type":"object","properties":{"quantity":{"minimum":1,"type":"integer","format":"int32"}}},"CartItemResponse":{"type":"object","properties":{"productId":{"type":"string"},"productName":{"type":"string"},"quantity":{"type":"integer","format":"int32"},"price":{"type":"number","format":"double"},"subtotal":{"type":"number","format":"double"}}},"CartResponse":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/CartItemResponse"}},"total":{"type":"number","format":"double"}}},"BookmarkRequest":{"required":["link","title"],"type":"object","properties":{"title":{"type":"string"},"link":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"favorite":{"type":"boolean"},"thumbnail":{"type":"string"}}},"Bookmark":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"title":{"type":"string"},"link":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"favorite":{"type":"boolean"},"thumbnail":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"UpdateUserRequest":{"required":["userId"],"type":"object","properties":{"userId":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"profilepic":{"type":"string"}}},"ChangePasswordRequest":{"required":["currentPassword","newPassword","userId"],"type":"object","properties":{"userId":{"type":"string"},"currentPassword":{"type":"string"},"newPassword":{"maxLength":2147483647,"minLength":8,"type":"string"}}},"ProductCreateRequest":{"required":["category","name","price","stock"],"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"price":{"type":"number","format":"double"},"category":{"type":"string"},"images":{"maxItems":10,"minItems":0,"type":"array","items":{"type":"string"}},"stock":{"type":"integer","format":"int32"}}},"CheckoutRequest":{"required":["billingAddress","paymentMethod"],"type":"object","properties":{"billingAddress":{"$ref":"#/components/schemas/Address"},"paymentMethod":{"type":"string"}}},"AddToCartRequest":{"required":["productId"],"type":"object","properties":{"productId":{"type":"string"},"quantity":{"minimum":1,"type":"integer","format":"int32"}}},"SignupRequest":{"required":["email","name","password"],"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"password":{"maxLength":2147483647,"minLength":8,"type":"string"},"profilepic":{"type":"string"}}},"LoginRequest":{"required":["email","password"],"type":"object","properties":{"email":{"type":"string"},"password":{"type":"string"}}},"ForgotPasswordRequest":{"required":["email"],"type":"object","properties":{"email":{"type":"string"}}},"TaskStatusUpdateRequest":{"required":["status"],"type":"object","properties":{"status":{"type":"string","enum":["TODO","IN_PROGRESS","DONE"]}}},"ProjectStatusUpdateRequest":{"required":["status"],"type":"object","properties":{"status":{"type":"string","enum":["ACTIVE","PLANNING","ON_HOLD","COMPLETED","CANCELLED"]}}},"AuthUser":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"},"password":{"type":"string"},"profilepic":{"type":"string"}}},"PageAuthUser":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/AuthUser"}},"number":{"type":"integer","format":"int32"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"PageableObject":{"type":"object","properties":{"paged":{"type":"boolean"},"pageNumber":{"type":"integer","format":"int32"},"pageSize":{"type":"integer","format":"int32"},"offset":{"type":"integer","format":"int64"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"unpaged":{"type":"boolean"}}},"SortObject":{"type":"object","properties":{"direction":{"type":"string"},"nullHandling":{"type":"string"},"ascending":{"type":"boolean"},"property":{"type":"string"},"ignoreCase":{"type":"boolean"}}},"PageRecipe":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/Recipe"}},"number":{"type":"integer","format":"int32"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"Pageable":{"type":"object","properties":{"page":{"minimum":0,"type":"integer","format":"int32"},"size":{"minimum":1,"type":"integer","format":"int32"},"sort":{"type":"array","items":{"type":"string"}}}},"PageTaskResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/TaskResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"KanbanBoardResponse":{"type":"object","properties":{"projectId":{"type":"string"},"projectName":{"type":"string"},"tasksByStatus":{"type":"object","additionalProperties":{"type":"array","items":{"$ref":"#/components/schemas/TaskResponse"}}}}},"ProjectSummaryResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","PLANNING","ON_HOLD","COMPLETED","CANCELLED"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"taskCountsByStatus":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"totalTasks":{"type":"integer","format":"int64"}}},"PageProjectResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/ProjectResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"PageProductResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/ProductResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"PageOrderResponse":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/OrderResponse"}},"number":{"type":"integer","format":"int32"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"InvoiceItem":{"type":"object","properties":{"productId":{"type":"string"},"productName":{"type":"string"},"quantity":{"type":"integer","format":"int32"},"price":{"type":"number","format":"double"},"subtotal":{"type":"number","format":"double"}}},"InvoiceResponse":{"type":"object","properties":{"id":{"type":"string"},"orderId":{"type":"string"},"userId":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceItem"}},"subtotal":{"type":"number","format":"double"},"tax":{"type":"number","format":"double"},"totalAmount":{"type":"number","format":"double"},"status":{"type":"string","enum":["GENERATED","PAID","CANCELLED"]},"createdAt":{"type":"string","format":"date-time"}}},"PageNote":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/Note"}},"number":{"type":"integer","format":"int32"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}},"HomePageResponse":{"type":"object","properties":{"featuredProducts":{"type":"array","items":{"$ref":"#/components/schemas/ProductResponse"}},"popularCategories":{"type":"array","items":{"type":"string"}},"bannerImages":{"type":"array","items":{"type":"string"}}}},"AvailableExerciseResponse":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"duration":{"type":"integer","format":"int32"},"calories":{"type":"integer","format":"int32"}}},"ExerciseStatsResponse":{"type":"object","properties":{"totalExercises":{"type":"integer","format":"int32"},"totalDuration":{"type":"integer","format":"int32"},"totalCalories":{"type":"integer","format":"int32"},"averageDuration":{"type":"number","format":"double"},"averageCalories":{"type":"number","format":"double"}}},"WeeklySummaryResponse":{"type":"object","properties":{"currentWeek":{"$ref":"#/components/schemas/ExerciseStatsResponse"},"previousWeek":{"$ref":"#/components/schemas/ExerciseStatsResponse"},"durationTrend":{"type":"number","format":"double"},"caloriesTrend":{"type":"number","format":"double"}}},"CartSummaryResponse":{"type":"object","properties":{"totalItemCount":{"type":"integer","format":"int32"},"totalPrice":{"type":"number","format":"double"}}},"PageBookmark":{"type":"object","properties":{"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"},"pageable":{"$ref":"#/components/schemas/PageableObject"},"size":{"type":"integer","format":"int32"},"content":{"type":"array","items":{"$ref":"#/components/schemas/Bookmark"}},"number":{"type":"integer","format":"int32"},"sort":{"type":"array","items":{"$ref":"#/components/schemas/SortObject"}},"numberOfElements":{"type":"integer","format":"int32"},"empty":{"type":"boolean"}}}},"securitySchemes":{"bearerAuth":{"type":"http","name":"bearerAuth","scheme":"bearer","bearerFormat":"JWT"}}}}