<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="datalineage_v1.html">Data Lineage API</a> . <a href="datalineage_v1.projects.html">projects</a> . <a href="datalineage_v1.projects.locations.html">locations</a> . <a href="datalineage_v1.projects.locations.processes.html">processes</a> . <a href="datalineage_v1.projects.locations.processes.runs.html">runs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="datalineage_v1.projects.locations.processes.runs.lineageEvents.html">lineageEvents()</a></code>
</p>
<p class="firstline">Returns the lineageEvents 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="#create">create(parent, body=None, requestId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new run.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, allowMissing=None, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the run with the specified name.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the details of the specified run.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists runs in the given project and location. List order is descending by `start_time`.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, allowMissing=None, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a run.</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="create">create(parent, body=None, requestId=None, x__xgafv=None)</code>
  <pre>Creates a new run.

Args:
  parent: string, Required. The name of the process that should own the run. (required)
  body: object, The request body.
    The object takes the form of:

{ # A lineage run represents an execution of a process that creates lineage events.
  &quot;attributes&quot;: { # Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&amp;.`
  &quot;endTime&quot;: &quot;A String&quot;, # Optional. The timestamp of the end of the run.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`
  &quot;startTime&quot;: &quot;A String&quot;, # Required. The timestamp of the start of the run.
  &quot;state&quot;: &quot;A String&quot;, # Required. The state of the run.
}

  requestId: string, Optional. A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is idempotent only if a `request_id` is provided.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A lineage run represents an execution of a process that creates lineage events.
  &quot;attributes&quot;: { # Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&amp;.`
  &quot;endTime&quot;: &quot;A String&quot;, # Optional. The timestamp of the end of the run.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`
  &quot;startTime&quot;: &quot;A String&quot;, # Required. The timestamp of the start of the run.
  &quot;state&quot;: &quot;A String&quot;, # Required. The state of the run.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, allowMissing=None, x__xgafv=None)</code>
  <pre>Deletes the run with the specified name.

Args:
  name: string, Required. The name of the run to delete. (required)
  allowMissing: boolean, If set to true and the run is not found, the request succeeds but the server doesn&#x27;t perform any actions.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets the details of the specified run.

Args:
  name: string, Required. The name of the run to get. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A lineage run represents an execution of a process that creates lineage events.
  &quot;attributes&quot;: { # Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&amp;.`
  &quot;endTime&quot;: &quot;A String&quot;, # Optional. The timestamp of the end of the run.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`
  &quot;startTime&quot;: &quot;A String&quot;, # Required. The timestamp of the start of the run.
  &quot;state&quot;: &quot;A String&quot;, # Required. The state of the run.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists runs in the given project and location. List order is descending by `start_time`.

Args:
  parent: string, Required. The name of process that owns this collection of runs. (required)
  pageSize: integer, The maximum number of runs to return. The service may return fewer than this value. If unspecified, at most 50 runs are returned. The maximum value is 100; values greater than 100 are cut to 100.
  pageToken: string, The page token received from a previous `ListRuns` call. Specify it to get the next page. When paginating, all other parameters specified in this call must match the parameters of 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 ListRuns.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The token to specify as `page_token` in the next call to get the next page. If this field is omitted, there are no subsequent pages.
  &quot;runs&quot;: [ # The runs from the specified project and location.
    { # A lineage run represents an execution of a process that creates lineage events.
      &quot;attributes&quot;: { # Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed.
        &quot;a_key&quot;: &quot;&quot;,
      },
      &quot;displayName&quot;: &quot;A String&quot;, # Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&amp;.`
      &quot;endTime&quot;: &quot;A String&quot;, # Optional. The timestamp of the end of the run.
      &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`
      &quot;startTime&quot;: &quot;A String&quot;, # Required. The timestamp of the start of the run.
      &quot;state&quot;: &quot;A String&quot;, # Required. The state of the run.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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>

<div class="method">
    <code class="details" id="patch">patch(name, allowMissing=None, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a run.

Args:
  name: string, Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.` (required)
  body: object, The request body.
    The object takes the form of:

{ # A lineage run represents an execution of a process that creates lineage events.
  &quot;attributes&quot;: { # Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&amp;.`
  &quot;endTime&quot;: &quot;A String&quot;, # Optional. The timestamp of the end of the run.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`
  &quot;startTime&quot;: &quot;A String&quot;, # Required. The timestamp of the start of the run.
  &quot;state&quot;: &quot;A String&quot;, # Required. The state of the run.
}

  allowMissing: boolean, If set to true and the run is not found, the request creates it.
  updateMask: string, The list of fields to update. Currently not used. The whole message is updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A lineage run represents an execution of a process that creates lineage events.
  &quot;attributes&quot;: { # Optional. The attributes of the run. Should only be used for the purpose of non-semantic management (classifying, describing or labeling the run). Up to 100 attributes are allowed.
    &quot;a_key&quot;: &quot;&quot;,
  },
  &quot;displayName&quot;: &quot;A String&quot;, # Optional. A human-readable name you can set to display in a user interface. Must be not longer than 1024 characters and only contain UTF-8 letters or numbers, spaces or characters like `_-:&amp;.`
  &quot;endTime&quot;: &quot;A String&quot;, # Optional. The timestamp of the end of the run.
  &quot;name&quot;: &quot;A String&quot;, # Immutable. The resource name of the run. Format: `projects/{project}/locations/{location}/processes/{process}/runs/{run}`. Can be specified or auto-assigned. {run} must be not longer than 200 characters and only contain characters in a set: `a-zA-Z0-9_-:.`
  &quot;startTime&quot;: &quot;A String&quot;, # Required. The timestamp of the start of the run.
  &quot;state&quot;: &quot;A String&quot;, # Required. The state of the run.
}</pre>
</div>

</body></html>