Cartonization 1.0.0

License

Cartonization is licensed per installation with a license key: one line of text (CZ2.<payload>.<signature>) that says who it is licensed to, until when, and for how many installations. It is checked offline with a digital signature: nothing is sent anywhere, so it works in networks without internet access.

The license covers the packing API: POST /api/pack, POST /api/capacity and POST /api/pack/multi-level.

Licenses at a glance#

Production license Evaluation (trial) license
Comes with the key you receive when you buy the download (bundled), or a trial key from us
Expiry always has an expiry date may have none
API responses unchanged carry "license": { "trial": true }
Display components unchanged show a TRIAL mark (Summary, Ranking, Containers and over the 3D View)
After expiry the packing API answers 402 (no grace period) the same, if it has an expiry date

Your key also states the number of installations it covers. Each running install shows its installation id on the Status page; keep the number of installs you run within your license (it is part of the license terms, not a technical limit). Set CARTONIZATION_INSTANCE_ID if you want a fixed id, for example for containers that are recreated often.

How to get a license#

Email support@wms-utils.com with:

We reply with your license key: one line of text that starts with CZ2., valid through its expiry date. Install it as described in Install your license.

Renewals#

Ask for a renewed key before your license expires; the Status page shows the expiry date and the days left. Install the new key the same way and restart the service: nothing else changes, and your integration keeps working. There is no grace period, so renew in time (see When a license expires).

Changes#

More installations or a new company name need a new key. Email us with your license id (shown on the Status page) and the change; install the new key and restart.

Lost key#

Email us your company name and, if you have it, the license id from the Status page. We keep a record of every key we issue.

The evaluation license#

The download includes an evaluation (trial) license, so everything works right away. On a trial license:

A trial license you receive from us works the same way; it may have an end date. A production license removes the marker and the mark.

Install your license#

To switch to your production license, set one of these environment variables and restart the service:

As soon as one of them is set, that license decides, and the evaluation license is no longer used, also when the configured key is expired or not valid. The Status page (and GET /v1/info) shows the license in use: where it comes from (bundled evaluation license or configured license), whether it is a trial, the licensee, license id, expiry date and days left, the number of installations, and this installation's id. The service also logs one line about the license when it starts, and one whenever its status changes.

When a license expires or is not valid#

A license works through the end of its expiry date (UTC). There is no grace period: from the next day on, the packing API answers 402 until you install a renewed key. The same happens at once when no key is set or the configured key is not valid (mistyped, truncated, or a LICENSE_FILE that cannot be read). The 402 body has a code and a message that says what to do (API › Errors):

json
{"error":"The license of this cartonization installation expired on 2027-10-31, so packing (POST /api/pack, /api/capacity and /api/pack/multi-level) is disabled. Install a renewed license key with LICENSE_KEY or LICENSE_FILE and restart the cartonization service.","code":"license_expired"}
code When
license_required No license key is set, or the configured key is not valid (the reason is in the server log)
license_expired The license expired (after the end of its expiry day, UTC)
product_not_licensed The license does not include cartonization

These keep working, so you can always see why: the playground at /, these pages, the Status page, /widget/, GET /api/algorithms, GET /health and GET /v1/info. A running service notices the expiry by itself (it checks on every request and at least once an hour) and logs it.

Before the expiry date there are no warnings in the components or the API: check the Status page or GET /v1/info (license.daysLeft) in your monitoring, and renew in time.

Questions#