- omada.js: add getWlans, getOrCreateWlan, createSSID, updatePortalSSID
- adopt endpoint: accept ssid_name + ssid_password, create WLAN group and
SSID on Omada, link SSID to portal (creates or updates existing portal),
persist wlan/ssid IDs and credentials on the device record
- device registration: accept and store ssid_name + ssid_password upfront
(defaults ssid_name to device name if not provided)
- schema.sql: add ssid_name, ssid_password, omada_wlan_id, omada_ssid_id
columns to devices table
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add manual cash payment activation endpoint for admin
- POST /api/admin/devices/:id/activate sets billing active +30 days,
records audit entry in device_payments, SMSes tenant
- schema.sql: add notes column to device_payments
- Docs updated in API_DOCUMENTATION.md and FRONTEND_DESIGN_SYSTEM.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Node.js/Express backend with Omada SDN integration, M-Pesa payments via
Snippe, SMS notifications, captive portal, and tenant dashboard API.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>