Total Licenses
—
Active
—
Expiring in 30d
—
Expired
—
⏰ Expiring Soon
| Customer | Expiry | Days Left | Status | Action | |
|---|---|---|---|---|---|
| Loading… | |||||
🔑 All Licenses
All
✅ Active
⏰ Expiring
❌ Expired
🚫 Revoked
| Customer | Expiry | Status | Actions | ||
|---|---|---|---|---|---|
| Loading… | |||||
✨ Generate New License
ℹ️ Ask customer to open PMP MedzMart → copy their Hardware ID from the activation screen.
1 Month
3 Months
6 Months
1 Year
2 Years
♾ Lifetime
ℹ️ How It Works
1. Customer opens PMP MedzMart → copies their Hardware ID and sends it to you.
2. You fill in the form and click Generate — the license is saved to this server instantly.
3. Customer enters the key in PMP. PMP contacts this server on each startup to verify.
4. You can activate / deactivate / extend from the Licenses tab — no need to touch the customer's PC.
⚠️ Customer PC needs internet at least once a week for validation.
🔌 Validation Endpoint
Point PMP MedzMart to this URL:
http://your-server:3000/api/validate
Configure VALIDATION_URL in PMP's config file.
📋 Audit Log
Loading…
🔌 API Reference
These endpoints let PMP MedzMart communicate with this license server. The validation endpoint is public. All other endpoints require an admin JWT token.
Public
POST
/api/validate// Request body
{
"customer": "Ahmed Pharmacy",
"hwid": "A1B2-C3D4-E5F6-G7H8",
"license_key": "XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"
}
{
"customer": "Ahmed Pharmacy",
"hwid": "A1B2-C3D4-E5F6-G7H8",
"license_key": "XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXX"
}
// Success response
{ "valid": true, "message": "License verified",
"expiry": "2027-01-01", "days_remaining": 180 }
{ "valid": true, "message": "License verified",
"expiry": "2027-01-01", "days_remaining": 180 }
Admin (requires Bearer JWT)
POST
/api/admin/loginGET
/api/admin/licensesPOST
/api/admin/licensesGET
/api/admin/auditGET
/api/admin/export/csv🔒 The admin JWT token expires in 8 hours. Log out and log back in to get a fresh token.