{
  "swagger": "2.0",
  "info": {
    "title": "Kubeflow Pipelines API",
    "version": "2.0.0-alpha.2",
    "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/v1beta1/runs": {
      "get": {
        "summary": "Finds all runs.",
        "operationId": "ListRuns",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiListRunsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "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\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": "resource_reference_key.type",
            "description": "The type of the resource that referred to.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN_RESOURCE_TYPE",
              "EXPERIMENT",
              "JOB",
              "PIPELINE",
              "PIPELINE_VERSION",
              "NAMESPACE"
            ],
            "default": "UNKNOWN_RESOURCE_TYPE"
          },
          {
            "name": "resource_reference_key.id",
            "description": "The ID of the resource that referred 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"
          }
        ],
        "tags": [
          "RunService"
        ]
      },
      "post": {
        "summary": "Creates a new run.",
        "operationId": "CreateRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiRunDetail"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiRun"
            }
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/runs/{id}": {
      "delete": {
        "summary": "Deletes a run.",
        "operationId": "DeleteRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the run to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/runs/{id}:archive": {
      "post": {
        "summary": "Archives a run.",
        "operationId": "ArchiveRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the run to be archived.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/runs/{id}:unarchive": {
      "post": {
        "summary": "Restores an archived run.",
        "operationId": "UnarchiveRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the run to be restored.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/runs/{run_id}": {
      "get": {
        "summary": "Finds a specific run by ID.",
        "operationId": "GetRun",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiRunDetail"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/runs/{run_id}/nodes/{node_id}/artifacts/{artifact_name}:read": {
      "get": {
        "summary": "Finds a run's artifact data.",
        "operationId": "ReadArtifact",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiReadArtifactResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "node_id",
            "description": "The ID of the running node.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "artifact_name",
            "description": "The name of the artifact.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/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/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be retried.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/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/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "The ID of the run to be terminated.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/runs/{run_id}:reportMetrics": {
      "post": {
        "summary": "ReportRunMetrics reports metrics of a run. Each metric is reported in its\nown transaction, so this API accepts partial failures. Metric can be\nuniquely identified by (run_id, node_id, name). Duplicate reporting will be\nignored by the API. First reporting wins.",
        "operationId": "ReportRunMetrics",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiReportRunMetricsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "run_id",
            "description": "Required. The parent run ID of the metric.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiReportRunMetricsRequest"
            }
          }
        ],
        "tags": [
          "RunService"
        ]
      }
    },
    "/apis/v1beta1/jobs": {
      "get": {
        "summary": "Finds all jobs.",
        "operationId": "ListJobs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiListJobsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "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\nListJobs call or can be omitted when fetching the first page.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The number of jobs to be listed per page. If there are more jobs 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\".\nAscending by default.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "resource_reference_key.type",
            "description": "The type of the resource that referred to.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN_RESOURCE_TYPE",
              "EXPERIMENT",
              "JOB",
              "PIPELINE",
              "PIPELINE_VERSION",
              "NAMESPACE"
            ],
            "default": "UNKNOWN_RESOURCE_TYPE"
          },
          {
            "name": "resource_reference_key.id",
            "description": "The ID of the resource that referred 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"
          }
        ],
        "tags": [
          "JobService"
        ]
      },
      "post": {
        "summary": "Creates a new job.",
        "operationId": "CreateJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiJob"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "The job to be created",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiJob"
            }
          }
        ],
        "tags": [
          "JobService"
        ]
      }
    },
    "/apis/v1beta1/jobs/{id}": {
      "get": {
        "summary": "Finds a specific job by ID.",
        "operationId": "GetJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiJob"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the job to be retrieved",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "JobService"
        ]
      },
      "delete": {
        "summary": "Deletes a job.",
        "operationId": "DeleteJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the job to be deleted",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "JobService"
        ]
      }
    },
    "/apis/v1beta1/jobs/{id}/disable": {
      "post": {
        "summary": "Stops a job and all its associated runs. The job is not deleted.",
        "operationId": "DisableJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the job to be disabled",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "JobService"
        ]
      }
    },
    "/apis/v1beta1/jobs/{id}/enable": {
      "post": {
        "summary": "Restarts a job that was previously stopped. All runs associated with the job will continue.",
        "operationId": "EnableJob",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the job to be enabled",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "JobService"
        ]
      }
    },
    "/apis/v1beta1/experiments": {
      "get": {
        "summary": "Finds all experiments. Supports pagination, and sorting on certain fields.",
        "operationId": "ListExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiListExperimentsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "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\nListExperiment 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/filter.proto)).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "resource_reference_key.type",
            "description": "The type of the resource that referred to.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN_RESOURCE_TYPE",
              "EXPERIMENT",
              "JOB",
              "PIPELINE",
              "PIPELINE_VERSION",
              "NAMESPACE"
            ],
            "default": "UNKNOWN_RESOURCE_TYPE"
          },
          {
            "name": "resource_reference_key.id",
            "description": "The ID of the resource that referred to.",
            "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/apiExperiment"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "The experiment to be created.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiExperiment"
            }
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      }
    },
    "/apis/v1beta1/experiments/{id}": {
      "get": {
        "summary": "Finds a specific experiment by ID.",
        "operationId": "GetExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiExperiment"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "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 jobs. To\navoid unexpected behaviors, delete an experiment's runs and jobs before\ndeleting the experiment.",
        "operationId": "DeleteExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the experiment to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      }
    },
    "/apis/v1beta1/experiments/{id}:archive": {
      "post": {
        "summary": "Archives an experiment and the experiment's runs and jobs.",
        "operationId": "ArchiveExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the experiment to be archived.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      }
    },
    "/apis/v1beta1/experiments/{id}:unarchive": {
      "post": {
        "summary": "Restores an archived experiment. The experiment's archived runs and jobs\nwill stay archived.",
        "operationId": "UnarchiveExperiment",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the experiment to be restored.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ExperimentService"
        ]
      }
    },
    "/apis/v1beta1/namespaces/{namespace}/pipelines/{name}": {
      "get": {
        "summary": "Finds a pipeline by Name (and namespace)",
        "operationId": "GetPipelineByName",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiPipeline"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "namespace",
            "description": "The Namespace the pipeline belongs to.\nIn the case of shared pipelines and KFPipeline standalone installation,\nthe pipeline name is the only needed field for unique resource lookup (namespace is not required).\nIn those case, please provide hyphen (dash character, \"-\").",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "name",
            "description": "The Name of the pipeline to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v1beta1/pipeline_versions": {
      "get": {
        "summary": "Lists all pipeline versions of a given pipeline.",
        "operationId": "ListPipelineVersions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiListPipelineVersionsResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "resource_key.type",
            "description": "The type of the resource that referred to.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN_RESOURCE_TYPE",
              "EXPERIMENT",
              "JOB",
              "PIPELINE",
              "PIPELINE_VERSION",
              "NAMESPACE"
            ],
            "default": "UNKNOWN_RESOURCE_TYPE"
          },
          {
            "name": "resource_key.id",
            "description": "The ID of the resource that referred to.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The number of pipeline versions to be listed per page. If there are more\npipeline versions 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": "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\nListPipelineVersions call or can be omitted when fetching the first page.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "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 base-64 encoded, JSON-serialized Filter protocol buffer (see\nfilter.proto).",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      },
      "post": {
        "summary": "Adds a pipeline version to the specified pipeline.",
        "operationId": "CreatePipelineVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiPipelineVersion"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "description": "ResourceReference inside PipelineVersion specifies the pipeline that this\nversion belongs to.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiPipelineVersion"
            }
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v1beta1/pipeline_versions/{version_id}": {
      "get": {
        "summary": "Gets a pipeline version by pipeline version ID.",
        "operationId": "GetPipelineVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiPipelineVersion"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "version_id",
            "description": "The ID of the pipeline version to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      },
      "delete": {
        "summary": "Deletes a pipeline version by pipeline version ID. If the deleted pipeline\nversion is the default pipeline version, the pipeline's default version\nchanges to the pipeline's most recent pipeline version. If there are no\nremaining pipeline versions, the pipeline will have no default version.\nExamines the run_service_api.ipynb notebook to learn more about creating a\nrun using a pipeline version (https://github.com/kubeflow/pipelines/blob/master/tools/benchmarks/run_service_api.ipynb).",
        "operationId": "DeletePipelineVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "version_id",
            "description": "The ID of the pipeline version to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v1beta1/pipeline_versions/{version_id}/templates": {
      "get": {
        "summary": "Returns a YAML template that contains the specified pipeline version's description, parameters and metadata.",
        "operationId": "GetPipelineVersionTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiGetTemplateResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "version_id",
            "description": "The ID of the pipeline version whose template is to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v1beta1/pipelines": {
      "get": {
        "summary": "Finds all pipelines.",
        "operationId": "ListPipelines",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiListPipelinesResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "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\nListPipelines call.",
            "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": "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/filter.proto)).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "resource_reference_key.type",
            "description": "The type of the resource that referred to.",
            "in": "query",
            "required": false,
            "type": "string",
            "enum": [
              "UNKNOWN_RESOURCE_TYPE",
              "EXPERIMENT",
              "JOB",
              "PIPELINE",
              "PIPELINE_VERSION",
              "NAMESPACE"
            ],
            "default": "UNKNOWN_RESOURCE_TYPE"
          },
          {
            "name": "resource_reference_key.id",
            "description": "The ID of the resource that referred to.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      },
      "post": {
        "summary": "Creates a pipeline.",
        "operationId": "CreatePipeline",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiPipeline"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiPipeline"
            }
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v1beta1/pipelines/{id}": {
      "get": {
        "summary": "Finds a specific pipeline by ID.",
        "operationId": "GetPipeline",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiPipeline"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the pipeline to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      },
      "delete": {
        "summary": "Deletes a pipeline and its pipeline versions.",
        "operationId": "DeletePipeline",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the pipeline to be deleted.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v1beta1/pipelines/{id}/templates": {
      "get": {
        "summary": "Returns a single YAML template that contains the description, parameters, and metadata associated with the pipeline provided.",
        "operationId": "GetTemplate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiGetTemplateResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the pipeline whose template is to be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v1beta1/pipelines/{pipeline_id}/default_version/{version_id}": {
      "post": {
        "summary": "Update the default pipeline version of a specific pipeline.",
        "operationId": "UpdatePipelineDefaultVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "pipeline_id",
            "description": "The ID of the pipeline to be updated.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "version_id",
            "description": "The ID of the default version.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "PipelineService"
        ]
      }
    },
    "/apis/v1beta1/pipelines/upload": {
      "post": {
        "operationId": "UploadPipeline",
        "consumes": [
          "multipart/form-data"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiPipeline"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "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"
          }
        ],
        "tags": [
          "PipelineUploadService"
        ]
      }
    },
    "/apis/v1beta1/pipelines/upload_version": {
      "post": {
        "operationId": "UploadPipelineVersion",
        "consumes": [
          "multipart/form-data"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiPipelineVersion"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "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/v1beta1/healthz": {
      "get": {
        "summary": "Get healthz data.",
        "operationId": "GetHealthz",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/apiGetHealthzResponse"
            }
          },
          "default": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/apiStatus"
            }
          }
        },
        "tags": [
          "HealthzService"
        ]
      }
    }
  },
  "definitions": {
    "PipelineSpecRuntimeConfig": {
      "type": "object",
      "properties": {
        "parameters": {
          "type": "object",
          "additionalProperties": {
            "type": "object"
          },
          "description": "The runtime parameters of the PipelineSpec. The parameters will be\nused to replace the placeholders\nat 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. Ref:(https://www.kubeflow.org/docs/components/pipelines/pipeline-root/)"
        }
      },
      "description": "The runtime config of a PipelineSpec."
    },
    "ReportRunMetricsResponseReportRunMetricResult": {
      "type": "object",
      "properties": {
        "metric_name": {
          "type": "string",
          "description": "Output. The name of the metric."
        },
        "metric_node_id": {
          "type": "string",
          "description": "Output. The ID of the node which reports the metric."
        },
        "status": {
          "$ref": "#/definitions/ReportRunMetricsResponseReportRunMetricResultStatus",
          "description": "Output. The status of the metric reporting."
        },
        "message": {
          "type": "string",
          "description": "Output. The detailed message of the error of the reporting."
        }
      }
    },
    "ReportRunMetricsResponseReportRunMetricResultStatus": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "OK",
        "INVALID_ARGUMENT",
        "DUPLICATE_REPORTING",
        "INTERNAL_ERROR"
      ],
      "default": "UNSPECIFIED",
      "description": " - UNSPECIFIED: Default value if not present.\n - OK: Indicates successful reporting.\n - INVALID_ARGUMENT: Indicates that the payload of the metric is invalid.\n - DUPLICATE_REPORTING: Indicates that the metric has been reported before.\n - INTERNAL_ERROR: Indicates that something went wrong in the server."
    },
    "RunMetricFormat": {
      "type": "string",
      "enum": [
        "UNSPECIFIED",
        "RAW",
        "PERCENTAGE"
      ],
      "default": "UNSPECIFIED",
      "description": " - UNSPECIFIED: Default value if not present.\n - RAW: Display value as its raw format.\n - PERCENTAGE: Display value in percentage format."
    },
    "apiListRunsResponse": {
      "type": "object",
      "properties": {
        "runs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiRun"
          }
        },
        "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."
        }
      }
    },
    "apiParameter": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "apiPipelineRuntime": {
      "type": "object",
      "properties": {
        "pipeline_manifest": {
          "type": "string",
          "description": "Output. The runtime JSON manifest of the pipeline, including the status\nof pipeline steps and fields need for UI visualization etc."
        },
        "workflow_manifest": {
          "type": "string",
          "description": "Output. The runtime JSON manifest of the argo workflow.\nThis is deprecated after pipeline_runtime_manifest is in use."
        }
      }
    },
    "apiPipelineSpec": {
      "type": "object",
      "properties": {
        "pipeline_id": {
          "type": "string",
          "description": "Optional input field. The ID of the pipeline user uploaded before."
        },
        "pipeline_name": {
          "type": "string",
          "description": "Optional output field. The name of the pipeline.\nNot empty if the pipeline id is not empty."
        },
        "workflow_manifest": {
          "type": "string",
          "description": "Optional input field. The marshalled raw argo JSON workflow.\nThis will be deprecated when pipeline_manifest is in use."
        },
        "pipeline_manifest": {
          "type": "string",
          "description": "Optional input field. The raw pipeline JSON spec."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiParameter"
          },
          "title": "The parameter user provide to inject to the pipeline JSON.\nIf a default value of a parameter exist in the JSON,\nthe value user provided here will replace. V1 only"
        },
        "runtime_config": {
          "$ref": "#/definitions/PipelineSpecRuntimeConfig",
          "title": "Runtime config of the pipeline. V2 only"
        }
      }
    },
    "apiReadArtifactResponse": {
      "type": "object",
      "properties": {
        "data": {
          "type": "string",
          "format": "byte",
          "description": "The bytes of the artifact content."
        }
      }
    },
    "apiRelationship": {
      "type": "string",
      "enum": [
        "UNKNOWN_RELATIONSHIP",
        "OWNER",
        "CREATOR"
      ],
      "default": "UNKNOWN_RELATIONSHIP"
    },
    "apiReportRunMetricsRequest": {
      "type": "object",
      "properties": {
        "run_id": {
          "type": "string",
          "description": "Required. The parent run ID of the metric."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiRunMetric"
          },
          "description": "List of metrics to report."
        }
      }
    },
    "apiReportRunMetricsResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReportRunMetricsResponseReportRunMetricResult"
          }
        }
      }
    },
    "apiResourceKey": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/apiResourceType",
          "description": "The type of the resource that referred to."
        },
        "id": {
          "type": "string",
          "description": "The ID of the resource that referred to."
        }
      }
    },
    "apiResourceReference": {
      "type": "object",
      "properties": {
        "key": {
          "$ref": "#/definitions/apiResourceKey"
        },
        "name": {
          "type": "string",
          "description": "The name of the resource that referred to."
        },
        "relationship": {
          "$ref": "#/definitions/apiRelationship",
          "description": "Required field. The relationship from referred resource to the object."
        }
      }
    },
    "apiResourceType": {
      "type": "string",
      "enum": [
        "UNKNOWN_RESOURCE_TYPE",
        "EXPERIMENT",
        "JOB",
        "PIPELINE",
        "PIPELINE_VERSION",
        "NAMESPACE"
      ],
      "default": "UNKNOWN_RESOURCE_TYPE"
    },
    "apiRun": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output. Unique run ID. Generated by API server."
        },
        "name": {
          "type": "string",
          "description": "Required input field. Name provided by user,\nor auto generated if run is created by scheduled job. Not unique."
        },
        "storage_state": {
          "$ref": "#/definitions/apiRunStorageState",
          "description": "Output. Specify whether this run is in archived or available mode."
        },
        "description": {
          "type": "string",
          "title": "Optional input field. Describing the purpose of the run"
        },
        "pipeline_spec": {
          "$ref": "#/definitions/apiPipelineSpec",
          "description": "Required input field.\nDescribing what the pipeline manifest and parameters to use for the run."
        },
        "resource_references": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiResourceReference"
          },
          "description": "Optional input field. Specify which resource this run belongs to.\nWhen creating a run from a particular pipeline version, the pipeline\nversion can be specified here."
        },
        "service_account": {
          "type": "string",
          "description": "Optional input field. Specify which Kubernetes service account this run uses."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The time that the run created."
        },
        "scheduled_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. When this run is scheduled to run. This could be different from\ncreated_at. For example, if a run is from a backfilling job that was\nsupposed to run 2 month ago, the scheduled_at is 2 month ago,\nv.s. created_at is the current time."
        },
        "finished_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The time this run is finished."
        },
        "status": {
          "type": "string",
          "title": "Output. The status of the run.\nOne of [Pending, Running, Succeeded, Skipped, Failed, Error]"
        },
        "error": {
          "type": "string",
          "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 error. This is especially useful during listing call."
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiRunMetric"
          },
          "description": "Output. The metrics of the run. The metrics are reported by ReportMetrics\nAPI."
        }
      }
    },
    "apiRunDetail": {
      "type": "object",
      "properties": {
        "run": {
          "$ref": "#/definitions/apiRun"
        },
        "pipeline_runtime": {
          "$ref": "#/definitions/apiPipelineRuntime"
        }
      }
    },
    "apiRunMetric": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Required. The user defined name of the metric. It must between 1 and 63\ncharacters long and must conform to the following regular expression:\n`[a-z]([-a-z0-9]*[a-z0-9])?`."
        },
        "node_id": {
          "type": "string",
          "description": "Required. The runtime node ID which reports the metric. The node ID can be\nfound in the RunDetail.workflow.Status. Metric with same (node_id, name)\nare considerd as duplicate. Only the first reporting will be recorded. Max\nlength is 128."
        },
        "number_value": {
          "type": "number",
          "format": "double",
          "description": "The number value of the metric."
        },
        "format": {
          "$ref": "#/definitions/RunMetricFormat",
          "description": "The display format of metric."
        }
      }
    },
    "apiRunStorageState": {
      "type": "string",
      "enum": [
        "STORAGESTATE_AVAILABLE",
        "STORAGESTATE_ARCHIVED"
      ],
      "default": "STORAGESTATE_AVAILABLE"
    },
    "apiStatus": {
      "type": "object",
      "properties": {
        "error": {
          "type": "string"
        },
        "code": {
          "type": "integer",
          "format": "int32"
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    },
    "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    }"
    },
    "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."
    },
    "JobMode": {
      "type": "string",
      "enum": [
        "UNKNOWN_MODE",
        "ENABLED",
        "DISABLED"
      ],
      "default": "UNKNOWN_MODE",
      "description": "Required input.\n\n - DISABLED: The job won't schedule any run if disabled."
    },
    "apiCronSchedule": {
      "type": "object",
      "properties": {
        "start_time": {
          "type": "string",
          "format": "date-time",
          "title": "The start time of the cron job"
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "title": "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"
        }
      },
      "title": "CronSchedule allow scheduling the job with unix-like cron"
    },
    "apiJob": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output. Unique run ID. Generated by API server."
        },
        "name": {
          "type": "string",
          "description": "Required input field. Job name provided by user. Not unique."
        },
        "description": {
          "type": "string",
          "title": "Optional input field. Describing the purpose of the job"
        },
        "pipeline_spec": {
          "$ref": "#/definitions/apiPipelineSpec",
          "description": "Required input field.\nDescribing what the pipeline manifest and parameters to use\nfor the scheduled job."
        },
        "resource_references": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiResourceReference"
          },
          "description": "Optional input field. Specify which resource this job belongs to."
        },
        "service_account": {
          "type": "string",
          "description": "Optional input field. Specify which Kubernetes service account this job uses."
        },
        "max_concurrency": {
          "type": "string",
          "format": "int64",
          "title": "Required input field.\nSpecify how many runs can be executed concurrently. Rage [1-10]"
        },
        "trigger": {
          "$ref": "#/definitions/apiTrigger",
          "description": "Required input field.\nSpecify how a run is triggered. Support cron mode or periodic mode."
        },
        "mode": {
          "$ref": "#/definitions/JobMode"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The time this job is created."
        },
        "updated_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The last time this job is updated."
        },
        "status": {
          "type": "string",
          "title": "Output. The status of the job.\nOne of [Enable, Disable, Error]"
        },
        "error": {
          "type": "string",
          "description": "In case any error happens retrieving a job field, only job ID\nand the error message is returned. Client has the flexibility of choosing\nhow to handle error. This is especially useful during listing call."
        },
        "enabled": {
          "type": "boolean",
          "format": "boolean",
          "description": "Input. Whether the job is enabled or not."
        },
        "no_catchup": {
          "type": "boolean",
          "format": "boolean",
          "description": "Optional input field. Whether the job should catch up if behind schedule.\nIf true, the job will only schedule the latest interval if behind schedule.\nIf false, the job will catch up on each past interval."
        }
      }
    },
    "apiListJobsResponse": {
      "type": "object",
      "properties": {
        "jobs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiJob"
          },
          "description": "A list of jobs returned."
        },
        "total_size": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of jobs for the given query."
        },
        "next_page_token": {
          "type": "string",
          "description": "The token to list the next page of jobs."
        }
      }
    },
    "apiPeriodicSchedule": {
      "type": "object",
      "properties": {
        "start_time": {
          "type": "string",
          "format": "date-time",
          "title": "The start time of the periodic job"
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "title": "The end time of the periodic job"
        },
        "interval_second": {
          "type": "string",
          "format": "int64",
          "title": "The time interval between the starting time of consecutive jobs"
        }
      },
      "title": "PeriodicSchedule allow scheduling the job periodically with certain interval"
    },
    "apiTrigger": {
      "type": "object",
      "properties": {
        "cron_schedule": {
          "$ref": "#/definitions/apiCronSchedule"
        },
        "periodic_schedule": {
          "$ref": "#/definitions/apiPeriodicSchedule"
        }
      },
      "description": "Trigger defines what starts a pipeline run."
    },
    "apiExperiment": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output. Unique experiment ID. Generated by API server."
        },
        "name": {
          "type": "string",
          "description": "Required input field. Unique experiment name provided by user."
        },
        "description": {
          "type": "string",
          "title": "Optional input field. Describing the purpose of the experiment"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The time that the experiment created."
        },
        "resource_references": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiResourceReference"
          },
          "description": "Optional input field. Specify which resource this run belongs to.\nFor Experiment, the only valid resource reference is a single Namespace."
        },
        "storage_state": {
          "$ref": "#/definitions/apiExperimentStorageState",
          "description": "Output. Specifies whether this experiment is in archived or available state."
        }
      }
    },
    "apiExperimentStorageState": {
      "type": "string",
      "enum": [
        "STORAGESTATE_UNSPECIFIED",
        "STORAGESTATE_AVAILABLE",
        "STORAGESTATE_ARCHIVED"
      ],
      "default": "STORAGESTATE_UNSPECIFIED"
    },
    "apiListExperimentsResponse": {
      "type": "object",
      "properties": {
        "experiments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiExperiment"
          },
          "description": "A list of experiments returned."
        },
        "total_size": {
          "type": "integer",
          "format": "int32",
          "description": "The total number of experiments for the given query."
        },
        "next_page_token": {
          "type": "string",
          "description": "The token to list the next page of experiments."
        }
      }
    },
    "apiGetTemplateResponse": {
      "type": "object",
      "properties": {
        "template": {
          "type": "string",
          "description": "The template of the pipeline specified in a GetTemplate request, or of a\npipeline version specified in a GetPipelinesVersionTemplate request."
        }
      }
    },
    "apiListPipelineVersionsResponse": {
      "type": "object",
      "properties": {
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiPipelineVersion"
          }
        },
        "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."
        }
      }
    },
    "apiListPipelinesResponse": {
      "type": "object",
      "properties": {
        "pipelines": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiPipeline"
          }
        },
        "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."
        }
      }
    },
    "apiPipeline": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output. Unique pipeline ID. Generated by API server."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The time this pipeline is created."
        },
        "name": {
          "type": "string",
          "description": "Optional input field. Pipeline name provided by user. If not specified,\nfile name is used as pipeline name."
        },
        "description": {
          "type": "string",
          "description": "Optional input field. Describing the purpose of the job."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiParameter"
          },
          "description": "Output. The input parameters for this pipeline.\nTODO(jingzhang36): replace this parameters field with the parameters field\ninside PipelineVersion when all usage of the former has been changed to use\nthe latter."
        },
        "url": {
          "$ref": "#/definitions/apiUrl",
          "description": "The URL to the source of the pipeline. This is required when creating the\npipeine through CreatePipeline API.\nTODO(jingzhang36): replace this url field with the code_source_urls field\ninside PipelineVersion when all usage of the former has been changed to use\nthe latter."
        },
        "error": {
          "type": "string",
          "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 error. This is especially useful during listing call."
        },
        "default_version": {
          "$ref": "#/definitions/apiPipelineVersion",
          "title": "Output only. The default version of the pipeline. As of now, the latest\nversion is used as default. (In the future, if desired by customers, we\ncan allow them to set default version.)",
          "readOnly": true
        },
        "resource_references": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiResourceReference"
          },
          "description": "Input field. Specify which resource this pipeline belongs to.\nFor Pipeline, the only valid resource reference is a single Namespace."
        }
      }
    },
    "apiPipelineVersion": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output. Unique version ID. Generated by API server."
        },
        "name": {
          "type": "string",
          "description": "Optional input field. Version name provided by user."
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "Output. The time this pipeline version is created."
        },
        "parameters": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiParameter"
          },
          "description": "Output. The input parameters for this pipeline."
        },
        "code_source_url": {
          "type": "string",
          "description": "Input. Optional. Pipeline version code source."
        },
        "package_url": {
          "$ref": "#/definitions/apiUrl",
          "description": "Input. Required. Pipeline version package url.\nWhe calling CreatePipelineVersion API method, need to provide one package\nfile location."
        },
        "resource_references": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiResourceReference"
          },
          "description": "Input. Required. E.g., specify which pipeline this pipeline version belongs\nto."
        },
        "description": {
          "type": "string",
          "description": "Input. Optional. Description for the pipeline version."
        }
      }
    },
    "apiUrl": {
      "type": "object",
      "properties": {
        "pipeline_url": {
          "type": "string",
          "description": "URL of the pipeline definition or the pipeline version definition."
        }
      }
    },
    "apiGetHealthzResponse": {
      "type": "object",
      "properties": {
        "multi_user": {
          "type": "boolean",
          "format": "boolean",
          "title": "Returns if KFP in multi-user mode"
        }
      }
    }
  },
  "securityDefinitions": {
    "Bearer": {
      "type": "apiKey",
      "name": "authorization",
      "in": "header"
    }
  },
  "security": [
    {
      "Bearer": []
    }
  ]
}
