Web API: manipulate product version


Is it possible to add a new version to a product, and then get its .dat file and GUID?



Can you mention your use case, what are you trying to achieve?


Hi Adnan

We want to offer our clients floating licences, but run them on our infrastructure, rather than give them a floating server binary. We really want to have access to the floating server stats and have more control over it in general.

We would run an instance of Lex float server for every client and give them address and IP. However, we need to make sure that only the client can access their floating server, and not just some random dude who downloaded the public version of the software and figured out that they can connect to our server on that port.

This means that we either need to send the client their own product.dat, or set up some kind of VPN such that their floating licence server instance will only be available in that VPN. To be honest, we don’t like the VPN idea at all, because it makes it harder in terms of distribution and support - some clients will either find it difficult, or impossible to have their devices on that VPN.

So we figured, that we could create a version of the product for each such client to generate a product.dat and GUID unique to that client, so only they would be able to ‘pair’ with their floating licence server.

We also want to set up full order automation. The scenario would be:

  • client makes a purchase for a pool of say 20 leases
  • post-purchase script is triggered
  • the script creates a product version
  • the script generates the floating licence in that new version for pool size 20
  • the script packages up the product.dat as a patch (to be installed over the public version of the software)
  • the script activates a server instance on some port using this product.dat and licence key
  • the script sends an email with instructions to the client

Based on the discussion in https://cryptlex.com/forums/discussion/comment/442/ I suppose we can’t just start multiple instances on our server, but I’m sure we could solve this with some kind of OS virtualisation or containers.

What really matters to us is the ability to fully automate the process.




I think the discussion on following page https://cryptlex.com/forums/discussion/126/support-multiple-float-servers-on-the-same-machine#latest fits your use case.

To prevent random dudes from using the license key, other than the intended audience, you can use country and ip restriction available in v3.


Geo IP filtering would not work for us, as we expect some of the corporate clients to be travelling internationally on a regular basis.


You can take a hybrid approach, of node-locked and floating licenses, to cater to travelling customers


We would rather invest into creating a solution that is generalised enough, than to figure out with a corporate client who of their staff needs what kind of licence on a person by person basis…
Given that you are going to provide floating servers hosted on your network, the only thing missing from our plan for automation is ability to automatically create a product version and retrieve its dat file.

I suppose this could be possible to achieve by running a sequence of curl requests, but its quite a considerable time investment, so I was wondering how difficult it would be for you guys to implement this via the Lex Web API…


As you said:

“So we figured, that we could create a version of the product for each such client to generate a product.dat and GUID unique to that client, so only they would be able to ‘pair’ with their floating licence server.”

Wouldn’t license key serve the same purpose. No random guy can use your software unless he has the key, assuming hosted floating (it’s live and you can test it) option is used.

Cryptlex v3 also offers identity management, so you can add additional auth layer too. It’s all live and you can play with it:



But the licence key for the floating server is used on the machine where the server is activated, how would this help? Or you mean that in this new hosted floating setup the licence key is used by the client every time they ask for a lease?


Their is no local floating server in this case. Each floating client will connect using Lexactivator with a license key, product id, and product.dat file.


Ah, I see. So, there will be like 20 floating users with a single key. Sounds good.