Files
2026-07-20 21:03:05 +02:00

35 lines
1.7 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.org/schema/license-v1.json",
"title": "Universal Product Licence Claims",
"type": "object",
"additionalProperties": false,
"required": ["version", "licenseId", "issuer", "customer", "product", "edition", "issuedAt", "expiresAt", "verification"],
"properties": {
"version": {"const": 1},
"licenseId": {"type": "string", "minLength": 1, "maxLength": 200},
"issuer": {"type": "string", "minLength": 1, "maxLength": 200},
"customer": {"type": "string", "minLength": 1, "maxLength": 300},
"product": {"type": "string", "minLength": 1, "maxLength": 200},
"edition": {"type": "string", "minLength": 1, "maxLength": 100},
"features": {"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true},
"limits": {"type": "object", "additionalProperties": {"type": "integer", "minimum": 0}},
"domains": {"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true},
"instanceIds": {"type": "array", "items": {"type": "string", "minLength": 1}, "uniqueItems": true},
"issuedAt": {"type": "integer", "minimum": 1},
"notBefore": {"type": "integer", "minimum": 1},
"expiresAt": {"type": "integer", "minimum": 1},
"verification": {
"type": "object",
"additionalProperties": false,
"required": ["mode"],
"properties": {
"mode": {"enum": ["offline", "hybrid", "online"]},
"leaseTtlSeconds": {"type": "integer", "minimum": 0},
"offlineGraceSeconds": {"type": "integer", "minimum": 0}
}
},
"metadata": {"type": "object", "additionalProperties": {"type": "string"}}
}
}