<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;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>