{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/quali-torque-blueprint-spec-2/latest.json",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/QualiTorque/torque-vs-code-extensions/master/client/schemas/blueprint-spec2-schema.json",
    "sourceSha256": "2d22505e382179d6afc0de957ee6d764dc9caabf9f9d9f7b0407fd2b65447808",
    "fileMatch": [
      "**/blueprints/**.yaml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "$defs": {
    "Torque-Blueprint-Spec2": {
      "type": "object",
      "title": "Torque Blueprint Spec 2",
      "properties": {
        "spec_version": {
          "type": "integer",
          "enum": [
            2
          ]
        },
        "description": {
          "type": "string"
        },
        "environment": {
          "type": "object",
          "title": "environment metadata",
          "properties": {
            "environment_name": {
              "type": "string"
            },
            "state": {
              "type": "string"
            },
            "owner_email": {
              "type": "string"
            },
            "spaces": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "collaborators": {
              "type": "object",
              "properties": {
                "collaborators_emails": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "collaborators_groups": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "all_space_members": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "metadata": {
          "type": "object",
          "properties": {
            "display-name": {
              "type": "string"
            },
            "self-service": {
              "type": "boolean"
            },
            "icon": {
              "oneOf": [
                {
                  "type": "object",
                  "required": [
                    "path"
                  ],
                  "properties": {
                    "path": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ],
              "title": "Blueprint Icon"
            },
            "blueprint-labels": {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/BlueprintLabelObject"
                  },
                  {
                    "type": "string"
                  }
                ]
              }
            }
          },
          "title": "blueprint metadata",
          "additionalProperties": false
        },
        "workflow": {
          "type": "object",
          "title": "workflow metadata",
          "properties": {
            "scope": {
              "type": "string"
            },
            "label-selector": {
              "type": "string"
            },
            "labels-selector": {
              "type": "string"
            },
            "resource-types": {
              "type": "string"
            },
            "timeout": {
              "type": "string"
            },
            "triggers": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/WorkflowTrigger"
              }
            }
          },
          "additionalProperties": false
        },
        "instructions": {
          "type": "object",
          "title": "instructions",
          "properties": {
            "text": {
              "type": "string"
            },
            "source": {
              "$ref": "#/$defs/InstructionsSourceObject"
            }
          },
          "oneOf": [
            {
              "required": [
                "text"
              ]
            },
            {
              "required": [
                "source"
              ]
            }
          ],
          "additionalProperties": false
        },
        "layout": {
          "type": "object",
          "title": "Layout",
          "properties": {
            "exclude-from-layout": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "title": "Exclude From Layout"
            },
            "source": {
              "$ref": "#/$defs/LayoutSourceObject"
            }
          },
          "oneOf": [
            {
              "required": [
                "source"
              ]
            }
          ],
          "additionalProperties": false
        },
        "inputs": {
          "type": "object",
          "title": "Inputs",
          "patternProperties": {
            "^[a-zA-Z0-9-_ ().]{3,45}$": {
              "oneOf": [
                {
                  "$ref": "#/$defs/BlueprintInputObject"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        },
        "labels": {
          "type": "array",
          "items": {
            "allOf": [
              {
                "oneOf": [
                  {
                    "$ref": "#/$defs/EnvironmentLabel"
                  },
                  {
                    "type": "string",
                    "pattern": "^\\{?[a-zA-Z0-9-_.@#\\s]+\\}?$"
                  }
                ]
              }
            ]
          },
          "title": "Labels"
        },
        "outputs": {
          "type": "object",
          "title": "Outputs",
          "patternProperties": {
            "^[a-zA-Z0-9-_ ().]{3,45}$": {
              "oneOf": [
                {
                  "$ref": "#/$defs/BlueprintOutputObject"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        },
        "env_references": {
          "type": "object",
          "title": "Environment References",
          "patternProperties": {
            "^[a-zA-Z0-9-_ ().]{3,45}$": {
              "oneOf": [
                {
                  "$ref": "#/$defs/BlueprintEnvReferenceObject"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        },
        "resources": {
          "type": "object",
          "title": "Resources",
          "patternProperties": {
            "^[a-zA-Z0-9-_ ().]{3,45}$": {
              "$ref": "#/$defs/BlueprintResourceRequirementObject"
            }
          }
        },
        "grains": {
          "type": "object",
          "title": "Grains",
          "patternProperties": {
            "^[a-zA-Z0-9-_ ]{3,45}$": {
              "oneOf": [
                {
                  "$ref": "#/$defs/GrainObject"
                },
                {
                  "type": "null"
                }
              ]
            }
          }
        },
        "customization": {
          "$ref": "#/$defs/CustomizationObject",
          "title": "Customization"
        }
      },
      "required": [
        "spec_version"
      ],
      "additionalProperties": false
    },
    "GrainObject": {
      "type": "object",
      "title": "Grain Object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "terraform",
            "helm",
            "ansible",
            "blueprint",
            "arm",
            "cloudformation",
            "kubernetes",
            "shell",
            "cloudshell",
            "argocd",
            "opentofu",
            "terragrunt",
            "aws-cdk"
          ]
        },
        "condition": {
          "$ref": "#/$defs/GrainConditions"
        },
        "env-labels": {
          "$ref": "#/$defs/GrainLabels"
        },
        "spec": {
          "$ref": "#/$defs/GrainSpecObject"
        },
        "depends-on": {
          "type": "string",
          "pattern": "^((.+)(,\\s*)?)+[^,]$"
        },
        "tf-version": {
          "type": "string"
        }
      },
      "required": [
        "kind",
        "spec"
      ],
      "additionalProperties": false
    },
    "GrainScripts": {
      "type": "object",
      "properties": {
        "pre-tf-init": {
          "$ref": "#/$defs/ScriptObject"
        },
        "pre-tf-destroy": {
          "$ref": "#/$defs/ScriptObject"
        },
        "post-tf-plan": {
          "$ref": "#/$defs/ScriptObject"
        },
        "pre-ansible-run": {
          "$ref": "#/$defs/ScriptOutputsObject"
        },
        "post-helm-install": {
          "$ref": "#/$defs/ScriptOutputsObject"
        },
        "post-kubernetes-install": {
          "$ref": "#/$defs/ScriptOutputsObject"
        },
        "pre-aws-cdk-deploy": {
          "$ref": "#/$defs/ScriptObject"
        },
        "post-aws-cdk-deploy": {
          "$ref": "#/$defs/ScriptObject"
        }
      },
      "additionalProperties": false
    },
    "ScriptSource": {
      "type": "object",
      "properties": {
        "path": {
          "type": "string"
        },
        "store": {
          "type": "string"
        }
      }
    },
    "ScriptObject": {
      "type": "object",
      "properties": {
        "source": {
          "$ref": "#/$defs/ScriptSource"
        },
        "arguments": {
          "type": "string"
        }
      }
    },
    "Backend": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "bucket": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "storage-account-name": {
          "type": "string"
        },
        "container-name": {
          "type": "string"
        },
        "base-address": {
          "type": "string"
        },
        "key-prefix": {
          "type": "string"
        }
      }
    },
    "TemplateStorage": {
      "type": "object",
      "properties": {
        "bucket-name": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "key-prefix": {
          "type": "string"
        }
      },
      "required": [
        "bucket-name",
        "region"
      ]
    },
    "ScriptOutputsObject": {
      "type": "object",
      "properties": {
        "outputs": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "source": {
          "$ref": "#/$defs/ScriptSource"
        },
        "arguments": {
          "type": "string"
        }
      }
    },
    "GrainTag": {
      "type": "object",
      "properties": {
        "auto-tag": {
          "type": "boolean"
        },
        "disable-tags-for": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "EnvironementVariable": {
      "type": "object",
      "title": "Envrironment Variable",
      "additionalProperties": false,
      "patternProperties": {
        "^[A-Za-z0-9_]+": {
          "type": [
            "string",
            "number",
            "boolean"
          ]
        }
      }
    },
    "WorkflowTrigger": {
      "type": "object",
      "title": "Workflow Trigger",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "manual",
            "event",
            "cron"
          ]
        },
        "event": {
          "type": "array",
          "uniqueItems": true,
          "additionalItems": false,
          "items": {
            "type": "string",
            "enum": [
              "Drift Detected",
              "Updates Detected",
              "Approval Request Approved",
              "Approval Request Denied",
              "Approval Request Cancelled",
              "Environment Ended",
              "Environment Launched",
              "Environment Active With Error",
              "Environment Ending Failed",
              "Environment Force Ended",
              "Environment Extended",
              "Collaborator Added",
              "Environment Idle",
              "Parameter Updates Detected",
              "drift detected",
              "updates detected",
              "approval request approved",
              "approval request denied",
              "approval request cancelled",
              "environment ended",
              "environment launched",
              "environment active with error",
              "environment ending failed",
              "environment force ended",
              "environment extended",
              "collaborator added",
              "environment idle",
              "parameter updates detected"
            ]
          },
          "contains": {
            "type": "string"
          }
        },
        "groups": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "type": "string"
          }
        },
        "cron": {
          "type": "string"
        },
        "overridable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "AnsibleOnDestroy": {
      "type": "object",
      "properties": {
        "source": {
          "$ref": "#/$defs/GrainSpecSourceObject"
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GrainInput"
          }
        },
        "command-arguments": {
          "type": "string"
        },
        "scripts": {
          "$ref": "#/$defs/GrainScripts"
        },
        "inventory-file": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "additionalProperties": false
    },
    "GrainSpecObject": {
      "type": "object",
      "title": "Grain Spec Object",
      "properties": {
        "files": {
          "$ref": "#/$defs/ShellGrainFiles"
        },
        "provider-overrides": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "auto-approve": {
          "type": "boolean"
        },
        "sources": {
          "$ref": "#/$defs/GrainSpecSources"
        },
        "source": {
          "$ref": "#/$defs/GrainSpecSourceObject"
        },
        "agent": {
          "$ref": "#/$defs/GrainSpecHostObject"
        },
        "host": {
          "$ref": "#/$defs/GrainSpecHostObject"
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GrainInput"
          }
        },
        "values-files": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "source": {
                "$ref": "#/$defs/ScriptSource"
              }
            }
          }
        },
        "workspace-directories": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "source": {
                "$ref": "#/$defs/ScriptSource"
              }
            }
          }
        },
        "outputs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GrainOutput"
          }
        },
        "env_references": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GrainEnvReference"
          }
        },
        "commands": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GrainCommand"
          }
        },
        "command-arguments": {
          "type": "string"
        },
        "scripts": {
          "$ref": "#/$defs/GrainScripts"
        },
        "tags": {
          "$ref": "#/$defs/GrainTag"
        },
        "env-vars": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EnvironementVariable"
          }
        },
        "namespace": {
          "type": "string"
        },
        "target-namespace": {
          "type": "string"
        },
        "authentication": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "backend": {
          "$ref": "#/$defs/Backend"
        },
        "region": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "binary": {
          "type": "string"
        },
        "built-in": {
          "type": "boolean"
        },
        "auto-retry": {
          "type": "boolean"
        },
        "activities": {
          "$ref": "#/$defs/ActivitiesObject"
        },
        "release": {
          "type": "string"
        },
        "inventory-file": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "tfvars-files": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "source": {
                "$ref": "#/$defs/TfVarsFileSourceObject"
              }
            }
          }
        },
        "template-storage": {
          "$ref": "#/$defs/TemplateStorage"
        },
        "mode": {
          "type": "string",
          "enum": [
            "managed",
            "data",
            "no-termination"
          ]
        },
        "application-namespace": {
          "type": "string"
        },
        "application": {
          "type": "string"
        },
        "deployment-engine": {
          "type": "string"
        },
        "on-destroy": {
          "$ref": "#/$defs/AnsibleOnDestroy"
        },
        "target-resource": {
          "type": "array",
          "items": {
            "type": "string",
            "additionalProperties": true
          }
        }
      },
      "oneOf": [
        {
          "required": []
        }
      ],
      "additionalProperties": false
    },
    "ShellGrainFiles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "branch": {
            "type": "string"
          },
          "commit": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "ActivitiesObject": {
      "type": "object",
      "properties": {
        "deploy": {
          "type": "object",
          "$ref": "#/$defs/ActivityObject"
        },
        "destroy": {
          "type": "object",
          "$ref": "#/$defs/ActivityObject"
        }
      },
      "additionalProperties": false
    },
    "ActivityObject": {
      "type": "object",
      "properties": {
        "commands": {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/CommandObject"
              },
              {
                "type": "string"
              }
            ]
          }
        }
      },
      "additionalProperties": false
    },
    "CommandObject": {
      "type": "object",
      "properties": {
        "command": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "outputs": {
          "type": "array"
        }
      },
      "additionalProperties": false
    },
    "GrainLabels": {
      "type": "object",
      "properties": {
        "on-success": {
          "type": "array",
          "items": {
            "allOf": [
              {
                "oneOf": [
                  {
                    "$ref": "#/$defs/EnvironmentLabel"
                  },
                  {
                    "type": "string",
                    "pattern": "^\\{?[a-zA-Z0-9-_.@#\\s]+\\}?$"
                  }
                ]
              }
            ]
          }
        },
        "on-failure": {
          "type": "array",
          "items": {
            "allOf": [
              {
                "oneOf": [
                  {
                    "$ref": "#/$defs/EnvironmentLabel"
                  },
                  {
                    "type": "string",
                    "pattern": "^\\{?[a-zA-Z0-9-_.@#\\s]+\\}?$"
                  }
                ]
              }
            ]
          }
        }
      },
      "additionalProperties": false
    },
    "GrainConditions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/GrainConditionObject"
      },
      "maxLength": 1,
      "additionalProperties": false
    },
    "GrainConditionObject": {
      "type": "object",
      "then": {
        "required": [
          "channels"
        ]
      },
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "approval"
          ]
        },
        "message": {
          "type": "string"
        },
        "channels": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GrainConditionChannelObject"
          },
          "additionalProperties": false
        }
      },
      "required": [
        "type"
      ],
      "if": {
        "properties": {
          "type": {
            "const": "approval"
          }
        }
      },
      "additionalProperties": false
    },
    "GrainConditionChannelObject": {
      "type": "object",
      "else": {
        "if": {
          "properties": {
            "type": {
              "const": "user"
            }
          }
        },
        "then": {
          "required": [
            "users"
          ],
          "properties": {
            "groups": false,
            "users": true,
            "names": false
          },
          "type": "object"
        },
        "else": {
          "if": {
            "properties": {
              "type": {
                "const": "account_channels"
              }
            }
          },
          "then": {
            "required": [
              "names"
            ],
            "properties": {
              "groups": false,
              "users": false,
              "names": true
            },
            "type": "object"
          }
        }
      },
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "group",
            "user",
            "account_channels"
          ]
        },
        "groups": {
          "$ref": "#/$defs/GrainConditionChannelApproversObject"
        },
        "users": {
          "$ref": "#/$defs/GrainConditionChannelApproversObject"
        },
        "names": {
          "$ref": "#/$defs/GrainConditionChannelApproversObject"
        }
      },
      "required": [
        "type"
      ],
      "if": {
        "properties": {
          "type": {
            "const": "group"
          }
        }
      },
      "then": {
        "required": [
          "groups"
        ],
        "properties": {
          "groups": true,
          "users": false,
          "names": false
        },
        "type": "object"
      },
      "additionalProperties": false
    },
    "GrainConditionChannelApproversObject": {
      "oneOf": [
        {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 250
          }
        },
        {
          "type": "string"
        }
      ]
    },
    "EnvironmentLabel": {
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
        "^\\{?[a-zA-Z0-9-_.@#\\s]+\\}?$": {
          "type": [
            "string",
            "number",
            "boolean",
            "null"
          ]
        }
      }
    },
    "PodLabels": {
      "type": "object",
      "additionalProperties": true
    },
    "PodAnnotations": {
      "type": "object",
      "additionalProperties": true
    },
    "NodeSelector": {
      "type": "object",
      "additionalProperties": true
    },
    "GrainInput": {
      "type": "object",
      "title": "Grain Input",
      "additionalProperties": false,
      "patternProperties": {
        "^[\\w\\-\\.]+$": {
          "type": [
            "string",
            "number",
            "boolean",
            "object"
          ]
        }
      }
    },
    "GrainOutput": {
      "type": "string",
      "title": "Grain Output",
      "additionalProperties": true
    },
    "GrainEnvReference": {
      "type": "object",
      "title": "Grain Environment Reference",
      "additionalProperties": false,
      "patternProperties": {
        "^[\\w\\-\\.]+$": {
          "type": [
            "string"
          ]
        }
      }
    },
    "GrainCommand": {
      "type": "string",
      "title": "Grain Command",
      "additionalProperties": true
    },
    "GrainSpecHostObject": {
      "type": "object",
      "title": "Spec Host Properties",
      "properties": {
        "name": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "service-account": {
          "type": "string"
        },
        "image": {
          "type": "string"
        },
        "kubernetes": {
          "$ref": "#/$defs/KubernetesObject"
        },
        "runner-namespace": {
          "type": "string"
        },
        "storage-size": {
          "type": "integer"
        },
        "isolated": {
          "type": "boolean"
        },
        "use-storage": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "KubernetesObject": {
      "type": "object",
      "properties": {
        "pod-labels": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PodLabels"
          }
        },
        "pod-annotations": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PodAnnotations"
          }
        },
        "node-selector": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/NodeSelector"
          }
        },
        "permissions": {
          "type": "object",
          "properties": {
            "destination-context-name": {
              "type": "string"
            },
            "secret-name": {
              "type": "string"
            },
            "secret-namespace": {
              "type": "string"
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "GrainSpecSourceObject": {
      "type": "object",
      "title": "PurpleSource",
      "properties": {
        "store": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "branch": {
          "type": "string"
        },
        "tag": {
          "type": "string"
        },
        "commit": {
          "type": "string"
        },
        "resource-type": {
          "type": "string"
        }
      },
      "required": [
        "path"
      ],
      "additionalProperties": false
    },
    "GrainSpecSources": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/GrainSpecSourceObject"
      }
    },
    "TfVarsFileSourceObject": {
      "type": "object",
      "title": "TfVarsFileSource",
      "properties": {
        "store": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "commit": {
          "type": "string"
        },
        "tag": {
          "type": "string"
        },
        "branch": {
          "type": "string"
        }
      },
      "required": [
        "path"
      ],
      "additionalProperties": false
    },
    "BlueprintInputObject": {
      "title": "Blueprint Input Object",
      "type": "object",
      "properties": {
        "parameter-name": {
          "type": "string"
        },
        "type": {
          "type": "string",
          "enum": [
            "string",
            "execution-host",
            "agent",
            "credentials",
            "parameter",
            "env",
            "input-source",
            "file"
          ]
        },
        "style": {
          "type": "string",
          "enum": [
            "multi-select",
            "duration",
            "radio",
            "text"
          ],
          "default": "text"
        },
        "description": {
          "type": "string",
          "description": "In the relevant UI field, enter a description to be displayed to the user."
        },
        "default": {
          "type": [
            "integer",
            "string",
            "boolean"
          ]
        },
        "sensitive": {
          "type": "boolean"
        },
        "pattern": {
          "type": "string"
        },
        "validation-description": {
          "type": "string"
        },
        "allowed-values": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "integer",
              "boolean"
            ]
          }
        },
        "depends-on": {
          "type": "string",
          "pattern": "^((.+)(,\\s*)?)+[^,]$"
        },
        "source-name": {
          "type": "string"
        },
        "overrides": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "bucket_name": {
                "type": "string"
              },
              "path_prefix": {
                "type": "string"
              },
              "filter": {
                "type": "string"
              },
              "object_key": {
                "type": "string"
              },
              "json_path": {
                "type": "string"
              },
              "display_json_path": {
                "type": "string"
              },
              "storage_account_name": {
                "type": "string"
              },
              "container_name": {
                "type": "string"
              },
              "blob_name": {
                "type": "string"
              },
              "path": {
                "type": "string"
              },
              "query": {
                "type": "string"
              },
              "credential": {
                "type": "string"
              },
              "filter_query": {
                "type": "string"
              },
              "select_query": {
                "type": "string"
              },
              "expand_query": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "max-size-MB": {
          "type": "number"
        },
        "max-files": {
          "type": "integer"
        },
        "allowed-formats": {
          "type": "array"
        },
        "allowed-credential-providers": {
          "type": "array",
          "uniqueItems": true,
          "additionalItems": false,
          "items": {
            "type": "string",
            "enum": [
              "aws",
              "azure",
              "vsphere",
              "artifactory",
              "intersight",
              "redhat",
              "nexus_dashboard",
              "nvaie"
            ]
          }
        }
      },
      "additionalProperties": false
    },
    "BlueprintOutputObject": {
      "type": "object",
      "title": "Blueptint Output Object",
      "properties": {
        "value": {
          "type": "string"
        },
        "kind": {
          "type": "string",
          "enum": [
            "regular",
            "link"
          ]
        },
        "quick": {
          "type": "boolean",
          "default": true
        }
      },
      "required": [
        "value"
      ],
      "additionalProperties": false
    },
    "BlueprintEnvReferenceObject": {
      "type": "object",
      "title": "Blueptint Environment Reference Object",
      "properties": {
        "labels-selector": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "BlueprintResourceRequirementObject": {
      "type": "object",
      "title": "Blueptint Resource Requirement",
      "properties": {
        "selector": {
          "$ref": "#/$defs/ResourceSelectorObject"
        }
      },
      "required": [
        "selector"
      ],
      "additionalProperties": false
    },
    "ResourceSelectorObject": {
      "type": "object",
      "title": "Blueptint Resource Selector",
      "properties": {
        "type": {
          "type": "string"
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "patternProperties": {
              "^[\\w\\-\\.]+$": {
                "type": [
                  "string",
                  "number",
                  "boolean"
                ]
              }
            }
          }
        },
        "quantity": {
          "type": [
            "integer",
            "string"
          ]
        }
      },
      "anyOf": [
        {
          "required": [
            "type"
          ]
        },
        {
          "required": [
            "attributes"
          ]
        }
      ],
      "additionalProperties": false
    },
    "InstructionsSourceObject": {
      "type": "object",
      "title": "InstructionsSource",
      "properties": {
        "store": {
          "type": "string"
        },
        "path": {
          "type": "string"
        }
      },
      "required": [
        "path",
        "store"
      ],
      "additionalProperties": false
    },
    "LayoutSourceObject": {
      "type": "object",
      "title": "LayoutSource",
      "properties": {
        "store": {
          "type": "string"
        },
        "path": {
          "type": "string"
        }
      },
      "required": [
        "path",
        "store"
      ],
      "additionalProperties": false
    },
    "CustomizationObject": {
      "type": "object",
      "properties": {
        "launch-form": {
          "$ref": "#/$defs/LaunchFormObject"
        }
      },
      "additionalProperties": false
    },
    "LaunchFormObject": {
      "type": "object",
      "title": "LaunchForm Object",
      "properties": {
        "steps": {
          "$ref": "#/$defs/LaunchFormStepsObject"
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LaunchFormInputObject"
          }
        },
        "categories": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LaunchFormCategoryObject"
          }
        }
      },
      "oneOf": [
        {
          "required": [
            "inputs"
          ]
        },
        {
          "required": [
            "categories"
          ]
        }
      ],
      "additionalProperties": false
    },
    "LaunchFormInputObject": {
      "type": "object",
      "title": "Launch Form Input Object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the input field"
        },
        "visible": {
          "type": [
            "string",
            "boolean"
          ],
          "description": "Conditional visibility expression using Liquid template syntax"
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": false
    },
    "LaunchFormStepObject": {
      "type": "object",
      "title": "Launch Form Step Object",
      "properties": {
        "visible": {
          "type": [
            "string",
            "boolean"
          ],
          "description": "Step visibility flag or Liquid expression"
        }
      },
      "required": [
        "visible"
      ],
      "additionalProperties": false
    },
    "LaunchFormStepsObject": {
      "type": "object",
      "title": "Launch Form Steps Object",
      "properties": {
        "title": {
          "$ref": "#/$defs/LaunchFormStepObject"
        },
        "ownersAndCollaborators": {
          "$ref": "#/$defs/LaunchFormStepObject"
        },
        "tags": {
          "$ref": "#/$defs/LaunchFormStepObject"
        },
        "workflows": {
          "$ref": "#/$defs/LaunchFormStepObject"
        }
      },
      "additionalProperties": false
    },
    "BlueprintLabelObject": {
      "type": "object",
      "title": "Blueprint Label Object",
      "properties": {
        "key": {
          "type": "string"
        },
        "value": {
          "type": "string"
        },
        "initial-color": {
          "type": "string"
        },
        "initial-quick-filter": {
          "type": "boolean"
        }
      },
      "required": [
        "key"
      ],
      "additionalProperties": false
    },
    "LaunchFormCategoryObject": {
      "type": "object",
      "title": "Launch Form Category Object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The display name of the category"
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LaunchFormInputObject"
          }
        },
        "sections": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LaunchFormSectionObject"
          }
        }
      },
      "required": [
        "name",
        "inputs"
      ],
      "additionalProperties": false
    },
    "LaunchFormSectionObject": {
      "type": "object",
      "title": "Launch Form Section Object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The display name of the section"
        },
        "inputs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/LaunchFormInputObject"
          }
        }
      },
      "required": [
        "name",
        "inputs"
      ],
      "additionalProperties": false
    }
  },
  "$ref": "#/$defs/Torque-Blueprint-Spec2"
}
