<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="datapipelines_v1.html">Data pipelines API</a> . <a href="datapipelines_v1.projects.html">projects</a> . <a href="datapipelines_v1.projects.locations.html">locations</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="datapipelines_v1.projects.locations.pipelines.html">pipelines()</a></code>
</p>
<p class="firstline">Returns the pipelines Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#listPipelines">listPipelines(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists pipelines. Returns a "NOT_FOUND" error if the list is empty. Returns a "FORBIDDEN" error if the caller doesn't have permission to access it.</p>
<p class="toc_element">
  <code><a href="#listPipelines_next">listPipelines_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="listPipelines">listPipelines(parent, filter=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists pipelines. Returns a &quot;NOT_FOUND&quot; error if the list is empty. Returns a &quot;FORBIDDEN&quot; error if the caller doesn&#x27;t have permission to access it.

Args:
  parent: string, Required. The location name. For example: `projects/PROJECT_ID/locations/LOCATION_ID`. (required)
  filter: string, An expression for filtering the results of the request. If unspecified, all pipelines will be returned. Multiple filters can be applied and must be comma separated. Fields eligible for filtering are: + `type`: The type of the pipeline (streaming or batch). Allowed values are `ALL`, `BATCH`, and `STREAMING`. + `executor_type`: The type of pipeline execution layer. This is always Dataflow for now, but more executors may be added later. Allowed values are `ALL` and `DATAFLOW`. + `status`: The activity status of the pipeline. Allowed values are `ALL`, `ACTIVE`, `ARCHIVED`, and `PAUSED`. For example, to limit results to active batch processing pipelines: type:BATCH,status:ACTIVE
  pageSize: integer, The maximum number of entities to return. The service may return fewer than this value, even if there are additional pages. If unspecified, the max limit is yet to be determined by the backend implementation.
  pageToken: string, A page token, received from a previous `ListPipelines` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListPipelines` must match the call that provided the page token.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for ListPipelines.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.
  &quot;pipelines&quot;: [ # Results that matched the filter criteria and were accessible to the caller. Results are always in descending order of pipeline creation date.
    { # The main pipeline entity and all the needed metadata to launch and manage linked jobs.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Immutable. The timestamp when the pipeline was initially created. Set by the Data Pipelines service.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The display name of the pipeline. It can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), and underscores (_).
      &quot;jobCount&quot;: 42, # Output only. Number of jobs.
      &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Output only. Immutable. The timestamp when the pipeline was last modified. Set by the Data Pipelines service.
      &quot;name&quot;: &quot;A String&quot;, # The pipeline name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/pipelines/PIPELINE_ID`. * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), and periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the pipeline&#x27;s location. The list of available locations can be obtained by calling ListLocations. Note that the Data Pipelines service is not available in all regions. It depends on Cloud Scheduler, an App Engine application, so it&#x27;s only available in [App Engine regions](https://cloud.google.com/about/locations#region). * `PIPELINE_ID` is the ID of the pipeline. Must be unique for the selected project and location.
      &quot;pipelineSources&quot;: { # Immutable. The sources of the pipeline (for example, Dataplex). The keys and values are set by the corresponding sources during pipeline creation.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;scheduleInfo&quot;: { # Details of the schedule the pipeline runs on. # Internal scheduling information for a pipeline. If this information is provided, periodic jobs will be created per the schedule. If not, users are responsible for creating jobs externally.
        &quot;nextJobTime&quot;: &quot;A String&quot;, # Output only. When the next Scheduler job is going to run.
        &quot;schedule&quot;: &quot;A String&quot;, # Unix-cron format of the schedule. This information is retrieved from the linked Cloud Scheduler.
        &quot;timeZone&quot;: &quot;A String&quot;, # Timezone ID. This matches the timezone IDs used by the Cloud Scheduler API. If empty, UTC time is assumed.
      },
      &quot;schedulerServiceAccountEmail&quot;: &quot;A String&quot;, # Optional. A service account email to be used with the Cloud Scheduler job. If not specified, the default compute engine service account will be used.
      &quot;state&quot;: &quot;A String&quot;, # Required. The state of the pipeline. When the pipeline is created, the state is set to &#x27;PIPELINE_STATE_ACTIVE&#x27; by default. State changes can be requested by setting the state to stopping, paused, or resuming. State cannot be changed through UpdatePipeline requests.
      &quot;type&quot;: &quot;A String&quot;, # Required. The type of the pipeline. This field affects the scheduling of the pipeline and the type of metrics to show for the pipeline.
      &quot;workload&quot;: { # Workload details for creating the pipeline jobs. # Workload information for creating new jobs.
        &quot;dataflowFlexTemplateRequest&quot;: { # A request to launch a Dataflow job from a Flex Template. # Template information and additional parameters needed to launch a Dataflow job using the flex launch API.
          &quot;launchParameter&quot;: { # Launch Flex Template parameter. # Required. Parameter to launch a job from a Flex Template.
            &quot;containerSpecGcsPath&quot;: &quot;A String&quot;, # Cloud Storage path to a file with a JSON-serialized ContainerSpec as content.
            &quot;environment&quot;: { # The environment values to be set at runtime for a Flex Template. # The runtime environment for the Flex Template job.
              &quot;additionalExperiments&quot;: [ # Additional experiment flags for the job.
                &quot;A String&quot;,
              ],
              &quot;additionalUserLabels&quot;: { # Additional user labels to be specified for the job. Keys and values must follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions). An object containing a list of key/value pairs. Example: `{ &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1kg&quot;, &quot;count&quot;: &quot;3&quot; }`.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;enableStreamingEngine&quot;: True or False, # Whether to enable Streaming Engine for the job.
              &quot;flexrsGoal&quot;: &quot;A String&quot;, # Set FlexRS goal for the job. https://cloud.google.com/dataflow/docs/guides/flexrs
              &quot;ipConfiguration&quot;: &quot;A String&quot;, # Configuration for VM IPs.
              &quot;kmsKeyName&quot;: &quot;A String&quot;, # Name for the Cloud KMS key for the job. Key format is: projects//locations//keyRings//cryptoKeys/
              &quot;machineType&quot;: &quot;A String&quot;, # The machine type to use for the job. Defaults to the value from the template if not specified.
              &quot;maxWorkers&quot;: 42, # The maximum number of Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000.
              &quot;network&quot;: &quot;A String&quot;, # Network to which VMs will be assigned. If empty or unspecified, the service will use the network &quot;default&quot;.
              &quot;numWorkers&quot;: 42, # The initial number of Compute Engine instances for the job.
              &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the service account to run the job as.
              &quot;subnetwork&quot;: &quot;A String&quot;, # Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form &quot;https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK&quot; or &quot;regions/REGION/subnetworks/SUBNETWORK&quot;. If the subnetwork is located in a Shared VPC network, you must use the complete URL.
              &quot;tempLocation&quot;: &quot;A String&quot;, # The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`.
              &quot;workerRegion&quot;: &quot;A String&quot;, # The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1&quot;. Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, defaults to the control plane region.
              &quot;workerZone&quot;: &quot;A String&quot;, # The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1-a&quot;. Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence.
              &quot;zone&quot;: &quot;A String&quot;, # The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence.
            },
            &quot;jobName&quot;: &quot;A String&quot;, # Required. The job name to use for the created job. For an update job request, the job name should be the same as the existing running job.
            &quot;launchOptions&quot;: { # Launch options for this Flex Template job. This is a common set of options across languages and templates. This should not be used to pass job parameters.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;parameters&quot;: { # The parameters for the Flex Template. Example: `{&quot;num_workers&quot;:&quot;5&quot;}`
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;transformNameMappings&quot;: { # Use this to pass transform name mappings for streaming update jobs. Example: `{&quot;oldTransformName&quot;:&quot;newTransformName&quot;,...}`
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;update&quot;: True or False, # Set this to true if you are sending a request to update a running streaming job. When set, the job name should be the same as the running job.
          },
          &quot;location&quot;: &quot;A String&quot;, # Required. The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) to which to direct the request. For example, `us-central1`, `us-west1`.
          &quot;projectId&quot;: &quot;A String&quot;, # Required. The ID of the Cloud Platform project that the job belongs to.
          &quot;validateOnly&quot;: True or False, # If true, the request is validated but not actually executed. Defaults to false.
        },
        &quot;dataflowLaunchTemplateRequest&quot;: { # A request to launch a template. # Template information and additional parameters needed to launch a Dataflow job using the standard launch API.
          &quot;gcsPath&quot;: &quot;A String&quot;, # A Cloud Storage path to the template from which to create the job. Must be a valid Cloud Storage URL, beginning with &#x27;gs://&#x27;.
          &quot;launchParameters&quot;: { # Parameters to provide to the template being launched. # The parameters of the template to launch. This should be part of the body of the POST request.
            &quot;environment&quot;: { # The environment values to set at runtime. # The runtime environment for the job.
              &quot;additionalExperiments&quot;: [ # Additional experiment flags for the job.
                &quot;A String&quot;,
              ],
              &quot;additionalUserLabels&quot;: { # Additional user labels to be specified for the job. Keys and values should follow the restrictions specified in the [labeling restrictions](https://cloud.google.com/compute/docs/labeling-resources#restrictions) page. An object containing a list of key/value pairs. Example: { &quot;name&quot;: &quot;wrench&quot;, &quot;mass&quot;: &quot;1kg&quot;, &quot;count&quot;: &quot;3&quot; }.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;bypassTempDirValidation&quot;: True or False, # Whether to bypass the safety checks for the job&#x27;s temporary directory. Use with caution.
              &quot;enableStreamingEngine&quot;: True or False, # Whether to enable Streaming Engine for the job.
              &quot;ipConfiguration&quot;: &quot;A String&quot;, # Configuration for VM IPs.
              &quot;kmsKeyName&quot;: &quot;A String&quot;, # Name for the Cloud KMS key for the job. The key format is: projects//locations//keyRings//cryptoKeys/
              &quot;machineType&quot;: &quot;A String&quot;, # The machine type to use for the job. Defaults to the value from the template if not specified.
              &quot;maxWorkers&quot;: 42, # The maximum number of Compute Engine instances to be made available to your pipeline during execution, from 1 to 1000.
              &quot;network&quot;: &quot;A String&quot;, # Network to which VMs will be assigned. If empty or unspecified, the service will use the network &quot;default&quot;.
              &quot;numWorkers&quot;: 42, # The initial number of Compute Engine instances for the job.
              &quot;serviceAccountEmail&quot;: &quot;A String&quot;, # The email address of the service account to run the job as.
              &quot;subnetwork&quot;: &quot;A String&quot;, # Subnetwork to which VMs will be assigned, if desired. You can specify a subnetwork using either a complete URL or an abbreviated path. Expected to be of the form &quot;https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNETWORK&quot; or &quot;regions/REGION/subnetworks/SUBNETWORK&quot;. If the subnetwork is located in a Shared VPC network, you must use the complete URL.
              &quot;tempLocation&quot;: &quot;A String&quot;, # The Cloud Storage path to use for temporary files. Must be a valid Cloud Storage URL, beginning with `gs://`.
              &quot;workerRegion&quot;: &quot;A String&quot;, # The Compute Engine region (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1&quot;. Mutually exclusive with worker_zone. If neither worker_region nor worker_zone is specified, default to the control plane&#x27;s region.
              &quot;workerZone&quot;: &quot;A String&quot;, # The Compute Engine zone (https://cloud.google.com/compute/docs/regions-zones/regions-zones) in which worker processing should occur, e.g. &quot;us-west1-a&quot;. Mutually exclusive with worker_region. If neither worker_region nor worker_zone is specified, a zone in the control plane&#x27;s region is chosen based on available capacity. If both `worker_zone` and `zone` are set, `worker_zone` takes precedence.
              &quot;zone&quot;: &quot;A String&quot;, # The Compute Engine [availability zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones) for launching worker instances to run your pipeline. In the future, worker_zone will take precedence.
            },
            &quot;jobName&quot;: &quot;A String&quot;, # Required. The job name to use for the created job.
            &quot;parameters&quot;: { # The runtime parameters to pass to the job.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;transformNameMapping&quot;: { # Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job. Only applicable when updating a pipeline.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &quot;update&quot;: True or False, # If set, replace the existing pipeline with the name specified by jobName with this pipeline, preserving state.
          },
          &quot;location&quot;: &quot;A String&quot;, # The [regional endpoint] (https://cloud.google.com/dataflow/docs/concepts/regional-endpoints) to which to direct the request.
          &quot;projectId&quot;: &quot;A String&quot;, # Required. The ID of the Cloud Platform project that the job belongs to.
          &quot;validateOnly&quot;: True or False, # If true, the request is validated but not actually executed. Defaults to false.
        },
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="listPipelines_next">listPipelines_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>