{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/folio/main/json-schema/folio-license-schema.json", "title": "License", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/folio-mod-licenses-openapi.yml#/components/schemas/License", "allOf": [ { "$ref": "#/$defs/LicenseCore" }, { "type": "object", "properties": { "type": { "description": "The license type (e.g. Local, Consortial, National, Alliance)", "oneOf": [ { "type": "string" }, { "$ref": "#/$defs/RefData" } ] }, "localReference": { "type": "string", "description": "A local reference identifier for the license" }, "alternateNames": { "type": "array", "description": "Alternative names for the license", "items": { "$ref": "#/$defs/AlternateName" } }, "orgs": { "type": "array", "description": "Organisations associated with the license", "items": { "$ref": "#/$defs/LicenseOrg" } }, "amendments": { "type": "array", "description": "Amendments to the license, sorted by start date descending", "items": { "$ref": "#/$defs/LicenseAmendment" } } } } ], "$defs": { "AlternateName": { "type": "object", "required": [ "id", "name" ], "properties": { "id": { "type": "string", "format": "uuid", "readOnly": true }, "name": { "type": "string" }, "owner": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "readOnly": true, "description": "License that owns the alternate name" } } }, "CustomPropertyDefinition": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "primary": { "type": "boolean" }, "defaultInternal": { "type": "boolean" }, "retired": { "type": "boolean" }, "weight": { "type": "integer" }, "type": { "type": "string", "description": "Java class name indicating the property type (e.g. CustomPropertyInteger, CustomPropertyText, CustomPropertyRefdata)" }, "category": { "$ref": "#/$defs/RefDataCategory" } } }, "CustomPropertyValue": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "integer", "readOnly": true }, "internal": { "type": "boolean" }, "note": { "type": "string" }, "publicNote": { "type": "string" }, "value": { "oneOf": [ { "type": "string" }, { "type": "integer" }, { "$ref": "#/$defs/RefData" } ] }, "type": { "$ref": "#/$defs/CustomPropertyDefinition" } } }, "DocumentAttachment": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "readOnly": true }, "name": { "type": "string" }, "note": { "type": "string" }, "url": { "type": "string", "format": "uri" }, "dateCreated": { "type": "string", "format": "date-time", "readOnly": true }, "lastUpdated": { "type": "string", "format": "date-time", "readOnly": true } } }, "InternalContact": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "readOnly": true }, "owner": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "readOnly": true, "description": "License that owns the contact" }, "user": { "type": "string", "format": "uuid" }, "role": { "description": "The contact's role in relation to the license", "oneOf": [ { "type": "string" }, { "$ref": "#/$defs/RefData" } ] } } }, "LicenseAmendment": { "allOf": [ { "$ref": "#/$defs/LicenseCore" } ] }, "LicenseCore": { "type": "object", "required": [ "id", "name" ], "properties": { "id": { "type": "string", "format": "uuid", "readOnly": true, "description": "Unique identifier" }, "name": { "type": "string", "description": "The name of the license or amendment" }, "description": { "type": "string", "description": "A description of the license or amendment" }, "status": { "description": "The status (e.g. In negotiation, Not yet active, Active, Rejected, Expired)", "oneOf": [ { "type": "string" }, { "$ref": "#/$defs/RefData" } ] }, "startDate": { "type": "string", "format": "date", "description": "The date on which the license or amendment becomes active" }, "endDate": { "type": "string", "format": "date", "description": "The date on which the license or amendment expires" }, "endDateSemantics": { "description": "How the end date should be interpreted (e.g. Explicit, Open ended, Implicit)", "oneOf": [ { "type": "string" }, { "$ref": "#/$defs/RefData" } ] }, "openEnded": { "type": "boolean", "description": "Derived flag indicating whether the license or amendment is open-ended" }, "dateCreated": { "type": "string", "format": "date-time", "readOnly": true, "description": "The date and time the record was created" }, "lastUpdated": { "type": "string", "format": "date-time", "readOnly": true, "description": "The date and time the record was last updated" }, "tags": { "type": "array", "description": "Tags applied to the license or amendment", "items": { "$ref": "#/$defs/Tag" } }, "docs": { "type": "array", "description": "Documents attached to the license or amendment", "items": { "$ref": "#/$defs/DocumentAttachment" } }, "supplementaryDocs": { "type": "array", "description": "Supplementary documents attached to the license or amendment", "items": { "$ref": "#/$defs/DocumentAttachment" } }, "contacts": { "type": "array", "description": "Internal contacts associated with the license or amendment", "items": { "$ref": "#/$defs/InternalContact" } }, "customProperties": { "type": "object", "description": "Custom properties (license terms) — keys are property names, values are arrays of property value instances", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/CustomPropertyValue" } } } } }, "LicenseOrg": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "readOnly": true }, "owner": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } }, "readOnly": true, "description": "License that owns the organisation" }, "org": { "$ref": "#/$defs/Organisation" }, "primaryOrg": { "type": "boolean", "description": "Whether this is the primary organisation for the license", "default": false }, "note": { "type": "string", "description": "A note about this organisation's relationship to the license" }, "roles": { "type": "array", "description": "The roles this organisation plays in relation to the license", "items": { "type": "object", "required": [ "id", "role" ], "properties": { "id": { "type": "string", "format": "uuid", "readOnly": true }, "owner": { "$ref": "#/$defs/LicenseOrg", "readOnly": true }, "role": { "description": "The role (e.g. Licensor)", "oneOf": [ { "type": "string" }, { "$ref": "#/$defs/RefData" } ] }, "note": { "type": "string" } } } } } }, "Organisation": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string" }, "orgsUuid": { "type": "string", "format": "uuid" }, "orgsUuid_object": { "type": "object" } } }, "RefData": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "readOnly": true }, "label": { "type": "string" }, "value": { "type": "string" }, "owner": { "$ref": "#/$defs/RefDataCategory" } } }, "RefDataCategory": { "type": "object", "required": [ "id" ], "properties": { "desc": { "type": "string" }, "id": { "type": "string", "readOnly": true }, "internal": { "type": "boolean" }, "values": { "type": "array", "items": { "$ref": "#/$defs/RefData" } } } }, "Tag": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "integer", "readOnly": true }, "value": { "type": "string" }, "normValue": { "type": "string" } } } } }