{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://hugin.intern/schema/bundle-request-1.json", "title": "Anfrage an POST /api/v1/bundle bzw. /api/v1/delivery/bundle", "type": "object", "required": [ "packages", "tools" ], "additionalProperties": false, "properties": { "packages": { "description": "Abos: @. Ohne @ gilt @stabil.", "type": "array", "items": { "type": "string", "pattern": "^[a-z0-9]+(-[a-z0-9]+)*(@(stabil|test|\\^\\d+|\\d+\\.\\d+\\.\\d+))?$" }, "uniqueItems": true }, "unsubscribed": { "description": "Pakete, die nicht geliefert werden sollen. Für Pflichtpakete wirkungslos.", "type": "array", "items": { "type": "string", "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$" }, "uniqueItems": true }, "tools": { "description": "Erkannte Werkzeuge mit installierter Version; leerer String, wenn die Version unbekannt ist.", "type": "object", "minProperties": 1, "additionalProperties": false, "properties": { "claude": { "type": "string" }, "opencode": { "type": "string" } } }, "mandatory": { "description": "Pflichtpakete mitliefern.", "type": "boolean", "default": true }, "major": { "description": "Major-Sprünge bei @stabil erlauben (hugin sync --major).", "type": "boolean", "default": false }, "options": { "type": "object", "additionalProperties": false, "properties": { "opencode_reads_claude": { "type": "boolean", "default": true } } }, "installed": { "description": "Aktuell installierte Versionen (aus hugin.lock). Daraus berechnet der Server die entfernen-Operationen.", "type": "object", "additionalProperties": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+$" } } } }