Skip to content

Production NFZ License Server contract

This page documents the runtime contract aligned with the production nfz-license-server-phase44-22-first-admin-bootstrap-ux-guard source.

Canonical endpoint

txt
POST https://licence.nfz-serveur.fr/api/license/verify

The runtime license-status service calls this endpoint on the server side only. NFZ_LICENSE_KEY must never be exposed to the browser.

Request sent by the product

json
{
  "productId": "nfz-docs-builder",
  "productKey": "nfz-docs-builder",
  "productDomain": "vitepress-buider.com",
  "edition": "pro",
  "licenseKey": "NFZ-...",
  "instanceId": "nfz-docs-...",
  "fingerprint": "sha256:...",
  "hostname": "container-hostname",
  "version": "0.1.108",
  "tenantId": "default",
  "metadata": {
    "source": "nfz-docs-notion-editor",
    "runtime": "nuxt-feathers-zod",
    "contract": "nfz-license-server-phase44-22",
    "activationTest": false
  }
}

Expected response

NFZ License Server returns the edition, entitlements, limits, subscription status and signature metadata:

json
{
  "allow": true,
  "state": "active",
  "status": "active",
  "productId": "nfz-docs-builder",
  "productKey": "nfz-docs-builder",
  "edition": "pro",
  "features": {
    "docsEditor": true,
    "buildVitePress": true,
    "exportStaticZip": true,
    "exportSourceProject": true,
    "publishingConnectors": true,
    "customBranding": true,
    "mediaS3": true,
    "auditTrail": true,
    "multiTenant": true,
    "advancedI18n": true,
    "prioritySupport": true,
    "sso": false
  },
  "limits": {
    "maxTenants": 10,
    "maxDocsSpaces": null,
    "maxEditors": 25,
    "maxStorageMb": 10240,
    "maxBuildsPerMonth": 2000,
    "auditRetentionDays": 180
  },
  "signatureAlgorithm": "ed25519",
  "keyId": "nfz-docs-builder...",
  "signature": "..."
}

Docker/Portainer variables

ini
NFZ_PRODUCT_ID=nfz-docs-builder
NFZ_PRODUCT_DOMAIN=vitepress-buider.com
NFZ_LICENSE_MODE=remote
NFZ_LICENSE_KEY=<clé-client>
NFZ_LICENSE_SERVER_URL=https://licence.nfz-serveur.fr
NFZ_LICENSE_VERIFY_PATH=/api/license/verify
NFZ_LICENSE_INSTANCE_ID=<id-stable-instance>
NFZ_LICENSE_HOSTNAME=<nom-hote-ou-client>
NFZ_APP_VERSION=0.1.108

Cryptographic response verification is optional to avoid breaking existing deployments:

ini
NFZ_LICENSE_VERIFY_SIGNATURE=true
NFZ_LICENSE_SERVER_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----..."
# ou
NFZ_LICENSE_SERVER_PUBLIC_KEY_FILE=/run/secrets/nfz_license_public_key.pem

Control points

  • productId and productKey must remain nfz-docs-builder.
  • nfz-docs-editor, nfz-docs-notion-editor, vitepress-builder and vpb are server-side aliases, but new deployments must no longer use them.
  • instanceId must stay stable across restarts when the container is migrated.
  • fingerprint is used for activation tracking and the maxInstances limit.
  • When the server is unavailable, the runtime applies the grace period configured by NFZ_LICENSE_GRACE_PERIOD_HOURS.

Public user guide generated with VitePress.