{
  "description": "Pipeline describes a list of Tasks to execute. It expresses how outputs\nof tasks feed into inputs of subsequent tasks.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "Spec holds the desired state of the Pipeline from the client",
      "properties": {
        "description": {
          "description": "Description is a user-facing description of the pipeline that may be\nused to populate a UI.",
          "type": [
            "string",
            "null"
          ]
        },
        "displayName": {
          "description": "DisplayName is a user-facing name of the pipeline that may be\nused to populate a UI.",
          "type": [
            "string",
            "null"
          ]
        },
        "finally": {
          "description": "Finally declares the list of Tasks that execute just before leaving the Pipeline\ni.e. either after all Tasks are finished executing successfully\nor after a failure which would result in ending the Pipeline",
          "items": {
            "additionalProperties": false,
            "description": "PipelineTask defines a task in a Pipeline, passing inputs from both\nParams and from the output of previous tasks.",
            "properties": {
              "description": {
                "description": "Description is the description of this task within the context of a Pipeline.\nThis description may be used to populate a UI.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "displayName": {
                "description": "DisplayName is the display name of this task within the context of a Pipeline.\nThis display name may be used to populate a UI.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "matrix": {
                "additionalProperties": false,
                "description": "Matrix declares parameters used to fan out this task.",
                "properties": {
                  "include": {
                    "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.",
                    "items": {
                      "additionalProperties": false,
                      "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.",
                      "properties": {
                        "name": {
                          "description": "Name the specified combination",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "params": {
                          "description": "Params takes only `Parameters` of type `\"string\"`\nThe names of the `params` must match the names of the `params` in the underlying `Task`",
                          "items": {
                            "additionalProperties": false,
                            "description": "Param declares an ParamValues to use for the parameter called name.",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "value": {
                                "x-kubernetes-preserve-unknown-fields": true
                              }
                            },
                            "required": [
                              "name",
                              "value"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "array",
                            "null"
                          ],
                          "x-kubernetes-list-type": "atomic"
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ],
                    "x-kubernetes-list-type": "atomic"
                  },
                  "params": {
                    "description": "Params is a list of parameters used to fan out the pipelineTask\nParams takes only `Parameters` of type `\"array\"`\nEach array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`.\nThe names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.",
                    "items": {
                      "additionalProperties": false,
                      "description": "Param declares an ParamValues to use for the parameter called name.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "x-kubernetes-preserve-unknown-fields": true
                        }
                      },
                      "required": [
                        "name",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ],
                    "x-kubernetes-list-type": "atomic"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "name": {
                "description": "Name is the name of this task within the context of a Pipeline. Name is\nused as a coordinate with the `from` and `runAfter` fields to establish\nthe execution order of tasks relative to one another.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "onError": {
                "description": "OnError defines the exiting behavior of a PipelineRun on error\ncan be set to [ continue | stopAndFail ]",
                "type": [
                  "string",
                  "null"
                ]
              },
              "params": {
                "description": "Parameters declares parameters passed to this task.",
                "items": {
                  "additionalProperties": false,
                  "description": "Param declares an ParamValues to use for the parameter called name.",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "x-kubernetes-preserve-unknown-fields": true
                    }
                  },
                  "required": [
                    "name",
                    "value"
                  ],
                  "type": "object"
                },
                "type": [
                  "array",
                  "null"
                ],
                "x-kubernetes-list-type": "atomic"
              },
              "pipelineRef": {
                "additionalProperties": false,
                "description": "PipelineRef is a reference to a pipeline definition\nNote: PipelineRef is in preview mode and not yet supported",
                "properties": {
                  "apiVersion": {
                    "description": "API version of the referent",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "params": {
                    "description": "Params contains the parameters used to identify the\nreferenced Tekton resource. Example entries might include\n\"repo\" or \"path\" but the set of params ultimately depends on\nthe chosen resolver.",
                    "items": {
                      "additionalProperties": false,
                      "description": "Param declares an ParamValues to use for the parameter called name.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "x-kubernetes-preserve-unknown-fields": true
                        }
                      },
                      "required": [
                        "name",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ],
                    "x-kubernetes-list-type": "atomic"
                  },
                  "resolver": {
                    "description": "Resolver is the name of the resolver that should perform\nresolution of the referenced Tekton resource, such as \"git\".",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "pipelineSpec": {
                "description": "PipelineSpec is a specification of a pipeline\nNote: PipelineSpec is in preview mode and not yet supported\nSpecifying PipelineSpec can be disabled by setting\n`disable-inline-spec` feature flag.\nSee Pipeline.spec (API version: tekton.dev/v1)",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "retries": {
                "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "runAfter": {
                "description": "RunAfter is the list of PipelineTask names that should be executed before\nthis Task executes. (Used to force a specific ordering in graph execution.)",
                "items": {
                  "type": "string"
                },
                "type": [
                  "array",
                  "null"
                ],
                "x-kubernetes-list-type": "atomic"
              },
              "taskRef": {
                "additionalProperties": false,
                "description": "TaskRef is a reference to a task definition.",
                "properties": {
                  "apiVersion": {
                    "description": "API version of the referent\nNote: A Task with non-empty APIVersion and Kind is considered a Custom Task",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "kind": {
                    "description": "TaskKind indicates the Kind of the Task:\n1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\".\n2. Custom Task when Kind is non-empty and APIVersion is non-empty",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "params": {
                    "description": "Params contains the parameters used to identify the\nreferenced Tekton resource. Example entries might include\n\"repo\" or \"path\" but the set of params ultimately depends on\nthe chosen resolver.",
                    "items": {
                      "additionalProperties": false,
                      "description": "Param declares an ParamValues to use for the parameter called name.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "x-kubernetes-preserve-unknown-fields": true
                        }
                      },
                      "required": [
                        "name",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ],
                    "x-kubernetes-list-type": "atomic"
                  },
                  "resolver": {
                    "description": "Resolver is the name of the resolver that should perform\nresolution of the referenced Tekton resource, such as \"git\".",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "taskSpec": {
                "description": "TaskSpec is a specification of a task\nSpecifying TaskSpec can be disabled by setting\n`disable-inline-spec` feature flag.\nSee Task.spec (API version: tekton.dev/v1)",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "timeout": {
                "description": "Duration after which the TaskRun times out. Defaults to 1 hour.\nRefer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration",
                "type": [
                  "string",
                  "null"
                ]
              },
              "when": {
                "description": "When is a list of when expressions that need to be true for the task to run",
                "items": {
                  "additionalProperties": false,
                  "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run\nto determine whether the Task should be executed or skipped",
                  "properties": {
                    "cel": {
                      "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute\nthe task based on the result of the expression evaluation\nMore info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "input": {
                      "description": "Input is the string for guard checking which can be a static input or an output from a parent Task",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "operator": {
                      "description": "Operator that represents an Input's relationship to the values",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "values": {
                      "description": "Values is an array of strings, which is compared against the input, for guard checking\nIt must be non-empty",
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "array",
                        "null"
                      ],
                      "x-kubernetes-list-type": "atomic"
                    }
                  },
                  "type": "object"
                },
                "type": [
                  "array",
                  "null"
                ]
              },
              "workspaces": {
                "description": "Workspaces maps workspaces from the pipeline spec to the workspaces\ndeclared in the Task.",
                "items": {
                  "additionalProperties": false,
                  "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be\nmapped to a task's declared workspace.",
                  "properties": {
                    "name": {
                      "description": "Name is the name of the workspace as declared by the task",
                      "type": "string"
                    },
                    "subPath": {
                      "description": "SubPath is optionally a directory on the volume which should be used\nfor this binding (i.e. the volume will be mounted at this sub directory).",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "workspace": {
                      "description": "Workspace is the name of the workspace declared by the pipeline",
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object"
                },
                "type": [
                  "array",
                  "null"
                ],
                "x-kubernetes-list-type": "atomic"
              }
            },
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "params": {
          "description": "Params declares a list of input parameters that must be supplied when\nthis Pipeline is run.",
          "items": {
            "additionalProperties": false,
            "description": "ParamSpec defines arbitrary parameters needed beyond typed inputs (such as\nresources). Parameter values are provided by users as inputs on a TaskRun\nor PipelineRun.",
            "properties": {
              "default": {
                "description": "Default is the value a parameter takes if no input value is supplied. If\ndefault is set, a Task may be executed without a supplied value for the\nparameter.",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "description": {
                "description": "Description is a user-facing description of the parameter that may be\nused to populate a UI.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "enum": {
                "description": "Enum declares a set of allowed param input values for tasks/pipelines that can be validated.\nIf Enum is not set, no input validation is performed for the param.",
                "items": {
                  "type": "string"
                },
                "type": [
                  "array",
                  "null"
                ]
              },
              "name": {
                "description": "Name declares the name by which a parameter is referenced.",
                "type": "string"
              },
              "properties": {
                "additionalProperties": {
                  "additionalProperties": false,
                  "description": "PropertySpec defines the struct for object keys",
                  "properties": {
                    "type": {
                      "description": "ParamType indicates the type of an input parameter;\nUsed to distinguish between a single string and an array of strings.",
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "description": "Properties is the JSON Schema properties to support key-value pairs parameter.",
                "type": [
                  "object",
                  "null"
                ]
              },
              "type": {
                "description": "Type is the user-specified type of the parameter. The possible types\nare currently \"string\", \"array\" and \"object\", and \"string\" is the default.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "name"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "results": {
          "description": "Results are values that this pipeline can output once run",
          "items": {
            "additionalProperties": false,
            "description": "PipelineResult used to describe the results of a pipeline",
            "properties": {
              "description": {
                "description": "Description is a human-readable description of the result",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Name the given name",
                "type": "string"
              },
              "type": {
                "description": "Type is the user-specified type of the result.\nThe possible types are 'string', 'array', and 'object', with 'string' as the default.\n'array' and 'object' types are alpha features.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "value": {
                "description": "Value the expression used to retrieve the value",
                "x-kubernetes-preserve-unknown-fields": true
              }
            },
            "required": [
              "name",
              "value"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "tasks": {
          "description": "Tasks declares the graph of Tasks that execute when this Pipeline is run.",
          "items": {
            "additionalProperties": false,
            "description": "PipelineTask defines a task in a Pipeline, passing inputs from both\nParams and from the output of previous tasks.",
            "properties": {
              "description": {
                "description": "Description is the description of this task within the context of a Pipeline.\nThis description may be used to populate a UI.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "displayName": {
                "description": "DisplayName is the display name of this task within the context of a Pipeline.\nThis display name may be used to populate a UI.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "matrix": {
                "additionalProperties": false,
                "description": "Matrix declares parameters used to fan out this task.",
                "properties": {
                  "include": {
                    "description": "Include is a list of IncludeParams which allows passing in specific combinations of Parameters into the Matrix.",
                    "items": {
                      "additionalProperties": false,
                      "description": "IncludeParams allows passing in a specific combinations of Parameters into the Matrix.",
                      "properties": {
                        "name": {
                          "description": "Name the specified combination",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "params": {
                          "description": "Params takes only `Parameters` of type `\"string\"`\nThe names of the `params` must match the names of the `params` in the underlying `Task`",
                          "items": {
                            "additionalProperties": false,
                            "description": "Param declares an ParamValues to use for the parameter called name.",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "value": {
                                "x-kubernetes-preserve-unknown-fields": true
                              }
                            },
                            "required": [
                              "name",
                              "value"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "array",
                            "null"
                          ],
                          "x-kubernetes-list-type": "atomic"
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ],
                    "x-kubernetes-list-type": "atomic"
                  },
                  "params": {
                    "description": "Params is a list of parameters used to fan out the pipelineTask\nParams takes only `Parameters` of type `\"array\"`\nEach array element is supplied to the `PipelineTask` by substituting `params` of type `\"string\"` in the underlying `Task`.\nThe names of the `params` in the `Matrix` must match the names of the `params` in the underlying `Task` that they will be substituting.",
                    "items": {
                      "additionalProperties": false,
                      "description": "Param declares an ParamValues to use for the parameter called name.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "x-kubernetes-preserve-unknown-fields": true
                        }
                      },
                      "required": [
                        "name",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ],
                    "x-kubernetes-list-type": "atomic"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "name": {
                "description": "Name is the name of this task within the context of a Pipeline. Name is\nused as a coordinate with the `from` and `runAfter` fields to establish\nthe execution order of tasks relative to one another.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "onError": {
                "description": "OnError defines the exiting behavior of a PipelineRun on error\ncan be set to [ continue | stopAndFail ]",
                "type": [
                  "string",
                  "null"
                ]
              },
              "params": {
                "description": "Parameters declares parameters passed to this task.",
                "items": {
                  "additionalProperties": false,
                  "description": "Param declares an ParamValues to use for the parameter called name.",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "value": {
                      "x-kubernetes-preserve-unknown-fields": true
                    }
                  },
                  "required": [
                    "name",
                    "value"
                  ],
                  "type": "object"
                },
                "type": [
                  "array",
                  "null"
                ],
                "x-kubernetes-list-type": "atomic"
              },
              "pipelineRef": {
                "additionalProperties": false,
                "description": "PipelineRef is a reference to a pipeline definition\nNote: PipelineRef is in preview mode and not yet supported",
                "properties": {
                  "apiVersion": {
                    "description": "API version of the referent",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "params": {
                    "description": "Params contains the parameters used to identify the\nreferenced Tekton resource. Example entries might include\n\"repo\" or \"path\" but the set of params ultimately depends on\nthe chosen resolver.",
                    "items": {
                      "additionalProperties": false,
                      "description": "Param declares an ParamValues to use for the parameter called name.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "x-kubernetes-preserve-unknown-fields": true
                        }
                      },
                      "required": [
                        "name",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ],
                    "x-kubernetes-list-type": "atomic"
                  },
                  "resolver": {
                    "description": "Resolver is the name of the resolver that should perform\nresolution of the referenced Tekton resource, such as \"git\".",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "pipelineSpec": {
                "description": "PipelineSpec is a specification of a pipeline\nNote: PipelineSpec is in preview mode and not yet supported\nSpecifying PipelineSpec can be disabled by setting\n`disable-inline-spec` feature flag.\nSee Pipeline.spec (API version: tekton.dev/v1)",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "retries": {
                "description": "Retries represents how many times this task should be retried in case of task failure: ConditionSucceeded set to False",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "runAfter": {
                "description": "RunAfter is the list of PipelineTask names that should be executed before\nthis Task executes. (Used to force a specific ordering in graph execution.)",
                "items": {
                  "type": "string"
                },
                "type": [
                  "array",
                  "null"
                ],
                "x-kubernetes-list-type": "atomic"
              },
              "taskRef": {
                "additionalProperties": false,
                "description": "TaskRef is a reference to a task definition.",
                "properties": {
                  "apiVersion": {
                    "description": "API version of the referent\nNote: A Task with non-empty APIVersion and Kind is considered a Custom Task",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "kind": {
                    "description": "TaskKind indicates the Kind of the Task:\n1. Namespaced Task when Kind is set to \"Task\". If Kind is \"\", it defaults to \"Task\".\n2. Custom Task when Kind is non-empty and APIVersion is non-empty",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "params": {
                    "description": "Params contains the parameters used to identify the\nreferenced Tekton resource. Example entries might include\n\"repo\" or \"path\" but the set of params ultimately depends on\nthe chosen resolver.",
                    "items": {
                      "additionalProperties": false,
                      "description": "Param declares an ParamValues to use for the parameter called name.",
                      "properties": {
                        "name": {
                          "type": "string"
                        },
                        "value": {
                          "x-kubernetes-preserve-unknown-fields": true
                        }
                      },
                      "required": [
                        "name",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ],
                    "x-kubernetes-list-type": "atomic"
                  },
                  "resolver": {
                    "description": "Resolver is the name of the resolver that should perform\nresolution of the referenced Tekton resource, such as \"git\".",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "taskSpec": {
                "description": "TaskSpec is a specification of a task\nSpecifying TaskSpec can be disabled by setting\n`disable-inline-spec` feature flag.\nSee Task.spec (API version: tekton.dev/v1)",
                "x-kubernetes-preserve-unknown-fields": true
              },
              "timeout": {
                "description": "Duration after which the TaskRun times out. Defaults to 1 hour.\nRefer Go's ParseDuration documentation for expected format: https://golang.org/pkg/time/#ParseDuration",
                "type": [
                  "string",
                  "null"
                ]
              },
              "when": {
                "description": "When is a list of when expressions that need to be true for the task to run",
                "items": {
                  "additionalProperties": false,
                  "description": "WhenExpression allows a PipelineTask to declare expressions to be evaluated before the Task is run\nto determine whether the Task should be executed or skipped",
                  "properties": {
                    "cel": {
                      "description": "CEL is a string of Common Language Expression, which can be used to conditionally execute\nthe task based on the result of the expression evaluation\nMore info about CEL syntax: https://github.com/google/cel-spec/blob/master/doc/langdef.md",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "input": {
                      "description": "Input is the string for guard checking which can be a static input or an output from a parent Task",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "operator": {
                      "description": "Operator that represents an Input's relationship to the values",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "values": {
                      "description": "Values is an array of strings, which is compared against the input, for guard checking\nIt must be non-empty",
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "array",
                        "null"
                      ],
                      "x-kubernetes-list-type": "atomic"
                    }
                  },
                  "type": "object"
                },
                "type": [
                  "array",
                  "null"
                ]
              },
              "workspaces": {
                "description": "Workspaces maps workspaces from the pipeline spec to the workspaces\ndeclared in the Task.",
                "items": {
                  "additionalProperties": false,
                  "description": "WorkspacePipelineTaskBinding describes how a workspace passed into the pipeline should be\nmapped to a task's declared workspace.",
                  "properties": {
                    "name": {
                      "description": "Name is the name of the workspace as declared by the task",
                      "type": "string"
                    },
                    "subPath": {
                      "description": "SubPath is optionally a directory on the volume which should be used\nfor this binding (i.e. the volume will be mounted at this sub directory).",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "workspace": {
                      "description": "Workspace is the name of the workspace declared by the pipeline",
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object"
                },
                "type": [
                  "array",
                  "null"
                ],
                "x-kubernetes-list-type": "atomic"
              }
            },
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        },
        "workspaces": {
          "description": "Workspaces declares a set of named workspaces that are expected to be\nprovided by a PipelineRun.",
          "items": {
            "additionalProperties": false,
            "description": "PipelineWorkspaceDeclaration creates a named slot in a Pipeline that a PipelineRun\nis expected to populate with a workspace binding.",
            "properties": {
              "description": {
                "description": "Description is a human readable string describing how the workspace will be\nused in the Pipeline. It can be useful to include a bit of detail about which\ntasks are intended to have access to the data on the workspace.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Name is the name of a workspace to be provided by a PipelineRun.",
                "type": "string"
              },
              "optional": {
                "description": "Optional marks a Workspace as not being required in PipelineRuns. By default\nthis field is false and so declared workspaces are required.",
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "required": [
              "name"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ],
          "x-kubernetes-list-type": "atomic"
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}