{
  "$defs": {
    "BlueprintActuationTool": {
      "properties": {
        "flavor": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "type": "object"
    },
    "BlueprintArchitecture": {
      "properties": {
        "diagramUrl": {
          "type": "string"
        },
        "description": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["diagramUrl", "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"
        },
        "isExternal": {
          "type": "boolean"
        }
      },
      "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"
        },
        "orgPolicyChecks": {
          "items": {
            "$ref": "#/$defs/BlueprintOrgPolicyCheck"
          },
          "type": "array"
        },
        "singleDeployment": {
          "type": "boolean"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["title"]
    },
    "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/ResourceTypeMeta"
        },
        "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"]
    },
    "BlueprintOrgPolicyCheck": {
      "properties": {
        "policyId": {
          "type": "string"
        },
        "requiredValues": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["policyId"]
    },
    "BlueprintOutput": {
      "properties": {
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["name"]
    },
    "BlueprintQuotaDetail": {
      "properties": {
        "dynamicVariable": {
          "type": "string"
        },
        "resourceType": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            }
          ]
        },
        "quotaType": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["resourceType", "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": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            }
          ]
        },
        "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": {
        "configurationSecs": {
          "type": "integer"
        },
        "deploymentSecs": {
          "type": "integer"
        }
      },
      "additionalProperties": false,
      "type": "object"
    },
    "BlueprintUI": {
      "properties": {
        "input": {
          "$ref": "#/$defs/BlueprintUIInput"
        },
        "runtime": {
          "$ref": "#/$defs/BlueprintUIOutput"
        }
      },
      "additionalProperties": false,
      "type": "object"
    },
    "BlueprintUIInput": {
      "properties": {
        "variables": {
          "additionalProperties": {
            "$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"
        },
        "outputs": {
          "additionalProperties": {
            "$ref": "#/$defs/DisplayOutput"
          },
          "type": "object"
        }
      },
      "additionalProperties": false,
      "type": "object"
    },
    "BlueprintVariable": {
      "properties": {
        "name": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "varType": {
          "type": "string"
        },
        "defaultValue": 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"]
    },
    "DisplayOutput": {
      "properties": {
        "openInNewTab": {
          "type": "boolean"
        },
        "showInNotification": {
          "type": "boolean"
        }
      },
      "additionalProperties": false,
      "type": "object"
    },
    "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": "number"
        },
        "max": {
          "type": "number"
        },
        "section": {
          "type": "string"
        },
        "xGoogleProperty": {
          "$ref": "#/$defs/GooglePropertyExtension"
        },
        "validation": {
          "type": "string"
        },
        "subtext": {
          "type": "string"
        },
        "enumValueLabels": {
          "items": {
            "$ref": "#/$defs/ValueLabel"
          },
          "type": "array"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["name", "title"]
    },
    "GCEDiskSizeExtension": {
      "properties": {
        "diskTypeVariable": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["diskTypeVariable"]
    },
    "GCEDiskTypeExtension": {
      "properties": {
        "machineTypeVariable": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["machineTypeVariable"]
    },
    "GCEExternalIPExtension": {
      "properties": {
        "networkVariable": {
          "type": "string"
        },
        "type": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            }
          ]
        },
        "notConfigurable": {
          "type": "boolean"
        },
        "allowStaticIPs": {
          "type": "boolean"
        }
      },
      "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": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "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": "number"
        },
        "disallowCustomMachineTypes": {
          "type": "boolean"
        },
        "diskImageProperty": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "type": "object"
    },
    "GCENetworkExtension": {
      "properties": {
        "allowSharedVpcs": {
          "type": "boolean"
        },
        "machineTypeVariable": {
          "type": "string"
        },
        "labels": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["machineTypeVariable"]
    },
    "GCESubnetworkExtension": {
      "properties": {
        "networkVariable": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["networkVariable"]
    },
    "GooglePropertyExtension": {
      "properties": {
        "type": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            }
          ]
        },
        "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"
        },
        "gceDiskType": {
          "$ref": "#/$defs/GCEDiskTypeExtension"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["type"]
    },
    "IAMServiceAccountExtension": {
      "properties": {
        "roles": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["roles"]
    },
    "ResourceTypeMeta": {
      "properties": {
        "name": {
          "type": "string"
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object"
        },
        "annotations": {
          "additionalProperties": {
            "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"]
    },
    "Value": {
      "properties": {
        "Kind": true
      },
      "additionalProperties": false,
      "type": "object",
      "required": ["Kind"]
    },
    "ValueLabel": {
      "properties": {
        "label": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "type": "object"
    }
  },
  "$id": "https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/cli/bpmetadata/blueprint-metadata",
  "$ref": "#/$defs/BlueprintMetadata",
  "$schema": "http://json-schema.org/draft-07/schema#"
}
