{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/bitbucket-pipelines/latest.json",
  "x-lintel": {
    "source": "https://api.bitbucket.org/schemas/pipelines-configuration",
    "sourceSha256": "9476921719f1f606ac6e377ca5b20a099e1c258a2397f1cdea0b397cfce099cf",
    "fileMatch": [
      "bitbucket-pipelines.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "components": {
    "schemas": {
      "artifacts": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/artifacts_paths"
          },
          {
            "$ref": "#/components/schemas/artifacts_expanded"
          }
        ]
      },
      "artifacts_expanded": {
        "properties": {
          "download": {
            "oneOf": [
              {
                "default": true,
                "description": "Enables downloading of all available artifacts at the end of a step.",
                "type": "boolean"
              },
              {
                "description": "Define the list of filtered artifacts to be downloaded by the step.",
                "items": {
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              }
            ]
          },
          "paths": {
            "$ref": "#/components/schemas/artifacts_paths"
          },
          "upload": {
            "items": {
              "$ref": "#/components/schemas/artifacts_upload"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "type": "object"
      },
      "artifacts_paths": {
        "items": {
          "description": "Glob pattern for the path to the artifacts.",
          "title": "Artifact Path Pattern",
          "type": "string"
        },
        "minItems": 1,
        "type": "array"
      },
      "artifacts_upload": {
        "description": "The artifact to be uploaded.",
        "properties": {
          "capture-on": {
            "description": "The capture on field for the artifact.",
            "enum": [
              "success",
              "failed",
              "always"
            ],
            "title": "Artifact Capture On",
            "type": "string"
          },
          "depth": {
            "description": "The depth to search for the artifact files.",
            "minimum": 1,
            "title": "Artifact Depth",
            "type": "integer"
          },
          "ignore-paths": {
            "description": "The ignore paths for the artifact.",
            "items": {
              "description": "Glob pattern for paths to ignore when capturing artifacts.",
              "title": "Ignore Path Pattern",
              "type": "string"
            },
            "title": "Artifact Ignore Paths",
            "type": "array"
          },
          "name": {
            "description": "The name of the artifact.",
            "title": "Artifact Name",
            "type": "string"
          },
          "paths": {
            "$ref": "#/components/schemas/artifacts_paths"
          },
          "type": {
            "default": "shared",
            "description": "The type of the artifact.",
            "enum": [
              "shared",
              "scoped",
              "test-reports"
            ],
            "title": "Artifact Type",
            "type": "string"
          }
        },
        "required": [
          "name",
          "paths"
        ],
        "title": "Artifact Upload object",
        "type": "object"
      },
      "cache": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/cache_path"
          },
          {
            "$ref": "#/components/schemas/cache_expanded"
          }
        ]
      },
      "cache_expanded": {
        "properties": {
          "key": {
            "properties": {
              "files": {
                "description": "Checksum of these file paths will be used to generate the cache key.",
                "items": {
                  "description": "Path to a file or glob pattern of files in the repository which form the cache key.",
                  "type": "string"
                },
                "minItems": 1,
                "type": "array"
              }
            },
            "required": [
              "files"
            ],
            "title": "Cache Key",
            "type": "object"
          },
          "path": {
            "$ref": "#/components/schemas/cache_path"
          }
        },
        "required": [
          "path"
        ],
        "title": "Cache",
        "type": "object"
      },
      "cache_path": {
        "description": "Path to the directory to be cached, can be absolute or relative to the clone directory.",
        "title": "Cache Path",
        "type": "string"
      },
      "clone": {
        "description": "Settings for cloning a repository into a container.",
        "properties": {
          "depth": {
            "default": 50,
            "description": "The depth argument of Git clone operation. It can be either number or \"full\" value",
            "example": "full",
            "oneOf": [
              {
                "minimum": 1,
                "type": "integer"
              },
              {
                "enum": [
                  "full"
                ],
                "type": "string"
              }
            ],
            "title": "Git Clone Depth"
          },
          "enabled": {
            "default": true,
            "description": "Enables cloning of the repository.",
            "type": "boolean"
          },
          "lfs": {
            "default": false,
            "description": "Enables the download of files from LFS storage when cloning.",
            "type": "boolean"
          },
          "skip-ssl-verify": {
            "default": false,
            "description": "Disables SSL verification during Git clone operation, allowing the use of self-signed certificates.",
            "type": "boolean"
          }
        },
        "title": "Clone Repository Settings",
        "type": "object"
      },
      "cloud": {
        "description": "Custom cloud step runtime",
        "properties": {
          "arch": {
            "default": "x86",
            "description": "Architecture type used to run the step.",
            "enum": [
              "x86",
              "arm"
            ],
            "type": "string"
          },
          "atlassian-ip-ranges": {
            "default": false,
            "description": "Whether it uses Atlassian ip ranges.",
            "type": "boolean"
          },
          "instance-type": {
            "description": "Instance type for the cloud runtime.",
            "type": "string"
          },
          "version": {
            "description": "Cloud Runtime version.",
            "type": "string"
          }
        },
        "title": "Cloud step runtime",
        "type": "object"
      },
      "condition": {
        "properties": {
          "changesets": {
            "additionalProperties": false,
            "description": "Condition on the changesets involved in the pipeline.",
            "maxProperties": 1,
            "properties": {
              "excludePaths": {
                "description": "Condition which holds only if all of the modified files match any of the specified patterns.",
                "items": {
                  "description": "Glob pattern to match the file path.",
                  "title": "File Path Pattern",
                  "type": "string"
                },
                "minItems": 1,
                "title": "Exclude Paths",
                "type": "array"
              },
              "includePaths": {
                "description": "Condition which holds only if any of the modified files match any of the specified patterns.",
                "items": {
                  "description": "Glob pattern to match the file path.",
                  "title": "File Path Pattern",
                  "type": "string"
                },
                "minItems": 1,
                "title": "Include Paths",
                "type": "array"
              }
            },
            "title": "Changeset Condition",
            "type": "object"
          }
        },
        "required": [
          "changesets"
        ],
        "type": "object"
      },
      "custom_pipeline": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/items_with_variables"
          },
          {
            "$ref": "#/components/schemas/import_pipeline"
          }
        ]
      },
      "fail_fast": {
        "default": false,
        "title": "Fail Fast",
        "type": "boolean"
      },
      "final_item": {
        "additionalProperties": false,
        "properties": {
          "final": {
            "$ref": "#/components/schemas/final_step"
          }
        },
        "type": "object"
      },
      "final_step": {
        "allOf": [
          {
            "$ref": "#/components/schemas/step_base"
          },
          {
            "description": "A special step that always runs at the end of a pipeline, even if earlier steps fail or the pipeline is stopped. Only one final step is allowed per pipeline and it must be the last item.",
            "properties": {
              "deployment": {
                "not": {}
              },
              "fail-fast": {
                "not": {}
              },
              "trigger": {
                "description": "The final step always runs automatically. Manual trigger is not supported.",
                "enum": [
                  "automatic"
                ],
                "type": "string"
              }
            },
            "title": "Final Pipeline Step",
            "type": "object"
          }
        ]
      },
      "image": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/image_no_auth"
          },
          {
            "$ref": "#/components/schemas/image_basic_auth"
          },
          {
            "$ref": "#/components/schemas/image_aws_auth"
          },
          {
            "$ref": "#/components/schemas/image_name"
          }
        ]
      },
      "image_aws_auth": {
        "allOf": [
          {
            "$ref": "#/components/schemas/image_base"
          },
          {
            "properties": {
              "aws": {
                "oneOf": [
                  {
                    "properties": {
                      "access-key": {
                        "description": "The access key for Amazon Elastic Container Registry (AWS ECR).",
                        "title": "AWS Access Key",
                        "type": "string"
                      },
                      "secret-key": {
                        "description": "The secret key for Amazon Elastic Container Registry (AWS ECR).",
                        "title": "AWS Secret Key",
                        "type": "string"
                      }
                    },
                    "required": [
                      "access-key",
                      "secret-key"
                    ],
                    "type": "object"
                  },
                  {
                    "properties": {
                      "oidc-role": {
                        "description": "OIDC role with access to private Docker images hosted in Amazon Elastic Container Registry (AWS ECR).",
                        "title": "OpenID Connect Role",
                        "type": "string"
                      }
                    },
                    "required": [
                      "oidc-role"
                    ],
                    "type": "object"
                  }
                ]
              }
            },
            "required": [
              "aws"
            ],
            "type": "object"
          }
        ]
      },
      "image_base": {
        "description": "The parameters of the Docker image to use when running a step.",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/image_name"
          },
          "run-as-user": {
            "default": 0,
            "description": "The UID of a user in the docker image to run as. Overrides image's default user, specified user UID must be an existing user in the image with a valid home directory.",
            "title": "User ID",
            "type": "integer"
          }
        },
        "required": [
          "name"
        ],
        "title": "Docker Image Configuration",
        "type": "object"
      },
      "image_basic_auth": {
        "allOf": [
          {
            "$ref": "#/components/schemas/image_base"
          },
          {
            "properties": {
              "password": {
                "description": "The password to use when fetching the Docker image.",
                "title": "Docker Registry Password",
                "type": "string"
              },
              "username": {
                "description": "The username to use when fetching the Docker image.",
                "title": "Docker Registry Username",
                "type": "string"
              }
            },
            "required": [
              "username",
              "password"
            ],
            "type": "object"
          }
        ]
      },
      "image_name": {
        "default": "atlassian/default-image:latest",
        "description": "The name of the Docker image which may or may not include registry URL, tag, and digest value.",
        "title": "Docker Image Name",
        "type": "string"
      },
      "image_no_auth": {
        "allOf": [
          {
            "$ref": "#/components/schemas/image_base"
          },
          {
            "properties": {
              "aws": {
                "not": {}
              },
              "password": {
                "not": {}
              },
              "username": {
                "not": {}
              }
            },
            "type": "object"
          }
        ]
      },
      "import_inline_pipeline": {
        "additionalProperties": false,
        "properties": {
          "import": {
            "description": "The import needs to match the following format: {repo-slug|repo-uuid}:{tag-name|branch-name}:{pipeline-name}.",
            "pattern": "^[^:]+:[^:]+:[^:]+$",
            "title": "Identifier of the pipeline configuration to import",
            "type": "string"
          }
        },
        "required": [
          "import"
        ],
        "type": "object"
      },
      "import_pipeline": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/import_inline_pipeline"
          },
          {
            "$ref": "#/components/schemas/import_source_pipeline"
          }
        ]
      },
      "import_source": {
        "additionalProperties": false,
        "properties": {
          "import": {
            "description": "The import needs to match one of the following formats: {file-path} or {repo-slug|repo-uuid}:{tag-name|branch-name} or {repo-slug|repo-uuid}:{tag-name|branch-name}:{file-path}.",
            "pattern": "^[^:]+(:[^:]+)?(:[^:]+)?$",
            "title": "Location of pipeline configuration to import pipelines from",
            "type": "string"
          }
        },
        "required": [
          "import"
        ],
        "type": "object"
      },
      "import_source_pipeline": {
        "additionalProperties": false,
        "properties": {
          "import": {
            "description": "The import needs to match the following format: {pipeline-name}@{import-source-name}.",
            "pattern": "^[^@]+@[^@]+$",
            "title": "Identifier of the pipeline configuration to import",
            "type": "string"
          }
        },
        "required": [
          "import"
        ],
        "type": "object"
      },
      "items": {
        "description": "List of steps, stages and parallel groups of the pipeline.",
        "items": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/step_item"
            },
            {
              "$ref": "#/components/schemas/parallel_item"
            },
            {
              "$ref": "#/components/schemas/stage_item"
            },
            {
              "$ref": "#/components/schemas/final_item"
            }
          ]
        },
        "minItems": 1,
        "title": "Pipeline Items",
        "type": "array"
      },
      "items_with_variables": {
        "description": "List of variables, steps, stages and parallel groups of the custom pipeline.",
        "items": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/variables_item"
            },
            {
              "$ref": "#/components/schemas/step_item"
            },
            {
              "$ref": "#/components/schemas/parallel_item"
            },
            {
              "$ref": "#/components/schemas/stage_item"
            }
          ]
        },
        "minItems": 1,
        "title": "Custom Pipeline Items",
        "type": "array"
      },
      "max_time": {
        "default": 120,
        "description": "The maximum time a step can execute for in minutes.",
        "example": 60,
        "exclusiveMinimum": 0,
        "type": "integer"
      },
      "parallel": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/parallel_steps"
          },
          {
            "$ref": "#/components/schemas/parallel_expanded"
          }
        ]
      },
      "parallel_expanded": {
        "properties": {
          "fail-fast": {
            "$ref": "#/components/schemas/fail_fast",
            "description": "Stop the whole parallel group in case one of its steps fails."
          },
          "steps": {
            "$ref": "#/components/schemas/parallel_steps"
          }
        },
        "required": [
          "steps"
        ],
        "type": "object"
      },
      "parallel_item": {
        "additionalProperties": false,
        "properties": {
          "parallel": {
            "$ref": "#/components/schemas/parallel"
          }
        },
        "type": "object"
      },
      "parallel_steps": {
        "description": "List of steps in the parallel group to run concurrently.",
        "items": {
          "$ref": "#/components/schemas/step_item"
        },
        "minItems": 1,
        "title": "Parallel Group Steps",
        "type": "array"
      },
      "pipe": {
        "description": "The pipe to execute.",
        "example": {
          "pipe": "atlassian/test-pipe:2.2.0",
          "variables": {
            "BAZ": [
              "QUX",
              "QUZ"
            ],
            "FOO": "BAR"
          }
        },
        "properties": {
          "pipe": {
            "description": "The full pipe identifier.",
            "title": "Pipe Identifier",
            "type": "string"
          },
          "variables": {
            "additionalProperties": {
              "description": "Environment variable value",
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              ]
            },
            "description": "Environment variables passed to the pipe container.",
            "title": "Pipe Variables",
            "type": "object"
          }
        },
        "required": [
          "pipe"
        ],
        "title": "Pipe",
        "type": "object"
      },
      "pipeline": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/items"
          },
          {
            "$ref": "#/components/schemas/import_pipeline"
          }
        ]
      },
      "pipelines_configuration": {
        "properties": {
          "clone": {
            "$ref": "#/components/schemas/clone"
          },
          "definitions": {
            "description": "The definitions of caches and services used in the declared pipelines.",
            "properties": {
              "caches": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/cache"
                },
                "title": "Custom cache definitions",
                "type": "object"
              },
              "imports": {
                "pipelines": {
                  "additionalProperties": {
                    "$ref": "#/components/schemas/import_source"
                  },
                  "description": "Definitions of the pipelines imports that can be used in this file.",
                  "title": "Import source definitions",
                  "type": "object"
                }
              },
              "pipelines": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/custom_pipeline"
                },
                "description": "Definitions of the pipelines which can be used in other repositories of the same Bitbucket workspace.",
                "title": "Shared pipeline definitions",
                "type": "object"
              },
              "services": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/service"
                },
                "title": "Service definitions",
                "type": "object"
              }
            },
            "title": "Global Definitions",
            "type": "object"
          },
          "export": {
            "default": false,
            "description": "Allows other Bitbucket repositories to import pipeline definitions from this file. A shared pipeline definition can't contain another `import` property.",
            "title": "Enables shared pipelines definitions.",
            "type": "boolean"
          },
          "image": {
            "$ref": "#/components/schemas/image"
          },
          "labels": {
            "description": "Additional key value data supplied in the configuration YAML.",
            "example": {
              "buildTool": "maven",
              "jvm": "jdk17"
            },
            "title": "Pipeline Labels",
            "type": "object"
          },
          "options": {
            "description": "Global options allow to override the default values applied to all steps in all declared pipelines.",
            "properties": {
              "docker": {
                "default": false,
                "description": "Enables Docker service for every step.",
                "type": "boolean"
              },
              "max-time": {
                "$ref": "#/components/schemas/max_time"
              },
              "runs-on": {
                "$ref": "#/components/schemas/runs_on"
              },
              "runtime": {
                "$ref": "#/components/schemas/runtime"
              },
              "size": {
                "$ref": "#/components/schemas/size"
              }
            },
            "title": "Global Options",
            "type": "object"
          },
          "pipelines": {
            "properties": {
              "branches": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/pipeline"
                },
                "description": "Branch-specific build pipelines.",
                "title": "Branch Pipelines",
                "type": "object"
              },
              "custom": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/custom_pipeline"
                },
                "description": "Pipelines that can only be triggered manually or be scheduled.",
                "title": "Custom Pipelines",
                "type": "object"
              },
              "default": {
                "$ref": "#/components/schemas/pipeline",
                "description": "Default pipeline runs on every push except for tags unless a branch-specific pipeline is defined.",
                "title": "Default Pipeline"
              },
              "pull-requests": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/pull_requests_pipeline"
                },
                "description": "Pull-request-specific build pipelines.",
                "title": "Pull Request Pipelines",
                "type": "object"
              },
              "tags": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/pipeline"
                },
                "description": "Tag-specific build pipelines.",
                "title": "Tag Pipelines",
                "type": "object"
              }
            },
            "title": "Pipelines",
            "type": "object"
          },
          "triggers": {
            "additionalProperties": {
              "$ref": "#/components/schemas/trigger_configuration_list"
            },
            "description": "Event-based triggers that automatically run pipelines when specific events occur. The property names represent trigger types (e.g., repository-push, pullrequest-push, pipeline-completed, deployment-completed, pullrequest-created).",
            "example": {
              "deployment-completed": [
                {
                  "condition": "BITBUCKET_TRIGGER_DEPLOYMENT_STATUS == \"FAILED\"",
                  "pipelines": [
                    "pipeline2"
                  ]
                }
              ],
              "pipeline-completed": [
                {
                  "condition": "BITBUCKET_TRIGGER_PIPELINE_STATUS == \"FAILED\"",
                  "pipelines": [
                    "pipeline1"
                  ]
                }
              ],
              "pullrequest-created": [
                {
                  "condition": "glob(BITBUCKET_BRANCH, \"feature/*\")",
                  "pipelines": [
                    "pipeline1"
                  ]
                }
              ],
              "pullrequest-fulfilled": [
                {
                  "condition": "glob(BITBUCKET_BRANCH, \"feature/*\")",
                  "pipelines": [
                    "pipeline2"
                  ]
                }
              ],
              "pullrequest-push": [
                {
                  "condition": "BITBUCKET_PR_DESTINATION_BRANCH == \"main\"",
                  "pipelines": [
                    "pipeline2"
                  ]
                }
              ],
              "pullrequest-rejected": [
                {
                  "condition": "glob(BITBUCKET_BRANCH, \"feature/*\")",
                  "pipelines": [
                    "pipeline1"
                  ]
                }
              ],
              "pullrequest-reviewer-status-updated": [
                {
                  "condition": "glob(BITBUCKET_BRANCH, \"feature/*\")",
                  "pipelines": [
                    "pipeline1"
                  ]
                }
              ],
              "pullrequest-updated": [
                {
                  "condition": "glob(BITBUCKET_BRANCH, \"feature/*\")",
                  "pipelines": [
                    "pipeline2"
                  ]
                }
              ],
              "repository-push": [
                {
                  "condition": "BITBUCKET_BRANCH == \"main\"",
                  "pipelines": [
                    "pipeline1"
                  ]
                }
              ]
            },
            "title": "Pipeline Triggers",
            "type": "object"
          }
        },
        "type": "object"
      },
      "pull_requests_pipeline": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/items"
          },
          {
            "properties": {
              "destinations": {
                "additionalProperties": {
                  "$ref": "#/components/schemas/pipeline"
                },
                "type": "object"
              }
            },
            "type": "object"
          }
        ]
      },
      "runs_on": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/runs_on_item"
          },
          {
            "$ref": "#/components/schemas/runs_on_expanded"
          }
        ]
      },
      "runs_on_expanded": {
        "description": "Required labels of a runner to run the step.",
        "example": [
          "self.hosted",
          "linux"
        ],
        "items": {
          "$ref": "#/components/schemas/runs_on_item"
        },
        "maxItems": 10,
        "minItems": 1,
        "title": "Step Runner Labels",
        "type": "array"
      },
      "runs_on_item": {
        "description": "Label of a runner.",
        "maxLength": 50,
        "title": "Step Runner Label",
        "type": "string"
      },
      "runtime": {
        "description": "Custom step runtime",
        "properties": {
          "cloud": {
            "$ref": "#/components/schemas/cloud"
          },
          "self-hosted": {
            "$ref": "#/components/schemas/self-hosted"
          }
        },
        "title": "Step Runtime",
        "type": "object"
      },
      "script": {
        "items": {
          "oneOf": [
            {
              "description": "The command to execute.",
              "example": "echo \"hello world\"",
              "title": "Script Command",
              "type": "string"
            },
            {
              "$ref": "#/components/schemas/pipe"
            }
          ]
        },
        "minItems": 1,
        "type": "array"
      },
      "self-hosted": {
        "description": "Custom self-hosted step runtime",
        "properties": {
          "cpu": {
            "description": "Cpu available to runner.",
            "title": "Cpu",
            "type": "integer"
          },
          "memory": {
            "description": "Memory (mb) available to runner.",
            "title": "Memory",
            "type": "integer"
          },
          "storage": {
            "oneOf": [
              {
                "properties": {
                  "gcp": {
                    "$ref": "#/components/schemas/storage_gcp_auth"
                  }
                },
                "required": [
                  "gcp"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "aws": {
                    "$ref": "#/components/schemas/storage_aws_auth"
                  }
                },
                "required": [
                  "aws"
                ],
                "type": "object"
              }
            ]
          },
          "volumes": {
            "default": [],
            "description": "Volumes to be mounted into the build container.",
            "items": {
              "description": "The volume to be mounted into the build container",
              "example": "/host-directory:/workdir/path",
              "title": "Volume mount",
              "type": "string"
            },
            "type": "array"
          }
        },
        "title": "Self-hosted step runtime",
        "type": "object"
      },
      "service": {
        "description": "Custom service properties",
        "properties": {
          "image": {
            "$ref": "#/components/schemas/image"
          },
          "memory": {
            "default": 1024,
            "description": "Memory limit for the service container, in megabytes.",
            "minimum": 128,
            "title": "Service Memory",
            "type": "integer"
          },
          "type": {
            "description": "Specifies Docker service container (to run Docker-in-Docker).",
            "enum": [
              "docker"
            ],
            "type": "string"
          },
          "variables": {
            "additionalProperties": {
              "description": "Environment variable value",
              "title": "Service Variable",
              "type": "string"
            },
            "description": "Environment variables passed to the service container.",
            "minProperties": 1,
            "title": "Service Variables",
            "type": "object"
          }
        },
        "title": "Service definition",
        "type": "object"
      },
      "size": {
        "default": "1x",
        "description": "The size of the step, sets the amount of resources allocated.",
        "enum": [
          "1x",
          "2x",
          "4x",
          "8x",
          "16x",
          "32x"
        ],
        "title": "Step Size",
        "type": "string"
      },
      "stage": {
        "properties": {
          "condition": {
            "$ref": "#/components/schemas/condition",
            "description": "The condition to execute the stage.",
            "title": "Stage Condition"
          },
          "deployment": {
            "description": "The deployment environment for the stage.",
            "title": "Stage Deployment Environment",
            "type": "string"
          },
          "environment": {
            "description": "The environment for the stage.",
            "title": "Stage Environment",
            "type": "string"
          },
          "name": {
            "description": "The name of the stage.",
            "title": "Stage Name",
            "type": "string"
          },
          "steps": {
            "description": "List of steps in the stage.",
            "items": {
              "properties": {
                "step": {
                  "allOf": [
                    {
                      "$ref": "#/components/schemas/step_base"
                    },
                    {
                      "properties": {
                        "condition": {
                          "not": {}
                        }
                      },
                      "type": "object"
                    }
                  ]
                }
              },
              "type": "object"
            },
            "minItems": 1,
            "title": "Stage Steps",
            "type": "array"
          },
          "trigger": {
            "$ref": "#/components/schemas/trigger",
            "description": "The trigger used for the pipeline stage.",
            "title": "Stage Trigger"
          }
        },
        "required": [
          "steps"
        ],
        "type": "object"
      },
      "stage_item": {
        "additionalProperties": false,
        "properties": {
          "stage": {
            "$ref": "#/components/schemas/stage"
          }
        },
        "type": "object"
      },
      "step": {
        "allOf": [
          {
            "$ref": "#/components/schemas/step_base"
          },
          {
            "properties": {
              "condition": {
                "$ref": "#/components/schemas/condition",
                "description": "The condition to execute the step.",
                "title": "Step Condition"
              }
            },
            "type": "object"
          }
        ]
      },
      "step_base": {
        "properties": {
          "after-script": {
            "$ref": "#/components/schemas/script",
            "description": "List of commands to execute after the step succeeds or fails.",
            "title": "Step Post Script"
          },
          "artifacts": {
            "$ref": "#/components/schemas/artifacts"
          },
          "caches": {
            "description": "Caches enabled for the step.",
            "items": {
              "description": "Reference to a cache defined under global definitions.",
              "title": "Cache Name",
              "type": "string"
            },
            "minItems": 1,
            "title": "Step Caches",
            "type": "array"
          },
          "clone": {
            "$ref": "#/components/schemas/clone"
          },
          "concurrency-group": {
            "description": "The concurrency group for the step.",
            "maxLength": 50,
            "title": "Concurrency group",
            "type": "string"
          },
          "custom": {
            "description": "The name of the custom pipeline to run, if the step type is pipeline.",
            "title": "Custom",
            "type": "string"
          },
          "deployment": {
            "description": "The deployment environment for the step.",
            "title": "Step Deployment Environment",
            "type": "string"
          },
          "environment": {
            "description": "The environment for the step.",
            "title": "Step Environment",
            "type": "string"
          },
          "fail-fast": {
            "$ref": "#/components/schemas/fail_fast",
            "description": "Stop the parent parallel group in case this step fails."
          },
          "image": {
            "$ref": "#/components/schemas/image"
          },
          "input-variables": {
            "additionalProperties": {
              "description": "input variable value",
              "oneOf": [
                {
                  "type": "string"
                }
              ]
            },
            "description": "Variables from the parent step that are provided to the child pipeline.",
            "example": {
              "VAR_1": "VALUE_1",
              "VAR_2": "${BITBUCKET_BRANCH}"
            },
            "maxProperties": 20,
            "minProperties": 1,
            "title": "Input Variables",
            "type": "object"
          },
          "max-time": {
            "$ref": "#/components/schemas/max_time",
            "title": "Step Maximum Time"
          },
          "name": {
            "description": "The name of the step.",
            "example": "Build and test",
            "title": "Step Name",
            "type": "string"
          },
          "oidc": {
            "description": "Enables the use of OpenID Connect to connect a pipeline step to a resource server.",
            "type": "boolean"
          },
          "runs-on": {
            "$ref": "#/components/schemas/runs_on"
          },
          "runtime": {
            "$ref": "#/components/schemas/runtime"
          },
          "script": {
            "$ref": "#/components/schemas/script",
            "description": "List of commands that are executed in sequence.",
            "title": "Step Script"
          },
          "services": {
            "description": "Services enabled for the step.",
            "items": {
              "description": "Reference to a service defined under global definitions.",
              "title": "Service Name",
              "type": "string"
            },
            "maxItems": 5,
            "minItems": 1,
            "title": "Step Services",
            "type": "array"
          },
          "size": {
            "$ref": "#/components/schemas/size"
          },
          "trigger": {
            "$ref": "#/components/schemas/trigger",
            "description": "The trigger used for the pipeline step.",
            "title": "Step Trigger"
          },
          "type": {
            "default": "shared",
            "description": "The type of the step.",
            "enum": [
              "inline",
              "pipeline"
            ],
            "title": "Step Type",
            "type": "string"
          }
        },
        "title": "Pipeline Step",
        "type": "object"
      },
      "step_item": {
        "additionalProperties": false,
        "properties": {
          "step": {
            "$ref": "#/components/schemas/step"
          }
        },
        "type": "object"
      },
      "storage_aws_auth": {
        "description": "Amazon web services self hosted storage",
        "oneOf": [
          {
            "required": [
              "access-key",
              "secret-key"
            ]
          },
          {
            "required": [
              "oidc-role"
            ]
          }
        ],
        "properties": {
          "access-key": {
            "description": "The AWS access key",
            "type": "string"
          },
          "bucket": {
            "description": "The name of the S3 bucket",
            "type": "string"
          },
          "oidc-role": {
            "description": "The OIDC role to assume",
            "type": "string"
          },
          "region": {
            "description": "The AWS region",
            "type": "string"
          },
          "secret-key": {
            "description": "The AWS secret key",
            "type": "string"
          }
        },
        "required": [
          "bucket",
          "region"
        ],
        "title": "Custom aws self hosted storage",
        "type": "object"
      },
      "storage_gcp_auth": {
        "description": "Google Cloud Platform self hosted storage",
        "properties": {
          "bucket": {
            "description": "The name of the GCP bucket",
            "type": "string"
          },
          "key-file": {
            "description": "The GCP key file contents encoded in Base64 format",
            "type": "string"
          }
        },
        "required": [
          "bucket",
          "key-file"
        ],
        "title": "Custom GCP self hosted storage",
        "type": "object"
      },
      "trigger": {
        "default": "automatic",
        "enum": [
          "automatic",
          "manual"
        ],
        "type": "string"
      },
      "trigger_configuration": {
        "description": "Configuration that defines when and which pipelines to trigger.",
        "properties": {
          "condition": {
            "description": "Boolean expression that determines whether the trigger should execute.",
            "example": "BITBUCKET_BRANCH == \"main\"",
            "title": "Trigger Condition",
            "type": "string"
          },
          "pipelines": {
            "description": "List of pipeline names to trigger when the condition is met. Can reference pipelines from the custom section.",
            "items": {
              "description": "Name of a pipeline defined in the custom pipelines section.",
              "title": "Pipeline Name",
              "type": "string"
            },
            "minItems": 1,
            "title": "Pipeline Names",
            "type": "array"
          }
        },
        "required": [
          "condition",
          "pipelines"
        ],
        "title": "Trigger Configuration",
        "type": "object"
      },
      "trigger_configuration_list": {
        "description": "List of trigger configurations for a specific trigger type.",
        "items": {
          "$ref": "#/components/schemas/trigger_configuration"
        },
        "minItems": 1,
        "title": "Trigger Configuration List",
        "type": "array"
      },
      "trigger_context": {
        "description": "Context of the trigger that started the pipeline. Only returned for pipelines triggered by a parent step.",
        "properties": {
          "parent_pipeline_run_uuid": {
            "description": "The UUID of the pipeline run that contains the parent step that triggered this pipeline.",
            "example": "{00000000-0000-0000-0000-000000000000}",
            "title": "Parent Pipeline Run UUID",
            "type": "string"
          },
          "parent_pipeline_uuid": {
            "description": "The UUID of the pipeline that contains the parent step that triggered this pipeline.",
            "example": "{00000000-0000-0000-0000-000000000000}",
            "title": "Parent Pipeline UUID",
            "type": "string"
          },
          "parent_step_uuid": {
            "description": "The UUID of the parent step that triggered this pipeline.",
            "example": "{00000000-0000-0000-0000-000000000000}",
            "title": "Parent Step UUID",
            "type": "string"
          },
          "type": {
            "description": "The type of trigger that started the pipeline.",
            "enum": [
              "parent_step"
            ],
            "title": "Pipeline Trigger",
            "type": "string"
          }
        },
        "type": "object"
      },
      "variables_item": {
        "additionalProperties": false,
        "properties": {
          "variables": {
            "description": "List of variables for the custom pipeline.",
            "items": {
              "description": "Settings for the custom variable.",
              "properties": {
                "allowed-values": {
                  "description": "A list of values that are allowed for the variable.",
                  "items": {
                    "title": "Allowed Variable Value",
                    "type": "string"
                  },
                  "minItems": 1,
                  "title": "Allowed Variable Values",
                  "type": "array"
                },
                "default": {
                  "title": "Default Variable Value",
                  "type": "string"
                },
                "description": {
                  "title": "Variable Description",
                  "type": "string"
                },
                "name": {
                  "title": "Variable Name",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "title": "Custom Pipeline Variable",
              "type": "object"
            },
            "minItems": 1,
            "title": "Custom Pipeline Variables",
            "type": "array"
          }
        },
        "type": "object"
      }
    }
  },
  "$ref": "#/components/schemas/pipelines_configuration"
}
