{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/uet-buildconfig-json/_shared/latest--2025.1208.826.json",
  "description": "Represents a build configuration for UET, which can be used to specify how to build an Unreal Engine plugin or project, or Unreal Engine itself.",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/RedpointGames/uet-schema/main/2025.1208.826.json",
    "sourceSha256": "68f74b056a0a8fea5ca110f73f8e17300cf7a3e76cd2a57ae9c68ba1fa7aadd2"
  },
  "type": "object",
  "properties": {
    "$schema": true,
    "Type": {
      "description": "Specifies the type of thing that this BuildConfig.json file builds, such as whether this is for building a plugin, project or Unreal Engine itself.",
      "enum": [
        "Project",
        "Plugin",
        "Engine"
      ]
    }
  },
  "required": [
    "Type"
  ],
  "allOf": [
    {
      "if": {
        "properties": {
          "Type": {
            "const": "Project"
          }
        }
      },
      "then": {
        "properties": {
          "Distributions": {
            "description": "A list of distributions.",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Specifies how to build, cook, test and deploy an Unreal Engine project.",
              "properties": {
                "Name": {
                  "description": "The name, as passed to the --distribution argument.",
                  "type": "string"
                },
                "FolderName": {
                  "description": "The relative path that the .uproject file is located underneath.",
                  "type": "string"
                },
                "ProjectName": {
                  "description": "The name of the .uproject file underneath the folder, without the .uproject extension.",
                  "type": "string"
                },
                "Prepare": {
                  "description": "Specifies the preparation scripts to run before various steps. You can specify multiple preparation entries.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "description": "A dynamically driven preparation, test or deployment step.",
                    "properties": {
                      "Name": {
                        "description": "The name of the job/step as it would be displayed on a build server. This must be unique amongst all tests defined.",
                        "type": "string"
                      },
                      "Manual": {
                        "description": "If set, this will be emitted as a manual job on build servers. Only applies to deployments. Defaults to false.",
                        "type": "boolean"
                      },
                      "Type": {
                        "enum": [
                          "Custom",
                          "DownloadPlugin",
                          "Predefined"
                        ]
                      }
                    },
                    "required": [
                      "Name"
                    ],
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Custom"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Custom"
                          ],
                          "properties": {
                            "Predefined": false,
                            "DownloadPlugin": false,
                            "Custom": {
                              "properties": {
                                "ScriptPath": {
                                  "description": "The path to the PowerShell script to execute, relative to the repository root.",
                                  "type": "string"
                                },
                                "ScriptArguments": {
                                  "description": "The arguments to pass to the PowerShell script, if any.",
                                  "type": "array",
                                  "items": {
                                    "description": "The arguments to pass to the PowerShell script, if any.",
                                    "type": "string"
                                  }
                                },
                                "RunBefore": {
                                  "description": "When to run this preparation step.",
                                  "type": "array",
                                  "items": {
                                    "description": "When to run this preparation step.",
                                    "enum": [
                                      "BuildGraph",
                                      "Compile",
                                      "Stage"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "ScriptPath",
                                "RunBefore"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "DownloadPlugin"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "DownloadPlugin"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Custom": false,
                            "DownloadPlugin": {
                              "properties": {
                                "Sources": {
                                  "description": "An ordered list of sources that the plugin should be obtained from. Only the\nfirst working source will be used.",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "GitUrl": {
                                        "description": "The Git URL to clone the plugin from. Environment variables can be specified\nin the form ${ENV_VAR} and will be replaced. This source will only be selected\nif all the environment variables used in the URL are set.",
                                        "type": "string"
                                      },
                                      "GitRef": {
                                        "description": "The Git ref to checkout. This can be a branch name.",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "GitUrl",
                                      "GitRef"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "FolderName": {
                                  "description": "The name of the folder underneath Plugins where this plugin will be placed.",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "Sources",
                                "FolderName"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Predefined"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Predefined"
                          ],
                          "properties": {
                            "Custom": false,
                            "DownloadPlugin": false,
                            "Predefined": {
                              "type": "string",
                              "description": "The predefined name defined earlier in configuration."
                            }
                          },
                          "type": "object"
                        }
                      }
                    ]
                  }
                },
                "Build": {
                  "type": "object",
                  "properties": {
                    "Editor": {
                      "type": "object",
                      "properties": {
                        "Target": {
                          "description": "The editor target to build.",
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "Game": {
                      "type": "object",
                      "properties": {
                        "Targets": {
                          "description": "A list of targets to build.",
                          "type": "array",
                          "items": {
                            "description": "A list of targets to build.",
                            "type": "string"
                          }
                        },
                        "Platforms": {
                          "description": "A list of platforms to build the project for.",
                          "type": "array",
                          "items": {
                            "description": "A list of platforms to build the project for.",
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "Platform": {
                                    "description": "The platform name to build the project for.",
                                    "type": "string"
                                  },
                                  "CookFlavors": {
                                    "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                    "type": "array",
                                    "items": {
                                      "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                      "type": "string"
                                    }
                                  }
                                },
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "Configurations": {
                          "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                          "type": "array",
                          "items": {
                            "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                            "type": "string"
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "Client": {
                      "type": "object",
                      "properties": {
                        "Targets": {
                          "description": "A list of targets to build.",
                          "type": "array",
                          "items": {
                            "description": "A list of targets to build.",
                            "type": "string"
                          }
                        },
                        "Platforms": {
                          "description": "A list of platforms to build the project for.",
                          "type": "array",
                          "items": {
                            "description": "A list of platforms to build the project for.",
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "Platform": {
                                    "description": "The platform name to build the project for.",
                                    "type": "string"
                                  },
                                  "CookFlavors": {
                                    "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                    "type": "array",
                                    "items": {
                                      "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                      "type": "string"
                                    }
                                  }
                                },
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "Configurations": {
                          "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                          "type": "array",
                          "items": {
                            "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                            "type": "string"
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "Server": {
                      "type": "object",
                      "properties": {
                        "Targets": {
                          "description": "A list of targets to build.",
                          "type": "array",
                          "items": {
                            "description": "A list of targets to build.",
                            "type": "string"
                          }
                        },
                        "Platforms": {
                          "description": "A list of platforms to build the project for.",
                          "type": "array",
                          "items": {
                            "description": "A list of platforms to build the project for.",
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "Platform": {
                                    "description": "The platform name to build the project for.",
                                    "type": "string"
                                  },
                                  "CookFlavors": {
                                    "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                    "type": "array",
                                    "items": {
                                      "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                      "type": "string"
                                    }
                                  }
                                },
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "Configurations": {
                          "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                          "type": "array",
                          "items": {
                            "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                            "type": "string"
                          }
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "additionalProperties": false
                },
                "Tests": {
                  "description": "A list of tests to run for the project.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "description": "A dynamically driven preparation, test or deployment step.",
                    "properties": {
                      "Name": {
                        "description": "The name of the job/step as it would be displayed on a build server. This must be unique amongst all tests defined.",
                        "type": "string"
                      },
                      "Manual": {
                        "description": "If set, this will be emitted as a manual job on build servers. Only applies to deployments. Defaults to false.",
                        "type": "boolean"
                      },
                      "Type": {
                        "enum": [
                          "Automation",
                          "Commandlet",
                          "Custom",
                          "Gauntlet",
                          "Predefined"
                        ]
                      }
                    },
                    "required": [
                      "Name"
                    ],
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Automation"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Automation"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Commandlet": false,
                            "Custom": false,
                            "Gauntlet": false,
                            "Automation": {
                              "properties": {
                                "TestPrefix": {
                                  "description": "Only tests with this prefix will be executed for automation testing.",
                                  "type": "string"
                                },
                                "TargetName": {
                                  "description": "The name of the editor target to run the tests against. If not set, defaults to UnrealEditor.",
                                  "type": "string"
                                },
                                "MinWorkerCount": {
                                  "description": "The minimum number of processes to launch for automation testing on the machine, regardless of available RAM. If not set, defaults to 1.",
                                  "type": "integer"
                                },
                                "TestRunTimeoutMinutes": {
                                  "description": "The timeout in minutes for running the whole automation test suite. If not set, defaults to 5 minutes.",
                                  "type": "integer"
                                },
                                "TestTimeoutMinutes": {
                                  "description": "The timeout in minutes for running an individual test. If not set, no timeout applies.",
                                  "type": "integer"
                                },
                                "TestAttemptCount": {
                                  "description": "The maximum number of times a test should be attempted if it fails. If not set, tests are never retried on failure.",
                                  "type": "integer"
                                }
                              },
                              "required": [
                                "TestPrefix"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Commandlet"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Commandlet"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Automation": false,
                            "Custom": false,
                            "Gauntlet": false,
                            "Commandlet": {
                              "properties": {
                                "Name": {
                                  "description": "The name of the commandlet to run.",
                                  "type": "string"
                                },
                                "AdditionalArguments": {
                                  "description": "Additional command line arguments to pass to Unreal Editor when running the commandlet.",
                                  "type": "array",
                                  "items": {
                                    "description": "Additional command line arguments to pass to Unreal Editor when running the commandlet.",
                                    "type": "string"
                                  }
                                },
                                "LogStartSignal": {
                                  "description": "To detect scenarios where the Unreal Editor stalls between startup and the commandlet\nrunning, you can make your commandlet emit a log when it starts and then set that log\nline here. If the editor doesn't start executing the commandlet code before LogStartTimeoutMinutes\nd,",
                                  "type": "string"
                                },
                                "LogStartTimeoutMinutes": {
                                  "description": "If set, the editor must emit LogStartSignal\nnumber of minutes elapses. If it doesn't, the editor instance is killed and the commandlet test is attempted\nagain, up to TestAttemptCount",
                                  "type": "integer"
                                },
                                "PreStartScriptPath": {
                                  "description": "The path to a PowerShell script to run before the commandlet starts. This can be used\nto prepare the environment for the commandlet to run in, such as terminating processes\nor writing data to the filesystem.\n\nThe pre-start script is passed the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TestProjectPath \"C:\\Path\\To\\UProject\\File.uproject\"",
                                  "type": "string"
                                },
                                "ValidationScriptPath": {
                                  "description": "The path to a PowerShell script which can be used to validate that the commandlet\nperformed the intended behaviour. This script is only run if the editor exits with\na non-zero exit code, and should be used to validate some global state of the\nsystem (such that the commandlet ran a process, or modified files on the filesystem).\n\nThe validation script is passed the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TestProjectPath \"C:\\Path\\To\\UProject\\File.uproject\"",
                                  "type": "string"
                                },
                                "TestAttemptCount": {
                                  "description": "The maximum number of times this commandlet test should be attempted if it fails. If not set, the commandlet is never automatically retried.",
                                  "type": "integer"
                                },
                                "GlobalMutexName": {
                                  "description": "If set, this global mutex is obtained for the duration of the test. This includes the\npre-start and validation scripts. This can be used to ensure that a commandlet that\nimpacts the global environment (like running a process) will not be run concurrently\nacross different build jobs on the same machine.",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "Name"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Custom"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Custom"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Automation": false,
                            "Commandlet": false,
                            "Gauntlet": false,
                            "Custom": {
                              "properties": {
                                "ScriptPath": {
                                  "description": "The path to the test script, relative to the repository root.\nThe script receives the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -StageDirectory \"C:\\Path\\To\\UProject\\Saved\\StagedBuilds\"",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "ScriptPath"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Gauntlet"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Gauntlet"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Automation": false,
                            "Commandlet": false,
                            "Custom": false,
                            "Gauntlet": {
                              "properties": {
                                "Requires": {
                                  "description": "Specifies the configurations and platforms that the Gauntlet tests is dependent on.",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "Type": {
                                        "description": "Specifies the dependency type (Game, Client or Server).",
                                        "enum": [
                                          "Game",
                                          "Client",
                                          "Server"
                                        ]
                                      },
                                      "Target": {
                                        "description": "The target to depend on.",
                                        "type": "string"
                                      },
                                      "Platforms": {
                                        "description": "The platforms to depend on.",
                                        "type": "array",
                                        "items": {
                                          "description": "The platforms to depend on.",
                                          "type": "string"
                                        }
                                      },
                                      "Configuration": {
                                        "description": "The configuration to depend on.",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "Type",
                                      "Target",
                                      "Platforms",
                                      "Configuration"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "ScriptPath": {
                                  "description": "The relative path to the Gauntlet script to execute.",
                                  "type": "string"
                                },
                                "DeviceListPath": {
                                  "description": "The relative path to the device list to use.",
                                  "type": "string"
                                },
                                "TestName": {
                                  "description": "The name of the test to run inside the Gauntlet script.",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "ScriptPath",
                                "DeviceListPath",
                                "TestName"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Predefined"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Predefined"
                          ],
                          "properties": {
                            "Automation": false,
                            "Commandlet": false,
                            "Custom": false,
                            "Gauntlet": false,
                            "Predefined": {
                              "type": "string",
                              "description": "The predefined name defined earlier in configuration."
                            }
                          },
                          "type": "object"
                        }
                      }
                    ]
                  }
                },
                "Deployment": {
                  "description": "A list of deployments to run for the project.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "description": "A dynamically driven preparation, test or deployment step.",
                    "properties": {
                      "Name": {
                        "description": "The name of the job/step as it would be displayed on a build server. This must be unique amongst all tests defined.",
                        "type": "string"
                      },
                      "Manual": {
                        "description": "If set, this will be emitted as a manual job on build servers. Only applies to deployments. Defaults to false.",
                        "type": "boolean"
                      },
                      "Type": {
                        "enum": [
                          "Custom",
                          "Steam",
                          "Meta",
                          "GooglePlay",
                          "Docker",
                          "Predefined"
                        ]
                      }
                    },
                    "required": [
                      "Name"
                    ],
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Custom"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Custom"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Steam": false,
                            "Meta": false,
                            "GooglePlay": false,
                            "Docker": false,
                            "Custom": {
                              "properties": {
                                "ScriptPath": {
                                  "description": "The path to the custom deployment script.\nThe script receives the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -StageDirectory \"C:\\Path\\To\\UProject\\Saved\\StagedBuilds\"\nPlus additional arguments defined by ScriptArguments.",
                                  "type": "string"
                                },
                                "Packages": {
                                  "description": "Specifies the packaging targets to obtain for deployment.\nIf not specified, all targets are obtained.",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "Type": {
                                        "description": "The type of target to deploy.",
                                        "enum": [
                                          "Game",
                                          "Client",
                                          "Server"
                                        ]
                                      },
                                      "Target": {
                                        "description": "The target to deploy.",
                                        "type": "string"
                                      },
                                      "Platform": {
                                        "description": "The platform to deploy.",
                                        "type": "string"
                                      },
                                      "Configuration": {
                                        "description": "The configuration to deploy.",
                                        "type": "string"
                                      },
                                      "CookFlavor": {
                                        "description": "If set, use this cook flavor instead of the default cook flavor.",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "Type",
                                      "Target",
                                      "Platform",
                                      "Configuration"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "ScriptArguments": {
                                  "description": "Additional arguments to pass to the PowerShell script, if any.",
                                  "type": "array",
                                  "items": {
                                    "description": "Additional arguments to pass to the PowerShell script, if any.",
                                    "type": "string"
                                  }
                                }
                              },
                              "required": [
                                "ScriptPath"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Steam"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Steam"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Custom": false,
                            "Meta": false,
                            "GooglePlay": false,
                            "Docker": false,
                            "Steam": {
                              "properties": {
                                "AppID": {
                                  "description": "The Steam app ID to deploy to.",
                                  "type": "string"
                                },
                                "DepotID": {
                                  "description": "The Steam depot ID to deploy to.",
                                  "type": "string"
                                },
                                "Channel": {
                                  "description": "The Steam channel to deploy to.",
                                  "type": "string"
                                },
                                "Package": {
                                  "type": "object",
                                  "properties": {
                                    "Type": {
                                      "description": "The type of target to deploy.",
                                      "enum": [
                                        "Game",
                                        "Client",
                                        "Server"
                                      ]
                                    },
                                    "Target": {
                                      "description": "The target to deploy.",
                                      "type": "string"
                                    },
                                    "Platform": {
                                      "description": "The platform to deploy.",
                                      "type": "string"
                                    },
                                    "Configuration": {
                                      "description": "The configuration to deploy.",
                                      "type": "string"
                                    },
                                    "CookFlavor": {
                                      "description": "If set, use this cook flavor instead of the default cook flavor.",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "Type",
                                    "Target",
                                    "Platform",
                                    "Configuration"
                                  ],
                                  "additionalProperties": false
                                },
                                "SteamUsername": {
                                  "description": "The Steam username to use for the deployment. If not set here, you must set the STEAM_USERNAME environment variable.",
                                  "type": "string"
                                },
                                "SteamCmdPath": {
                                  "description": "The path to the 'steamcmd.exe' executable, relative to the project root. Can be an absolute path instead. If not set here, you must set the STEAM_STEAMCMD_PATH environment variable.",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "AppID",
                                "DepotID",
                                "Channel",
                                "Package"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Meta"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Meta"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Custom": false,
                            "Steam": false,
                            "GooglePlay": false,
                            "Docker": false,
                            "Meta": {
                              "properties": {
                                "AppID": {
                                  "description": "The Meta Quest app ID to deploy to.",
                                  "type": "string"
                                },
                                "AppSecretEnvVar": {
                                  "description": "The environment variable that contains the app secret.",
                                  "type": "string"
                                },
                                "Channel": {
                                  "description": "The channel to deploy to (e.g. ALPHA)",
                                  "type": "string"
                                },
                                "Package": {
                                  "type": "object",
                                  "properties": {
                                    "Type": {
                                      "description": "The type of target to deploy.",
                                      "enum": [
                                        "Game",
                                        "Client",
                                        "Server"
                                      ]
                                    },
                                    "Target": {
                                      "description": "The target to deploy.",
                                      "type": "string"
                                    },
                                    "Platform": {
                                      "description": "The platform to deploy.",
                                      "type": "string"
                                    },
                                    "Configuration": {
                                      "description": "The configuration to deploy.",
                                      "type": "string"
                                    },
                                    "CookFlavor": {
                                      "description": "If set, use this cook flavor instead of the default cook flavor.",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "Type",
                                    "Target",
                                    "Platform",
                                    "Configuration"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "AppID",
                                "AppSecretEnvVar",
                                "Channel",
                                "Package"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "GooglePlay"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "GooglePlay"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Custom": false,
                            "Steam": false,
                            "Meta": false,
                            "Docker": false,
                            "GooglePlay": {
                              "properties": {
                                "PackageName": {
                                  "description": "The package name to deploy to.",
                                  "type": "string"
                                },
                                "Tracks": {
                                  "description": "One or more tracks to deploy to; entries must be one of 'production', 'beta', 'alpha' or 'internal'. Defaults to just 'internal'.",
                                  "type": "array",
                                  "items": {
                                    "description": "One or more tracks to deploy to; entries must be one of 'production', 'beta', 'alpha' or 'internal'. Defaults to just 'internal'.",
                                    "type": "string"
                                  }
                                },
                                "JsonKeyPath": {
                                  "description": "The path to the JSON key used to authenticate with the Google Play Developer Console. This should be set up according to Fastlane instructions: <https://docs.fastlane.tools/getting-started/android/setup/#collect-your-google-credentials>\n\nThis path is relative to the project root. It can also be an absolute path.\n\nIf you set the UET_GOOGLE_PLAY_JSON_KEY_PATH environment variable, it will override this setting. If you don't set this setting, you must provide set the UET_GOOGLE_PLAY_JSON_KEY_PATH environment variable.",
                                  "type": "string"
                                },
                                "Package": {
                                  "type": "object",
                                  "properties": {
                                    "Type": {
                                      "description": "The type of target to deploy.",
                                      "enum": [
                                        "Game",
                                        "Client",
                                        "Server"
                                      ]
                                    },
                                    "Target": {
                                      "description": "The target to deploy.",
                                      "type": "string"
                                    },
                                    "Platform": {
                                      "description": "The platform to deploy.",
                                      "type": "string"
                                    },
                                    "Configuration": {
                                      "description": "The configuration to deploy.",
                                      "type": "string"
                                    },
                                    "CookFlavor": {
                                      "description": "If set, use this cook flavor instead of the default cook flavor.",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "Type",
                                    "Target",
                                    "Platform",
                                    "Configuration"
                                  ],
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "PackageName",
                                "Package"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Docker"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Docker"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Custom": false,
                            "Steam": false,
                            "Meta": false,
                            "GooglePlay": false,
                            "Docker": {
                              "properties": {
                                "Image": {
                                  "description": "The Docker image tag without the version component.",
                                  "type": "string"
                                },
                                "Push": {
                                  "description": "If true, the image is pushed to the container registry. Defaults to 'true'.",
                                  "type": "boolean"
                                },
                                "KeepSymbols": {
                                  "description": "If true, debugging symbols will be kept in the container image. This makes the container image much larger. Defaults to 'false'.",
                                  "type": "boolean"
                                },
                                "Package": {
                                  "type": "object",
                                  "properties": {
                                    "Type": {
                                      "description": "The type of target to deploy.",
                                      "enum": [
                                        "Game",
                                        "Client",
                                        "Server"
                                      ]
                                    },
                                    "Target": {
                                      "description": "The target to deploy.",
                                      "type": "string"
                                    },
                                    "Platform": {
                                      "description": "The platform to deploy.",
                                      "type": "string"
                                    },
                                    "Configuration": {
                                      "description": "The configuration to deploy.",
                                      "type": "string"
                                    },
                                    "CookFlavor": {
                                      "description": "If set, use this cook flavor instead of the default cook flavor.",
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "Type",
                                    "Target",
                                    "Platform",
                                    "Configuration"
                                  ],
                                  "additionalProperties": false
                                },
                                "Helm": {
                                  "description": "Specifies a list of Helm deployments to run after the image has been pushed.",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "Name": {
                                        "description": "The name of the Helm chart that will be installed or upgraded.",
                                        "type": "string"
                                      },
                                      "Namespace": {
                                        "description": "The namespace to install the Helm chart into.",
                                        "type": "string"
                                      },
                                      "KubeContext": {
                                        "description": "The Kubernetes context to deploy to.",
                                        "type": "string"
                                      },
                                      "HelmChartPath": {
                                        "description": "The path to the Helm chart to deploy. The Helm chart will be passed --set agones.image \"image:tag\" --set agones.version \"version\"",
                                        "type": "string"
                                      },
                                      "HelmValues": {
                                        "description": "Additional --set key=value pairs to pass to this specific Helm deployment.",
                                        "type": "object",
                                        "additionalProperties": {
                                          "description": "Additional --set key=value pairs to pass to this specific Helm deployment.",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "required": [
                                      "Name",
                                      "Namespace",
                                      "KubeContext",
                                      "HelmChartPath"
                                    ],
                                    "additionalProperties": false
                                  }
                                }
                              },
                              "required": [
                                "Image",
                                "Package"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Predefined"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Predefined"
                          ],
                          "properties": {
                            "Custom": false,
                            "Steam": false,
                            "Meta": false,
                            "GooglePlay": false,
                            "Docker": false,
                            "Predefined": {
                              "type": "string",
                              "description": "The predefined name defined earlier in configuration."
                            }
                          },
                          "type": "object"
                        }
                      }
                    ]
                  }
                },
                "MobileProvisions": {
                  "description": "A list of mobile provisions to install to the local machine before building this project.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "BundleIdentifierPattern": {
                        "type": "string"
                      },
                      "PrivateKeyPasswordlessP12Path": {
                        "type": "string"
                      },
                      "MobileProvisionPath": {
                        "type": "string"
                      },
                      "AppleProvidedCertificatePath": {
                        "type": "string"
                      },
                      "KeychainPasswordEnvironmentVariable": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "PrivateKeyPasswordlessP12Path",
                      "MobileProvisionPath",
                      "AppleProvidedCertificatePath"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "Name",
                "FolderName",
                "ProjectName"
              ],
              "additionalProperties": false
            }
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "Type": {
            "const": "Plugin"
          }
        }
      },
      "then": {
        "properties": {
          "PluginName": {
            "description": "The name of your plugin. It must be such that \"PluginName/PluginName.uplugin\" exists.",
            "type": "string"
          },
          "Copyright": {
            "type": "object",
            "properties": {
              "Header": {
                "description": "Used for Marketplace/Fab submissions and update-copyright command.",
                "type": "string"
              },
              "ExcludePaths": {
                "description": "If set, these files will not have their headers updated during packaging.",
                "type": "array",
                "items": {
                  "description": "If set, these files will not have their headers updated during packaging.",
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          },
          "Tests": {
            "description": "A list of predefined tests that you can use with `uet test` or in other \"Tests\" sections for distributions.",
            "type": "array",
            "items": {
              "type": "object",
              "description": "A dynamically driven preparation, test or deployment step that is defined outside of a distribution, where dependencies need to be specified.",
              "properties": {
                "ShortName": {
                  "description": "For tests defined outside of distributions, an optional shorter name that can be used with `uet test`.",
                  "type": "string"
                },
                "Dependencies": {
                  "type": "object",
                  "description": "Specifies how to how to package and build the plugin so this test can be run.",
                  "properties": {
                    "EnvironmentVariables": {
                      "description": "A list of environment variables to set during the build.",
                      "type": "object",
                      "additionalProperties": {
                        "description": "A list of environment variables to set during the build.",
                        "type": "string"
                      }
                    },
                    "Build": {
                      "type": "object",
                      "properties": {
                        "Editor": {
                          "type": "object",
                          "properties": {
                            "Platforms": {
                              "description": "A list of platforms to build the plugin for on the editor target.",
                              "type": "array",
                              "items": {
                                "description": "A list of platforms to build the plugin for on the editor target.",
                                "enum": [
                                  "Win64",
                                  "Mac",
                                  "Linux"
                                ]
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "Game": {
                          "type": "object",
                          "properties": {
                            "Platforms": {
                              "description": "A list of platforms to build the plugin for on the target.",
                              "type": "array",
                              "items": {
                                "description": "A list of platforms to build the plugin for on the target.",
                                "oneOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "Platform": {
                                        "description": "The platform name to build the project for.",
                                        "type": "string"
                                      },
                                      "CookFlavors": {
                                        "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                        "type": "array",
                                        "items": {
                                          "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                ]
                              }
                            },
                            "Configurations": {
                              "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                              "type": "array",
                              "items": {
                                "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                                "type": "string"
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "Client": {
                          "type": "object",
                          "properties": {
                            "Platforms": {
                              "description": "A list of platforms to build the plugin for on the target.",
                              "type": "array",
                              "items": {
                                "description": "A list of platforms to build the plugin for on the target.",
                                "oneOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "Platform": {
                                        "description": "The platform name to build the project for.",
                                        "type": "string"
                                      },
                                      "CookFlavors": {
                                        "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                        "type": "array",
                                        "items": {
                                          "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                ]
                              }
                            },
                            "Configurations": {
                              "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                              "type": "array",
                              "items": {
                                "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                                "type": "string"
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "Server": {
                          "type": "object",
                          "properties": {
                            "Platforms": {
                              "description": "A list of platforms to build the plugin for on the target.",
                              "type": "array",
                              "items": {
                                "description": "A list of platforms to build the plugin for on the target.",
                                "oneOf": [
                                  {
                                    "type": "string"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "Platform": {
                                        "description": "The platform name to build the project for.",
                                        "type": "string"
                                      },
                                      "CookFlavors": {
                                        "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                        "type": "array",
                                        "items": {
                                          "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "additionalProperties": false
                                  }
                                ]
                              }
                            },
                            "Configurations": {
                              "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                              "type": "array",
                              "items": {
                                "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                                "type": "string"
                              }
                            }
                          },
                          "additionalProperties": false
                        },
                        "StrictIncludes": {
                          "description": "Forces --strict-includes for builds.",
                          "type": "boolean"
                        },
                        "StripDebugSymbols": {
                          "description": "If enabled, debug symbols and PDBs will be omitted, even for non-Shipping configurations.",
                          "type": "boolean"
                        },
                        "AppleArchitectureOnly": {
                          "description": "If enabled, the plugin will only be built for the Apple ARM64 architecture (and not legacy\nIntel x64) when building for macOS. This can significantly reduce compilation times when you\ndon't need Intel support.",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": false
                    },
                    "Package": {
                      "type": "object",
                      "properties": {
                        "Type": {
                          "description": "Defines the package type, such as whether it is being packaged for Marketplace or Fab submission. One of 'None', 'Generic', 'Marketplace' or 'Fab'. If not set, defaults to 'None'.",
                          "enum": [
                            "None",
                            "Generic",
                            "Marketplace",
                            "Fab"
                          ]
                        },
                        "Marketplace": {
                          "description": "DEPRECATED. Use the 'Type' setting instead.",
                          "type": "boolean"
                        },
                        "OutputFolderName": {
                          "description": "If not set, defaults to \"Packaged\".",
                          "type": "string"
                        },
                        "Filter": {
                          "description": "The path to the FilterPlugin.ini file used for packaging.",
                          "type": "string"
                        },
                        "UsePrecompiled": {
                          "description": "If set, overrides the default as to whether PRECOMPILED REMOVE BEGIN -> PRECOMPILED REMOVE END content should be removed from Build.cs files.\n\nBy default, if the package type is 'Generic', Build.cs files will have lines between PRECOMPILED REMOVE BEGIN and\nPRECOMPILED REMOVE END comments removed. For example:\n\n/* PRECOMPILED REMOVE BEGIN */\nvar bIncludesSourceCode = true;\nif (!bIncludesSourceCode)\n{\n    /* PRECOMPILED REMOVE END */\n    bUsePrecompiled = true;\n    /* PRECOMPILED REMOVE BEGIN */\n}\n/* PRECOMPILED REMOVE END */",
                          "type": "boolean"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "Build",
                    "Package"
                  ],
                  "additionalProperties": false
                },
                "Name": {
                  "type": "string"
                },
                "Manual": {
                  "type": "boolean"
                },
                "Type": {
                  "enum": [
                    "Automation",
                    "Commandlet",
                    "Custom",
                    "Gauntlet",
                    "ProjectPackage",
                    "Downstream",
                    "Predefined"
                  ]
                }
              },
              "required": [
                "Name"
              ],
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "Type": {
                        "const": "Automation"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "Automation"
                    ],
                    "properties": {
                      "Predefined": false,
                      "Commandlet": false,
                      "Custom": false,
                      "Gauntlet": false,
                      "ProjectPackage": false,
                      "Downstream": false,
                      "Automation": {
                        "properties": {
                          "TestPrefix": {
                            "description": "Only tests with this prefix will be executed for automation testing.",
                            "type": "string"
                          },
                          "Platforms": {
                            "description": "A list of platforms to execute automation tests on. A set of \"Win64\", \"Mac\" or both.",
                            "type": "array",
                            "items": {
                              "description": "A list of platforms to execute automation tests on. A set of \"Win64\", \"Mac\" or both.",
                              "enum": [
                                "Win64",
                                "Mac"
                              ]
                            }
                          },
                          "ConfigFiles": {
                            "description": "A list of folders whose contents should be copied into the Config folder of the host project used for automation testing. This is used to set configuration if your automation tests require specific configuration values to be set.",
                            "type": "array",
                            "items": {
                              "description": "A list of folders whose contents should be copied into the Config folder of the host project used for automation testing. This is used to set configuration if your automation tests require specific configuration values to be set.",
                              "type": "string"
                            }
                          },
                          "MinWorkerCount": {
                            "description": "The minimum number of processes to launch for automation testing on the machine, regardless of available RAM. If not set, defaults to 1.",
                            "type": "integer"
                          },
                          "TestRunTimeoutMinutes": {
                            "description": "The timeout in minutes for running the whole automation test suite. If not set, defaults to 5 minutes.",
                            "type": "integer"
                          },
                          "TestTimeoutMinutes": {
                            "description": "The timeout in minutes for running an individual test. If not set, no timeout applies.",
                            "type": "integer"
                          },
                          "TestAttemptCount": {
                            "description": "The maximum number of times a test should be attempted if it fails. If not set, tests are never retried on failure.",
                            "type": "integer"
                          }
                        },
                        "required": [
                          "TestPrefix",
                          "Platforms"
                        ],
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                {
                  "if": {
                    "properties": {
                      "Type": {
                        "const": "Commandlet"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "Commandlet"
                    ],
                    "properties": {
                      "Predefined": false,
                      "Automation": false,
                      "Custom": false,
                      "Gauntlet": false,
                      "ProjectPackage": false,
                      "Downstream": false,
                      "Commandlet": {
                        "properties": {
                          "Name": {
                            "description": "The name of the commandlet to run.",
                            "type": "string"
                          },
                          "AdditionalArguments": {
                            "description": "Additional command line arguments to pass to Unreal Editor when running the commandlet.",
                            "type": "array",
                            "items": {
                              "description": "Additional command line arguments to pass to Unreal Editor when running the commandlet.",
                              "type": "string"
                            }
                          },
                          "Platforms": {
                            "description": "A list of platforms to execute this commandlet test on. A set of \"Win64\", \"Mac\" or both.",
                            "type": "array",
                            "items": {
                              "description": "A list of platforms to execute this commandlet test on. A set of \"Win64\", \"Mac\" or both.",
                              "enum": [
                                "Win64",
                                "Mac"
                              ]
                            }
                          },
                          "LogStartSignal": {
                            "description": "To detect scenarios where the Unreal Editor stalls between startup and the commandlet\nrunning, you can make your commandlet emit a log when it starts and then set that log\nline here. If the editor doesn't start executing the commandlet code before LogStartTimeoutMinutes\nd,",
                            "type": "string"
                          },
                          "LogStartTimeoutMinutes": {
                            "description": "If set, the editor must emit LogStartSignal\nnumber of minutes elapses. If it doesn't, the editor instance is killed and the commandlet test is attempted\nagain, up to TestAttemptCount",
                            "type": "integer"
                          },
                          "PreStartScriptPath": {
                            "description": "The path to a PowerShell script to run before the commandlet starts. This can be used\nto prepare the environment for the commandlet to run in, such as terminating processes\nor writing data to the filesystem.\n\nThe pre-start script is passed the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TestProjectPath \"C:\\Path\\To\\UProject\\File.uproject\"",
                            "type": "string"
                          },
                          "ValidationScriptPath": {
                            "description": "The path to a PowerShell script which can be used to validate that the commandlet\nperformed the intended behaviour. This script is only run if the editor exits with\na non-zero exit code, and should be used to validate some global state of the\nsystem (such that the commandlet ran a process, or modified files on the filesystem).\n\nThe validation script is passed the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TestProjectPath \"C:\\Path\\To\\UProject\\File.uproject\"",
                            "type": "string"
                          },
                          "TestAttemptCount": {
                            "description": "The maximum number of times this commandlet test should be attempted if it fails. If not set, the commandlet is never automatically retried.",
                            "type": "integer"
                          },
                          "GlobalMutexName": {
                            "description": "If set, this global mutex is obtained for the duration of the test. This includes the\npre-start and validation scripts. This can be used to ensure that a commandlet that\nimpacts the global environment (like running a process) will not be run concurrently\nacross different build jobs on the same machine.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "Name",
                          "Platforms"
                        ],
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                {
                  "if": {
                    "properties": {
                      "Type": {
                        "const": "Custom"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "Custom"
                    ],
                    "properties": {
                      "Predefined": false,
                      "Automation": false,
                      "Commandlet": false,
                      "Gauntlet": false,
                      "ProjectPackage": false,
                      "Downstream": false,
                      "Custom": {
                        "properties": {
                          "TestAgainst": {
                            "description": "Must be set to either \"TestProject\" or \"PackagedPlugin\".",
                            "enum": [
                              "TestProject",
                              "PackagedPlugin"
                            ]
                          },
                          "Platforms": {
                            "description": "A list of platforms to execute custom tests on. A set of \"Win64\", \"Mac\" or both.",
                            "type": "array",
                            "items": {
                              "description": "A list of platforms to execute custom tests on. A set of \"Win64\", \"Mac\" or both.",
                              "enum": [
                                "Win64",
                                "Mac"
                              ]
                            }
                          },
                          "ScriptPath": {
                            "description": "The path to the test script, relative to the repository root.\nIf you are testing against \"TestProject\", then the script receives the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TestProjectPath \"C:\\Path\\To\\UProject\\File.uproject\"\nIf you are testing against \"PackagedPlugin\", then the script receives the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TempPath \"C:\\Path\\To\\TemporaryFolder\"\n  -PackagedPluginPath \"C:\\Path\\To\\PackagedPlugin\"",
                            "type": "string"
                          }
                        },
                        "required": [
                          "TestAgainst",
                          "Platforms",
                          "ScriptPath"
                        ],
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                {
                  "if": {
                    "properties": {
                      "Type": {
                        "const": "Gauntlet"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "Gauntlet"
                    ],
                    "properties": {
                      "Predefined": false,
                      "Automation": false,
                      "Commandlet": false,
                      "Custom": false,
                      "ProjectPackage": false,
                      "Downstream": false,
                      "Gauntlet": {
                        "properties": {
                          "Requires": {
                            "description": "Specifies the configurations and platforms that the Gauntlet tests is dependent on.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "Type": {
                                  "description": "Specifies the dependency type (Game, Client or Server).",
                                  "enum": [
                                    "Game",
                                    "Client",
                                    "Server"
                                  ]
                                },
                                "Target": {
                                  "description": "The target to depend on.",
                                  "type": "string"
                                },
                                "Platforms": {
                                  "description": "The platforms to depend on.",
                                  "type": "array",
                                  "items": {
                                    "description": "The platforms to depend on.",
                                    "type": "string"
                                  }
                                },
                                "Configuration": {
                                  "description": "The configuration to depend on.",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "Type",
                                "Target",
                                "Platforms",
                                "Configuration"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "ScriptPath": {
                            "description": "The relative path to the Gauntlet script to execute.",
                            "type": "string"
                          },
                          "DeviceListPath": {
                            "description": "The relative path to the device list to use.",
                            "type": "string"
                          },
                          "TestName": {
                            "description": "The name of the test to run inside the Gauntlet script.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "ScriptPath",
                          "DeviceListPath",
                          "TestName"
                        ],
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                {
                  "if": {
                    "properties": {
                      "Type": {
                        "const": "ProjectPackage"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "ProjectPackage"
                    ],
                    "properties": {
                      "Predefined": false,
                      "Automation": false,
                      "Commandlet": false,
                      "Custom": false,
                      "Gauntlet": false,
                      "Downstream": false,
                      "ProjectPackage": {
                        "properties": {
                          "HostPlatform": {
                            "description": "The host platform that the project is built on.",
                            "enum": [
                              "Win64",
                              "Mac"
                            ]
                          },
                          "ProjectCopyFilesPath": {
                            "description": "If specified, the path underneath the plugin root to copy files from into the project after obtaining it from the source. This can be used to set config files for the project.",
                            "type": "string"
                          },
                          "TargetPlatform": {
                            "description": "The platform to build, cook and package for.",
                            "type": "string"
                          },
                          "BootTest": {
                            "type": "object",
                            "description": "Configuration for booting a packaged project on device.",
                            "properties": {
                              "BuildMachineTag": {
                                "description": "If set, overrides the CI/CD machine that runs the test node.",
                                "type": "string"
                              },
                              "DeviceId": {
                                "description": "If set, the device to deploy to.",
                                "type": "string"
                              },
                              "GauntletArguments": {
                                "description": "Command line arguments to pass to Gauntlet.",
                                "type": "array",
                                "items": {
                                  "description": "Command line arguments to pass to Gauntlet.",
                                  "type": "string"
                                }
                              }
                            },
                            "additionalProperties": false
                          }
                        },
                        "required": [
                          "HostPlatform",
                          "TargetPlatform"
                        ],
                        "type": "object"
                      }
                    },
                    "type": "object"
                  }
                },
                {
                  "if": {
                    "properties": {
                      "Type": {
                        "const": "Downstream"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "Downstream"
                    ],
                    "properties": {
                      "Predefined": false,
                      "Automation": false,
                      "Commandlet": false,
                      "Custom": false,
                      "Gauntlet": false,
                      "ProjectPackage": false,
                      "Downstream": {
                        "properties": {}
                      }
                    },
                    "type": "object"
                  }
                },
                {
                  "if": {
                    "properties": {
                      "Type": {
                        "const": "Predefined"
                      }
                    }
                  },
                  "then": {
                    "required": [
                      "Predefined"
                    ],
                    "properties": {
                      "Automation": false,
                      "Commandlet": false,
                      "Custom": false,
                      "Gauntlet": false,
                      "ProjectPackage": false,
                      "Downstream": false,
                      "Predefined": {
                        "type": "string",
                        "description": "The predefined name defined earlier in configuration."
                      }
                    },
                    "type": "object"
                  }
                }
              ]
            }
          },
          "Distributions": {
            "description": "A list of distributions.",
            "type": "array",
            "items": {
              "type": "object",
              "description": "Specifies how to build, package, test and deploy an Unreal Engine plugin.",
              "properties": {
                "Name": {
                  "description": "The name, as passed to the --distribution argument.",
                  "type": "string"
                },
                "EnvironmentVariables": {
                  "description": "A list of environment variables to set during the build.",
                  "type": "object",
                  "additionalProperties": {
                    "description": "A list of environment variables to set during the build.",
                    "type": "string"
                  }
                },
                "Clean": {
                  "type": "object",
                  "properties": {
                    "Filespecs": {
                      "description": "A list of filespecs that should be cleaned. Use * as a wildcard for a single path component, or ... as a wildcard for multiple path components.",
                      "type": "array",
                      "items": {
                        "description": "A list of filespecs that should be cleaned. Use * as a wildcard for a single path component, or ... as a wildcard for multiple path components.",
                        "type": "string"
                      }
                    }
                  },
                  "additionalProperties": false
                },
                "Prepare": {
                  "description": "Specifies the preparation scripts to run before various steps. You can specify multiple preparation entries.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "description": "A dynamically driven preparation, test or deployment step.",
                    "properties": {
                      "Name": {
                        "description": "The name of the job/step as it would be displayed on a build server. This must be unique amongst all tests defined.",
                        "type": "string"
                      },
                      "Manual": {
                        "description": "If set, this will be emitted as a manual job on build servers. Only applies to deployments. Defaults to false.",
                        "type": "boolean"
                      },
                      "Type": {
                        "enum": [
                          "Custom",
                          "Predefined"
                        ]
                      }
                    },
                    "required": [
                      "Name"
                    ],
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Custom"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Custom"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Custom": {
                              "properties": {
                                "ScriptPath": {
                                  "description": "The path to the PowerShell script to execute, relative to the repository root.",
                                  "type": "string"
                                },
                                "RunBefore": {
                                  "description": "When to run this preparation step.",
                                  "type": "array",
                                  "items": {
                                    "description": "When to run this preparation step.",
                                    "enum": [
                                      "BuildGraph",
                                      "AssembleFinalize",
                                      "Compile"
                                    ]
                                  }
                                }
                              },
                              "required": [
                                "ScriptPath",
                                "RunBefore"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Predefined"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Predefined"
                          ],
                          "properties": {
                            "Custom": false,
                            "Predefined": {
                              "type": "string",
                              "description": "The predefined name defined earlier in configuration."
                            }
                          },
                          "type": "object"
                        }
                      }
                    ]
                  }
                },
                "Build": {
                  "type": "object",
                  "properties": {
                    "Editor": {
                      "type": "object",
                      "properties": {
                        "Platforms": {
                          "description": "A list of platforms to build the plugin for on the editor target.",
                          "type": "array",
                          "items": {
                            "description": "A list of platforms to build the plugin for on the editor target.",
                            "enum": [
                              "Win64",
                              "Mac",
                              "Linux"
                            ]
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "Game": {
                      "type": "object",
                      "properties": {
                        "Platforms": {
                          "description": "A list of platforms to build the plugin for on the target.",
                          "type": "array",
                          "items": {
                            "description": "A list of platforms to build the plugin for on the target.",
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "Platform": {
                                    "description": "The platform name to build the project for.",
                                    "type": "string"
                                  },
                                  "CookFlavors": {
                                    "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                    "type": "array",
                                    "items": {
                                      "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                      "type": "string"
                                    }
                                  }
                                },
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "Configurations": {
                          "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                          "type": "array",
                          "items": {
                            "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                            "type": "string"
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "Client": {
                      "type": "object",
                      "properties": {
                        "Platforms": {
                          "description": "A list of platforms to build the plugin for on the target.",
                          "type": "array",
                          "items": {
                            "description": "A list of platforms to build the plugin for on the target.",
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "Platform": {
                                    "description": "The platform name to build the project for.",
                                    "type": "string"
                                  },
                                  "CookFlavors": {
                                    "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                    "type": "array",
                                    "items": {
                                      "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                      "type": "string"
                                    }
                                  }
                                },
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "Configurations": {
                          "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                          "type": "array",
                          "items": {
                            "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                            "type": "string"
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "Server": {
                      "type": "object",
                      "properties": {
                        "Platforms": {
                          "description": "A list of platforms to build the plugin for on the target.",
                          "type": "array",
                          "items": {
                            "description": "A list of platforms to build the plugin for on the target.",
                            "oneOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "object",
                                "properties": {
                                  "Platform": {
                                    "description": "The platform name to build the project for.",
                                    "type": "string"
                                  },
                                  "CookFlavors": {
                                    "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                    "type": "array",
                                    "items": {
                                      "description": "The flavors to cook an Android platform for. e.g. ASTC, DXT, ETC2, Multi.",
                                      "type": "string"
                                    }
                                  }
                                },
                                "additionalProperties": false
                              }
                            ]
                          }
                        },
                        "Configurations": {
                          "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                          "type": "array",
                          "items": {
                            "description": "If not specified, defaults to [\"Development\", \"Shipping\"].",
                            "type": "string"
                          }
                        }
                      },
                      "additionalProperties": false
                    },
                    "StrictIncludes": {
                      "description": "Forces --strict-includes for builds.",
                      "type": "boolean"
                    },
                    "StripDebugSymbols": {
                      "description": "If enabled, debug symbols and PDBs will be omitted, even for non-Shipping configurations.",
                      "type": "boolean"
                    },
                    "AppleArchitectureOnly": {
                      "description": "If enabled, the plugin will only be built for the Apple ARM64 architecture (and not legacy\nIntel x64) when building for macOS. This can significantly reduce compilation times when you\ndon't need Intel support.",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "Tests": {
                  "description": "A list of tests to run for the plugin.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "description": "A dynamically driven preparation, test or deployment step.",
                    "properties": {
                      "Name": {
                        "description": "The name of the job/step as it would be displayed on a build server. This must be unique amongst all tests defined.",
                        "type": "string"
                      },
                      "Manual": {
                        "description": "If set, this will be emitted as a manual job on build servers. Only applies to deployments. Defaults to false.",
                        "type": "boolean"
                      },
                      "Type": {
                        "enum": [
                          "Automation",
                          "Commandlet",
                          "Custom",
                          "Gauntlet",
                          "ProjectPackage",
                          "Downstream",
                          "Predefined"
                        ]
                      }
                    },
                    "required": [
                      "Name"
                    ],
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Automation"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Automation"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Commandlet": false,
                            "Custom": false,
                            "Gauntlet": false,
                            "ProjectPackage": false,
                            "Downstream": false,
                            "Automation": {
                              "properties": {
                                "TestPrefix": {
                                  "description": "Only tests with this prefix will be executed for automation testing.",
                                  "type": "string"
                                },
                                "Platforms": {
                                  "description": "A list of platforms to execute automation tests on. A set of \"Win64\", \"Mac\" or both.",
                                  "type": "array",
                                  "items": {
                                    "description": "A list of platforms to execute automation tests on. A set of \"Win64\", \"Mac\" or both.",
                                    "enum": [
                                      "Win64",
                                      "Mac"
                                    ]
                                  }
                                },
                                "ConfigFiles": {
                                  "description": "A list of folders whose contents should be copied into the Config folder of the host project used for automation testing. This is used to set configuration if your automation tests require specific configuration values to be set.",
                                  "type": "array",
                                  "items": {
                                    "description": "A list of folders whose contents should be copied into the Config folder of the host project used for automation testing. This is used to set configuration if your automation tests require specific configuration values to be set.",
                                    "type": "string"
                                  }
                                },
                                "MinWorkerCount": {
                                  "description": "The minimum number of processes to launch for automation testing on the machine, regardless of available RAM. If not set, defaults to 1.",
                                  "type": "integer"
                                },
                                "TestRunTimeoutMinutes": {
                                  "description": "The timeout in minutes for running the whole automation test suite. If not set, defaults to 5 minutes.",
                                  "type": "integer"
                                },
                                "TestTimeoutMinutes": {
                                  "description": "The timeout in minutes for running an individual test. If not set, no timeout applies.",
                                  "type": "integer"
                                },
                                "TestAttemptCount": {
                                  "description": "The maximum number of times a test should be attempted if it fails. If not set, tests are never retried on failure.",
                                  "type": "integer"
                                }
                              },
                              "required": [
                                "TestPrefix",
                                "Platforms"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Commandlet"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Commandlet"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Automation": false,
                            "Custom": false,
                            "Gauntlet": false,
                            "ProjectPackage": false,
                            "Downstream": false,
                            "Commandlet": {
                              "properties": {
                                "Name": {
                                  "description": "The name of the commandlet to run.",
                                  "type": "string"
                                },
                                "AdditionalArguments": {
                                  "description": "Additional command line arguments to pass to Unreal Editor when running the commandlet.",
                                  "type": "array",
                                  "items": {
                                    "description": "Additional command line arguments to pass to Unreal Editor when running the commandlet.",
                                    "type": "string"
                                  }
                                },
                                "Platforms": {
                                  "description": "A list of platforms to execute this commandlet test on. A set of \"Win64\", \"Mac\" or both.",
                                  "type": "array",
                                  "items": {
                                    "description": "A list of platforms to execute this commandlet test on. A set of \"Win64\", \"Mac\" or both.",
                                    "enum": [
                                      "Win64",
                                      "Mac"
                                    ]
                                  }
                                },
                                "LogStartSignal": {
                                  "description": "To detect scenarios where the Unreal Editor stalls between startup and the commandlet\nrunning, you can make your commandlet emit a log when it starts and then set that log\nline here. If the editor doesn't start executing the commandlet code before LogStartTimeoutMinutes\nd,",
                                  "type": "string"
                                },
                                "LogStartTimeoutMinutes": {
                                  "description": "If set, the editor must emit LogStartSignal\nnumber of minutes elapses. If it doesn't, the editor instance is killed and the commandlet test is attempted\nagain, up to TestAttemptCount",
                                  "type": "integer"
                                },
                                "PreStartScriptPath": {
                                  "description": "The path to a PowerShell script to run before the commandlet starts. This can be used\nto prepare the environment for the commandlet to run in, such as terminating processes\nor writing data to the filesystem.\n\nThe pre-start script is passed the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TestProjectPath \"C:\\Path\\To\\UProject\\File.uproject\"",
                                  "type": "string"
                                },
                                "ValidationScriptPath": {
                                  "description": "The path to a PowerShell script which can be used to validate that the commandlet\nperformed the intended behaviour. This script is only run if the editor exits with\na non-zero exit code, and should be used to validate some global state of the\nsystem (such that the commandlet ran a process, or modified files on the filesystem).\n\nThe validation script is passed the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TestProjectPath \"C:\\Path\\To\\UProject\\File.uproject\"",
                                  "type": "string"
                                },
                                "TestAttemptCount": {
                                  "description": "The maximum number of times this commandlet test should be attempted if it fails. If not set, the commandlet is never automatically retried.",
                                  "type": "integer"
                                },
                                "GlobalMutexName": {
                                  "description": "If set, this global mutex is obtained for the duration of the test. This includes the\npre-start and validation scripts. This can be used to ensure that a commandlet that\nimpacts the global environment (like running a process) will not be run concurrently\nacross different build jobs on the same machine.",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "Name",
                                "Platforms"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Custom"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Custom"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Automation": false,
                            "Commandlet": false,
                            "Gauntlet": false,
                            "ProjectPackage": false,
                            "Downstream": false,
                            "Custom": {
                              "properties": {
                                "TestAgainst": {
                                  "description": "Must be set to either \"TestProject\" or \"PackagedPlugin\".",
                                  "enum": [
                                    "TestProject",
                                    "PackagedPlugin"
                                  ]
                                },
                                "Platforms": {
                                  "description": "A list of platforms to execute custom tests on. A set of \"Win64\", \"Mac\" or both.",
                                  "type": "array",
                                  "items": {
                                    "description": "A list of platforms to execute custom tests on. A set of \"Win64\", \"Mac\" or both.",
                                    "enum": [
                                      "Win64",
                                      "Mac"
                                    ]
                                  }
                                },
                                "ScriptPath": {
                                  "description": "The path to the test script, relative to the repository root.\nIf you are testing against \"TestProject\", then the script receives the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TestProjectPath \"C:\\Path\\To\\UProject\\File.uproject\"\nIf you are testing against \"PackagedPlugin\", then the script receives the following parameters:\n  -EnginePath \"C:\\Path\\To\\UnrealEngine\"\n  -TempPath \"C:\\Path\\To\\TemporaryFolder\"\n  -PackagedPluginPath \"C:\\Path\\To\\PackagedPlugin\"",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "TestAgainst",
                                "Platforms",
                                "ScriptPath"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Gauntlet"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Gauntlet"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Automation": false,
                            "Commandlet": false,
                            "Custom": false,
                            "ProjectPackage": false,
                            "Downstream": false,
                            "Gauntlet": {
                              "properties": {
                                "Requires": {
                                  "description": "Specifies the configurations and platforms that the Gauntlet tests is dependent on.",
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "Type": {
                                        "description": "Specifies the dependency type (Game, Client or Server).",
                                        "enum": [
                                          "Game",
                                          "Client",
                                          "Server"
                                        ]
                                      },
                                      "Target": {
                                        "description": "The target to depend on.",
                                        "type": "string"
                                      },
                                      "Platforms": {
                                        "description": "The platforms to depend on.",
                                        "type": "array",
                                        "items": {
                                          "description": "The platforms to depend on.",
                                          "type": "string"
                                        }
                                      },
                                      "Configuration": {
                                        "description": "The configuration to depend on.",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "Type",
                                      "Target",
                                      "Platforms",
                                      "Configuration"
                                    ],
                                    "additionalProperties": false
                                  }
                                },
                                "ScriptPath": {
                                  "description": "The relative path to the Gauntlet script to execute.",
                                  "type": "string"
                                },
                                "DeviceListPath": {
                                  "description": "The relative path to the device list to use.",
                                  "type": "string"
                                },
                                "TestName": {
                                  "description": "The name of the test to run inside the Gauntlet script.",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "ScriptPath",
                                "DeviceListPath",
                                "TestName"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "ProjectPackage"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "ProjectPackage"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Automation": false,
                            "Commandlet": false,
                            "Custom": false,
                            "Gauntlet": false,
                            "Downstream": false,
                            "ProjectPackage": {
                              "properties": {
                                "HostPlatform": {
                                  "description": "The host platform that the project is built on.",
                                  "enum": [
                                    "Win64",
                                    "Mac"
                                  ]
                                },
                                "ProjectCopyFilesPath": {
                                  "description": "If specified, the path underneath the plugin root to copy files from into the project after obtaining it from the source. This can be used to set config files for the project.",
                                  "type": "string"
                                },
                                "TargetPlatform": {
                                  "description": "The platform to build, cook and package for.",
                                  "type": "string"
                                },
                                "BootTest": {
                                  "type": "object",
                                  "description": "Configuration for booting a packaged project on device.",
                                  "properties": {
                                    "BuildMachineTag": {
                                      "description": "If set, overrides the CI/CD machine that runs the test node.",
                                      "type": "string"
                                    },
                                    "DeviceId": {
                                      "description": "If set, the device to deploy to.",
                                      "type": "string"
                                    },
                                    "GauntletArguments": {
                                      "description": "Command line arguments to pass to Gauntlet.",
                                      "type": "array",
                                      "items": {
                                        "description": "Command line arguments to pass to Gauntlet.",
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "additionalProperties": false
                                }
                              },
                              "required": [
                                "HostPlatform",
                                "TargetPlatform"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Downstream"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Downstream"
                          ],
                          "properties": {
                            "Predefined": false,
                            "Automation": false,
                            "Commandlet": false,
                            "Custom": false,
                            "Gauntlet": false,
                            "ProjectPackage": false,
                            "Downstream": {
                              "properties": {}
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Predefined"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Predefined"
                          ],
                          "properties": {
                            "Automation": false,
                            "Commandlet": false,
                            "Custom": false,
                            "Gauntlet": false,
                            "ProjectPackage": false,
                            "Downstream": false,
                            "Predefined": {
                              "type": "string",
                              "description": "The predefined name defined earlier in configuration."
                            }
                          },
                          "type": "object"
                        }
                      }
                    ]
                  }
                },
                "Package": {
                  "type": "object",
                  "properties": {
                    "Type": {
                      "description": "Defines the package type, such as whether it is being packaged for Marketplace or Fab submission. One of 'None', 'Generic', 'Marketplace' or 'Fab'. If not set, defaults to 'None'.",
                      "enum": [
                        "None",
                        "Generic",
                        "Marketplace",
                        "Fab"
                      ]
                    },
                    "Marketplace": {
                      "description": "DEPRECATED. Use the 'Type' setting instead.",
                      "type": "boolean"
                    },
                    "OutputFolderName": {
                      "description": "If not set, defaults to \"Packaged\".",
                      "type": "string"
                    },
                    "Filter": {
                      "description": "The path to the FilterPlugin.ini file used for packaging.",
                      "type": "string"
                    },
                    "UsePrecompiled": {
                      "description": "If set, overrides the default as to whether PRECOMPILED REMOVE BEGIN -> PRECOMPILED REMOVE END content should be removed from Build.cs files.\n\nBy default, if the package type is 'Generic', Build.cs files will have lines between PRECOMPILED REMOVE BEGIN and\nPRECOMPILED REMOVE END comments removed. For example:\n\n/* PRECOMPILED REMOVE BEGIN */\nvar bIncludesSourceCode = true;\nif (!bIncludesSourceCode)\n{\n    /* PRECOMPILED REMOVE END */\n    bUsePrecompiled = true;\n    /* PRECOMPILED REMOVE BEGIN */\n}\n/* PRECOMPILED REMOVE END */",
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "Deployment": {
                  "description": "Specifies the deployment steps.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "description": "A dynamically driven preparation, test or deployment step.",
                    "properties": {
                      "Name": {
                        "description": "The name of the job/step as it would be displayed on a build server. This must be unique amongst all tests defined.",
                        "type": "string"
                      },
                      "Manual": {
                        "description": "If set, this will be emitted as a manual job on build servers. Only applies to deployments. Defaults to false.",
                        "type": "boolean"
                      },
                      "Type": {
                        "enum": [
                          "BackblazeB2",
                          "Predefined"
                        ]
                      }
                    },
                    "required": [
                      "Name"
                    ],
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "BackblazeB2"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "BackblazeB2"
                          ],
                          "properties": {
                            "Predefined": false,
                            "BackblazeB2": {
                              "properties": {
                                "BucketName": {
                                  "description": "The Backblaze B2 bucket to upload to.",
                                  "type": "string"
                                },
                                "FolderPrefix": {
                                  "description": "The folder prefix to use when uploading. Either this or 'FolderPrefixEnvVar' must be set.",
                                  "type": "string"
                                },
                                "FolderPrefixEnvVar": {
                                  "description": "The environment variable that contains the folder prefix to use when uploading. Either this or 'FolderPrefix' must be set. This should be set on your build server and made available to build jobs.",
                                  "type": "string"
                                },
                                "Strategy": {
                                  "description": "The strategy to use for the upload.",
                                  "enum": [
                                    "Continuous",
                                    "Channel"
                                  ]
                                },
                                "DefaultChannelName": {
                                  "description": "The default channel name used for the channel upload strategy",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "BucketName"
                              ],
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "Type": {
                              "const": "Predefined"
                            }
                          }
                        },
                        "then": {
                          "required": [
                            "Predefined"
                          ],
                          "properties": {
                            "BackblazeB2": false,
                            "Predefined": {
                              "type": "string",
                              "description": "The predefined name defined earlier in configuration."
                            }
                          },
                          "type": "object"
                        }
                      }
                    ]
                  }
                },
                "Gauntlet": {
                  "type": "object",
                  "properties": {
                    "ConfigFiles": {
                      "description": "Configuration files to apply to the project that hosts Gauntlet tests.",
                      "type": "array",
                      "items": {
                        "description": "Configuration files to apply to the project that hosts Gauntlet tests.",
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "ConfigFiles"
                  ],
                  "additionalProperties": false
                },
                "MobileProvisions": {
                  "description": "A list of mobile provisions to install to the local machine before building.",
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "BundleIdentifierPattern": {
                        "type": "string"
                      },
                      "PrivateKeyPasswordlessP12Path": {
                        "type": "string"
                      },
                      "MobileProvisionPath": {
                        "type": "string"
                      },
                      "AppleProvidedCertificatePath": {
                        "type": "string"
                      },
                      "KeychainPasswordEnvironmentVariable": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "PrivateKeyPasswordlessP12Path",
                      "MobileProvisionPath",
                      "AppleProvidedCertificatePath"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "required": [
                "Name"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "PluginName"
        ],
        "type": "object"
      }
    },
    {
      "if": {
        "properties": {
          "Type": {
            "const": "Engine"
          }
        }
      },
      "then": {
        "properties": {
          "Distributions": {
            "description": "A list of distributions.",
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "Name": {
                  "type": "string"
                },
                "ExternalSource": {
                  "type": "object",
                  "properties": {
                    "Type": {
                      "type": "string"
                    },
                    "Repository": {
                      "type": "string"
                    },
                    "Ref": {
                      "type": "string"
                    },
                    "ConsoleZips": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "required": [
                    "Type",
                    "Repository",
                    "Ref"
                  ],
                  "additionalProperties": false
                },
                "Build": {
                  "type": "object",
                  "properties": {
                    "TargetTypes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "EditorPlatforms": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "Platforms": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  },
                  "additionalProperties": false
                },
                "Cook": {
                  "type": "object",
                  "properties": {
                    "GenerateDDC": {
                      "type": "boolean"
                    }
                  },
                  "additionalProperties": false
                },
                "Deployment": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "Type": {
                        "type": "string"
                      },
                      "Platform": {
                        "type": "string"
                      },
                      "Target": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "MobileProvisions": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "BundleIdentifierPattern": {
                        "type": "string"
                      },
                      "PrivateKeyPasswordlessP12Path": {
                        "type": "string"
                      },
                      "MobileProvisionPath": {
                        "type": "string"
                      },
                      "AppleProvidedCertificatePath": {
                        "type": "string"
                      },
                      "KeychainPasswordEnvironmentVariable": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "PrivateKeyPasswordlessP12Path",
                      "MobileProvisionPath",
                      "AppleProvidedCertificatePath"
                    ],
                    "additionalProperties": false
                  }
                }
              },
              "additionalProperties": false
            }
          }
        }
      }
    }
  ]
}
