{
    "anyOf": [
        {
            "$ref": "#/definitions/SkaffoldConfig"
        }
    ],
    "definitions": {
        "Artifact": {
            "additionalProperties": false,
            "description": "represents items that need should be built, along with the context in which they should be built.",
            "preferredOrder": [
                "imageName",
                "dockerfilePath",
                "workspace",
                "buildArgs"
            ],
            "properties": {
                "buildArgs": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "type": "object"
                },
                "dockerfilePath": {
                    "type": "string"
                },
                "imageName": {
                    "type": "string"
                },
                "workspace": {
                    "type": "string"
                }
            },
            "x-intellij-html-description": "represents items that need should be built, along with the context in which they should be built."
        },
        "BuildConfig": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "artifacts",
                        "tagPolicy"
                    ],
                    "properties": {
                        "artifacts": {
                            "items": {
                                "$ref": "#/definitions/Artifact"
                            },
                            "type": "array"
                        },
                        "tagPolicy": {
                            "type": "string"
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "artifacts",
                        "tagPolicy",
                        "local"
                    ],
                    "properties": {
                        "artifacts": {
                            "items": {
                                "$ref": "#/definitions/Artifact"
                            },
                            "type": "array"
                        },
                        "local": {
                            "$ref": "#/definitions/LocalBuild"
                        },
                        "tagPolicy": {
                            "type": "string"
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "artifacts",
                        "tagPolicy",
                        "googleCloudBuild"
                    ],
                    "properties": {
                        "artifacts": {
                            "items": {
                                "$ref": "#/definitions/Artifact"
                            },
                            "type": "array"
                        },
                        "googleCloudBuild": {
                            "$ref": "#/definitions/GoogleCloudBuild"
                        },
                        "tagPolicy": {
                            "type": "string"
                        }
                    }
                }
            ],
            "description": "contains all the configuration for the build steps",
            "x-intellij-html-description": "contains all the configuration for the build steps"
        },
        "DeployConfig": {
            "anyOf": [
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "name"
                    ],
                    "properties": {
                        "name": {
                            "type": "string"
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "name",
                        "helm"
                    ],
                    "properties": {
                        "helm": {
                            "$ref": "#/definitions/HelmDeploy"
                        },
                        "name": {
                            "type": "string"
                        }
                    }
                },
                {
                    "additionalProperties": false,
                    "preferredOrder": [
                        "name",
                        "kubectl"
                    ],
                    "properties": {
                        "kubectl": {
                            "$ref": "#/definitions/KubectlDeploy"
                        },
                        "name": {
                            "type": "string"
                        }
                    }
                }
            ],
            "description": "contains all the configuration needed by the deploy steps",
            "x-intellij-html-description": "contains all the configuration needed by the deploy steps"
        },
        "GoogleCloudBuild": {
            "additionalProperties": false,
            "preferredOrder": [
                "projectId"
            ],
            "properties": {
                "projectId": {
                    "type": "string"
                }
            }
        },
        "HelmDeploy": {
            "additionalProperties": false,
            "preferredOrder": [
                "releases"
            ],
            "properties": {
                "releases": {
                    "items": {
                        "$ref": "#/definitions/HelmRelease"
                    },
                    "type": "array"
                }
            }
        },
        "HelmRelease": {
            "additionalProperties": false,
            "preferredOrder": [
                "name",
                "chartPath",
                "valuesFilePath",
                "values",
                "namespace",
                "version"
            ],
            "properties": {
                "chartPath": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "namespace": {
                    "type": "string"
                },
                "values": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "type": "object"
                },
                "valuesFilePath": {
                    "type": "string"
                },
                "version": {
                    "type": "string"
                }
            }
        },
        "KubectlDeploy": {
            "additionalProperties": false,
            "description": "contains the configuration needed for deploying with `kubectl apply`",
            "preferredOrder": [
                "manifests"
            ],
            "properties": {
                "manifests": {
                    "items": {
                        "$ref": "#/definitions/Manifest"
                    },
                    "type": "array"
                }
            },
            "x-intellij-html-description": "contains the configuration needed for deploying with <code>kubectl apply</code>"
        },
        "LocalBuild": {
            "additionalProperties": false,
            "description": "contains the fields needed to do a build on the local docker daemon and optionally push to a repository.",
            "preferredOrder": [
                "skipPush"
            ],
            "properties": {
                "skipPush": {
                    "type": "boolean"
                }
            },
            "x-intellij-html-description": "contains the fields needed to do a build on the local docker daemon and optionally push to a repository."
        },
        "Manifest": {
            "additionalProperties": false,
            "preferredOrder": [
                "paths",
                "parameters"
            ],
            "properties": {
                "parameters": {
                    "additionalProperties": {
                        "type": "string"
                    },
                    "default": "{}",
                    "type": "object"
                },
                "paths": {
                    "default": "[]",
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                }
            }
        },
        "SkaffoldConfig": {
            "additionalProperties": false,
            "description": "top level config object that is parsed from a skaffold.yaml",
            "preferredOrder": [
                "apiVersion",
                "kind",
                "build",
                "deploy"
            ],
            "properties": {
                "apiVersion": {
                    "type": "string"
                },
                "build": {
                    "$ref": "#/definitions/BuildConfig"
                },
                "deploy": {
                    "$ref": "#/definitions/DeployConfig"
                },
                "kind": {
                    "type": "string"
                }
            },
            "x-intellij-html-description": "top level config object that is parsed from a skaffold.yaml"
        }
    },
    "type": "object"
}