Changelog

An RSS feed of our changelog is available.

2021

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, checksum and description attributes to releases.
  • FEATURE Add status attribute to licenses.
  • FEATURE Add status attribute to releases.
  • LAUNCH Launch the official keygen CLI 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, maxCores and maxUses properties.

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-Signature header to all API responses (signed using Ed25519 cryptography).
  • FEATURE Add Keygen-Signature header to webhook event delivery requests.
  • DEPRECATE Deprecate X-Signature header in favor of Keygen-Signature for new accounts. (Existing accounts will continue to receive the X-Signature header.)
  • FIX We accidentally broke metadata filtering 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 activation 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.fingerprints scope 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_V2 and RSA_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 filename query 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 activation token format to v3, allowing for much shorter and more human-legible activation tokens.
  • FEATURE Update API token format to v3, allowing for much easier identification of a token's type.
  • 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 null next page value.

FEB

  • FEATURE Add expiry attribute to user and admin token generation endpoint, allowing you to specify when/if a given token expires.

2019

DEC

  • FEATURE Update activation token permissions to be able to increment license usage (useful for incrementing usage in a client-side environment without an intermediary server).
  • FEATURE Add unassigned filter to licenses list endpoint.
  • FEATURE Add meta.tokenId to 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 nonce parameter to license validation endpoints (which is then echoed back within the signed response body).

JUL

  • FEATURE Add additional rate limit headers: X-RateLimit-Window for the closest rate limiting window to being reached, X-RateLimit-Count for 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 expired filter for the license list endpoint would not include licenses without an expiry when expired=false.
  • FEATURE Add ability to use a machine's fingerprint attribute within URL params in place of its ID (granted the fingerprint is a valid URL param).

MAY

  • FEATURE Add machine heartbeat system.
  • FEATURE Add active filter to users list endpoint.

APR

  • FEATURE Add license validation meta, which includes the validation result, to payloads of license.validation.* webhook events.
  • FEATURE Add expired filter 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/ping endpoint. 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 Accept headers to result in an HTTP 400 Bad Request response 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.user linkage.
  • FEATURE Add ip and hostname filters 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 policy filter to machines list endpoint.
  • FEATURE Add machine count to license payloads: relationships.machines.meta.count.

JUN

  • FEATURE Add permission for activation tokens to read machines of the license it belongs to.
  • FEATURE Add permission for activation 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 expiry value (was adding 2 weeks to the current expiry, when it should have been adding 2 weeks from the current datetime).
  • FIX Fix issue where license expiry could not be removed.
  • FEATURE Add ability to limit machine activation and deactivation counts for activation 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 activation token's activation limit.
  • FIX Fix issue where nextCheckIn would display a non-null value for non-check-in licenses.

APR

  • FEATURE Add activation 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 email attribute within URL params in place of their ID.

MAR

  • FEATURE Add X-Signature header to all API responses (signed using RSA cryptography).
  • FEATURE Add X-Signature header 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.increment and meta.decrement params for adjusting increment/decrement amount.
  • FEATURE Add ability for a license to transfer between users.

JAN

  • FEATURE Update behavior around Accept header to respond with a application/json content-type when requested, rather than always responding with application/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.scope to license validation endpoints.
  • FEATURE Add ability to use a license's key attribute within URL params in place of its ID (granted the key is a valid URL param).

NOV

  • FEATURE Add webhook event for password resets (for manual fulfillment).

OCT

  • FEATURE Add maxMachines attribute 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 strict attribute to policies to remove the "hard" machine limit.
  • FEATURE Update floating attribute default value to false for policies.
  • FEATURE Update maxMachines attribute default value to 1 for 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 suspended filter 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 product filter to keys list endpoint.
  • FEATURE Allow user metadata attribute 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 v1 version 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 status to webhook events.

NOV

  • FEATURE Add webhook system.

OCT

  • LAUNCH Add our licensing API, Keygen, to the interwebs. 🎉