<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="analyticsadmin_v1alpha.html">Google Analytics Admin API</a> . <a href="analyticsadmin_v1alpha.properties.html">properties</a> . <a href="analyticsadmin_v1alpha.properties.bigQueryLinks.html">bigQueryLinks</a></h1>
<h2>Instance Methods</h2>
<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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Lookup for a single BigQuery Link.</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 BigQuery Links on a property.</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>
<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="get">get(name, x__xgafv=None)</code>
  <pre>Lookup for a single BigQuery Link.

Args:
  name: string, Required. The name of the BigQuery link to lookup. Format: properties/{property_id}/bigQueryLinks/{bigquery_link_id} Example: properties/123/bigQueryLinks/456 (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A link between a GA4 Property and BigQuery project.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the link was created.
  &quot;dailyExportEnabled&quot;: True or False, # If set true, enables daily data export to the linked Google Cloud project.
  &quot;excludedEvents&quot;: [ # The list of event names that will be excluded from exports.
    &quot;A String&quot;,
  ],
  &quot;exportStreams&quot;: [ # The list of streams under the parent property for which data will be exported. Format: properties/{property_id}/dataStreams/{stream_id} Example: [&#x27;properties/1000/dataStreams/2000&#x27;]
    &quot;A String&quot;,
  ],
  &quot;freshDailyExportEnabled&quot;: True or False, # If set true, enables fresh daily export to the linked Google Cloud project.
  &quot;includeAdvertisingId&quot;: True or False, # If set true, exported data will include advertising identifiers for mobile app streams.
  &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this BigQuery link. Format: &#x27;properties/{property_id}/bigQueryLinks/{bigquery_link_id}&#x27; Format: &#x27;properties/1234/bigQueryLinks/abc567&#x27;
  &quot;project&quot;: &quot;A String&quot;, # Immutable. The linked Google Cloud project. When creating a BigQueryLink, you may provide this resource name using either a project number or project ID. Once this resource has been created, the returned project will always have a project that contains a project number. Format: &#x27;projects/{project number}&#x27; Example: &#x27;projects/1234&#x27;
  &quot;streamingExportEnabled&quot;: True or False, # If set true, enables streaming export to the linked Google Cloud project.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists BigQuery Links on a property.

Args:
  parent: string, Required. The name of the property to list BigQuery links under. Format: properties/{property_id} Example: properties/1234 (required)
  pageSize: integer, The maximum number of resources to return. The service may return fewer than this value, even if there are additional pages. If unspecified, at most 50 resources will be returned. The maximum value is 200; (higher values will be coerced to the maximum)
  pageToken: string, A page token, received from a previous `ListBigQueryLinks` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBigQueryLinks` 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 ListBigQueryLinks RPC
  &quot;bigqueryLinks&quot;: [ # List of BigQueryLinks.
    { # A link between a GA4 Property and BigQuery project.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time when the link was created.
      &quot;dailyExportEnabled&quot;: True or False, # If set true, enables daily data export to the linked Google Cloud project.
      &quot;excludedEvents&quot;: [ # The list of event names that will be excluded from exports.
        &quot;A String&quot;,
      ],
      &quot;exportStreams&quot;: [ # The list of streams under the parent property for which data will be exported. Format: properties/{property_id}/dataStreams/{stream_id} Example: [&#x27;properties/1000/dataStreams/2000&#x27;]
        &quot;A String&quot;,
      ],
      &quot;freshDailyExportEnabled&quot;: True or False, # If set true, enables fresh daily export to the linked Google Cloud project.
      &quot;includeAdvertisingId&quot;: True or False, # If set true, exported data will include advertising identifiers for mobile app streams.
      &quot;name&quot;: &quot;A String&quot;, # Output only. Resource name of this BigQuery link. Format: &#x27;properties/{property_id}/bigQueryLinks/{bigquery_link_id}&#x27; Format: &#x27;properties/1234/bigQueryLinks/abc567&#x27;
      &quot;project&quot;: &quot;A String&quot;, # Immutable. The linked Google Cloud project. When creating a BigQueryLink, you may provide this resource name using either a project number or project ID. Once this resource has been created, the returned project will always have a project that contains a project number. Format: &#x27;projects/{project number}&#x27; Example: &#x27;projects/1234&#x27;
      &quot;streamingExportEnabled&quot;: True or False, # If set true, enables streaming export to the linked Google Cloud project.
    },
  ],
  &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.
}</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>

</body></html>