{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata/blueprint-metadata", "$ref": "#/$defs/BlueprintMetadata", "$defs": { "BlueprintActuationTool": { "properties": { "type": { "type": "string" }, "version": { "type": "string" } }, "additionalProperties": false, "type": "object" }, "BlueprintArchitecture": { "properties": { "diagram": { "type": "string" }, "description": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object", "required": [ "diagram", "description" ] }, "BlueprintAuthor": { "properties": { "title": { "type": "string" }, "description": { "type": "string" }, "url": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "title" ] }, "BlueprintCloudProduct": { "properties": { "productId": { "type": "string" }, "pageUrl": { "type": "string" }, "label": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "pageUrl" ] }, "BlueprintContent": { "properties": { "architecture": { "$ref": "#/$defs/BlueprintArchitecture" }, "diagrams": { "items": { "$ref": "#/$defs/BlueprintDiagram" }, "type": "array" }, "documentation": { "items": { "$ref": "#/$defs/BlueprintListContent" }, "type": "array" }, "subBlueprints": { "items": { "$ref": "#/$defs/BlueprintMiscContent" }, "type": "array" }, "examples": { "items": { "$ref": "#/$defs/BlueprintMiscContent" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "BlueprintCostEstimate": { "properties": { "description": { "type": "string" }, "url": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "description", "url" ] }, "BlueprintDescription": { "properties": { "tagline": { "type": "string" }, "detailed": { "type": "string" }, "preDeploy": { "type": "string" }, "html": { "type": "string" }, "eulaUrls": { "items": { "type": "string" }, "type": "array" }, "architecture": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "BlueprintDiagram": { "properties": { "name": { "type": "string" }, "altText": { "type": "string" }, "description": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "name" ] }, "BlueprintInfo": { "properties": { "title": { "type": "string" }, "source": { "$ref": "#/$defs/BlueprintRepoDetail" }, "version": { "type": "string" }, "actuationTool": { "$ref": "#/$defs/BlueprintActuationTool" }, "description": { "$ref": "#/$defs/BlueprintDescription" }, "icon": { "type": "string" }, "deploymentDuration": { "$ref": "#/$defs/BlueprintTimeEstimate" }, "costEstimate": { "$ref": "#/$defs/BlueprintCostEstimate" }, "cloudProducts": { "items": { "$ref": "#/$defs/BlueprintCloudProduct" }, "type": "array" }, "quotaDetails": { "items": { "$ref": "#/$defs/BlueprintQuotaDetail" }, "type": "array" }, "author": { "$ref": "#/$defs/BlueprintAuthor" }, "softwareGroups": { "items": { "$ref": "#/$defs/BlueprintSoftwareGroup" }, "type": "array" }, "supportInfo": { "$ref": "#/$defs/BlueprintSupport" } }, "additionalProperties": false, "type": "object", "required": [ "title", "source" ] }, "BlueprintInterface": { "properties": { "variables": { "items": { "$ref": "#/$defs/BlueprintVariable" }, "type": "array" }, "variableGroups": { "items": { "$ref": "#/$defs/BlueprintVariableGroup" }, "type": "array" }, "outputs": { "items": { "$ref": "#/$defs/BlueprintOutput" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "BlueprintListContent": { "properties": { "title": { "type": "string" }, "url": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "title" ] }, "BlueprintMetadata": { "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/$defs/ObjectMeta" }, "spec": { "$ref": "#/$defs/BlueprintMetadataSpec" } }, "additionalProperties": false, "type": "object", "required": [ "spec" ] }, "BlueprintMetadataSpec": { "properties": { "info": { "$ref": "#/$defs/BlueprintInfo" }, "content": { "$ref": "#/$defs/BlueprintContent" }, "interfaces": { "$ref": "#/$defs/BlueprintInterface" }, "requirements": { "$ref": "#/$defs/BlueprintRequirements" }, "ui": { "$ref": "#/$defs/BlueprintUI" } }, "additionalProperties": false, "type": "object" }, "BlueprintMiscContent": { "properties": { "name": { "type": "string" }, "location": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "name" ] }, "BlueprintOutput": { "properties": { "name": { "type": "string" }, "description": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "name" ] }, "BlueprintQuotaDetail": { "properties": { "variable": { "type": "string" }, "type": { "type": "string", "enum": [ "GCE_INSTANCE", "GCE_DISK" ] }, "quotaType": { "patternProperties": { ".*": { "type": "string" } }, "type": "object" } }, "additionalProperties": false, "type": "object", "required": [ "type", "quotaType" ] }, "BlueprintRepoDetail": { "properties": { "repo": { "type": "string" }, "sourceType": { "type": "string" }, "dir": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "repo", "sourceType" ] }, "BlueprintRequirements": { "properties": { "roles": { "items": { "$ref": "#/$defs/BlueprintRoles" }, "type": "array" }, "services": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "BlueprintRoles": { "properties": { "level": { "type": "string" }, "roles": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object", "required": [ "level", "roles" ] }, "BlueprintSoftware": { "properties": { "title": { "type": "string" }, "version": { "type": "string" }, "url": { "type": "string" }, "licenseUrl": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "title" ] }, "BlueprintSoftwareGroup": { "properties": { "type": { "type": "string", "enum": [ "UNSPECIFIED", "OS" ] }, "software": { "items": { "$ref": "#/$defs/BlueprintSoftware" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "BlueprintSupport": { "properties": { "description": { "type": "string" }, "url": { "type": "string" }, "entity": { "type": "string" }, "showSupportId": { "type": "boolean" } }, "additionalProperties": false, "type": "object", "required": [ "description" ] }, "BlueprintTimeEstimate": { "properties": { "configuration": { "type": "integer" }, "deployment": { "type": "integer" } }, "additionalProperties": false, "type": "object" }, "BlueprintUI": { "properties": { "input": { "$ref": "#/$defs/BlueprintUIInput" }, "runtime": { "$ref": "#/$defs/BlueprintUIOutput" } }, "additionalProperties": false, "type": "object" }, "BlueprintUIInput": { "properties": { "variables": { "patternProperties": { ".*": { "$ref": "#/$defs/DisplayVariable" } }, "type": "object" }, "sections": { "items": { "$ref": "#/$defs/DisplaySection" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "BlueprintUIOutput": { "properties": { "outputMessage": { "type": "string" }, "suggestedActions": { "items": { "$ref": "#/$defs/UIActionItem" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "BlueprintVariable": { "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "type": { "type": "string" }, "default": true, "required": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "BlueprintVariableGroup": { "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "variables": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object", "required": [ "name" ] }, "DisplaySection": { "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "tooltip": { "type": "string" }, "subtext": { "type": "string" }, "parent": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "name" ] }, "DisplayVariable": { "properties": { "name": { "type": "string" }, "title": { "type": "string" }, "invisible": { "type": "boolean" }, "tooltip": { "type": "string" }, "placeholder": { "type": "string" }, "regexValidation": { "type": "string" }, "minItems": { "type": "integer" }, "maxItems": { "type": "integer" }, "minLength": { "type": "integer" }, "maxLength": { "type": "integer" }, "min": { "type": "integer" }, "max": { "type": "integer" }, "section": { "type": "string" }, "x-googleProperty": { "$ref": "#/$defs/GooglePropertyExtension" } }, "additionalProperties": false, "type": "object", "required": [ "name" ] }, "GCEDiskSizeExtension": { "properties": { "diskTypeVariable": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "diskTypeVariable" ] }, "GCEExternalIPExtension": { "properties": { "networkVariable": { "type": "string" }, "externalIpType": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "networkVariable" ] }, "GCEFirewallExtension": { "properties": { "networkVariable": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "networkVariable" ] }, "GCEFirewallRangeExtension": { "properties": { "firewallVariable": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "firewallVariable" ] }, "GCEGPUCountExtension": { "properties": { "machineTypeVariable": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "machineTypeVariable" ] }, "GCEGPUTypeExtension": { "properties": { "machineType": { "type": "string" }, "gpuType": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "machineType" ] }, "GCEGenericResourceExtension": { "properties": { "resourceVariable": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "resourceVariable" ] }, "GCEIPForwardingExtension": { "properties": { "networkVariable": { "type": "string" }, "notConfigurable": { "type": "boolean" } }, "additionalProperties": false, "type": "object", "required": [ "networkVariable" ] }, "GCELocationExtension": { "properties": { "allowlistedZones": { "items": { "type": "string" }, "type": "array" }, "allowlistedRegions": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object" }, "GCEMachineTypeExtension": { "properties": { "minCpu": { "type": "integer" }, "minRamGb": { "type": "integer" }, "disallowCustomMachineTypes": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "GCENetworkExtension": { "properties": { "allowSharedVpcs": { "type": "boolean" }, "machineTypeVariable": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "machineTypeVariable" ] }, "GCESubnetworkExtension": { "properties": { "networkVariable": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "networkVariable" ] }, "GooglePropertyExtension": { "properties": { "type": { "type": "string", "enum": [ "EMAIL_ADDRESS", "MULTI_LINE_STRING", "GCE_DISK_IMAGE", "GCE_DISK_TYPE", "GCE_DISK_SIZE", "GCE_MACHINE_TYPE", "GCE_NETWORK", "GCE_ZONE", "GCE_SUBNETWORK", "GCE_REGION", "GCE_GPU_TYPE", "GCE_GPU_COUNT", "GCE_EXTERNAL_IP", "GCE_IP_FORWARDING", "GCE_FIREWALL", "GCE_FIREWALL_RANGE", "GCE_GENERIC_RESOURCE", "GCS_BUCKET", "IAM_SERVICE_ACCOUNT" ] }, "zoneProperty": { "type": "string" }, "gceMachineType": { "$ref": "#/$defs/GCEMachineTypeExtension" }, "gceDiskSize": { "$ref": "#/$defs/GCEDiskSizeExtension" }, "gceSubnetwork": { "$ref": "#/$defs/GCESubnetworkExtension" }, "gceResource": { "$ref": "#/$defs/GCEGenericResourceExtension" }, "gceGpuType": { "$ref": "#/$defs/GCEGPUTypeExtension" }, "gceGpuCount": { "$ref": "#/$defs/GCEGPUCountExtension" }, "gceNetwork": { "$ref": "#/$defs/GCENetworkExtension" }, "gceExternalIp": { "$ref": "#/$defs/GCEExternalIPExtension" }, "gceIpForwarding": { "$ref": "#/$defs/GCEIPForwardingExtension" }, "gceFirewall": { "$ref": "#/$defs/GCEFirewallExtension" }, "gceFirewallRange": { "$ref": "#/$defs/GCEFirewallRangeExtension" }, "gceZone": { "$ref": "#/$defs/GCELocationExtension" }, "gceRegion": { "$ref": "#/$defs/GCELocationExtension" }, "iamServiceAccount": { "$ref": "#/$defs/IAMServiceAccountExtension" } }, "additionalProperties": false, "type": "object", "required": [ "type" ] }, "IAMServiceAccountExtension": { "properties": { "roles": { "items": { "type": "string" }, "type": "array" } }, "additionalProperties": false, "type": "object", "required": [ "roles" ] }, "ObjectMeta": { "properties": { "name": { "type": "string" }, "namespace": { "type": "string" }, "labels": { "patternProperties": { ".*": { "type": "string" } }, "type": "object" }, "annotations": { "patternProperties": { ".*": { "type": "string" } }, "type": "object" } }, "additionalProperties": false, "type": "object" }, "UIActionItem": { "properties": { "heading": { "type": "string" }, "description": { "type": "string" }, "snippet": { "type": "string" }, "showIf": { "type": "string" } }, "additionalProperties": false, "type": "object", "required": [ "heading" ] } } }