{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://raw.githubusercontent.com/ReinadoRojo/homelab/master/docs/metadata-schema.json", "title": "Homelab Service Metadata", "description": "Schema for a service's metadata.json in a homelab repository.", "type": "object", "required": ["id", "name", "description", "version", "compose"], "additionalProperties": true, "properties": { "id": { "type": "string", "description": "Unique kebab-case id. Must equal the folder name.", "pattern": "^[a-z0-9][a-z0-9-]*$" }, "name": { "type": "string", "description": "Human-readable service name." }, "description": { "type": "string", "description": "Short description of the service." }, "version": { "type": "string", "description": "Version string used to detect updates." }, "compose": { "type": "object", "description": "A Docker Compose service definition (image, ports, volumes, environment, ...)." }, "volumes": { "type": "object", "description": "Top-level named volumes to declare." }, "networks": { "type": "object", "description": "Top-level networks to declare." }, "env": { "type": "array", "description": "Variables the installer resolves and writes to .env.", "items": { "type": "object", "required": ["name"], "additionalProperties": false, "properties": { "name": { "type": "string" }, "label": { "type": "string" }, "description": { "type": "string" }, "default": { "type": "string" }, "required": { "type": "boolean" }, "secret": { "type": "boolean" }, "options": { "type": "array", "items": { "type": "string" } }, "generate": { "type": "boolean" } } } }, "category": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "icon": { "type": "string", "format": "uri" }, "author": { "type": "string" }, "license": { "type": "string" }, "homepage": { "type": "string", "format": "uri" }, "documentation": { "type": "string", "format": "uri" }, "dependsOn": { "type": "array", "items": { "type": "string" } }, "notes": { "type": "string" } } }