Skip to content

Superseded terms, newest first

GET
/api/licenses/{lid}/versions
curl --request GET \
--url https://app.dycrypt.com/o/acme/api/licenses/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/versions \
--header 'Authorization: Bearer <token>'

The current term is excluded. A superseded term stays a live artifact until its own expiry, which is why it is kept and can still be downloaded.

lid
required
string format: uuid

The licence id — a UUID, and the lid claim in the signed payload. It survives renewal.

Past terms.

Media typeapplication/json
Array<object>

A superseded term. Still a live artifact until its own expiry, which is why it is kept.

object
versionNo
integer
issuedAt
string format: date-time
startsAt
string | null format: date-time
expiresAt
string | null format: date-time
graceDays
integer
issuedBy
string
revokedReason
string | null
Examplegenerated
[
{
"versionNo": 1,
"issuedAt": "2026-04-15T12:00:00Z",
"startsAt": "2026-04-15T12:00:00Z",
"expiresAt": "2026-04-15T12:00:00Z",
"graceDays": 1,
"issuedBy": "example",
"revokedReason": "example"
}
]

No credential, or one that no longer resolves — revoked, expired, deleted. Replace it.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
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.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}

No such record, or no such endpoint.

Media typeapplication/json

Every failure in this API has this shape and no other.

object
error
required
string
Example
{
"error": "this token does not have licenses:write"
}