Version, Updates & License
Version, Updates & License (panel side)
Panel checks its own version & license vs the portal. Publishing releases TO the portal is a separate admin API (portal Releases doc). Role: admin.
Version — /api/v1/version
GET /version/info (verified live):
{ "version": "1.4.2", "channel": "stable", "build_time": "unknown", "git_commit": "unknown", "info": "WisPanel v1.4.2" }
GET /version/check (verified live):
{ "update_available": false, "current_version": "1.4.2", "latest_version": "1.4.2", "changelog": "## WisPanel 1.4.2 …" }
GET /version/changelog · /version/update/status;
POST /version/update (no body) · /version/direct-update.
License — GET /api/v1/license/
Response 200 (verified live):
{ "license": {
"key": "WISP-****SA6T", "tier": "free", "is_valid": true,
"has_license_file": true, "needs_refresh": false,
"max_users": 30, "max_domains": 100, "max_databases": -1,
"expires_at": "2036-05-11T06:10:02+07:00",
"valid_until": "2026-05-22T14:05:26+07:00",
"last_checked": null },
"usage": { "accounts": 10, "databases": 2, "domains": 7 } }
GET /license/summary · /license/limits ·
/license/disabled-resources.
Activate — POST /api/v1/license/activate
Request: { "key": "WISP-XXXX-XXXX-XXXX" }
Response 400 (verified live — empty body):
{ "success": false, "code": "VALIDATION_ERROR",
"error": "License key is required",
"message": "License key is required", "status": 400 }
POST /license/verify · /license/refresh · /license/enforce ·
/license/re-enable (no body).
The panel↔portal contract (/license/*, /download/* on
wispanel.com) is in License & Update API (Client Integration).
Conventions → Authentication, Error Handling.