Put an archived licence back on the books
const url = 'https://app.dycrypt.com/o/acme/api/licenses/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/restore';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://app.dycrypt.com/o/acme/api/licenses/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/restore \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The licence id — a UUID, and the lid claim in the signed payload. It survives renewal.
Responses
Section titled “Responses”The restored licence.
object
The customer’s name
Signed into the licence as prd.
The nbf claim. Absent means it is valid immediately.
Null for a perpetual licence — the exp claim is omitted entirely.
See the licence-mode guides — Offline verifies alone, Online must check in, Hybrid does both.
How a Hybrid licence first binds to a machine. Only meaningful for HYBRID.
When it bound to a machine. Null means nobody has installed it yet.
How many times an operator released the binding.
How many machines this licence binds at once. Copied from the product at issue.
How many of them are bound right now.
Where the licence is against the calendar and the revocation flag.
PENDING, EXPIRED and REVOKED do not count against plan capacity.
What the field says, beside what the calendar says. NOT_APPLICABLE for
every Offline licence, which is most of them in a typical organisation.
The signed offline window.
How often the application should check in.
Filed away — off the default list and out of renewal. Still verifies in the field.
The person or token that issued it.
The signed payload, decoded. Issuer claims first, then the product’s own parameters.
object
The artifact to deliver: payloadB64url.signatureB64url. This is
what a customer’s application verifies, and its own signature is
its proof.
Free text. Never signed into the licence.
Example
{ "licenceType": "OFFLINE", "activation": "ONLINE", "status": "PENDING", "checkHealth": "NOT_APPLICABLE"}No credential, or one that no longer resolves — revoked, expired, deleted. Replace it.
Every failure in this API has this shape and no other.
object
Example
{ "error": "this token does not have licenses:write"}Authenticated, but not allowed: a missing scope, a read-only role, a plan limit reached, or a credential used under another organisation’s slug. The right credential doing something it may not do.
Every failure in this API has this shape and no other.
object
Example
{ "error": "this token does not have licenses:write"}No such record, or no such endpoint.
Every failure in this API has this shape and no other.
object
Example
{ "error": "this token does not have licenses:write"}