[{"endpoint":"static","methods":["GET","OPTIONS","HEAD"],"path":"/static/<path:filename>"},{"endpoint":"flasgger.static","methods":["GET","OPTIONS","HEAD"],"path":"/flasgger_static/<path:filename>"},{"endpoint":"flasgger.apidocs","methods":["GET","OPTIONS","HEAD"],"path":"/apidocs/"},{"endpoint":"flasgger.oauth_redirect","methods":["GET","OPTIONS","HEAD"],"path":"/oauth2-redirect.html"},{"endpoint":"flasgger.<lambda>","methods":["GET","OPTIONS","HEAD"],"path":"/apidocs/index.html"},{"endpoint":"flasgger.apispec","methods":["GET","OPTIONS","HEAD"],"path":"/apispec.json"},{"endpoint":"account.get_me","methods":["GET","OPTIONS","HEAD"],"path":"/me"},{"endpoint":"account.update_me","methods":["PATCH","OPTIONS"],"path":"/me"},{"endpoint":"account.change_password","methods":["POST","OPTIONS"],"path":"/me/password"},{"endpoint":"account.list_farms","methods":["GET","OPTIONS","HEAD"],"path":"/farms"},{"endpoint":"account.create_farm","methods":["POST","OPTIONS"],"path":"/farms"},{"endpoint":"account.update_farm","methods":["PATCH","OPTIONS"],"path":"/farms/<int:farm_id>"},{"endpoint":"account.delete_farm","methods":["OPTIONS","DELETE"],"path":"/farms/<int:farm_id>"},{"endpoint":"account.list_members","methods":["GET","OPTIONS","HEAD"],"path":"/farms/<int:farm_id>/members"},{"endpoint":"account.add_member","methods":["POST","OPTIONS"],"path":"/farms/<int:farm_id>/members"},{"endpoint":"account.update_member","methods":["PATCH","OPTIONS"],"path":"/farms/<int:farm_id>/members/<int:member_id>"},{"endpoint":"account.remove_member","methods":["OPTIONS","DELETE"],"path":"/farms/<int:farm_id>/members/<int:member_id>"},{"endpoint":"account.update_equipment_settings","methods":["PATCH","OPTIONS"],"path":"/equipments/<string:device_id>/settings"},{"endpoint":"account.consumption_stats","methods":["GET","OPTIONS","HEAD"],"path":"/stats/consumption"},{"endpoint":"ai_chat.chat","methods":["POST","OPTIONS"],"path":"/api/chat"},{"endpoint":"ai_chat.get_history","methods":["GET","OPTIONS","HEAD"],"path":"/api/history/<user_id>"},{"endpoint":"ai_chat.clear_history","methods":["OPTIONS","DELETE"],"path":"/api/history/<user_id>"},{"endpoint":"ai_chat.classify","methods":["POST","OPTIONS"],"path":"/api/classify"},{"endpoint":"ai_chat.predict","methods":["POST","OPTIONS"],"path":"/api/predict"},{"endpoint":"ai_chat.schedule","methods":["POST","OPTIONS"],"path":"/api/schedule"},{"endpoint":"create_user.create_user","methods":["POST","OPTIONS"],"path":"/create-user"},{"endpoint":"login.login","methods":["POST","OPTIONS"],"path":"/login"},{"endpoint":"login.refresh","methods":["POST","OPTIONS"],"path":"/refresh"},{"endpoint":"login.logout","methods":["POST","OPTIONS"],"path":"/logout"},{"endpoint":"forgot_password.forgot_password","methods":["POST","OPTIONS"],"path":"/forgot-password"},{"endpoint":"reset_password.reset_password","methods":["PATCH","OPTIONS"],"path":"/reset-password"},{"endpoint":"equipement.devices_route","methods":["GET","OPTIONS","HEAD"],"path":"/devices/<int:id_user>"},{"endpoint":"equipement.delete_route","methods":["OPTIONS","DELETE"],"path":"/devices/<int:id_user>/<int:id_device>"},{"endpoint":"equipement.put_route","methods":["OPTIONS","PUT"],"path":"/devices/<int:id_user>/<int:id_device>"},{"endpoint":"equipement.post_route","methods":["POST","OPTIONS"],"path":"/devices/<int:id_user>"},{"endpoint":"health.sync_status_route","methods":["GET","OPTIONS","HEAD"],"path":"/health/sync-status"},{"endpoint":"camera.get_token_route","methods":["GET","OPTIONS","HEAD"],"path":"/get-token"},{"endpoint":"camera.camera_nightvision_info","methods":["GET","OPTIONS","HEAD"],"path":"/camera-nightvision-info"},{"endpoint":"camera.camera_nightvision","methods":["POST","OPTIONS"],"path":"/camera-nightvision"},{"endpoint":"camera.ptz","methods":["POST","OPTIONS"],"path":"/ptz"},{"endpoint":"camera.get_camera_status","methods":["GET","OPTIONS","HEAD"],"path":"/camera/status"},{"endpoint":"camera.set_camera_status","methods":["POST","OPTIONS"],"path":"/camera/status"},{"endpoint":"video.get_camera_nightvision","methods":["GET","OPTIONS","HEAD"],"path":"/camera/nightvision-status"},{"endpoint":"video.set_camera_nightvision","methods":["POST","OPTIONS"],"path":"/camera/nightvision"},{"endpoint":"operate.set_device_snap_enhanced","methods":["POST","OPTIONS"],"path":"/camera/snap-hd"},{"endpoint":"operate.ptz_move","methods":["POST","OPTIONS"],"path":"/camera/ptz/move"},{"endpoint":"operate.ptz_location","methods":["POST","OPTIONS"],"path":"/camera/ptz/location"},{"endpoint":"operate.ptz_info","methods":["GET","OPTIONS","HEAD"],"path":"/camera/ptz/info"},{"endpoint":"operate.restart_camera","methods":["POST","OPTIONS"],"path":"/camera/restart"},{"endpoint":"operate.sync_camera_time","methods":["POST","OPTIONS"],"path":"/camera/time/sync"},{"endpoint":"operate.get_camera_time","methods":["GET","OPTIONS","HEAD"],"path":"/camera/time"},{"endpoint":"meteo.meteo_user_by_id","methods":["GET","OPTIONS","HEAD"],"path":"/meteo"},{"endpoint":"meteo.meteo_location","methods":["GET","OPTIONS","HEAD"],"path":"/meteo/<string:location>"},{"endpoint":"meteo.meteos_locations","methods":["GET","OPTIONS","HEAD"],"path":"/meteos"},{"endpoint":"alarm.camera_status_route","methods":["POST","OPTIONS"],"path":"/camera-status"},{"endpoint":"alarm.active_alarme_route","methods":["POST","OPTIONS"],"path":"/update-status"},{"endpoint":"alarm.update_motion_route","methods":["POST","OPTIONS"],"path":"/update-motion"},{"endpoint":"alarm.alarme_route","methods":["POST","OPTIONS"],"path":"/alarm"},{"endpoint":"alarm.get_alarm_video_route","methods":["POST","OPTIONS"],"path":"/camera/alarm-video"},{"endpoint":"storage.get_storage_info_route","methods":["GET","OPTIONS","HEAD"],"path":"/camera/storage-info"},{"endpoint":"storage.recover_sdcard_route","methods":["POST","OPTIONS"],"path":"/camera/recover-sdcard"},{"endpoint":"storage.get_local_records_route","methods":["GET","OPTIONS","HEAD"],"path":"/camera/records"},{"endpoint":"vanne_bp.device_details","methods":["POST","OPTIONS"],"path":"/device/details"},{"endpoint":"vanne_bp.valve_control","methods":["POST","OPTIONS"],"path":"/device/valve"},{"endpoint":"vanne_bp.power_device","methods":["POST","OPTIONS"],"path":"/device/power"},{"endpoint":"pompe_bp.pump_control","methods":["POST","OPTIONS"],"path":"/open-pump"},{"endpoint":"pompe_bp.get_status","methods":["GET","OPTIONS","HEAD"],"path":"/device/<device_id>/status"},{"endpoint":"task.tasks","methods":["POST","OPTIONS"],"path":"/tasks"},{"endpoint":"task.cancel_task","methods":["POST","OPTIONS"],"path":"/tasks/<int:task_id>/cancel"},{"endpoint":"task.get_tasks_route","methods":["GET","OPTIONS","HEAD"],"path":"/tasks"},{"endpoint":"task.delete_task_route","methods":["OPTIONS","DELETE"],"path":"/tasks/<int:task_id>"},{"endpoint":"task.update_task_route","methods":["OPTIONS","PUT"],"path":"/tasks/<int:task_id>"},{"endpoint":"historique.get_device_history_route","methods":["GET","OPTIONS","HEAD"],"path":"/<string:device_id>/history"},{"endpoint":"notification.register_fcm_token_route","methods":["POST","OPTIONS"],"path":"/register_fcm_token"},{"endpoint":"notification.test_notification_route","methods":["POST","OPTIONS"],"path":"/test-notification/<int:user_id>"},{"endpoint":"notification.list_notifications_route","methods":["GET","OPTIONS","HEAD"],"path":"/notifications"},{"endpoint":"notification.unread_count_route","methods":["GET","OPTIONS","HEAD"],"path":"/notifications/unread-count"},{"endpoint":"notification.mark_read_route","methods":["POST","OPTIONS"],"path":"/notifications/<int:notification_id>/read"},{"endpoint":"notification.mark_all_read_route","methods":["POST","OPTIONS"],"path":"/notifications/read-all"},{"endpoint":"whatsapp.verify_webhook","methods":["GET","OPTIONS","HEAD"],"path":"/webhook"},{"endpoint":"whatsapp.receive_message","methods":["POST","OPTIONS"],"path":"/webhook"},{"endpoint":"ping","methods":["GET","OPTIONS","HEAD"],"path":"/ping"},{"endpoint":"index","methods":["GET","OPTIONS","HEAD"],"path":"/"}]
