{
  "swagger": "2.0",
  "info": {
    "title": "Kubeflow Pipelines API",
    "version": "2.0.0-beta.1",
    "description": "This file contains REST API specification for Kubeflow Pipelines. The file is autogenerated from the swagger definition.",
    "contact": {
      "name": "google",
      "email": "kubeflow-pipelines@google.com",
      "url": "https://www.google.com"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://raw.githubusercontent.com/kubeflow/pipelines/master/LICENSE"
    }
  },
  "schemes": [
    "http",
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/apis/v2beta1/auth": {
      "get": {
        "operationId": "Authorize",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "resources",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNASSIGNED_RESOURCES",
              "VIEWERS"
            ],
            "default": "UNASSIGNED_RESOURCES"
          },
          {
            "name": "verb",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNASSIGNED_VERB",
              "CREATE",
              "GET",
              "DELETE"
            ],
            "default": "UNASSIGNED_VERB"
          }
        ],
        "tags": [
          "AuthService"
        ]
      }
    },
    "/apis/v2beta1/experiments": {
      "get": {
        "summary": "Finds all experiments. Supports pagination, and sorting on certain fields.",
        "operationId": "ListExperiments",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1ListExperimentsResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "page_token",
            "description": "A page token to request the next page of results. The token is acquried\nfrom the nextPageToken field of the response from the previous\nListExperiments call or can be omitted when fetching the first page.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The number of experiments to be listed per page. If there are more\nexperiments than this number, the response message will contain a\nnextPageToken field you can use to fetch the next page.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "sort_by",
            "description": "Can be format of \"field_name\", \"field_name asc\" or \"field_name desc\"\nAscending by default.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "A url-encoded, JSON-serialized Filter protocol buffer (see\n[filter.proto](https://github.com/kubeflow/pipelines/blob/master/backend/api/v2beta1/api/filter.proto)).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "namespace",
            "description": "Which namespace to filter the experiments on.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      },
      "post": {
        "summary": "Creates a new experiment.",
        "operationId": "CreateExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1Experiment"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "The experiment to be created.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v2beta1Experiment"
            }
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      }
    },
    "/apis/v2beta1/experiments/{experiment_id}": {
      "get": {
        "summary": "Finds a specific experiment by ID.",
        "operationId": "GetExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1Experiment"
            }
          }
        },
        "parameters": [
          {
            "name": "experiment_id",
            "description": "The ID of the experiment to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      },
      "delete": {
        "summary": "Deletes an experiment without deleting the experiment's runs and recurring \nruns. To avoid unexpected behaviors, delete an experiment's runs and recurring \nruns before deleting the experiment.",
        "operationId": "DeleteExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "experiment_id",
            "description": "The ID of the experiment to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      }
    },
    "/apis/v2beta1/experiments/{experiment_id}:archive": {
      "post": {
        "summary": "Archives an experiment and the experiment's runs and recurring runs.",
        "operationId": "ArchiveExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "experiment_id",
            "description": "The ID of the experiment to be archived.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      }
    },
    "/apis/v2beta1/experiments/{experiment_id}:unarchive": {
      "post": {
        "summary": "Restores an archived experiment. The experiment's archived runs and recurring\nruns will stay archived.",
        "operationId": "UnarchiveExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "experiment_id",
            "description": "The ID of the experiment to be restored.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      }
    },
    "/apis/v2beta1/healthz": {
      "get": {
        "summary": "Get healthz data.",
        "operationId": "GetHealthz",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1GetHealthzResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "tags": [
          "HealthzService"
        ]
      }
    },
    "/apis/v2beta1/pipelines": {
      "get": {
        "summary": "Finds all pipelines within a namespace.",
        "operationId": "ListPipelines",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1ListPipelinesResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "description": "Optional input. Namespace for the pipelines.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_token",
            "description": "A page token to request the results page.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The number of pipelines to be listed per page. If there are more pipelines\nthan this number, the response message will contain a valid value in the\nnextPageToken field.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "sort_by",
            "description": "Sorting order in form of \"field_name\", \"field_name asc\" or \"field_name desc\".\nAscending by default.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "A url-encoded, JSON-serialized filter protocol buffer (see\n[filter.proto](https://github.com/kubeflow/pipelines/blob/master/backend/api/filter.proto)).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      },
      "post": {
        "summary": "Creates a pipeline.",
        "operationId": "CreatePipeline",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1Pipeline"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Required input. Pipeline that needs to be created.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v2beta1Pipeline"
            }
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v2beta1/pipelines/names/{name}": {
      "get": {
        "summary": "Finds a specific pipeline by name and namespace.",
        "operationId": "GetPipelineByName",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1Pipeline"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "name",
            "description": "Required input. Name of the pipeline to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "namespace",
            "description": "Optional input. Namespace of the pipeline. \nIt could be empty if default namespaces needs to be used or if multi-user \nsupport is turned off.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v2beta1/pipelines/{pipeline_id}": {
      "get": {
        "summary": "Finds a specific pipeline by ID.",
        "operationId": "GetPipeline",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1Pipeline"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pipeline_id",
            "description": "Required input. The ID of the pipeline to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      },
      "delete": {
        "summary": "Deletes an empty pipeline by ID. Returns error if the pipeline has pipeline versions.",
        "operationId": "DeletePipeline",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pipeline_id",
            "description": "Required input. ID of the pipeline to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v2beta1/pipelines/{pipeline_id}/versions": {
      "get": {
        "summary": "Lists all pipeline versions of a given pipeline ID.",
        "operationId": "ListPipelineVersions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1ListPipelineVersionsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pipeline_id",
            "description": "Required input. ID of the parent pipeline.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "page_token",
            "description": "A page token to request the results page.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The number of pipeline versions to be listed per page. If there are more pipeline\nversions than this number, the response message will contain a valid value in the\nnextPageToken field.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "sort_by",
            "description": "Sorting order in form of \"field_name\", \"field_name asc\" or \"field_name desc\".\nAscending by default.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "A url-encoded, JSON-serialized filter protocol buffer (see\n[filter.proto](https://github.com/kubeflow/pipelines/blob/master/backend/api/filter.proto)).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      },
      "post": {
        "summary": "Adds a pipeline version to the specified pipeline ID.",
        "operationId": "CreatePipelineVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1PipelineVersion"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pipeline_id",
            "description": "Required input. ID of the parent pipeline.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "description": "Required input. Pipeline version ID to be created.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v2beta1PipelineVersion"
            }
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v2beta1/pipelines/{pipeline_id}/versions/{pipeline_version_id}": {
      "get": {
        "summary": "Gets a pipeline version by pipeline version ID and pipeline ID.",
        "operationId": "GetPipelineVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1PipelineVersion"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pipeline_id",
            "description": "Required input. ID of the parent pipeline.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "pipeline_version_id",
            "description": "Required input. ID of the pipeline version to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      },
      "delete": {
        "summary": "Deletes a specific pipeline version by pipeline version ID and pipeline ID.",
        "operationId": "DeletePipelineVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pipeline_id",
            "description": "Required input. ID of the parent pipeline.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "pipeline_version_id",
            "description": "Required input. The ID of the pipeline version to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v2beta1/pipelines/upload": {
      "post": {
        "operationId": "UploadPipeline",
        "consumes": [
          "multipart/form-data"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/v2beta1Pipeline"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uploadfile",
            "in": "formData",
            "required": true,
            "type": "file",
            "description": "The pipeline to upload. Maximum size of 32MB is supported."
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "namespace",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineUploadService"
        ]
      }
    },
    "/apis/v2beta1/pipelines/upload_version": {
      "post": {
        "operationId": "UploadPipelineVersion",
        "consumes": [
          "multipart/form-data"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/v2beta1PipelineVersion"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "uploadfile",
            "in": "formData",
            "required": true,
            "type": "file",
            "description": "The pipeline to upload. Maximum size of 32MB is supported."
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "pipelineid",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "description",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineUploadService"
        ]
      }
    },
    "/apis/v2beta1/recurringruns": {
      "get": {
        "summary": "Finds all recurring runs given experiment and namespace. \nIf experiment ID is not specified, find all recurring runs across all experiments.",
        "operationId": "ListRecurringRuns",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1ListRecurringRunsResponse"
            }
          }
        },
        "parameters": [
          {
            "name": "page_token",
            "description": "A page token to request the next page of results. The token is acquired\nfrom the nextPageToken field of the response from the previous\nListRecurringRuns call or can be omitted when fetching the first page.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The number of recurring runs to be listed per page. If there are more recurring runs \nthan this number, the response message will contain a nextPageToken field you can use\nto fetch the next page.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "sort_by",
            "description": "Can be formatted as \"field_name\", \"field_name asc\" or \"field_name desc\".\nAscending by default.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "namespace",
            "description": "Optional input. The namespace the recurring runs belong to.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "A url-encoded, JSON-serialized Filter protocol buffer (see\n[filter.proto](https://github.com/kubeflow/pipelines/blob/master/backend/api/filter.proto)).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "experiment_id",
            "description": "The ID of the experiment to be retrieved. If empty, list recurring runs across all experiments.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RecurringRunService"
        ]
      },
      "post": {
        "summary": "Creates a new recurring run in an experiment, given the experiment ID.",
        "operationId": "CreateRecurringRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1RecurringRun"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "The recurring run to be created.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v2beta1RecurringRun"
            }
          }
        ],
        "tags": [
          "RecurringRunService"
        ]
      }
    },
    "/apis/v2beta1/recurringruns/{recurring_run_id}": {
      "get": {
        "summary": "Finds a specific recurring run by ID.",
        "operationId": "GetRecurringRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1RecurringRun"
            }
          }
        },
        "parameters": [
          {
            "name": "recurring_run_id",
            "description": "The ID of the recurring run to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RecurringRunService"
        ]
      },
      "delete": {
        "summary": "Deletes a recurring run.",
        "operationId": "DeleteRecurringRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "recurring_run_id",
            "description": "The ID of the recurring run to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RecurringRunService"
        ]
      }
    },
    "/apis/v2beta1/recurringruns/{recurring_run_id}:disable": {
      "post": {
        "summary": "Stops a recurring run and all its associated runs. The recurring run is not deleted.",
        "operationId": "DisableRecurringRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "recurring_run_id",
            "description": "The ID of the recurring runs to be disabled.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RecurringRunService"
        ]
      }
    },
    "/apis/v2beta1/recurringruns/{recurring_run_id}:enable": {
      "post": {
        "summary": "Restarts a recurring run that was previously stopped. All runs associated with the \nrecurring run will continue.",
        "operationId": "EnableRecurringRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "recurring_run_id",
            "description": "The ID of the recurring runs to be enabled.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RecurringRunService"
        ]
      }
    },
    "/apis/v2beta1/scheduledworkflows": {
      "post": {
        "operationId": "ReportScheduledWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "ScheduledWorkflow a ScheduledWorkflow resource marshalled into a json string.",
            "in": "body",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "ReportService"
        ]
      }
    },
    "/apis/v2beta1/workflows": {
      "post": {
        "operationId": "ReportWorkflow",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Workflow is a workflow custom resource marshalled into a json string.",
            "in": "body",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "ReportService"
        ]
      }
    },
    "/apis/v2beta1/runs": {
      "get": {
        "summary": "Finds all runs in an experiment given by experiment ID. \nIf experiment id is not specified, finds all runs across all experiments.",
        "operationId": "ListRuns",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1ListRunsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "description": "Optional input field. Filters based on the namespace.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "experiment_id",
            "description": "The ID of the parent experiment. If empty, response includes runs across all experiments.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_token",
            "description": "A page token to request the next page of results. The token is acquired\nfrom the nextPageToken field of the response from the previous\nListRuns call or can be omitted when fetching the first page.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The number of runs to be listed per page. If there are more runs than this\nnumber, the response message will contain a nextPageToken field you can use\nto fetch the next page.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "sort_by",
            "description": "Can be format of \"field_name\", \"field_name asc\" or \"field_name desc\"\n(Example, \"name asc\" or \"id desc\"). Ascending by default.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "A url-encoded, JSON-serialized Filter protocol buffer (see\n[filter.proto](https://github.com/kubeflow/pipelines/blob/master/backend/api/filter.proto)).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      },
      "post": {
        "summary": "Creates a new run in an experiment specified by experiment ID. \nIf experiment ID is not specified, the run is created in the default experiment.",
        "operationId": "CreateRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1Run"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "Run to be created.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v2beta1Run"
            }
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v2beta1/runs/{run_id}": {
      "get": {
        "summary": "Finds a specific run by ID.",
        "operationId": "GetRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1Run"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "experiment_id",
            "description": "The ID of the parent experiment.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      },
      "delete": {
        "summary": "Deletes a run in an experiment given by run ID and experiment ID.",
        "operationId": "DeleteRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "experiment_id",
            "description": "The ID of the parent experiment.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v2beta1/runs/{run_id}/nodes/{node_id}/artifacts/{artifact_name}:read": {
      "get": {
        "summary": "Finds artifact data in a run.",
        "operationId": "ReadArtifact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1ReadArtifactResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "ID of the run.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "node_id",
            "description": "ID of the running node.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "artifact_name",
            "description": "Name of the artifact.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "experiment_id",
            "description": "The ID of the parent experiment.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v2beta1/runs/{run_id}:archive": {
      "post": {
        "summary": "Archives a run in an experiment given by run ID and experiment ID.",
        "operationId": "ArchiveRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be archived.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v2beta1/runs/{run_id}:retry": {
      "post": {
        "summary": "Re-initiates a failed or terminated run.",
        "operationId": "RetryRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be retried.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v2beta1/runs/{run_id}:terminate": {
      "post": {
        "summary": "Terminates an active run.",
        "operationId": "TerminateRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be terminated.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v2beta1/runs/{run_id}:unarchive": {
      "post": {
        "summary": "Restores an archived run in an experiment given by run ID and experiment ID.",
        "operationId": "UnarchiveRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be restored.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v2beta1/visualizations/{namespace}": {
      "post": {
        "operationId": "CreateVisualizationV1",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/v2beta1Visualization"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/googlerpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v2beta1Visualization"
            }
          }
        ],
        "tags": [
          "VisualizationService"
        ]
      }
    }
  },
  "definitions": {
    "AuthorizeRequestResources": {
      "type": "string",
      "enum": [
        "UNASSIGNED_RESOURCES",
        "VIEWERS"
      ],
      "default": "UNASSIGNED_RESOURCES",
      "description": "Type of resources in pipelines system."
    },
    "AuthorizeRequestVerb": {
      "type": "string",
      "enum": [
        "UNASSIGNED_VERB",
        "CREATE",
        "GET",
        "DELETE"
      ],
      "default": "UNASSIGNED_VERB",
      "description": "Type of verbs that act on the resources."
    },
    "googlerpcStatus": {
      "type": "object",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]."
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\n[google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufAny"
          },
          "description": "A list of messages that carry the error details.  There is a common set of\nmessage types for APIs to use."
        }
      },
      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors)."
    },
    "protobufAny": {
      "type": "object",
      "properties": {
        "type_url": {
          "type": "string",
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
        },
        "value": {
          "type": "string",
          "format": "byte",
          "description": "Must be a valid serialized protocol buffer of the above specified type."
        }
      },
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
    },
    "v2beta1Experiment": {
      "type": "object",
      "properties": {
        "experiment_id": {
          "type": "string",
          "description": "Output. Unique experiment ID. Generated by API server."
        },
        "display_name": {
          "type": "string",
          "description": "Required input field. Unique experiment name provided by user."
        },
        "description": {
          "type": "string",
          "description": "Optional input field. Describes the purpose of the experiment."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The time that the experiment was created."
        },
        "namespace": {
          "type": "string",
          "description": "Optional input field. Specify the namespace this experiment belongs to."
        },
        "storage_state": {
          "$ref": "#/definitions/v2beta1ExperimentStorageState",
          "description": "Output. Specifies whether this experiment is in archived or available state."
        }
      }
    },
    "v2beta1ExperimentStorageState": {
      "type": "string",
      "enum": [
        "STORAGE_STATE_UNSPECIFIED",
        "AVAILABLE",
        "ARCHIVED"
      ],
      "default": "STORAGE_STATE_UNSPECIFIED",
      "description": "Describes whether an entity is available or archived.\n\n - STORAGE_STATE_UNSPECIFIED: Default state. This state in not used\n - AVAILABLE: Entity is available.\n - ARCHIVED: Entity is archived."
    },
    "v2beta1ListExperimentsResponse": {
      "type": "object",
      "properties": {
        "experiments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1Experiment"
          },
          "description": "A list of experiments returned."
        },
        "total_size": {
          "type": "integer",
          "format": "int32",
          "description": "The number of experiments for the given query."
        },
        "next_page_token": {
          "type": "string",
          "description": "The token to list the next page of experiments."
        }
      }
    },
    "PredicateIntValues": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "description": "List of integers."
    },
    "PredicateLongValues": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          }
        }
      },
      "description": "List of long integers."
    },
    "PredicateStringValues": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "List of strings."
    },
    "v2beta1Filter": {
      "type": "object",
      "properties": {
        "predicates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1Predicate"
          },
          "description": "All predicates are AND-ed when this filter is applied."
        }
      },
      "description": "Filter is used to filter resources returned from a ListXXX request.\n\nExample filters:\n1) Filter runs with status = 'Running'\nfilter {\n  predicate {\n    key: \"status\"\n    operation: EQUALS\n    string_value: \"Running\"\n  }\n}\n\n2) Filter runs that succeeded since Dec 1, 2018\nfilter {\n  predicate {\n    key: \"status\"\n    operation: EQUALS\n    string_value: \"Succeeded\"\n  }\n  predicate {\n    key: \"created_at\"\n    operation: GREATER_THAN\n    timestamp_value {\n      seconds: 1543651200\n    }\n  }\n}\n\n3) Filter runs with one of labels 'label_1' or 'label_2'\n\nfilter {\n  predicate {\n    key: \"label\"\n    operation: IN\n    string_values {\n      value: 'label_1'\n      value: 'label_2'\n    }\n  }\n}"
    },
    "v2beta1Predicate": {
      "type": "object",
      "properties": {
        "operation": {
          "$ref": "#/definitions/v2beta1PredicateOperation"
        },
        "key": {
          "type": "string",
          "description": "Key for the operation (first argument)."
        },
        "int_value": {
          "type": "integer",
          "format": "int32",
          "description": "Integer."
        },
        "long_value": {
          "type": "string",
          "format": "int64",
          "description": "Long integer."
        },
        "string_value": {
          "type": "string",
          "description": "String."
        },
        "timestamp_value": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp values will be converted to Unix time (seconds since the epoch)\nprior to being used in a filtering operation."
        },
        "int_values": {
          "$ref": "#/definitions/PredicateIntValues",
          "description": "Array values below are only meant to be used by the IN operator."
        },
        "long_values": {
          "$ref": "#/definitions/PredicateLongValues",
          "description": "List of long integers."
        },
        "string_values": {
          "$ref": "#/definitions/PredicateStringValues",
          "description": "List of strings."
        }
      },
      "description": "Predicate captures individual conditions that must be true for a resource\nbeing filtered."
    },
    "v2beta1PredicateOperation": {
      "type": "string",
      "enum": [
        "OPERATION_UNSPECIFIED",
        "EQUALS",
        "NOT_EQUALS",
        "GREATER_THAN",
        "GREATER_THAN_EQUALS",
        "LESS_THAN",
        "LESS_THAN_EQUALS",
        "IN",
        "IS_SUBSTRING"
      ],
      "default": "OPERATION_UNSPECIFIED",
      "description": "Operation is the operation to apply.\n\n - OPERATION_UNSPECIFIED: Default operation. This operation is not used.\n - EQUALS: Operation on scalar values. Only applies to one of |int_value|,\n|long_value|, |string_value| or |timestamp_value|.\n - NOT_EQUALS: Negated EQUALS.\n - GREATER_THAN: Greater than operation.\n - GREATER_THAN_EQUALS: Greater than or equals operation.\n - LESS_THAN: Less than operation.\n - LESS_THAN_EQUALS: Less than or equals operation\n - IN: Checks if the value is a member of a given array, which should be one of\n|int_values|, |long_values| or |string_values|.\n - IS_SUBSTRING: Checks if the value contains |string_value| as a substring match. Only\napplies to |string_value|."
    },
    "v2beta1GetHealthzResponse": {
      "type": "object",
      "properties": {
        "multi_user": {
          "type": "boolean",
          "format": "boolean",
          "description": "Returns if KFP in multi-user mode",
          "title": "TODO(gkcalat): redesign this service to return status\nand move server configuration into a separate service\nTODO(gkcalat): rename or deprecate v1beta1 HealthzService"
        }
      }
    },
    "protobufListValue": {
      "type": "object",
      "properties": {
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufValue"
          },
          "description": "Repeated field of dynamically typed values."
        }
      },
      "description": "`ListValue` is a wrapper around a repeated field of values.\n\nThe JSON representation for `ListValue` is JSON array."
    },
    "protobufNullValue": {
      "type": "string",
      "enum": [
        "NULL_VALUE"
      ],
      "default": "NULL_VALUE",
      "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value."
    },
    "protobufStruct": {
      "type": "object",
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/protobufValue"
          },
          "description": "Unordered map of dynamically typed values."
        }
      },
      "description": "`Struct` represents a structured data value, consisting of fields\nwhich map to dynamically typed values. In some languages, `Struct`\nmight be supported by a native representation. For example, in\nscripting languages like JS a struct is represented as an\nobject. The details of that representation are described together\nwith the proto support for the language.\n\nThe JSON representation for `Struct` is JSON object."
    },
    "protobufValue": {
      "type": "object",
      "properties": {
        "null_value": {
          "$ref": "#/definitions/protobufNullValue",
          "description": "Represents a null value."
        },
        "number_value": {
          "type": "number",
          "format": "double",
          "description": "Represents a double value."
        },
        "string_value": {
          "type": "string",
          "description": "Represents a string value."
        },
        "bool_value": {
          "type": "boolean",
          "format": "boolean",
          "description": "Represents a boolean value."
        },
        "struct_value": {
          "$ref": "#/definitions/protobufStruct",
          "description": "Represents a structured value."
        },
        "list_value": {
          "$ref": "#/definitions/protobufListValue",
          "description": "Represents a repeated `Value`."
        }
      },
      "description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value."
    },
    "v2beta1ListPipelineVersionsResponse": {
      "type": "object",
      "properties": {
        "pipeline_versions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1PipelineVersion"
          },
          "description": "Returned pipeline versions."
        },
        "next_page_token": {
          "type": "string",
          "description": "The token to list the next page of pipeline versions."
        },
        "total_size": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of pipeline versions for the given query."
        }
      }
    },
    "v2beta1ListPipelinesResponse": {
      "type": "object",
      "properties": {
        "pipelines": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1Pipeline"
          },
          "description": "Returned pipelines."
        },
        "total_size": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of pipelines for the given query."
        },
        "next_page_token": {
          "type": "string",
          "description": "The token to list the next page of pipelines.\nThis token can be used on the next ListPipelinesRequest."
        }
      }
    },
    "v2beta1Pipeline": {
      "type": "object",
      "properties": {
        "pipeline_id": {
          "type": "string",
          "description": "Output. Unique pipeline ID. Generated by API server."
        },
        "display_name": {
          "type": "string",
          "description": "Required input field. Pipeline name provided by user."
        },
        "description": {
          "type": "string",
          "description": "Optional input field. A short description of the pipeline."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. Creation time of the pipeline."
        },
        "namespace": {
          "type": "string",
          "description": "Input. A namespace this pipeline belongs to.\nCauses error if user is not authorized to access the specified namespace.\nIf not specified in CreatePipeline, default namespace is used."
        },
        "error": {
          "$ref": "#/definitions/googlerpcStatus",
          "description": "In case any error happens retrieving a pipeline field, only pipeline ID,\nand the error message is returned. Client has the flexibility of choosing\nhow to handle the error. This is especially useful during listing call."
        }
      }
    },
    "v2beta1PipelineVersion": {
      "type": "object",
      "properties": {
        "pipeline_id": {
          "type": "string",
          "description": "Required input field. Unique ID of the parent pipeline."
        },
        "pipeline_version_id": {
          "type": "string",
          "description": "Output. Unique pipeline version ID. Generated by API server."
        },
        "display_name": {
          "type": "string",
          "description": "Required input field. Pipeline version name provided by user."
        },
        "description": {
          "type": "string",
          "description": "Optional input field. Short description of the pipeline version."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. Creation time of the pipeline version."
        },
        "package_url": {
          "$ref": "#/definitions/v2beta1Url",
          "description": "Input. Required. The URL to the source of the pipeline version.\nThis is required when creating the pipeine version through\nCreatePipelineVersion API."
        },
        "code_source_url": {
          "type": "string",
          "description": "Input. Optional. The URL to the code source of the pipeline version.\nThe code is usually the Python definition of the pipeline and potentially\nrelated the component definitions. This allows users to trace back to how\nthe pipeline YAML was created."
        },
        "pipeline_spec": {
          "$ref": "#/definitions/protobufStruct",
          "description": "Output. The pipeline spec for the pipeline version.",
          "type": "object"
        },
        "error": {
          "$ref": "#/definitions/googlerpcStatus",
          "description": "In case any error happens retrieving a pipeline version field, only\npipeline ID, pipeline version ID, and the error message are returned. \nClient has the flexibility of choosing how to handle the error. \nThis is especially useful during List() calls."
        }
      }
    },
    "v2beta1Url": {
      "type": "object",
      "properties": {
        "pipeline_url": {
          "type": "string",
          "description": "URL of the pipeline version definition."
        }
      }
    },
    "RecurringRunMode": {
      "type": "string",
      "enum": [
        "MODE_UNSPECIFIED",
        "ENABLE",
        "DISABLE"
      ],
      "default": "MODE_UNSPECIFIED",
      "description": "Required input.\nUser setting to enable or disable the recurring run. \nOnly used for creation of recurring runs. Later updates use enable/disable API.\n\n - DISABLE: The recurring run won't schedule any run if disabled."
    },
    "v2beta1CronSchedule": {
      "type": "object",
      "properties": {
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "The start time of the cron job."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "The end time of the cron job."
        },
        "cron": {
          "type": "string",
          "title": "The cron string. For details how to compose a cron, visit\nttps://en.wikipedia.org/wiki/Cron"
        }
      },
      "description": "CronSchedule allow scheduling the recurring run with unix-like cron."
    },
    "v2beta1ListRecurringRunsResponse": {
      "type": "object",
      "properties": {
        "recurringRuns": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1RecurringRun"
          },
          "description": "A list of recurring runs returned."
        },
        "total_size": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of recurring runs for the given query."
        },
        "next_page_token": {
          "type": "string",
          "description": "The token to list the next page of recurring runs."
        }
      }
    },
    "v2beta1PeriodicSchedule": {
      "type": "object",
      "properties": {
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "The start time of the periodic recurring run."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "The end time of the periodic recurring run."
        },
        "interval_second": {
          "type": "string",
          "format": "int64",
          "description": "The time interval between the starting time of consecutive recurring runs."
        }
      },
      "description": "PeriodicSchedule allow scheduling the recurring run periodically with certain interval."
    },
    "v2beta1PipelineVersionReference": {
      "type": "object",
      "properties": {
        "pipeline_id": {
          "type": "string",
          "description": "Input. Required. Unique ID of the parent pipeline."
        },
        "pipeline_version_id": {
          "type": "string",
          "description": "Input. Required. Unique ID of an existing pipeline version."
        }
      },
      "description": "Reference to an existing pipeline version."
    },
    "v2beta1RecurringRun": {
      "type": "object",
      "properties": {
        "recurring_run_id": {
          "type": "string",
          "description": "Output. Unique run ID generated by API server."
        },
        "display_name": {
          "type": "string",
          "description": "Required input field. Recurring run name provided by user. Not unique."
        },
        "description": {
          "type": "string",
          "description": "Optional input field. Describes the purpose of the recurring run."
        },
        "pipeline_version_id": {
          "type": "string",
          "description": "The ID of the pipeline version used for creating runs."
        },
        "pipeline_spec": {
          "$ref": "#/definitions/protobufStruct",
          "description": "The pipeline spec."
        },
        "pipeline_version_reference": {
          "$ref": "#/definitions/v2beta1PipelineVersionReference",
          "description": "Reference to a pipeline version containing pipeline_id and pipeline_version_id."
        },
        "runtime_config": {
          "$ref": "#/definitions/v2beta1RuntimeConfig",
          "description": "Runtime config of the pipeline."
        },
        "service_account": {
          "type": "string",
          "description": "Optional input field. Specifies which Kubernetes service account this recurring run uses."
        },
        "max_concurrency": {
          "type": "string",
          "format": "int64",
          "description": "Required input field.\nSpecifies how many runs can be executed concurrently. Range [1-10]."
        },
        "trigger": {
          "$ref": "#/definitions/v2beta1Trigger",
          "description": "Required input field.\nSpecifies how a run is triggered. Support cron mode or periodic mode."
        },
        "mode": {
          "$ref": "#/definitions/RecurringRunMode"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The time this recurring run was created."
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The last time this recurring run was updated."
        },
        "status": {
          "$ref": "#/definitions/v2beta1RecurringRunStatus"
        },
        "error": {
          "$ref": "#/definitions/googlerpcStatus",
          "description": "In case any error happens retrieving a recurring run field, only recurring run ID\nand the error message is returned. Client has the flexibility of choosing\nhow to handle the error. This is especially useful during listing call."
        },
        "no_catchup": {
          "type": "boolean",
          "format": "boolean",
          "description": "Optional input field. Whether the recurring run should catch up if behind schedule.\nIf true, the recurring run will only schedule the latest interval if behind schedule.\nIf false, the recurring run will catch up on each past interval."
        },
        "namespace": {
          "type": "string",
          "description": "TODO (gkclat): consider removing this field if it can be obtained from the parent experiment.\nOutput only. Namespace this recurring run belongs to. Derived from the parent experiment.",
          "readOnly": true
        },
        "experiment_id": {
          "type": "string",
          "description": "ID of the parent experiment this recurring run belongs to."
        }
      }
    },
    "v2beta1RecurringRunStatus": {
      "type": "string",
      "enum": [
        "STATUS_UNSPECIFIED",
        "ENABLED",
        "DISABLED"
      ],
      "default": "STATUS_UNSPECIFIED",
      "description": "Output. The status of the recurring run."
    },
    "v2beta1RuntimeConfig": {
      "type": "object",
      "properties": {
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/protobufValue"
          },
          "description": "The runtime parameters of the Pipeline. The parameters will be\nused to replace the placeholders at runtime."
        },
        "pipeline_root": {
          "type": "string",
          "title": "A path in a object store bucket which will be treated as the root\noutput directory of the pipeline. It is used by the system to\ngenerate the paths of output artifacts. \nRef:(https://www.kubeflow.org/docs/components/pipelines/pipeline-root/)"
        }
      },
      "description": "The runtime config."
    },
    "v2beta1Trigger": {
      "type": "object",
      "properties": {
        "cron_schedule": {
          "$ref": "#/definitions/v2beta1CronSchedule"
        },
        "periodic_schedule": {
          "$ref": "#/definitions/v2beta1PeriodicSchedule"
        }
      },
      "description": "Trigger defines what starts a pipeline run."
    },
    "PipelineTaskDetailChildTask": {
      "type": "object",
      "properties": {
        "task_id": {
          "type": "string",
          "description": "System-generated ID of a task."
        },
        "pod_name": {
          "type": "string",
          "description": "Name of the corresponding pod assigned by the orchestration engine.\nAlso known as node_id."
        }
      },
      "description": "A dependent task that requires this one to succeed.\nRepresented by either task_id or pod_name."
    },
    "v2beta1ArtifactList": {
      "type": "object",
      "properties": {
        "artifact_ids": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "int64"
          },
          "description": "A list of artifact metadata ids."
        }
      },
      "description": "A list of artifact metadata."
    },
    "v2beta1ListRunsResponse": {
      "type": "object",
      "properties": {
        "runs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1Run"
          },
          "description": "List of retrieved runs."
        },
        "total_size": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of runs for the given query."
        },
        "next_page_token": {
          "type": "string",
          "description": "The token to list the next page of runs."
        }
      }
    },
    "v2beta1PipelineTaskDetail": {
      "type": "object",
      "properties": {
        "run_id": {
          "type": "string",
          "description": "ID of the parent run."
        },
        "task_id": {
          "type": "string",
          "description": "System-generated ID of a task."
        },
        "display_name": {
          "type": "string",
          "description": "User specified name of a task that is defined in\n[Pipeline.spec][]."
        },
        "create_time": {
          "type": "string",
          "format": "date-time",
          "description": "Creation time of a task."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Starting time of a task."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "Completion time of a task."
        },
        "executor_detail": {
          "$ref": "#/definitions/v2beta1PipelineTaskExecutorDetail",
          "description": "Execution information of a task."
        },
        "state": {
          "$ref": "#/definitions/v2beta1RuntimeState",
          "description": "Runtime state of a task."
        },
        "execution_id": {
          "type": "string",
          "format": "int64",
          "description": "Execution id of the corresponding entry in ML metadata store."
        },
        "error": {
          "$ref": "#/definitions/googlerpcStatus",
          "description": "The error that occurred during task execution.\nOnly populated when the task is in FAILED or CANCELED state."
        },
        "inputs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v2beta1ArtifactList"
          },
          "description": "Input artifacts of the task."
        },
        "outputs": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/v2beta1ArtifactList"
          },
          "description": "Output artifacts of the task."
        },
        "parent_task_id": {
          "type": "string",
          "description": "ID of the parent task if the task is within a component scope.\nEmpty if the task is at the root level."
        },
        "state_history": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1RuntimeStatus"
          },
          "description": "A sequence of task statuses. This field keeps a record \nof state transitions."
        },
        "pod_name": {
          "type": "string",
          "description": "Name of the corresponding pod assigned by the orchestration engine.\nAlso known as node_id."
        },
        "child_tasks": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PipelineTaskDetailChildTask"
          },
          "description": "Sequence of dependen tasks."
        }
      },
      "description": "Runtime information of a task execution."
    },
    "v2beta1PipelineTaskExecutorDetail": {
      "type": "object",
      "properties": {
        "main_job": {
          "type": "string",
          "description": "The name of the job for the main container execution."
        },
        "pre_caching_check_job": {
          "type": "string",
          "description": "The name of the job for the pre-caching-check container\nexecution. This job will be available if the\nRun.pipeline_spec specifies the `pre_caching_check` hook in\nthe lifecycle events."
        },
        "failed_main_jobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the previously failed job for the main container\nexecutions. The list includes the all attempts in chronological order."
        },
        "failed_pre_caching_check_jobs": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The names of the previously failed job for the\npre-caching-check container executions. This job will be available if the\nRun.pipeline_spec specifies the `pre_caching_check` hook in\nthe lifecycle events.\nThe list includes the all attempts in chronological order."
        }
      },
      "description": "Runtime information of a pipeline task executor."
    },
    "v2beta1ReadArtifactResponse": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "format": "byte",
          "description": "Byte array of the artifact content."
        }
      }
    },
    "v2beta1Run": {
      "type": "object",
      "properties": {
        "experiment_id": {
          "type": "string",
          "description": "Input. ID of the parent experiment.\nThe default experiment ID will be used if this is not specified."
        },
        "run_id": {
          "type": "string",
          "description": "Output. Unique run ID. Generated by API server."
        },
        "display_name": {
          "type": "string",
          "description": "Required input. Name provided by user,\nor auto generated if run is created by a recurring run."
        },
        "storage_state": {
          "$ref": "#/definitions/v2beta1RunStorageState",
          "description": "Output. Specifies whether this run is in archived or available mode."
        },
        "description": {
          "type": "string",
          "description": "Optional input. Short description of the run."
        },
        "pipeline_version_id": {
          "type": "string",
          "description": "ID of an existing pipeline version."
        },
        "pipeline_spec": {
          "$ref": "#/definitions/protobufStruct",
          "description": "Pipeline spec."
        },
        "pipeline_version_reference": {
          "$ref": "#/definitions/v2beta1PipelineVersionReference",
          "description": "Reference to a pipeline version containing pipeline_id and pipeline_version_id."
        },
        "runtime_config": {
          "$ref": "#/definitions/v2beta1RuntimeConfig",
          "description": "Required input. Runtime config of the run."
        },
        "service_account": {
          "type": "string",
          "description": "Optional input. Specifies which kubernetes service account is used."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. Creation time of the run."
        },
        "scheduled_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. When this run is scheduled to start. This could be different from\ncreated_at. For example, if a run is from a backfilling job that was supposed\nto run 2 month ago, the created_at will be 2 month behind scheduled_at."
        },
        "finished_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. Completion of the run."
        },
        "state": {
          "$ref": "#/definitions/v2beta1RuntimeState",
          "description": "Output. Runtime state of a run."
        },
        "error": {
          "$ref": "#/definitions/googlerpcStatus",
          "description": "In case any error happens retrieving a run field, only run ID\nand the error message is returned. Client has the flexibility of choosing\nhow to handle the error. This is especially useful during listing call."
        },
        "run_details": {
          "$ref": "#/definitions/v2beta1RunDetails",
          "description": "Output. Runtime details of a run."
        },
        "recurring_run_id": {
          "type": "string",
          "description": "ID of the recurring run that triggered this run."
        },
        "state_history": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1RuntimeStatus"
          },
          "description": "Output. A sequence of run statuses. This field keeps a record \nof state transitions."
        }
      }
    },
    "v2beta1RunDetails": {
      "type": "object",
      "properties": {
        "pipeline_context_id": {
          "type": "string",
          "format": "int64",
          "description": "Pipeline context ID of a run."
        },
        "pipeline_run_context_id": {
          "type": "string",
          "format": "int64",
          "description": "Pipeline run context ID of a run."
        },
        "task_details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v2beta1PipelineTaskDetail"
          },
          "description": "Runtime details of the tasks that belong to the run."
        }
      },
      "description": "Runtime details of a run."
    },
    "v2beta1RunStorageState": {
      "type": "string",
      "enum": [
        "STORAGE_STATE_UNSPECIFIED",
        "AVAILABLE",
        "ARCHIVED"
      ],
      "default": "STORAGE_STATE_UNSPECIFIED",
      "description": "Describes whether an entity is available or archived.\n\n - STORAGE_STATE_UNSPECIFIED: Default state. This state in not used\n - AVAILABLE: Entity is available.\n - ARCHIVED: Entity is archived."
    },
    "v2beta1RuntimeState": {
      "type": "string",
      "enum": [
        "RUNTIME_STATE_UNSPECIFIED",
        "PENDING",
        "RUNNING",
        "SUCCEEDED",
        "SKIPPED",
        "FAILED",
        "CANCELING",
        "CANCELED",
        "PAUSED"
      ],
      "default": "RUNTIME_STATE_UNSPECIFIED",
      "description": "Describes the runtime state of an entity.\n\n - RUNTIME_STATE_UNSPECIFIED: Default value. This value is not used.\n - PENDING: Service is preparing to execute an entity.\n - RUNNING: Entity execution is in progress.\n - SUCCEEDED: Entity completed successfully.\n - SKIPPED: Entity has been skipped. For example, due to caching.\n - FAILED: Entity execution has failed.\n - CANCELING: Entity is being canceled. From this state, an entity may only\nchange its state to SUCCEEDED, FAILED or CANCELED.\n - CANCELED: Entity has been canceled.\n - PAUSED: Entity has been paused. It can be resumed."
    },
    "v2beta1RuntimeStatus": {
      "type": "object",
      "properties": {
        "update_time": {
          "type": "string",
          "format": "date-time",
          "description": "Update time of this state."
        },
        "state": {
          "$ref": "#/definitions/v2beta1RuntimeState",
          "description": "The state of a runtime instance."
        },
        "error": {
          "$ref": "#/definitions/googlerpcStatus",
          "description": "The error that occurred during the state. May be set when the state is\nany of the non-final states (PENDING/RUNNING/CANCELING) or FAILED state.\nIf the state is FAILED, the error here is final and not going to be\nretried. If the state is a non-final state, the error indicates that a \nsystem-error being retried."
        }
      },
      "description": "Timestamped representation of a runtime state with an optional error."
    },
    "v2beta1Visualization": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/v2beta1VisualizationType"
        },
        "source": {
          "type": "string",
          "description": "Path pattern of input data to be used during generation of visualizations.\nThis is required when creating the pipeline through CreateVisualization\nAPI."
        },
        "arguments": {
          "type": "string",
          "description": "Variables to be used during generation of a visualization.\nThis should be provided as a JSON string.\nThis is required when creating the pipeline through CreateVisualization\nAPI."
        },
        "html": {
          "type": "string",
          "description": "Output. Generated visualization html."
        },
        "error": {
          "type": "string",
          "description": "In case any error happens when generating visualizations, only\nvisualization ID and the error message are returned. Client has the\nflexibility of choosing how to handle the error."
        }
      }
    },
    "v2beta1VisualizationType": {
      "type": "string",
      "enum": [
        "ROC_CURVE",
        "TFDV",
        "TFMA",
        "TABLE",
        "CUSTOM"
      ],
      "default": "ROC_CURVE",
      "description": "Type of visualization to be generated.\nThis is required when creating the pipeline through CreateVisualization\nAPI."
    }
  },
  "securityDefinitions": {
    "Bearer": {
      "type": "apiKey",
      "name": "authorization",
      "in": "header"
    }
  },
  "security": [
    {
      "Bearer": []
    }
  ]
}
