Module Licensing using Module Showcase API

I'm trying to understand how to properly license a module using the Module Showcase API (MSA). I've successfully created several licenses for our gateways so far. These are 6-digit permanent licenses. What I've come to realise is that there is apparently nothing that stops me from installing the license across multiple gateways.

I've done the tests on two gateways, one with 6-digit normal license (GW) and one with a 6-digit developer license (GW_DEV)

  1. I've pressed the [New License] button and added two modules. Pressed Save. This creates a 6-Character license with 0 activation grants. The license now shows as "Activated", which I assume is because there are 0 activations left — even though it hasn't been activated anywhere yet.

  2. Without adding any grants, I install the license on my GW-gateway. It installs successfully and the modules appear as "Activated" on the gateway.

  3. In the MSA, the license now has the state "Emergency Trial" and -1 as remaining grants. A reactivation on the gateway fails and the logs show that there are "No activations left". The module is still activated and apparently licensed.

  4. I add a grant so that the remaining grants now show 0. This results in the license now lists as "Activated" in the MSA.

  5. With 0 remaining activations, I'm still able to install the license on a different gateway (GW_DEV). I now have two gateways with the same license.

  6. On the MSA, the license once again lists as "Emergency Trial".

  7. I deactivate the license on my second gateway which results in the MSA showing Activated with 0 grants, as expected.

  8. I now try the suspended checkbox on the license in the MSA. I expect this to invalidate the license on the first gateway if I reactivate it.

  9. With the license suspended I reactivate it on my first gateway, but it successfully reactivates with no warnings what so ever.

  10. The only way to deactivate a module from the gateway is to remove it from the license key. Nothing I do to the license itself can invalidate it once it has been installed.

I've Googled, copiloted, chat-gpt'd, even Binged this, but I can't find any documentation on the Module Showcase API and how to use it properly.

My questions are:

  1. Is my assumption that 0 activation grants allows for 1 activation correct?
  2. What is the effect of the "Suspended" checkbox?
  3. Does the Developer license type work in any other way than a normal Ignition license?
  4. What is the Base License Key in the MSA used for?
  5. Should i use the Location field or Notes for storing which customer this license is owned by?
  1. You should preset grants to 1 after you've set up the license. Be sure to add your module IDs to the license key.
  2. Should suspend any module IDs in that license.
  3. Developer licenses are no different from regular licenses.
  4. No idea. I never use it.
  5. I store customer info and purchase date in the notes.

(Are you processing the license status in your module hook?)

I believe this is where you can restrict the license to only work on a specific IA license key.

Yes, after some testing, suspending a license seems to deactivate the licensed module, setting it in trial mode. However, it has no effect on permanent licenses. Permanent licenses can be installed even if they are suspended.

Setting the grants to 1 technically allow for two installations. When I install the same licenses on two different gateways the module gets activated on both. However, in the Module Showcase API, the license status transitions from “Available” with 1 grant, to “Activated” with 0 grants and finally to “Emergency Trial” with -1 activations.

Do you know if the Emergency Trial mode behaves the same way as the Gateway Emergency Trial - meaning the license stops working after 7 days? I could wait and see, but I need to provide some answers to my supervisors.

I may be missing the bigger picture here — I suppose it’s called a permanent license for a reason. Still, it would be helpful if there were a way to limit the number of gateways the module can be installed on.

Thank you for your insight.