{ "$comment": "This file was automatically generated, do not modify it by hand. Instead, modify the source Typescript file, and run `pnpm types build:software-catalog-schemas`.", "$id": "software-catalog-template.manifest.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Software Catalog template item manifest", "description": "The data needed to apply a single version of a Software Catalog template item.", "type": "object", "properties": { "annotations": { "description": "An unstructured key value map that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying this object.", "type": "object", "patternProperties": { "^([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,253}[\\/])?([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,63}[a-zA-Z0-9]?)$": { "type": "string", "maxLength": 262144 } }, "additionalProperties": false, "examples": [ { "imageregistry": "https://hub.docker.com/", "mia-platform.eu/version": "14.0.0" } ] }, "categoryId": { "description": "The unique identifier of this item's version's category.", "type": "string" }, "description": { "description": "A brief description of this item.", "type": "string" }, "documentation": { "description": "A reference to the documentation regarding this item.", "type": "object", "properties": { "type": { "description": "The type of documentation.", "type": "string", "enum": [ "externalLink", "markdown" ] }, "url": { "description": "The URL where to reach for the documentation.", "type": "string" } }, "additionalProperties": false, "required": [ "type", "url" ], "examples": [ { "type": "externalLink", "url": "https://example.com" }, { "type": "markdown", "url": "https://raw.githubusercontent.com/mia-platform-marketplace/Go-Hello-World-Microservice-Example/refs/heads/1.20/README.md" } ] }, "imageUrl": { "description": "The URL of the image associated with this item.", "type": "string" }, "itemId": { "description": "A string that, alongside with `.version.name`, uniquely identifies this item within its namespace (`.tenantId`). Read-only.", "type": "string", "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$", "minLength": 1, "maxLength": 63, "examples": [ "crud-service", "node-js-template" ] }, "itemTypeDefinitionRef": { "description": "The reference to an Item Type Definition in the form of its composite primary key. Read-only.", "type": "object", "properties": { "name": { "description": "The name of the Item Type Definition (references its `.metadata.name`).", "type": "string", "pattern": "^[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$", "minLength": 1, "maxLength": 63, "examples": [ "plugin", "custom-workload", "ai-agent" ] }, "namespace": { "description": "The identifier of the Item Type Definition namespace (references its `.metadata.namespace.id`).", "type": "string", "minLength": 1 } }, "required": [ "name", "namespace" ], "additionalProperties": false, "examples": [ { "name": "plugin", "namespace": "mia-platform" } ] }, "labels": { "description": "A map of string keys and values that can be used to organize and categorize (scope and select) objects.", "type": "object", "patternProperties": { "^([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,253}[\\/])?([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,63}[a-zA-Z0-9]?)$": { "type": "string", "pattern": "^$|^[a-zA-Z0-9](?:[a-zA-Z0-9._-]{0,61}[a-zA-Z0-9])?$", "maxLength": 63 } }, "additionalProperties": false, "examples": [ { "environment": "dev", "mia-platform.eu/tenant": "my-company", "track": "" } ] }, "lifecycleStatus": { "description": "The lifecycle status of this item.", "type": "string", "enum": [ "coming-soon", "draft", "published", "maintenance", "deprecated", "archived" ] }, "links": { "description": "A list of external hyperlinks.", "type": "array", "items": { "type": "object", "properties": { "url": { "description": "The URL in standard URI format.", "type": "string", "pattern": "https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_+.~#?&\\/=]*)$" }, "displayName": { "description": "A user-friendly title for the link.", "type": "string" } }, "additionalProperties": false, "required": [ "url" ], "examples": [ { "url": "https://mia-platform.eu/", "displayName": "Mia-Platform" }, { "url": "https://example.com" } ] } }, "maintainers": { "description": "A list of organizational entities maintaining this object.", "type": "array", "items": { "type": "object", "properties": { "name": { "description": "The display name of the maintainer.", "type": "string", "minLength": 1 }, "email": { "description": "A contact email of the maintainer.", "type": "string", "format": "email", "minLength": 1 } }, "additionalProperties": false, "required": [ "name" ], "examples": [ { "name": "John Doe", "email": "john.doe@mail.com" }, { "name": "Mia-Platform core team" } ] } }, "name": { "description": "The human-readable title of this item.", "type": "string", "minLength": 1, "examples": [ "CRUD Service", "Node.js template" ] }, "providerId": { "description": "The identifier of the provider used to retrieve markdown documentation content and external resources, if supported by the item's type.", "type": "string" }, "relationships": { "description": "A list of relationships from this item to any other entity (either part of the Software Catalog or not).", "type": "array", "items": { "type": "object", "properties": { "target": { "description": "The receiving end of the relationships. It can be a URN-reference to another Software Catalog entity or an arbitrary string.", "type": "string" }, "type": { "description": "The type of the relationships. It can be one of the Software Catalog well-known relationships or an arbitrary string.", "type": "string" } }, "additionalProperties": false, "required": [ "target", "type" ] }, "examples": [ [ { "type": "uses", "target": "urn:mia-platform:mktp:crud-service?=version=7.2.3" }, { "type": "stores-data-on", "target": "In-memory DB" } ] ] }, "releaseDate": { "description": "The time when this item was published.", "type": "string", "format": "date-time", "examples": [ "2025-09-17T10:30:45Z", "2024-01-01T12:30:10.199+00:00" ] }, "repositoryUrl": { "description": "The URL of the repository containing the source code of the resource(s) created by this item.", "type": "string" }, "resources": { "additionalProperties": false, "properties": { "services": { "maxProperties": 1, "minProperties": 1, "patternProperties": { "^[a-z]([-a-z0-9]*[a-z0-9])?$": { "additionalProperties": false, "properties": { "archiveUrl": { "minLength": 1, "type": "string" }, "componentId": { "type": "string" }, "containerPorts": { "items": { "additionalProperties": false, "properties": { "from": { "oneOf": [ { "type": "integer", "minimum": 0, "maximum": 65535 }, { "pattern": "^$|^((\\{\\{([A-Z])([A-Z0-9_]*)\\}\\})|([1-9]\\d*|0))$", "type": "string" } ] }, "name": { "pattern": "^[a-z]([-a-z0-9]*[a-z0-9])?$", "type": "string" }, "protocol": { "default": "TCP", "enum": [ "TCP", "UDP" ], "type": "string" }, "to": { "oneOf": [ { "type": "integer", "minimum": 0, "maximum": 65535 }, { "pattern": "^$|^((\\{\\{([A-Z])([A-Z0-9_]*)\\}\\})|([1-9]\\d*|0))$", "type": "string" } ] } }, "required": [ "name", "from" ], "type": "object" }, "type": "array" }, "defaultAnnotations": { "description": "The service annotations, which can be used to provide additional information about your services for various purposes. Annotations starting with `mia-platform.eu` are reserved", "items": { "additionalProperties": false, "properties": { "description": { "type": "string" }, "name": { "pattern": "^([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,253}[\\/])?([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,63}[a-zA-Z0-9]?)$", "type": "string" }, "readOnly": { "type": "boolean" }, "value": { "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" }, "defaultArgs": { "items": { "type": "string" }, "type": "array" }, "defaultConfigMaps": { "description": "The default ConfigMaps, if any, that will be mounted inside the container of the microservice", "items": { "additionalProperties": false, "properties": { "files": { "items": { "properties": { "content": { "type": "string" }, "name": { "type": "string" } }, "required": [ "name", "content" ], "type": "object" }, "type": "array" }, "link": { "properties": { "targetSection": { "type": "string" } }, "type": "object" }, "mountPath": { "pattern": "^[a-zA-Z0-9-/_\\s.|\\\\!\"£$%&()=?^\"{}[\\]*+@]+$", "type": "string" }, "name": { "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", "type": "string" }, "subPaths": { "type": "array", "items": { "type": "string" } }, "usePreserve": { "type": "boolean" }, "viewAsReadOnly": { "type": "boolean" } }, "required": [ "name", "files", "mountPath" ], "type": "object" }, "type": "array" }, "defaultDocumentationPath": { "description": "The APIs documentation path", "pattern": "^$|^(\\/$|(\\/([\\w\\-\\.]|(:[a-zA-Z]))[\\w\\-\\.]*)+)$", "type": "string" }, "defaultEnvironmentVariables": { "description": "The environment variables that will overwrite the default environment variables applied by the Console", "items": { "oneOf": [ { "additionalProperties": false, "properties": { "name": { "description": "The variable name (generally, a key written in UPPER_SNAKE_CASE)", "minLength": 1, "type": "string" }, "description": { "description": "A brief description of the variable", "type": "string" }, "managedBy": { "description": "A string that represents the Console section that manages the variable. It only works used in combination with the `readOnly` property set to `true`", "type": "string", "enum": [ "fast-data" ] }, "readOnly": { "description": "A boolean that represents if you can change the value of the variable through the Console", "type": "boolean" }, "value": { "description": "The variable default value. It can contain placeholders that will be replaced with the actual values when the service is created", "type": "string" }, "valueType": { "const": "plain" } }, "required": [ "name", "valueType" ], "type": "object" }, { "additionalProperties": false, "properties": { "name": { "description": "The variable name (generally, a key written in UPPER_SNAKE_CASE)", "minLength": 1, "type": "string" }, "description": { "description": "A brief description of the variable", "type": "string" }, "managedBy": { "description": "A string that represents the Console section that manages the variable. It only works used in combination with the `readOnly` property set to `true`", "type": "string", "enum": [ "fast-data" ] }, "readOnly": { "description": "A boolean that represents if you can change the value of the variable through the Console", "type": "boolean" }, "configMapName": { "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", "type": "string" }, "configMapFileName": { "pattern": "^[-._a-zA-Z0-9]+$", "type": "string" }, "valueType": { "const": "configmap" } }, "required": [ "name", "valueType", "secretName", "secretKey" ], "type": "object" }, { "additionalProperties": false, "properties": { "name": { "description": "The variable name (generally, a key written in UPPER_SNAKE_CASE)", "minLength": 1, "type": "string" }, "description": { "description": "A brief description of the variable", "type": "string" }, "managedBy": { "description": "A string that represents the Console section that manages the variable. It only works used in combination with the `readOnly` property set to `true`", "type": "string", "enum": [ "fast-data" ] }, "readOnly": { "description": "A boolean that represents if you can change the value of the variable through the Console", "type": "boolean" }, "secretKey": { "pattern": "^((\\{\\{([A-Z])([A-Z0-9_]*)\\}\\})|[a-zA-Z0-9-_.]*)$", "type": "string" }, "secretName": { "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", "type": "string" }, "valueType": { "const": "secret" } }, "required": [ "name", "valueType", "secretName", "secretKey" ], "type": "object" }, { "oneOf": [ { "additionalProperties": false, "properties": { "name": { "description": "The variable name (generally, a key written in UPPER_SNAKE_CASE)", "minLength": 1, "type": "string" }, "description": { "description": "A brief description of the variable", "type": "string" }, "managedBy": { "description": "A string that represents the Console section that manages the variable. It only works used in combination with the `readOnly` property set to `true`", "type": "string", "enum": [ "fast-data" ] }, "readOnly": { "description": "A boolean that represents if you can change the value of the variable through the Console", "type": "boolean" }, "fieldPath": { "description": "The field path of the Downward API that contains the value of the variable", "oneOf": [ { "type": "string", "enum": [ "metadata.name", "metadata.namespace", "metadata.uid", "spec.serviceAccountName", "spec.nodeName", "status.hostIP", "status.podIP", "status.podIPs" ] }, { "type": "string", "pattern": "^metadata.annotations\\['([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,253}[\\/])?([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,63}[a-zA-Z0-9]?)'\\]$" }, { "type": "string", "pattern": "^metadata.labels\\['([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,253}[\\/])?([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,63}[a-zA-Z0-9]?)'\\]$" } ] }, "valueType": { "const": "downwardAPI" } }, "required": [ "fieldPath", "name", "valueType" ], "type": "object" }, { "additionalProperties": false, "properties": { "name": { "description": "The variable name (generally, a key written in UPPER_SNAKE_CASE)", "minLength": 1, "type": "string" }, "description": { "description": "A brief description of the variable", "type": "string" }, "managedBy": { "description": "A string that represents the Console section that manages the variable. It only works used in combination with the `readOnly` property set to `true`", "type": "string", "enum": [ "fast-data" ] }, "readOnly": { "description": "A boolean that represents if you can change the value of the variable through the Console", "type": "boolean" }, "fieldPath": { "type": "string", "enum": [ "resource.limits.cpu", "resource.requests.cpu", "resource.limits.memory", "resource.requests.memory", "resource.limits.ephemeral-storage", "resource.requests.ephemeral-storage" ] }, "valueType": { "const": "downwardAPI" }, "containerName": { "description": "The name of the container where the field is located", "type": "string" } }, "required": [ "fieldPath", "name", "valueType", "containerName" ], "type": "object" } ] } ] }, "type": "array" }, "defaultLabels": { "description": "The service labels, which can be used to categorize, group, and select your service. Labels starting with \"mia-platform.eu\" are reserved", "items": { "additionalProperties": false, "properties": { "description": { "type": "string" }, "name": { "pattern": "^([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,253}[\\/])?([a-zA-Z0-9][a-zA-Z0-9\\.\\-]{0,63}[a-zA-Z0-9]?)$", "type": "string" }, "readOnly": { "type": "boolean" }, "value": { "type": "string" } }, "required": [ "name", "value" ], "type": "object" }, "type": "array" }, "defaultLogParser": { "enum": [ "mia-plain", "mia-json", "mia-nginx" ], "type": "string" }, "defaultMonitoring": { "additionalProperties": false, "properties": { "endpoints": { "items": { "additionalProperties": false, "properties": { "interval": { "type": "string", "pattern": "^(\\d)+[s]$" }, "path": { "type": "string", "pattern": "^\\/(([\\w-])\\/?)*$" }, "port": { "type": "string" } }, "required": [ "interval", "path", "port" ], "type": "object" }, "type": "array" } }, "type": "object" }, "defaultProbes": { "description": "The readiness, liveness, and startup paths of the service. By modifying the map of the probes, you can overwrite the default paths applied by the Console", "additionalProperties": false, "properties": { "liveness": { "oneOf": [ { "additionalProperties": false, "properties": { "cmd": { "items": { "type": "string" }, "type": "array" }, "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "periodSeconds": { "type": "number" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "required": [ "cmd" ], "type": "object" }, { "additionalProperties": false, "properties": { "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "periodSeconds": { "type": "number" }, "port": { "type": "string" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "type": "object" }, { "additionalProperties": false, "properties": { "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "path": { "pattern": "^\\/(([\\w\\-:.\\{\\}])\\/?)*$|^$", "type": "string" }, "periodSeconds": { "type": "number" }, "port": { "type": "string" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "required": [ "path" ], "type": "object" } ] }, "readiness": { "oneOf": [ { "additionalProperties": false, "properties": { "cmd": { "items": { "type": "string" }, "type": "array" }, "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "periodSeconds": { "type": "number" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "required": [ "cmd" ], "type": "object" }, { "additionalProperties": false, "properties": { "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "periodSeconds": { "type": "number" }, "port": { "type": "string" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "type": "object" }, { "additionalProperties": false, "properties": { "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "path": { "pattern": "^\\/(([\\w\\-:.\\{\\}])\\/?)*$|^$", "type": "string" }, "periodSeconds": { "type": "number" }, "port": { "type": "string" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "required": [ "path" ], "type": "object" } ] }, "startup": { "oneOf": [ { "additionalProperties": false, "properties": { "cmd": { "items": { "type": "string" }, "type": "array" }, "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "periodSeconds": { "type": "number" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "required": [ "cmd" ], "type": "object" }, { "additionalProperties": false, "properties": { "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "periodSeconds": { "type": "number" }, "port": { "type": "string" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "type": "object" }, { "additionalProperties": false, "properties": { "failureThreshold": { "type": "number" }, "initialDelaySeconds": { "type": "number" }, "path": { "pattern": "^\\/(([\\w\\-:.\\{\\}])\\/?)*$|^$", "type": "string" }, "periodSeconds": { "type": "number" }, "port": { "type": "string" }, "successThreshold": { "type": "number" }, "timeoutSeconds": { "type": "number" } }, "required": [ "path" ], "type": "object" } ] } }, "type": "object" }, "defaultResources": { "description": "CPU and memory limitations of the service, which can be used to overwrite the default limitations imposed by the Console for these parameters", "additionalProperties": false, "properties": { "cpuLimits": { "additionalProperties": false, "properties": { "max": { "pattern": "(^((\\{\\{([A-Z])([A-Z0-9_]*)\\}\\})|(\\d+))m$)|^$", "type": "string" }, "min": { "pattern": "(^((\\{\\{([A-Z])([A-Z0-9_]*)\\}\\})|(\\d+))m$)|^$", "type": "string" } }, "type": "object" }, "memoryLimits": { "additionalProperties": false, "properties": { "max": { "pattern": "(^((\\{\\{([A-Z])([A-Z0-9_]*)\\}\\})|(\\d+))Mi$)|^$", "type": "string" }, "min": { "pattern": "(^((\\{\\{([A-Z])([A-Z0-9_]*)\\}\\})|(\\d+))Mi$)|^$", "type": "string" } }, "type": "object" } }, "type": "object" }, "defaultSecrets": { "description": "The default secrets, if any, to be mounted inside the container of the microservice", "items": { "additionalProperties": false, "properties": { "mountPath": { "pattern": "^[a-zA-Z0-9-/_\\s.|\\\\!\"£$%&()=?^\"{}[\\]*+@]+$", "type": "string" }, "name": { "pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", "type": "string" } }, "required": [ "name", "mountPath" ], "type": "object" }, "type": "array" }, "defaultTerminationGracePeriodSeconds": { "type": "number" }, "description": { "type": "string" }, "dockerImage": { "pattern": "^(?:[a-z0-9.\\-\\/:]+\\/)?([\\w.}{\\-\\/]+)(:[\\w.}{\\-]+)?$", "type": "string" }, "mapEnvVarToMountPath": { "type": "object", "additionalProperties": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "file", "folder" ] }, "envName": { "type": "string" } }, "additionalProperties": false, "required": [ "type", "envName" ] } }, "name": { "minLength": 1, "pattern": "^[a-z]([-a-z0-9]*[a-z0-9])?$", "type": "string" }, "pipelines": { "properties": { "azure-pipelines": { "type": "object", "properties": { "branch": { "type": "string" }, "path": { "type": "string" }, "providerId": { "type": "string" } } }, "github-actions": { "type": "object", "properties": { "branch": { "type": "string" }, "path": { "type": "string" }, "providerId": { "type": "string" } } }, "gitlab-ci": { "type": "object", "properties": { "branch": { "type": "string" }, "path": { "type": "string" }, "providerId": { "type": "string" } } }, "jenkins": { "properties": { "gitWebhookOptions": { "type": "object" }, "gitlabWebhookOptions": { "$comment": "Deprecated", "type": "object" }, "providerId": { "type": "string" }, "xmlTemplate": { "properties": { "gitBranch": { "type": "string" }, "gitPath": { "type": "string" }, "gitProjectId": { "type": "string" }, "gitlabBranch": { "$comment": "Deprecated", "type": "string" }, "gitlabPath": { "$comment": "Deprecated", "type": "string" }, "gitlabProjectId": { "$comment": "Deprecated", "type": "string" } }, "type": "object" } }, "type": "object" }, "webhook": { "properties": { "providerId": { "type": "string" }, "token": { "type": "string" }, "url": { "type": "string" } }, "type": "object" } }, "type": "object" }, "type": { "const": "template" } }, "required": [ "name", "type", "archiveUrl" ], "type": "object" } }, "additionalProperties": false, "type": "object" } }, "required": [ "services" ], "type": "object", "examples": [ { "services": { "e-commerce-service": { "type": "template", "name": "e-commerce-service", "description": "Backend for an E-Commerce", "componentId": "e-commerce", "archiveUrl": "https://github.com/e-commerce/backend/archive/refs/tags/v1.0.0.tar.gz", "containerPorts": [ { "from": 3000, "to": 80, "name": "http" } ], "defaultAnnotations": [ { "name": "domain", "value": "orders" } ], "defaultLabels": [ { "name": "technologies", "value": "javascript" } ], "defaultDocumentationPath": "/documentation/json", "defaultLogParser": "mia-json", "defaultEnvironmentVariables": [ { "name": "LOG_LEVEL", "valueType": "plain", "value": "info" } ], "defaultConfigMaps": [ { "name": "e-commerce-service-config", "mountPath": "/home/node", "files": [ { "name": "config.json", "content": "{ \"mongodbUrl\": \"{{MONGODB_URL}}\" }" } ] } ], "defaultSecrets": [ { "name": "private-key", "mountPath": "/home/node" } ], "defaultProbes": { "liveness": { "port": "3000", "path": "/healthz" }, "readiness": { "port": "3000", "path": "/healthz" }, "startup": { "port": "3000", "path": "/healthz" } }, "defaultResources": { "memoryLimits": { "max": "250Mi", "min": "150Mi" }, "cpuLimits": { "min": "150m", "max": "200m" } } } } } ] }, "supportedBy": { "description": "The identifier of the company that has produced this item.", "type": "string" }, "supportedByImageUrl": { "description": "The URL of the image associated with the company that has produced this item.", "type": "string" }, "tags": { "description": "A list of single-valued strings.", "type": "array", "items": { "type": "string", "pattern": "^[a-z0-9:+#]+(-[a-z0-9:+#]+)*$", "minLength": 1, "maxLength": 63 }, "examples": [ [ "ai", "production" ] ] }, "tenantId": { "description": "The identifier of the tenant to which this item belongs. Within this tenant, the combination of the `.name` and the `.version.name` of this item must be unique. Read-only.", "type": "string" }, "type": { "const": "template" }, "version": { "description": "The Semantic version of this item.", "type": "object", "properties": { "name": { "description": "The name of this version. It should follow Semantic Versioning. Read-only.", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$", "type": "string" }, "releaseNote": { "description": "The release note of this version. It should support Markdown.", "type": "string" }, "security": { "description": "A flag stating if this version addresses any vulnerability.", "type": "boolean" } }, "additionalProperties": true, "required": [ "name", "releaseNote" ], "examples": [ { "name": "1.0.0", "releaseNote": "# What's new\n\nHere comes some new **amazing** features!\n" } ] }, "visibility": { "description": "The visibility of this item. It can be public (i.e., visible to any user calling the APIs, even if not authenticated with the Console), \"all tenants\" (i.e., visible to all tenants of the Console installation), or private (i.e., only visible to the item's tenant).", "type": "object", "properties": { "allTenants": { "description": "A flag stating whether this item's release should be visible to all tenants of the Console installation.", "type": "boolean", "default": false }, "public": { "description": "A flag stating whether this item's release should be visible to any user calling the APIs, even if not authenticated with the Console.", "type": "boolean", "default": false } }, "additionalProperties": false, "examples": [ { "allTenants": false, "public": true } ] }, "$schema": { "type": "string" } }, "additionalProperties": false, "required": [ "name", "itemId", "tenantId", "resources", "lifecycleStatus" ], "examples": [ { "annotations": { "mia-platform.eu/version": "14.0.0" }, "categoryId": "e-commerce", "description": "A standardized service to handle orders from an e-commerce website.", "documentation": { "type": "externalLink", "url": "https://docs.mia-platform.eu/" }, "imageUrl": "https://mia-platform.eu/wp-content/uploads/mia.svg", "itemId": "order-service", "itemTypeDefinitionRef": { "name": "plugin", "namespace": "mia-platform" }, "labels": { "environment": "prod" }, "lifecycleStatus": "published", "links": [ { "displayName": "E-Commerce", "url": "https://example.com/" } ], "maintainers": [ { "name": "E-Commerce Team", "email": "e-commerce@mail.eu" } ], "name": "Order Service", "relationships": [ { "type": "depends-on", "target": "MongoDB v8" } ], "releaseDate": "2025-09-17T10:30:45Z", "repositoryUrl": "https://github.com/mia-platform-marketplace/public-catalog", "resources": { "services": { "order-service": { "type": "plugin", "name": "order-service", "dockerImage": "order-service:1.0.0", "defaultEnvironmentVariables": [ { "name": "LOG_LEVEL", "value": "info", "valueType": "plain" } ] } } }, "supportedBy": "My Company", "supportedByImageUrl": "https://mia-platform.eu/wp-content/uploads/mia.svg", "tags": [ "e-commerce" ], "tenantId": "my-company", "version": { "name": "1.0.0", "releaseNote": "# About this version\n\nThe first release of the service 🎉\n" }, "visibility": { "public": false, "allTenants": false } } ] }