Licenses API
Operator CRUD plus anonymous validation with X-API-KEY.
Used by POST /api/Licenses/validate. Send X-API-KEY: <product key> (or legacy Authorization: X-API-KEY <key>). Never ship the private signing key to clients.
Prefix /api/Licenses. Hosted example: https://licenpro.runasp.net/api/Licenses/validate.
/api/LicensesPaginated list. Query: pageNumber, pageSize, search, status, type.
/api/Licenses/{id}Single license by GUID.
/api/LicensesCreate license. Body: CreateLicenseDto — required name, type (Perpetual, Trial, Subscription, NodeLocked, Floating, Concurrent), issuedTo, softwareReleaseId; optional expiry, seats, hardware, entitlement set ids, notes.
/api/Licenses/validateAllowAnonymous + X-API-KEY. multipart/form-data: licenseKey, validationParams (JSON string), optional licenseFile.
/api/Licenses/validate/{licenseKey}Simple validation; optional hardwareId query.
/api/Licenses/status/{licenseKey}Status payload for SDK polling.
/api/Licenses/refresh/{licenseKey}Refresh license material (optional RefreshLicenseDto).
/api/Licenses/{licenseKey}/activationsAnonymous activation snapshot.
/api/Licenses/{id}/downloadAuthorized download of license file bytes.
/api/Licenses/{id}/generate-fileRegenerate license file.
/api/Licenses/{id}/revokeRevoke license.
/api/Licenses/{id}/access-attemptsNode-locked sharing detection. Lists machines denied because the license is bound elsewhere, with attempted and bound hardware IDs, IP, entry point and attempt counts, plus summary totals. Product owner or Admin only — this is the one route that returns unmasked device and network detail.
/api/Licenses/{id}/access-attempts/{attemptId}/acknowledgeMark one attempt as reviewed. Returns the refreshed summary. Product owner or Admin only.
Additional routes cover hardware binding, transfers, and pending bindings; explore responses from your host under the same prefix.
