Files
micro-license-server/README.md
2025-10-18 16:32:47 -04:00

2.1 KiB
Raw Blame History

Micro License Server

A very small, self-hosted license server intended for lower traffic projects.

This license server has no concept of separate devices, so use only if you don't intend to restrict the amount of devices that a license key can be used on.

Environment Setup

Replace the placeholder secrets in .env with secure random values using openssl rand:

sed -i \
  -e "s/PG_CHANGEME/$(openssl rand -base64 32)/" \
  -e "s/API_CHANGEME/$(openssl rand -base64 48)/" \
  .env

API Endpoints

All authenticated endpoints expect a Bearer token via the Authorization header that matches API_KEY from .env. Unless stated otherwise, responses are JSON.

Method Path Auth Description Key Request Parameters Response Highlights
GET / No Returns server metadata. {"version": "Micro License Server vX.Y.Z"}
POST /license Yes Generates a new license key. Query: is_active (bool, default true), expiration_date (ISO 8601, optional), info (string, optional metadata) license_key, expiration_timestamp, is_active, info
GET /is_valid No Validates a license key and records last usage time. Query: license_key (required) Boolean validity
POST /license/{license_key}/disable Yes Deactivates a license key. Path: license_key license_key, is_active: false
POST /license/{license_key}/enable Yes Reactivates a license key. Path: license_key license_key, is_active: true
POST /license/{license_key}/expiration Yes Sets or clears a license key expiration. Path: license_key; Query: expiration_date (ISO 8601 or omit to clear) license_key, expiration_timestamp (nullable)
GET /license/export Yes Exports license inventory as CSV ordered by issue time. CSV with license_key,issue_timestamp,expiration_timestamp,is_active
GET /history/export Yes Exports audit history as CSV. Query: token (optional substring filter) CSV with action,timestamp