License Types
One of the fundamental building blocks of a license within our model is the license type. Every license issued will always have a type. In the vendor platform, this appears in many places, such as the license summary page as well as on the license detail page.
You cannot change the license type once it has been created.
LicenseSpring defines 4 types of licenses:
- Perpetual
- Time-Limited
- Subscription
- Consumption
Let's dive into the different license types:
A perpetual license does not expire. The is_expired field on a license check will always return False .
At the time of this writing, we distinguish a trial license through a Boolean value isTrial . If a license is of type trial, then the date stored in the validity period refers to the validity period of the trial. For example, if the license is of type perpetual, and isTrial is true, you would see a perpetual license with an expiry date in the vendor platform.
- Inactive The times_activated for this given license is 0 , meaning that this license has not been bound to a device.
- Active The times_activated for this field is greater than 0 , meaning that the license has been bound to at least one device.
- Disabled The license has been disabled by the vendor, this will override other rules for this status.
Time-limited licenses always have a calendar date as a value in the Expiry date row that you can see in the vendor platform.
On a license check, the field is_expired will be True if the expiry date is earlier than the server's current date, and False if the expiry date of the license is at a future date than the server's timestamp.
- Inactive The Total Activations for this given license is 0 , meaning that this license has not been bound to a device.
- Active The Total Activations for this field is greater than 0 , meaning that the license has been bound to at least one device.
- Disabled The license has been disabled by the vendor, this will override other rules for this status.
There are other timestamps you can work with, instead of just at the license type level. For instance, you can set an expiry date for a specific feature, or define a maintenance period validity.
Users can set a pre-determined expiration date for a license that does not depend on the time of first activation by doing the following at time of issuance:
A subscription license synchronizes the status of the subscription with the state of the license.
For a subscription license, LicenseSpring requires an integration to an external source of truth (like a recurring billing system). LicenseSpring updates the status of the license according to the status of the subscription, which is handled by a 3rd party.
Unlike the other license types you can encounter in LicenseSpring, the status is not dependent on the value of the times_activated field. Instead, a license of type subscription will be active once created, and will remain active until the system handling the subscription tells LicenseSpring that the subscription is no longer active (cancelled, refunded, etc). In this case, the license status will be set to inactive
Grace periods offer you the flexibility to determine a specific timeframe, measured in hours, subsequent to the expiry of the designated validity period.
During this defined interval, the license will retain its validity (isExpired() status will remain false), ensuring a seamless transition even after the official expiration.
- Inactive LicenseSpring received information from the external source of truth stating that the subscription is no longer active.
- Active This is the default state of a subscription license, when it is created.
- Disabled The license has been disabled by the vendor, this will override other rules for this status.
A consumption license, also known as a metered license, permits usage metering. consumption licenses work by setting a value the the resource the vendor wishes to meter, and then recording the times that resource has been used. The resource can really be anything that has a discrete value, for example:
- Times the software was run
- The number of API requests made
- Number in minutes that a pooled resource was used
- Credit
Consumption licenses support overages, total consumptions can be incremented or decremented (by adding a negative value), and the total consumptions can be periodically reset.
- Max Consumptions: Number of "consumptions" granted to the end user.
- Total Consumptions: Number of "consumptions" the end-user has currently consumed. This number must be less than or equal to the max consumptions + max overages.
- Overages: If overages are allowed, then the software vendor can specify a value that the license can exceed the value for max consumptions by. Otherwise, the max overages is 0.
- Consumption Period: If this field is set, then the value for total consumptions is reset to 0. The consumption period can be Daily, Weekly, Monthly or Annually
- Daily is reset at midnight UTC
- Weekly is reset on Monday at midnight UTC
- Monthly is reset on the first day of the month at midnight UTC
- Annually is reset on the first day of the year at midnight UTC
- Inactive : The Total Activations for this given license is 0 , meaning that this license has not been bound to a device.
- Active : the Total Activations for this field is greater than 0 , meaning that the license has been bound to at least one device.
- Disabled : The license has been disabled by the vendor, this will override other rules for this status.
LicenseSpring also allows an ISV to meter the usage of an individual module or component by defining features consumptions, and adding them as part of the license entitlements.