Changelogrss_feed
An RSS feed of our changelog is available.
2025
SEP
- FIX
Fix an issue in our PyPI engine's authorization logic that would erroneously redirect a package request to PyPI if an authorization error occurred.
Moving forward, authorization errors will be appropriately returned when a user requests a package they don't have permission to access, rather than redirecting the user to PyPI. This further hardens our PyPI engine against potential supply chain attacks, detailed here. - FEATURE
Add support for ECDSA P-256 signatures. This introduces a new
ecdsa-p256signing scheme for responses, webhooks, and license/machine files, and also introduces anECDSA_P256_SIGNscheme for signed keys.
ECDSA P-256 is also known assecp256r1andprime256v1. - FEATURE
Add maximum memory enforcement to policies, and memory consumption to licenses and machines.
Also adds a newTOO_MUCH_MEMORYvalidation code, and a max memory override to licenses, similar to max cores. - FEATURE
Add maximum disk enforcement to policies, and disk consumption to licenses and machines.
Also adds a newTOO_MUCH_DISKvalidation code, and a max disk override to licenses.
AUG
- FEATURE
Add support for named "pools" in Relay to segment licenses by environment, product, and other arbitrary criteria.
Now available in releasev1.2.0-beta.1. - FEATURE Add support for bulk adding licenses into Relay.
- FEATURE
Increase allowed depth of nested
metadataobjects to 2 levels of nesting.
Previously, we only allowed 1 level of nesting.
JUN
- FEATURE
Update environment isolation to allow global admins to escape isolation and authenticate into any environment.
This greatly improves the DX of creating and managing isolated environments.
MAY
- FEATURE
Custom permissions are now available on all account subscription tiers.
Previously, custom permissions were only available on Ent tiers, but are now also available on Dev and Std tiers. Accounts can also define default permission sets for licenses and users. - FIX
Fix an issue in our webhook delivery logic and in our webhook authorization layer where products could receive and read webhook events for resources outside their jurisdiction, e.g. a product could read events meant for other products within the same account.
You can give the product permission to read an endpoint's events by updating the endpoint's product relationship via the dashboard. - FEATURE
Add ability for products to delete a user, given the user has a user role, and the user either has no products or their only product is the authenticated product.
This adds theuser.deletepermission to all products. - FEATURE
Add
backdatedattribute to releases, allowing new releases to be backdated and accessed by expired licenses under aMAINTAIN_ACCESSorRESTRICT_ACCESSexpiration strategy.
APR
- FEATURE
Event logs are now available on all account subscription tiers.
Previously, event/audit logs were only available on Ent tiers, but are now available on Dev and Std tiers, with differing retention periods.
MAR
v1.8
This changes the current API version from v1.7 to v1.8. With this, backwards-compatible breaking changes have been introduced, mostly around authentication-related error codes.
For current API consumers of v1.7 or earlier, nothing will change, thanks to version pinning. Please see our versioning strategy for more info.
- CHANGE
Replace the
CREDENTIALS_INVALIDerror code with more nuanced error codes.
Error codes likePASSWORD_REQUIREDandSSO_REQUIREDcan be used to direct a user through their configured authentication flow.
JAN
- FEATURE
Add support for OCI engine, e.g.
oci.pkg.keygen.sh. - FEATURE
Remove upper limit on TTL for license and machine file checkouts.
Previously, we had an upper bound of 1 year for TTLs, which was arbitrary and added friction to certain licensing models. Now, there is no upper bound. - FEATURE
Add support for providing a custom
algorithmduring license and machine file checkouts.
Previously, if a signingschemewas set on the policy, it would use that, otherwise it would default to Ed25519. Now, an override can be provided regardless.
2024
NOV
- FEATURE
Add support for Rubygems engine, e.g.
rubygems.pkg.keygen.sh. - FIX Fix rare race-condition where some dead machines that have been resurrected would not be culled even after subsequent death.
- FEATURE
Add support for npm engine, e.g.
npm.pkg.keygen.sh.
OCT
- FEATURE
Release tags are now unique per-product and per-package, rather than globally, allowing for simplified release management.
Previously, only 1 release could use the "latest" tag across all products and packages, but now there can be multiple "latest" tags across products and packages. - FEATURE
Add
FROM_NOW_IF_EXPIREDrenewal basis to policies, to conditionally renew from the current time if the license is expired, otherwise renew from the license's expiry.
This is useful in cases where you renew licenses ahead of time. - FEATURE
Add
codeidentifier to products, to allow products to be looked up via a human-readable identifier. - FEATURE
Add support for Raw engine, e.g.
raw.pkg.keygen.sh. - FEATURE
Add
activityfilter to licenses list endpoint, allowing querying for e.g. licenses without any activity in the past 30 days.
AUG
- LAUNCH Keygen goes Fair Source. 🥳
MAY
v1.7
This changes the current API version from v1.6 to v1.7. With this, backwards-compatible breaking changes have been introduced, mostly around splitting a policy's leasing strategy into 2 distinct attributes.
For current API consumers of v1.6 or earlier, nothing will change, thanks to version pinning. Please see our versioning strategy for more info.
- CHANGE
Split a policy's leasing strategy into 2 distinct attributes: machine leasing strategy, and process leasing strategy.
Previously, the leasing strategy only applied to processes, but we also introduced similar functionality for machines, so we thought it best to separate them. - FEATURE
Add a per-user leasing strategy to policies, to control how many machines and processes can be leased per-user.
Previously, the leasing strategy only applied to processes. - FEATURE
Add a max users limit to policies, to control how many users can be associated to a given license. To be used with multi-user licenses.
This behaves similarly to the existing max machine and process limits. - FEATURE
Add user count to license payloads via
/relationships/users/meta/count. - FIX
Fix issue where release and artifact endpoints could unexpectedly result in a 403 error when the requestor has an expired license.
This was due to an incorrect object scope that would cause an eventual authorization error.
APR
v1.6
This changes the current API version from v1.5 to v1.6. With this, backwards-compatible breaking changes have been introduced, mostly around implementing multi-user licenses, coming from single-user licenses.
For current API consumers of v1.5 or earlier, nothing will change, thanks to version pinning. Please see our versioning strategy for more info.
- CHANGE Rename singular user relationship for licenses to owner.
- CHANGE Remove singular user relationship from machines.
- FEATURE Add plural users relationship to licenses. Users can now be attached to a license to model multi-user licenses.
- FEATURE
Add owner relationship to machines. Users can now be associated to a machine, giving the user permission to manage the machine.
Previous behavior allowed the license owner to manage machines. Current behavior is the same, but also allows the machine owner to manage the machine in the case of multi-user licenses. - FIX
Fix issue where active users could be included in the list of inactive users when filtering users by status.
This would occur when a user had both active licenses and inactive licenses. - FIX
Fix issue where
license.expiring-soonandlicense.expiredwebhook events could be delivered twice for the same event.
FEB
- CHANGE
We now cull dead machines and processes every 2 minutes, instead of what used to be, in most cases, instantly. This is for performance and scalability reasons.
For healthy machines and processes sending heartbeats at appropriate intervals, you should see no change in behavior.
JAN
- FEATURE
Add renewal basis to policies, to configure how a license's expiry is extended during renewal.
This is useful in cases where you want to renew from the current time, not the expiry.
2023
NOV
- FEATURE
Add support for
preferquery parameter for artifact downloads and other distribution-related endpoints.
This is useful in cases where providing aPreferheader is not an option.
OCT
v1.5
This changes the current API version from v1.4 to v1.5. With this, a small backwards-compatible breaking change has been introduced.
For current API consumers of v1.4 or earlier, nothing will change, thanks to version pinning. Please see our versioning strategy for more info.
- CHANGE
Fix casing of nested
metadatakeys from snake case to camel case. - FIX
Fix issue where dead machines in a
NOT_STARTEDstate would not be culled when their policy is later updated to require heartbeats.
SEP
v1.4
This changes the current API version from v1.3 to v1.4. With this, a couple small backwards-compatible breaking changes have been introduced.
For current API consumers of v1.3 or earlier, nothing will change, thanks to version pinning. Please see our versioning strategy for more info.
- CHANGE
Rename
fingerprintUniquenessStrategytomachineUniquenessStrategyfor policies. - CHANGE
Rename
fingerprintMatchingStrategytomachineMatchingStrategyfor policies. - FEATURE Add machine components for managing a machine's hardware components.
- FEATURE
Add components scope requirement to policies, to control whether license validations require a components scope.
The components scope can be used to assert a machine has a given set of hardware components. - FEATURE
Add
MATCH_TWOmachine matching strategy to policies. - FEATURE Add component uniqueness strategies to policies.
- FEATURE Add component matching strategies to policies.
- FEATURE Add components validation scope, to assert that a machine has a given set of components during validation.
- FEATURE Add components include option to machine checkouts.
AUG
- FEATURE Add second factors for managing a user's 2FA.
- FIX
Fix breaking change causing some request bodies to be ignored when sent without a
content-typeheader.
Ideally, integrations should specify a JSON content type when sending data to our API. Unfortunately, sometimes that is missed, and as such, some integrations relied on this erroneous behavior. We "fixed" this behavior by being more strict i.r.t thecontent-typeheader, but eventually rolled the change back once we realized this impacted a handful of customer integrations that were sending JSON with e.g. atext/plaincontent type. - FEATURE Add support for Tauri engine.
JUL
- FEATURE Add packages for managing and grouping a product's releases (e.g. sub-products, plugins, add-ons, packages).
- FEATURE Add engines for managing a package's supported registries.
- FEATURE Add support for PyPI engine.
JUN
- LAUNCH Keygen goes source-available. 🥳
- FEATURE Add version scope requirement to policies, to control whether license validations require a version scope. Version scopes are useful for tracking a license's current version.
- FEATURE
Add version scope to license validations, in addition to new validations codes:
VERSION_SCOPE_REQUIREDandVERSION_SCOPE_MISMATCH. - FEATURE Add checksum scope requirement to policies, to control whether license validations require a checksum scope. Checksum scopes are useful for asserting that the end-user has not modified the application.
- FEATURE
Add checksum scope to license validations, in addition to new validations codes:
CHECKSUM_SCOPE_REQUIREDandCHECKSUM_SCOPE_MISMATCH. - FEATURE Add version attribute to licenses, indicating the release version of a license's last validation.
MAY
- FIX Fix issue where searches on request logs by ID failed with an unsupported query error.
APR
- FEATURE Add environments for managing sandbox and production environments.
MAR
- FEATURE
Add
MAINTAIN_ACCESSexpiration strategy to policies.
FEB
v1.3
This changes the current API version from v1.2 to v1.3. With this, a small backwards-compatible breaking change has been introduced.
For current API consumers of v1.2 or earlier, nothing will change, thanks to version pinning. Please see our versioning strategy for more info.
- FEATURE
When a machine which requires a heartbeat is activated, its heartbeat is now automatically started at time of activation. This resolves an issue where a zombie machine would occur if the underlying application crashed in between a machine being activated and its first heartbeat being sent.
A machine "requires a heartbeat" when its license's policy is configured to require heartbeats. - CHANGE
When a machine which requires a heartbeat is activated, its initial heartbeat is now
ALIVEinstead ofNOT_STARTED.
In addition, it will have its last heartbeat set to a non-null value. - FEATURE Add heartbeat basis to policies, to override the above behavior.
- FIX
Fix issue where dead machines could fail to resurrect when the license policy's resurrection strategy was
ALWAYS_REVIVE.
2022
NOV
- FEATURE Add last checkout timestamps to licenses and machines.
- FIX
Fix issue causing
403responses for certain requestors when listing releases or artifacts with entitlement constraints.
In some cases, when the requestor lacked entitlements, the request would be rejected. We now correctly scope these objects so that they are not shown to unentitled requestors.
OCT
- FEATURE Add permission system for Ent customers, allowing fine-grained permissions for roles and tokens.
SEP
- FEATURE
Add
nameattribute to tokens, for easier token identification at a glance.
AUG
- FEATURE
Add
ALLOW_1_25X_OVERAGEoverage strategy option to policies.
JUL
v1.2
This changes the current API version from v1.1 to v1.2. With this, a number of backwards-compatible breaking changes have been introduced.
For current API consumers of v1.1 or earlier, nothing will change, thanks to version pinning. Please see our versioning strategy for more info.
- CHANGE
Rename
meta.constanttometa.codefor license validations. - CHANGE
Replace
concurrentwith overage strategy for policies. The default overage strategy for new policies isNO_OVERAGE, which behaves likeconcurrent=false. Set overage strategy toALWAYS_ALLOW_OVERAGEforconcurrent=truebehavior, which was the previous default for policies. Existing policies will continue to behave the same. - CHANGE
Remove
concurrentfrom policies. - CHANGE
Remove
concurrentfrom licenses. - FEATURE
Add
ALLOW_ACCESSexpiration strategy to policies.
JUN
v1.1
This changes the current API version from v1.0 to v1.1. With this, a number of backwards-compatible breaking changes have been introduced, detailed below. Essentially, the gist of the change set here is around refactoring releases to be more like a versioned "bucket" for artifacts, rather than a one-to-one relationship between a release and artifact, introducing support for multiple artifacts per-release.
For current API consumers of v1.0, nothing will change, thanks to version pinning. Please see our versioning strategy for more information about these types of changes.
For tips on migrating from v1.0 to v1.1, see our migration guide.
- CHANGE Change the release object's has-one artifact relationship to a has-many artifacts relationship. The endpoint(s) for the has-one artifact relationship has been deprecated, replaced with the has-many relationship.
- CHANGE Move the following attributes from the release object to the artifact object: filename, filetype, filesize, platform, signature, and checksum.
- CHANGE Change default status for releases to draft. Moving forward, releases must be explicitly published once all artifacts have been uploaded.
- CHANGE
Rename release
NOT_PUBLISHEDstatus toDRAFT. - DEPRECATE Deprecate upserting releases. Use the create endpoint instead. Since upserting was performed by filename, this is no longer needed.
- DEPRECATE Deprecate release upgrade actions. Use the upgrade release endpoint instead.
- FEATURE Add create, update and delete endpoints for artifacts. Artifacts are now managed like most other resources.
- FEATURE Add status attribute to artifacts. New artifacts will default to a waiting state and will move to an uploaded state once a file is uploaded.
- FEATURE Add arch resource, representing supported architectures (similar to the platform resource).
- FEATURE Add upgrade relationship to releases. This replaces the release's upgrade actions.
- FEATURE Add tag attribute to releases, for easier named lookups.
- FEATURE Add publish action to releases.
- FEATURE Add yank action to releases.
- FEATURE
Add
expiresfilter to licenses list endpoint, allowing querying for, e.g. licenses expiring within the next 30 days.
APR
- FEATURE Add action for checking out a cryptographic offline license file.
- FEATURE Add action for checking out a cryptographic offline machine file.
- DEPRECATE Deprecate machine proofs. We recommend checking out a machine file moving forward.
- FEATURE
Add ability to transfer licenses to policies with a less strict fingerprint matching strategy, e.g.
UNIQUE_PER_POLICYtoUNIQUE_PER_LICENSE. - FEATURE Add ability to transfer licenses to policies for another product, i.e. across products.
- FEATURE Add process resource, to control application/instance concurrency across machines.
- FEATURE Add leasing strategy to policies, to control how process instances are counted.
- FEATURE Add max processes to policies, to control application concurrency.
- FEATURE Add max processes to licenses, to override a policy's max processes.
MAR
- FEATURE Add user scope requirement to policies, to control whether license validations require a user scope. User scopes are great for user-locked licensing models.
- FEATURE
Add user scope to license validations, in addition to new validations codes:
USER_SCOPE_REQUIREDandUSER_SCOPE_MISMATCH. - FEATURE Add group resource, for grouping resources together e.g. under a company or team, and for setting collective group limits.
- FEATURE Add group relationship to users.
- FEATURE Add group relationship to licenses.
- FEATURE Add group relationship to machines.
- FIX
Fix issue causing some paginated requests to not contain a
linksproperty in the response.
FEB
- FEATURE Add heartbeat cull strategy to policies, to control whether to automatically deactivate dead machines i.e. a machine that fails to maintain a heartbeat.
- FEATURE
Add template variable support, e.g.
{{created}}and{{expiry}}, to signed license keys. - FIX Fix race condition which caused some dead machines to not be culled when very frequent heartbeat pings were being sent (e.g. every few seconds).
- FEATURE Add heartbeat resurrection strategy to policies, to control whether to revive dead machines within a short window from their death.
- FEATURE Add ability for policies to require that their machines maintain a heartbeat.
- FEATURE Add transfer strategy to policies, to control whether license expirations are reset when transferred to a different policy.
- FEATURE
Update users to support
nullpasswords, i.e. passwordless users. (Users without a password cannot login.) - FEATURE Add ability for admins to generate tokens on a user's behalf, via the user's tokens relationship.
- FEATURE Add actions for banning users. Banned users cannot authenticate with the API, and all their licenses will be invalidated.
JAN
- FEATURE Add authentication strategy to policies, to control how licenses are allowed to authenticate with the API. This feature allows for requests to authenticate using a license key (!!), rather than using a license token. By default, policies use a token authentication strategy i.e. behavior is unchanged.
- FEATURE
Add expiration basis to policies, to control when a license's initial
expiryis set. By default, a license's expiry is set from creation.
2021
DEC
- FEATURE
Update release
platformandfiletypeattributes to be nullable. (Setting either of these tonullwill exclude the release from upgrade functionality.)
NOV
- FEATURE Add product distribution strategies, to control access to releases. Releases can now be publicly distributed to users without a license, which opens up use cases for freemium business models, as well as for open source apps. Previous behavior of distributing only to licensed users remains the default.
- FEATURE
Add
signature,checksumanddescriptionattributes to releases. - FEATURE
Add
statusattribute to licenses. - FEATURE
Add
statusattribute to releases. - LAUNCH
Launch the official
keygenCLI for signing and publishing software releases. Integrate with our SDKs for secure automatic upgrades.
OCT
- LAUNCH Launch our official Go SDK for quickly implementing license activation and self-updating functionality into any Go program.
- FEATURE Add policy expiration strategies, to control how expired licenses should be validated and permissions for release access.
SEP
- FEATURE
Add support for defining per-license overrides for
maxMachines,maxCoresandmaxUsesproperties.
AUG
- INTEGRATE Add official Keygen Dist v2 release publisher and update provider integration for electron-builder.
JUL
- LAUNCH Launch Keygen Dist v2, a new version of our software distribution API that is now fully integrated into our licensing API.
- DEPRECATE Deprecate Keygen Dist v1 in favor of v2. We will continue to maintain v1, but we recommend upgrading to v2.
JUN
- FEATURE
Add
Keygen-Signatureheader to all API responses (signed using Ed25519 cryptography). - FEATURE
Add
Keygen-Signatureheader to webhook event delivery requests. - DEPRECATE
Deprecate
X-Signatureheader in favor ofKeygen-Signaturefor new accounts. (Existing accounts will continue to receive theX-Signatureheader.) - FIX
We accidentally broke
metadatafiltering for boolean and number query types. Because HTTP querystrings are string values, our search queried the metadata as if they were string values, when they were supposed to be booleans, integers or floats. This issue has been resolved and earlier search queries should now work as they did before the performance improvements.
MAY
- FEATURE
Add new license key signing scheme:
ED25519_SIGN.
APR
- FEATURE Add entitlement resources. Entitlements can be attached to policies and licenses to implement licensing models such as robust feature licenses.
MAR
- FEATURE Add additional request log information to the Dashboard, including new charts such as top licenses by volume, top URLs by volume and top IPs by volume.
- BILLING Add yearly billing options.
- FEATURE Add a default embedded dataset when creating a license with a cryptographic scheme.
- FEATURE Add permission for license tokens to generate offline machine activation proofs.
- FEATURE Add maximum CPU core enforcement to policies, and core counts to licenses and machines.
FEB
- FEATURE Add search support and other improvements to request logs, including recording data such as the request and response body, response signature, the requestor, and other information.
2020
DEC
- FEATURE Add fingerprint uniqueness strategy to policies, allowing prevention of duplicate machine fingerprints across a variety of scopes.
- FEATURE Add Python code examples to API reference.
- FEATURE
Add
meta.scope.fingerprintsscope to license validations, allowing multiple machine fingerprints to be validated at once. - FEATURE Add fingerprint matching strategy to policies to match any, some, or all provided machine fingerprints (if multiple are provided).
OCT
- FEATURE
Add new license key signing schemes:
RSA_2048_PKCS1_SIGN_V2andRSA_2048_PKCS1_PSS_SIGN_V2. - FEATURE Add cryptographic proofs for offline machine activations.
- FEATURE Add account recovery flow to recover a lost account ID.
- FEATURE
Add ability to override the filename of a download using Keygen Dist via a
filenamequery parameter. - FEATURE Add two-factor authentication to the Keygen Dashboard.
SEP
- FEATURE
Update autogenerated license key format to
v3, allowing for much shorter and more human-legible license keys. This does not effect existing license keys, only new license keys. - FEATURE
Update license token format to
v3, allowing for much shorter and more human-legible license tokens. - FEATURE
Update API token format to
v3, allowing for much easier identification of a token'stype. - FEATURE Add ability to specify a custom machine heartbeat monitor window.
AUG
- FEATURE
Add new administrative roles with limited permission subsets:
support-agent,sales-agent,developer. - FEATURE Add invoice history and management to account billing.
MAR
- FIX
Fix issue causing some pagination cases to respond with a next page link even when a next page is not available, resulting in a possible infinite loop when traversing pagination when expecting a
nullnext page value.
FEB
- FEATURE
Add
expiryattribute to user and admin token generation endpoint, allowing you to specify when/if a given token expires.
2019
DEC
- FEATURE Update license token permissions to be able to increment license usage (useful for incrementing usage in a client-side environment without an intermediary server).
- FEATURE
Add
unassignedfilter to licenses list endpoint. - FEATURE
Add
meta.tokenIdto profile endpoint, containing the ID of the API token being used for the request. - FEATURE
Add "whoami" headers to all responses:
X-Keygen-Account-Id,X-Keygen-Bearer-Id,X-Keygen-Token-Id, representing the current account, the current user making the request, and the user's API token being used for the request, respectively.
NOV
- FEATURE
Add
nonceparameter to license validation endpoints (which is then echoed back within the signed response body).
JUL
- FEATURE
Add additional rate limit headers:
X-RateLimit-Windowfor the closest rate limiting window to being reached,X-RateLimit-Countfor the request count within the current rate limiting window. - FIX Fix issue where machine deactivation was queued and performed asynchronously, which sometimes caused subsequent requests to the machines list endpoint to include the aforementioned deactivated machine (due to the deactivation process being async).
JUN
- FIX
Fix issue where the
expiredfilter for the license list endpoint would not include licenses without an expiry whenexpired=false. - FEATURE
Add ability to use a machine's
fingerprintattribute within URL params in place of its ID (granted thefingerprintis a valid URL param).
MAY
- FEATURE Add machine heartbeat system.
- FEATURE
Add
activefilter to users list endpoint.
APR
- FEATURE
Add license validation
meta, which includes the validation result, to payloads oflicense.validation.*webhook events. - FEATURE
Add
expiredfilter to licenses list endpoint.
MAR
- FEATURE Add ability for admins to manually update a user's password.
- FEATURE Add total pages and resource count to pagination meta.
2018
DEC
- FEATURE
Add current timestamp to validation response:
meta.ts. - FEATURE
Add
/v1/pingendpoint. Useful for testing if the Keygen API is reachable, e.g. firewall issues, lack of internet access, etc. - FEATURE Add support for webhook endpoints to subscribe to specific webhook events.
NOV
- FEATURE Add request logging.
OCT
- FEATURE Add support for named licenses.
SEP
- FEATURE Add support for offline licensing using cryptographically signed/encrypted license keys.
- FIX
Fix issue causing some
Acceptheaders to result in anHTTP 400 Bad Requestresponse code. - FEATURE Add helpful error response and specific error code for requests containing: invalid JSON, invalid tokens, invalid encodings.
- FIX
Fix issue where machines without a user associated with it could contain invalid
relationships.userlinkage. - FEATURE
Add
ipandhostnamefilters to machines list endpoint.
AUG
- FEATURE Add "protected" permission system to licenses.
- FEATURE Add better debugging tools for webhook event delivery failures.
JUL
- FIX Update license validation precedences, resolving an issue where machine-related validation-result codes would sometimes take precedence over invalid license state, such as the license being expired or suspended.
- FEATURE
Add
policyfilter to machines list endpoint. - FEATURE
Add machine count to license payloads via
/relationships/machines/meta/count.
JUN
- FEATURE Add permission for license tokens to read machines of the license it belongs to.
- FEATURE Add permission for license tokens to validate the license it belongs to.
- FIX Fix issue where password reset expiration date was incorrect within the email delivered to the user.
MAY
- FIX
Fix issue where regenerated tokens had an incorrect
expiryvalue (was adding 2 weeks to the currentexpiry, when it should have been adding 2 weeks from the current datetime). - FIX
Fix issue where license
expirycould not be removed. - FEATURE Add ability to limit machine activation and deactivation counts for license tokens.
- FEATURE
Update API token algorithm to
v2. - FEATURE Add support for more detailed error pointers for resource relationship-related errors.
- FIX Fix issue where a machine could be activated even after reaching the license token's activation limit.
- FIX
Fix issue where
nextCheckInwould display a non-nullvalue for non-check-in licenses.
APR
- FEATURE Add license token support, allowing client-side machine activation workflows.
- FEATURE Add search feature to the Dashboard.
- FEATURE Add ability to delete webhook events for compliance.
- FEATURE Add last response body and code to webhook events to aid in developer debugging.
- FEATURE Add additional error codes to failed webhook events, e.g. DNS issues, request timeout, etc. to aid in developer debugging.
- FEATURE
Add ability to use a user's
emailattribute within URL params in place of their ID.
MAR
- FEATURE
Add
X-Signatureheader to all API responses (signed using RSA cryptography). - FEATURE
Add
X-Signatureheader to webhook event delivery requests. - FEATURE
Add webhook events for license expiration lifecycle:
license.expiring-soon,license.expired. - FEATURE Add license usage count system.
- FEATURE
Add
meta.incrementandmeta.decrementparams for adjusting increment/decrement amount. - FEATURE Add ability for a license to transfer between users.
JAN
- FEATURE
Update behavior around
Acceptheader to respond with aapplication/jsoncontent-type when requested, rather than always responding withapplication/vnd.api+json. - FEATURE Add ability for a license to transfer between policies.
- FEATURE Add concurrent license support.
- LAUNCH Add our distribution API, Keygen Dist, to the interwebs. 🎊
2017
DEC
- FEATURE
Add support for
meta.scopeto license validation endpoints. - FEATURE
Add ability to use a license's
keyattribute within URL params in place of its ID (granted thekeyis a valid URL param).
NOV
- FEATURE Add webhook event for password resets (for manual fulfillment).
OCT
- FEATURE
Add
maxMachinesattribute to license payload. - FEATURE
Add validation result code to license validation payload
meta.
MAY
- FEATURE Add license check-in system.
- FEATURE
Add webhook events for license validations:
license.validation.succeeded,license.validation.failed.
APR
- FIX Fix issue where a duplicate license key could be created for an account (i.e. 2 licenses with the same key).
- FEATURE Update product token permissions to read all users and webhook events to aid in server-side integrations.
- FEATURE
Add
strictattribute to policies to remove the "hard" machine limit. - FEATURE
Update
floatingattribute default value tofalsefor policies. - FEATURE
Update
maxMachinesattribute default value to1for policies. - FEATURE Add "protected" permission system to policies.
FEB
- FEATURE
Add validation detail message to license validation payload
meta. - FEATURE
Add
events[]filter to webhook events list endpoint.
JAN
- FEATURE Add action to suspend and reinstate licenses.
- FEATURE
Add
suspendedfilter to licenses list endpoint. - FEATURE
Add account-related webhook events, e.g.
account.updated,account.billing.updated, etc. - FEATURE Add JSON-API linkage to singular relationships within response payloads.
- FIX Fix issue where rate limited response used incorrect JSON content type.
- FEATURE
Add
productfilter to keys list endpoint. - FEATURE
Allow user
metadataattribute to be specified during user creation for non-authenticated requests. - FEATURE Add support for specifying your own license key attribute during license creation.
- FEATURE
Add
v1version suffix to API tokens. - FEATURE Add "protected" permission system to accounts.
- LAUNCH Add the Keygen Dashboard to the interwebs. 🍻
2016
DEC
- FEATURE Add idempotency token to webhook events.
- FEATURE
Add
statusto webhook events.
NOV
- FEATURE Add webhook system.
OCT
- LAUNCH Add our licensing API, Keygen, to the interwebs. 🎉