{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "frontend-capability-recipes.schema.json", "title": "Frontend optional capability recipe catalog", "type": "object", "additionalProperties": false, "required": [ "$schema", "schemaVersion", "decisionId", "defaultStatus", "productionRuntimeDependencies", "catalogOwner", "reviewOn", "vendorPackagePatterns", "recipes" ], "properties": { "$schema": { "type": "string", "minLength": 1 }, "schemaVersion": { "const": 1 }, "decisionId": { "const": "VD-10" }, "defaultStatus": { "const": "NOT_INSTALLED" }, "productionRuntimeDependencies": { "type": "array", "maxItems": 0 }, "catalogOwner": { "type": "string", "minLength": 1 }, "reviewOn": { "type": "string", "minLength": 1 }, "vendorPackagePatterns": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }, "recipes": { "type": "array", "minItems": 12, "maxItems": 12, "items": { "$ref": "#/$defs/recipe" } } }, "$defs": { "recipe": { "type": "object", "additionalProperties": false, "required": [ "id", "status", "trigger", "forbiddenWhen", "boundary", "port", "fake", "failureKinds", "lifecycleMethods", "owner", "securityPrivacy", "bundleBudgetGzipBytes", "fallback", "removal", "serverStatePolicy" ], "properties": { "id": { "type": "string", "minLength": 1 }, "status": { "const": "RECIPE_AVAILABLE" }, "referenceRuntime": { "$ref": "#/$defs/referenceRuntime" }, "trigger": { "type": "string", "minLength": 1 }, "forbiddenWhen": { "$ref": "#/$defs/nonEmptyStrings" }, "boundary": { "type": "string", "minLength": 1 }, "port": { "type": "string", "minLength": 1 }, "fake": { "type": "string", "minLength": 1 }, "failureKinds": { "$ref": "#/$defs/nonEmptyStrings" }, "lifecycleMethods": { "$ref": "#/$defs/nonEmptyStrings" }, "owner": { "type": "string", "minLength": 1 }, "securityPrivacy": { "$ref": "#/$defs/nonEmptyStrings" }, "bundleBudgetGzipBytes": { "type": "integer", "minimum": 1 }, "fallback": { "type": "string", "minLength": 1 }, "removal": { "$ref": "#/$defs/nonEmptyStrings" }, "serverStatePolicy": { "type": "string", "minLength": 1 } } }, "referenceRuntime": { "type": "object", "additionalProperties": false, "required": [ "status", "coveredCapabilities", "sourceRoots", "conformanceScripts", "productionComposition" ], "properties": { "status": { "const": "AVAILABLE_NOT_COMPOSED" }, "coveredCapabilities": { "$ref": "#/$defs/nonEmptyStrings" }, "sourceRoots": { "$ref": "#/$defs/nonEmptyStrings" }, "conformanceScripts": { "$ref": "#/$defs/nonEmptyStrings" }, "productionComposition": { "const": false } } }, "nonEmptyStrings": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } } } }