{ "_meta": { "name": "ENV and existing API", }, "elements": [ { "id": "env_header", "type": "card", "title": "WellNuo API Documentation", "borderColor": "purple", "tags": [ "overview" ], "description": "Backend API for WellNuo Elderly Monitoring System\n\nBase URL: https://eluxnetworks.net/function/well-api/api\nMethod: POST (most endpoints), GET (some)\nContent-Type: application/x-www-form-urlencoded\n\nAPI VERIFIED: Working as of Dec 15, 2025", "x": 140, "y": 77.5 }, { "id": "web_dashboard", "type": "card", "title": "Web Dashboard", "borderColor": "blue", "tags": [ "frontend", "verified" ], "description": "React Web Application\n\nURL: https://react.eluxnetworks.net/dashboard\nStack: React + TailwindCSS\nAuth: JWT tokens stored in localStorage (auth2)\n\nNote: For embedding in mobile app via WebView", "x": 140, "y": 192.5 }, { "id": "api_auth", "type": "card", "title": "credentials (Auth) ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "description": "function=credentials\nMethod: POST\n\nRequest:\n- user_name: string\n- ps: string (password)\n- clientId: string (e.g. \"001\")\n- nonce: string (random)\n\nResponse:\n{\n \"access_token\": \"eyJhbG...\",\n \"privileges\": \"21,45,29\",\n \"user_id\": 59,\n \"max_role\": 2,\n \"status\": \"200 OK\"\n}\n\nTESTED: Dec 15, 2025 - WORKING", "x": 426, "y": 68 }, { "id": "test_credentials", "type": "card", "title": "Test Credentials ✓", "borderColor": "green", "tags": [ "credentials", "verified" ], "description": "PRIMARY Test Account:\n\nUsername: slunginovic\nPassword: sale2025\nClientId: 001\nNonce: 111\n\nUser ID: 59\nPrivileges: 21,45,29\nMax Role: 2\n\nSECONDARY Account:\nUsername: anandk\nPassword: anandk_8\n\nTESTED: Dec 15, 2025", "x": 667, "y": -92 }, { "id": "api_deployments_list", "type": "card", "title": "deployments_list ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "description": "function=deployments_list\nMethod: POST\n\nRequest:\n- user_name: string\n- token: string (JWT)\n- first: number (pagination start, e.g. 0)\n- last: number (pagination end, e.g. 1000)\n\nResponse:\n{\n \"result_list\": [\n {\n \"deployment_id\": 21,\n \"email\": \"user@example.com\",\n \"first_name\": \"John\",\n \"last_name\": \"Doe\"\n }\n ],\n \"status\": \"200 OK\"\n}\n\nTESTED: Dec 15, 2025 - WORKING", "x": 700, "y": 68 }, { "id": "api_dashboard_single", "type": "card", "title": "dashboard_single ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "description": "function=dashboard_single\nMethod: POST\n\nRequest:\n- user_name: string\n- token: string (JWT)\n- deployment_id: number\n- date: string (YYYY-MM-DD)\n- nonce: string (optional)\n\nResponse: Wellness data, location, temperature, sleep hours, etc.\n\nUsed for: Main patient monitoring dashboard", "x": 351, "y": 264 }, { "id": "api_dashboard_list", "type": "card", "title": "dashboard_list ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=dashboard_list\nMethod: POST\n\nRequest:\n- user_name: string\n- token: string\n- user_id: number (optional)\n- date: string (YYYY-MM-DD)\n\nReturns: List of dashboards for user", "x": 351, "y": 380 }, { "id": "api_voice_ask", "type": "card", "title": "voice_ask (AI Chat) ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "description": "function=voice_ask\nMethod: POST\n\nRequest:\n- clientId: string (e.g. \"MA_001\")\n- user_name: string\n- token: string\n- question: string (keyword-based!)\n- deployment_id: number\n\nWORKING KEYWORDS:\n- \"how is dad/mom\" - full status\n- \"bathroom\" - restroom usage\n- \"kitchen\" - cooking activity\n- \"sleep/night\" - sleep hours\n- \"temperature\" - room temp\n- \"last seen\" - online status", "x": 416, "y": 500 }, { "id": "api_beneficiaries_list", "type": "card", "title": "beneficiaries_list ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=beneficiaries_list\nMethod: POST\n\nRequest:\n- token: string\n- user_name: string\n- first: number (0)\n- last: number (1000)\n\nReturns: List of all beneficiaries (elderly persons)", "x": 980, "y": 68 }, { "id": "api_beneficiary_form", "type": "card", "title": "beneficiary_form ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=beneficiary_form\nMethod: POST\n\nCreate/Edit beneficiary:\n- new_user_name: string\n- editing_user_id: number (for edit)\n- role_ids: string (e.g. \"1,2\")\n- email, first_name, last_name\n- address_street, address_city\n- address_zip, address_state\n- address_country\n- phone_number, picture", "x": 980, "y": 180 }, { "id": "api_get_beneficiary", "type": "card", "title": "get_beneficiary ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=get_beneficiary\nMethod: POST\n\nRequest:\n- token: string\n- user_name: string\n- user_id: number\n\nReturns: Detailed beneficiary info", "x": 980, "y": 290 }, { "id": "api_caretakers_list", "type": "card", "title": "caretakers_list ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=caretakers_list\nMethod: POST\n\nRequest:\n- token: string\n- user_name: string\n- first: number (0)\n- last: number (1000)\n\nReturns: List of all caretakers", "x": 1200, "y": 68 }, { "id": "api_caretaker_form", "type": "card", "title": "caretaker_form ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=caretaker_form\nMethod: POST\n\nCreate/Edit caretaker:\n- new_user_name: string\n- user_id, editing_user_id: number\n- key: string (password)\n- role_ids, access_to: string\n- email, first_name, last_name\n- address_*, phone_number, picture", "x": 1200, "y": 180 }, { "id": "api_get_caretaker", "type": "card", "title": "get_caretaker ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=get_caretaker\nMethod: POST\n\nRequest:\n- token: string\n- user_name: string\n- user_id: number\n\nReturns: Detailed caretaker info", "x": 1200, "y": 290 }, { "id": "api_deployment_form", "type": "card", "title": "deployment_form ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=deployment_form\nMethod: POST\n\nCreate/Edit deployment:\n- editing_deployment_id: number\n- beneficiary_id, caretaker_id\n- owner_id, installer_id: number\n- address_*: string\n- persons, gender, race: number\n- born: number (year)\n- pets: number\n- lat, lng: number (coords)\n- devices: JSON array of MACs\n- time_zone_s: string", "x": 700, "y": 180 }, { "id": "api_deployment_edit", "type": "card", "title": "deployment_edit ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "name=deployment_edit\nMethod: GET\n\nQuery params:\n- user_name: string\n- token: string\n- deployment_id: number\n\nReturns: Deployment data for editing", "x": 700, "y": 290 }, { "id": "api_deployment_delete", "type": "card", "title": "deployment_delete ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=deployment_delete\nMethod: POST\n\nRequest:\n- user_name: string\n- token: string\n- editing_deployment_id: number\n- user_id: number\n- priviledges: string\n\nCAUTION: Destructive operation!", "x": 700, "y": 400 }, { "id": "api_get_deployment", "type": "card", "title": "get_deployment ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=get_deployment\nMethod: POST\n\nRequest:\n- user_name: string\n- token: string\n- deployment_id: number\n- date: string (optional)\n\nReturns: Full deployment details", "x": 550, "y": 400 }, { "id": "api_find_deployments", "type": "card", "title": "find_deployments ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=find_deployments\nMethod: POST\n\nRequest:\n- user_name: string\n- token: string\n- well_ids: string (comma-separated)\n\nReturns: Deployments matching well IDs", "x": 550, "y": 510 }, { "id": "api_device_list", "type": "card", "title": "device_list ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=device_list\nMethod: POST\n\nRequest:\n- user_name: string\n- token: string\n- first: number (0)\n- last: number (1000)\n\nReturns: List of all devices (sensors)", "x": 1420, "y": 68 }, { "id": "api_device_list_by_deployment", "type": "card", "title": "device_list_by_deployment ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=device_list_by_deployment\nMethod: POST\n\nRequest:\n- user_name, token: string\n- deployment_id: number\n- first, last: number\n\nReturns: Devices for specific deployment", "x": 1420, "y": 180 }, { "id": "api_device_form", "type": "card", "title": "device_form ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=device_form\nMethod: POST\n\nCreate/Edit device:\n- well_id: number\n- device_mac: string\n- description: string\n- location: number\n- close_to: string\n- radar_threshold: number\n- temperature_calib: string\n- humidity_calib: string\n- group: number", "x": 1420, "y": 290 }, { "id": "api_get_device", "type": "card", "title": "get_device ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=get_device\nMethod: POST\n\nRequest:\n- user_name, token: string\n- device_id: number\n- mac: string (optional)\n\nReturns: Device details and status", "x": 1420, "y": 400 }, { "id": "api_device_reboot", "type": "card", "title": "device_reboot ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=device_reboot\nMethod: POST\n\nRequest:\n- user_name, token: string\n- device_id: number (optional)\n- mac: string\n\nAction: Reboots the device remotely", "x": 1560, "y": 68 }, { "id": "api_device_get_live", "type": "card", "title": "device_get_live ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=device_get_live\nMethod: POST\n\nRequest:\n- user_name, token: string\n- device_id: number\n\nReturns: Live sensor data from device", "x": 1560, "y": 180 }, { "id": "api_device_set_group", "type": "card", "title": "device_set_group ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=device_set_group\nMethod: POST\n\nRequest:\n- user_name, token: string\n- device_id: number\n- group_id: number\n\nAction: Assigns device to a group", "x": 1560, "y": 290 }, { "id": "api_device_set_well_id", "type": "card", "title": "device_set_well_id ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=device_set_well_id\nMethod: POST\n\nRequest:\n- user_name, token: string\n- device_id: number\n- well_id: number\n- mac: string\n\nAction: Sets device well_id", "x": 1560, "y": 400 }, { "id": "api_alarm_on_off", "type": "card", "title": "alarm_on_off ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=alarm_on_off\nMethod: POST\n\nRequest:\n- user_name, token: string\n- deployment_id: number\n- alarm_on: number (1=on, 0=off)\n\nAction: Toggle alarm state", "x": 140, "y": 320 }, { "id": "api_get_alarm_state", "type": "card", "title": "get_alarm_state ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=get_alarm_state\nMethod: POST\n\nRequest:\n- user_name, token: string\n- deployment_id: number\n\nReturns: Current alarm status", "x": 140, "y": 430 }, { "id": "api_activity_detected", "type": "card", "title": "activity_detected ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=activity_detected\nMethod: POST\n\nRequest:\n- user_name, token: string\n- time: number (epoch timestamp)\n\nAction: Log activity detection event", "x": 140, "y": 540 }, { "id": "api_activities_report_details", "type": "card", "title": "activities_report_details ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=activities_report_details\nMethod: POST\n\nRequest:\n- user_name, token: string\n- deployment_id: number\n- filter: number (1-6)\n\nReturns: Detailed activity reports", "x": 140, "y": 650 }, { "id": "api_get_floor_layout", "type": "card", "title": "get_floor_layout ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=get_floor_layout\nMethod: POST\n\nRequest:\n- user_name, token: string\n- deployment_id: number\n- date: string (YYYY-MM-DD)\n\nReturns: Floor layout configuration", "x": 1700, "y": 68 }, { "id": "api_location_map", "type": "card", "title": "get_full_location_map ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "name=get_full_location_map\nMethod: GET\n\nQuery params:\n- user_name, token: string\n- deployment_id: number\n- date: string\n- re_create, bw, motion: boolean\n- scale_global: boolean\n- map_type, filter: number\n- fast: boolean\n\nReturns: Full location/room mapping", "x": 1700, "y": 180 }, { "id": "api_get_image_file", "type": "card", "title": "get_image_file ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "name=get_image_file\nMethod: GET\n\nQuery params:\n- user_name, token: string\n- deployment_id: number\n- radar_part: string (e.g. \"s28\")\n- date: string\n- re_create: boolean\n- group_by: string\n- map_type: number\n\nReturns: Generated image file", "x": 1700, "y": 290 }, { "id": "api_download", "type": "card", "title": "download ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "name=download\nMethod: GET\n\nQuery params:\n- user_name, token: string\n- deployment_id: number\n- date_from, date_to: string\n- group_by: string (e.g. \"by_minute\")\n- re_create: boolean\n- radar_part: string\n\nReturns: Data export file", "x": 1700, "y": 400 }, { "id": "api_get_devices_locations", "type": "card", "title": "get_devices_locations ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "completed": true, "description": "function=get_devices_locations\nMethod: POST\n\nRequest:\n- user_name, token: string\n- well_ids: string (comma-separated)\n\nReturns: Device location mappings", "x": 1700, "y": 510 }, { "id": "jwt_token", "type": "card", "title": "JWT Token Structure", "borderColor": "teal", "tags": [ "backend" ], "description": "Token Format: JWT (HS256)\n\nPayload:\n{\n \"username\": \"slunginovic\",\n \"exp\": 1765910792 (Unix timestamp)\n}\n\nExpiration: ~7 days\nStorage: localStorage.auth2 (web)\nMobile: expo-secure-store\n\nUsage: Include as 'token' param in all authenticated requests", "x": 520, "y": 620 }, { "id": "deployment_ids", "type": "card", "title": "Deployment IDs (Patient IDs)", "borderColor": "teal", "tags": [ "backend", "verified" ], "description": "What are Deployment IDs?\n\nDeployment ID = Patient ID = Beneficiary ID\nEach elderly person has unique ID.\n\nHow they work:\n- User logs in - gets 'privileges' string\n- Privileges = comma-separated deployment_ids\n- Example: \"21,45,29\" = 3 patients\n\nUsage:\n- dashboard_single: Get patient wellness\n- voice_ask: Ask AI about patient", "x": 900, "y": 400 }, { "id": "server_info", "type": "card", "title": "Server Infrastructure", "borderColor": "gray", "tags": [ "external" ], "description": "API Server:\n- Domain: eluxnetworks.net\n- SSL: Let's Encrypt\n- Status: ONLINE (verified Dec 15, 2025)\n\nReact Frontend:\n- Domain: react.eluxnetworks.net\n\nDev Server (HTTP):\n- eluxnetworks.net:8000 (debug)", "x": 1840, "y": 68 }, { "id": "api_status_summary", "type": "card", "title": "API Status Summary", "borderColor": "green", "tags": [ "overview", "verified" ], "description": "VERIFIED ENDPOINTS (Dec 15, 2025):\n\n1. credentials - Login, get JWT token\n2. deployments_list - List patients\n3. dashboard_single - Patient wellness\n4. voice_ask - AI chat\n\nPENDING TEST (need valid data):\n- All device_* endpoints\n- All beneficiary_* endpoints\n- All caretaker_* endpoints\n- Maps and images\n- Downloads\n\nAPI is WORKING and ACCESSIBLE", "x": 1840, "y": 200 }, { "id": "expo_config", "type": "card", "title": "Mobile App Config", "borderColor": "green", "tags": [ "frontend", "verified" ], "description": "Tech Stack:\n- Expo SDK 54\n- React Native 0.81.5\n- Expo Router 6.x\n\nFeatures:\n- WebView for dashboard embedding\n- Push notifications (FCM/APNs)\n- Biometric auth (future)", "x": 1840, "y": 340 }, { "id": "gitea_repo", "type": "card", "title": "Git Repository ✓", "borderColor": "green", "tags": [ "external", "verified" ], "description": "Gitea Server:\nURL: https://gitea.wellnua.com\nRepo: sergei_t/WellNuo\nBranch: development\n\nCredentials:\n- Username: sergei_t\n- Password: Orelkosyak5!", "x": 1840, "y": 460 }, { "id": "eas_build", "type": "card", "title": "EAS Build & Deploy ✓", "borderColor": "green", "tags": [ "external", "verified" ], "description": "EAS (Expo Application Services)\n\nApp Info:\n- Name: WellNuo\n- iOS Bundle ID: com.wellnuo.BluetoothScanner\n- Android Package: com.wellnuo.app\n- Expo Project ID: 4f415b4b-41c8-4b98-989c-32f6b3f97481\n\nApple Account (Robert's):\n- Apple ID: kosyakorel1@gmail.com\n- Team ID: UHLZD54ULZ (ZMR Inc)\n\nBuilds:\n- iOS: https://expo.dev/artifacts/eas/vTqLY2yWKzcCfPJSVzGZMZ.ipa\n- Android: https://expo.dev/artifacts/eas/5DXfBCuPc2uJ2fSzW6maie.aab\n\nUpdated: Dec 17, 2025", "x": 1840, "y": 580 }, { "id": "supabase_db", "type": "card", "title": "Supabase Database ✓", "borderColor": "green", "tags": [ "external", "verified" ], "description": "Supabase (PostgreSQL + Storage)\n\nProject: WellNuo\nURL: https://bfzizknbxbsfrffqityf.supabase.co\n\nCredentials:\n- DB Password: Orelkosyak5!\n- Service Key: sb_secret_N7TN930UzzXGgFgrAaozqA_Y4b0DKlM\n\nTables (migrated from eluxnetworks.net):\n- deployments: 45 rows\n- devices: 455 rows\n- person_details: 8 rows (⚠️ users table!)\n- deployment_details: 23 rows\n\n⚠️ SECURITY: Passwords in plain text in 'key' field!\nSee: 05_Database_Schema.json for full details\n\nStorage Bucket: media (public)\n- /avatars/ - User avatars\n- /floor-plans/ - Deployment floor plans\n- /documents/ - PDFs, disclaimers\n- /reports/ - Generated reports\n\nStorage URL:\nhttps://bfzizknbxbsfrffqityf.supabase.co/storage/v1/object/public/media/{path}\n\nMigration: Dec 18, 2025\nStatus: VERIFIED", "x": 1840, "y": 720 }, { "id": "brevo_email", "type": "card", "title": "Brevo Email Service", "borderColor": "orange", "tags": [ "external", "pending" ], "description": "Brevo (formerly Sendinblue)\nTransactional Email Service\n\n=== TO CONFIGURE ===\n\nAPI Key: [TBD - get from Brevo dashboard]\nSMTP Server: smtp-relay.brevo.com\nPort: 587\n\nUsage:\n- Password reset emails\n- Welcome emails\n- Alert notifications\n\nEndpoints needed:\n- POST /api/auth/forgot-password\n- POST /api/auth/reset-password\n\nTemplates:\n- password_reset\n- welcome_user\n- alert_notification\n\nDocs: https://developers.brevo.com/", "x": 2060, "y": 720 }, { "id": "website_urls", "type": "card", "title": "Website & Domains", "borderColor": "cyan", "tags": [ "external" ], "description": "WellNuo Domains\n\n=== CURRENT ===\nWebsite: https://wellnuo.smartlaunchhub.com\nAPI: https://wellnuo.smartlaunchhub.com/api\n\n=== FUTURE (when ready) ===\nWebsite: https://wellnuo.com\nAPI: https://api.wellnuo.com\n\n=== HOSTING ===\nServer: 91.98.205.156 (SmartLaunchHub)\nSSL: Let's Encrypt\nNginx: reverse proxy\n\nDeployment:\nrsync to /var/www/wellnuo/", "x": 2060, "y": 580 }, { "id": "wellnuo_backend", "type": "card", "title": "WellNuo Backend (Node.js) ✓", "borderColor": "green", "tags": [ "backend", "verified" ], "description": "Custom Node.js Backend API (Hybrid)\n\n=== DEPLOYED ===\nURL: https://wellnuo.smartlaunchhub.com\nPath: /var/www/wellnuo-backend/\nPM2: wellnuo-api\nPort: 3010\n\nStack: Express + Supabase SDK\n\nAPI Format (same as old):\nPOST /function/well-api/api\nBody: function=¶ms...\n\n=== МОЖНО НАПРЯМУЮ ===\nСтарый API всё ещё доступен:\nhttps://eluxnetworks.net/function/well-api/api\n\nМожно обращаться напрямую к нему\nдля любых запросов (нужен токен).\n\nConfig: .env file\nDeployed: Dec 18, 2025\nStatus: WORKING", "x": 1840, "y": 880 }, { "id": "api_routing", "type": "card", "title": "API Routing (Hybrid) ✓", "borderColor": "cyan", "tags": [ "backend", "overview" ], "description": "=== НАШИ ENDPOINTS (Supabase) ===\n\nAuth:\n- credentials\n- new_user_form\n\nDashboard:\n- dashboard_list\n- dashboard_single\n\nDeployments:\n- deployments_list\n- get_deployment\n- deployment_form\n- deployment_delete\n- set_deployment\n- find_deployments\n- get_floor_layout\n- set_floor_layout\n- request_deployment_map_new\n- get_devices_locations\n\nDevices:\n- device_list\n- device_list_4_gui\n- device_list_by_deployment\n- get_device\n- device_form\n- device_set_group\n- device_get_live\n- device_reboot\n- device_set_well_id\n- device_set_network_id\n- request_devices\n\nBeneficiaries:\n- beneficiaries_list\n- get_beneficiary\n- beneficiary_form\n\nCaretakers:\n- caretakers_list\n- get_caretaker\n- caretaker_form\n\nAlarms:\n- alarm_on_off\n- get_alarm_state\n- store_alarms\n- send_walarm\n- activity_detected", "x": 2060, "y": 880 }, { "id": "api_proxy_to_old", "type": "card", "title": "Proxy → Old API ✓", "borderColor": "orange", "tags": [ "backend", "external" ], "description": "=== ПРОКСИРУЕМ НА СТАРЫЙ API ===\n\nЭти endpoints идут на:\nhttps://eluxnetworks.net/function/well-api/api\n\nSensor Data (realtime):\n- get_presence_data\n- get_raw_data\n- get_sensor_data_by_deployment_id\n- get_sensor_bucketed_data_by_room_sensor\n- get_time_deltas\n- request_single_slice\n- request_single_radar_slice\n- request_proximity\n- activities_report_details\n\nVoice AI:\n- voice_ask (AI chatbot)\n\nMaps/Images/Downloads:\n- get_image_file\n- download\n- get_full_location_map\n- get_sensors_map\n- get_photo\n\n=== FALLBACK ===\nВсе неизвестные функции\nтоже проксируются на старый API.\n\n=== ПРЯМОЙ ДОСТУП ===\nМожно обращаться к старому API\nнапрямую без нашего backend.", "x": 2280, "y": 880 } ], "connections": [ { "from": "env_header", "to": "api_auth" }, { "from": "env_header", "to": "web_dashboard" }, { "from": "test_credentials", "to": "api_auth" }, { "from": "api_auth", "to": "api_deployments_list" }, { "from": "api_auth", "to": "api_dashboard_single" }, { "from": "api_auth", "to": "jwt_token" }, { "from": "api_dashboard_single", "to": "api_dashboard_list" }, { "from": "api_dashboard_single", "to": "api_voice_ask" }, { "from": "api_dashboard_single", "to": "deployment_ids" }, { "from": "api_deployments_list", "to": "api_deployment_form" }, { "from": "api_deployment_form", "to": "api_deployment_edit" }, { "from": "api_deployment_edit", "to": "api_deployment_delete" }, { "from": "api_deployment_edit", "to": "api_get_deployment" }, { "from": "api_get_deployment", "to": "api_find_deployments" }, { "from": "api_deployments_list", "to": "api_beneficiaries_list" }, { "from": "api_beneficiaries_list", "to": "api_beneficiary_form" }, { "from": "api_beneficiary_form", "to": "api_get_beneficiary" }, { "from": "api_beneficiaries_list", "to": "api_caretakers_list" }, { "from": "api_caretakers_list", "to": "api_caretaker_form" }, { "from": "api_caretaker_form", "to": "api_get_caretaker" }, { "from": "api_caretakers_list", "to": "api_device_list" }, { "from": "api_device_list", "to": "api_device_list_by_deployment" }, { "from": "api_device_list_by_deployment", "to": "api_device_form" }, { "from": "api_device_form", "to": "api_get_device" }, { "from": "api_device_list", "to": "api_device_reboot" }, { "from": "api_device_reboot", "to": "api_device_get_live" }, { "from": "api_device_get_live", "to": "api_device_set_group" }, { "from": "api_device_set_group", "to": "api_device_set_well_id" }, { "from": "web_dashboard", "to": "api_alarm_on_off" }, { "from": "api_alarm_on_off", "to": "api_get_alarm_state" }, { "from": "api_get_alarm_state", "to": "api_activity_detected" }, { "from": "api_activity_detected", "to": "api_activities_report_details" }, { "from": "api_device_set_well_id", "to": "api_get_floor_layout" }, { "from": "api_get_floor_layout", "to": "api_location_map" }, { "from": "api_location_map", "to": "api_get_image_file" }, { "from": "api_get_image_file", "to": "api_download" }, { "from": "api_download", "to": "api_get_devices_locations" }, { "from": "api_get_floor_layout", "to": "server_info" }, { "from": "server_info", "to": "api_status_summary" }, { "from": "api_status_summary", "to": "expo_config" }, { "from": "expo_config", "to": "gitea_repo" }, { "from": "gitea_repo", "to": "eas_build" }, { "from": "eas_build", "to": "supabase_db" }, { "from": "supabase_db", "to": "wellnuo_backend" }, { "from": "supabase_db", "to": "brevo_email" }, { "from": "eas_build", "to": "website_urls" }, { "from": "website_urls", "to": "brevo_email" }, { "from": "deployment_ids", "to": "api_get_beneficiary" }, { "from": "wellnuo_backend", "to": "api_routing" }, { "from": "api_routing", "to": "api_proxy_to_old" }, { "from": "api_proxy_to_old", "to": "server_info" } ], "tagsDictionary": [ { "id": "tag-frontend", "name": "frontend", "color": "green" }, { "id": "tag-backend", "name": "backend", "color": "blue" }, { "id": "tag-external", "name": "external", "color": "orange" }, { "id": "tag-verified", "name": "verified", "color": "lime" }, { "id": "tag-pending", "name": "pending", "color": "yellow" }, { "id": "tag-credentials", "name": "credentials", "color": "red" }, { "id": "tag-overview", "name": "overview", "color": "purple" } ] }