{ "$schema": "http://json-schema.org/draft-04/schema#", "$id": "https://raw.githubusercontent.com/api-evangelist/folio/main/json-schema/folio-application-descriptor-schema.json", "title": "Application Descriptor Schema", "description": "Application Descriptor for Application Manager Installer", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/folio-mgr-applications-am-openapi.yml#/components/schemas/applicationDescriptor", "type": "object", "x-implements": [ "org.folio.common.domain.model.Artifact" ], "allOf": [ { "$ref": "#/$defs/artifact" } ], "properties": { "description": { "description": "A description of application manager", "type": "string" }, "metadata": { "$ref": "#/$defs/metadata", "readonly": true }, "modules": { "description": "List of modules which are grouped by the application", "type": "array", "id": "module", "items": { "$ref": "#/$defs/module" } }, "uiModules": { "description": "List of ui-modules which are grouped by the application", "type": "array", "id": "uiModule", "items": { "$ref": "#/$defs/module" } }, "moduleDescriptors": { "description": "List of module descriptors which are grouped by the application", "type": "array", "id": "moduleDescriptor", "items": { "$ref": "#/$defs/moduleDescriptor" } }, "uiModuleDescriptors": { "description": "List of ui module descriptors which are grouped by the application", "type": "array", "id": "uiModuleDescriptor", "items": { "$ref": "#/$defs/moduleDescriptor" } }, "dependencies": { "description": "List of dependencies to other applications", "type": "array", "id": "dependency", "items": { "$ref": "#/$defs/dependency" } }, "deployment": { "description": "Deployment information", "$ref": "#/$defs/applicationDeployment" } }, "additionalProperties": true, "$defs": { "applicationDeployment": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Application Deployment Schema", "description": "An information about application deployment generated by pipelines", "type": "object", "properties": { "modules": { "description": "List of modules which are grouped by the application", "type": "array", "id": "module", "items": { "$ref": "#/$defs/module" } }, "ui-modules": { "description": "List of modules which are grouped by the application", "type": "array", "id": "module", "items": { "$ref": "#/$defs/module" } }, "deployment": { "description": "Deployment info about application", "type": "object", "title": "Deployment", "properties": { "type": { "description": "type of deployment", "type": "string" }, "chart": { "description": "url address of application where its been deployed", "type": "string" } } } }, "additionalProperties": false }, "artifact": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Application Artifact Schema", "description": "Artifact Descriptor for Application Manager Installer", "type": "object", "properties": { "id": { "description": "A Name-Version id for identifying this artifact", "type": "string" }, "name": { "description": "Artifact name", "type": "string" }, "version": { "description": "The version of an artifact (semantic version approach)", "$ref": "#/$defs/version" } }, "additionalProperties": false, "required": [ "name", "version" ] }, "dependency": { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "description": "Dependency", "x-class-extra-annotation": "@com.fasterxml.jackson.annotation.JsonIgnoreProperties({\"id\"})", "properties": { "name": { "description": "Artifact name", "type": "string" }, "version": { "description": "The concrete version of an artifact (semantic version) or the version range", "type": "string", "x-extra-annotation": "@org.folio.common.domain.validation.constraints.SemVersionOrRange" }, "optional": { "description": "Indicates whether the dependency is optional", "type": "boolean", "default": false }, "preRelease": { "description": "Controls pre-release (e.g. SNAPSHOT) inclusion when resolving this dependency's version range: 'true' includes pre-release alongside stable, picking the overall highest match (default); 'false' resolves stable versions only; 'only' resolves pre-release versions only.", "type": "string", "enum": [ "true", "false", "only" ], "default": "true" } }, "additionalProperties": false, "required": [ "name", "version" ] }, "metadata": { "$schema": "http://json-schema.org/draft-04/schema#", "title": "Metadata Schema", "description": "Metadata about creation and changes to records, provided by the server (client should not provide)", "type": "object", "properties": { "createdDate": { "description": "Date and time when the record was created", "type": "string", "format": "date-time" }, "createdBy": { "description": "ID of the user who created the record (when available)", "type": "string", "format": "uuid" }, "modifiedDate": { "description": "Date and time when the record was last updated", "type": "string", "format": "date-time" }, "modifiedBy": { "description": "ID of the user who last updated the record (when available)", "type": "string", "format": "uuid" } }, "additionalProperties": false, "required": [ "createdDate" ] }, "module": { "$schema": "http://json-schema.org/draft-04/schema#", "type": "object", "description": "Module", "x-implements": [ "org.folio.common.domain.model.Artifact" ], "allOf": [ { "$ref": "#/$defs/artifact" } ], "properties": { "url": { "description": "URL to the artifact", "type": "string" } } }, "moduleDescriptor": { "$schema": "http://json-schema.org/draft-04/schema#", "description": "A FOLIO Module", "type": "object" }, "version": { "$schema": "http://json-schema.org/draft-04/schema#", "description": "A universally unique identifier (UUID), this is a 128-bit number used to identify a record and is shown in hex with dashes, for example 6312d172-f0cf-40f6-b27d-9fa8feaf332f; the UUID version must be from 1-5; see https://dev.folio.org/guides/uuids/", "type": "string", "pattern": "^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([\\dA-Za-z-]+(?:\\.[\\dA-Za-z-]+)*))?(?:\\+[\\dA-Za-z-]+)?$" } } }