<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="analytics_v3.html">Google Analytics API</a> . <a href="analytics_v3.management.html">management</a> . <a href="analytics_v3.management.unsampledReports.html">unsampledReports</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="#delete">delete(accountId, webPropertyId, profileId, unsampledReportId)</a></code></p>
<p class="firstline">Deletes an unsampled report.</p>
<p class="toc_element">
  <code><a href="#get">get(accountId, webPropertyId, profileId, unsampledReportId)</a></code></p>
<p class="firstline">Returns a single unsampled report.</p>
<p class="toc_element">
  <code><a href="#insert">insert(accountId, webPropertyId, profileId, body=None)</a></code></p>
<p class="firstline">Create a new unsampled report.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, webPropertyId, profileId, max_results=None, start_index=None)</a></code></p>
<p class="firstline">Lists unsampled reports to which the user has access.</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="delete">delete(accountId, webPropertyId, profileId, unsampledReportId)</code>
  <pre>Deletes an unsampled report.

Args:
  accountId: string, Account ID to delete the unsampled report for. (required)
  webPropertyId: string, Web property ID to delete the unsampled reports for. (required)
  profileId: string, View (Profile) ID to delete the unsampled report for. (required)
  unsampledReportId: string, ID of the unsampled report to be deleted. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(accountId, webPropertyId, profileId, unsampledReportId)</code>
  <pre>Returns a single unsampled report.

Args:
  accountId: string, Account ID to retrieve unsampled report for. (required)
  webPropertyId: string, Web property ID to retrieve unsampled reports for. (required)
  profileId: string, View (Profile) ID to retrieve unsampled report for. (required)
  unsampledReportId: string, ID of the unsampled report to retrieve. (required)

Returns:
  An object of the form:

    { # JSON template for Analytics unsampled report resource.
    &quot;title&quot;: &quot;A String&quot;, # Title of the unsampled report.
    &quot;dimensions&quot;: &quot;A String&quot;, # The dimensions for the unsampled report.
    &quot;downloadType&quot;: &quot;A String&quot;, # The type of download you need to use for the report data file. Possible values include `GOOGLE_DRIVE` and `GOOGLE_CLOUD_STORAGE`. If the value is `GOOGLE_DRIVE`, see the `driveDownloadDetails` field. If the value is `GOOGLE_CLOUD_STORAGE`, see the `cloudStorageDownloadDetails` field.
    &quot;kind&quot;: &quot;analytics#unsampledReport&quot;, # Resource type for an Analytics unsampled report.
    &quot;metrics&quot;: &quot;A String&quot;, # The metrics for the unsampled report.
    &quot;end-date&quot;: &quot;A String&quot;, # The end date for the unsampled report.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this unsampled report belongs.
    &quot;created&quot;: &quot;A String&quot;, # Time this unsampled report was created.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this unsampled report belongs.
    &quot;segment&quot;: &quot;A String&quot;, # The segment for the unsampled report.
    &quot;updated&quot;: &quot;A String&quot;, # Time this unsampled report was last modified.
    &quot;id&quot;: &quot;A String&quot;, # Unsampled report ID.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this unsampled report belongs. The web property ID is of the form UA-XXXXX-YY.
    &quot;start-date&quot;: &quot;A String&quot;, # The start date for the unsampled report.
    &quot;status&quot;: &quot;A String&quot;, # Status of this unsampled report. Possible values are PENDING, COMPLETED, or FAILED.
    &quot;cloudStorageDownloadDetails&quot;: { # Download details for a file stored in Google Cloud Storage.
      &quot;bucketId&quot;: &quot;A String&quot;, # Id of the bucket the file object is stored in.
      &quot;objectId&quot;: &quot;A String&quot;, # Id of the file object containing the report data.
    },
    &quot;filters&quot;: &quot;A String&quot;, # The filters for the unsampled report.
    &quot;driveDownloadDetails&quot;: { # Download details for a file stored in Google Drive.
      &quot;documentId&quot;: &quot;A String&quot;, # Id of the document/file containing the report data.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this unsampled report.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(accountId, webPropertyId, profileId, body=None)</code>
  <pre>Create a new unsampled report.

Args:
  accountId: string, Account ID to create the unsampled report for. (required)
  webPropertyId: string, Web property ID to create the unsampled report for. (required)
  profileId: string, View (Profile) ID to create the unsampled report for. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics unsampled report resource.
  &quot;title&quot;: &quot;A String&quot;, # Title of the unsampled report.
  &quot;dimensions&quot;: &quot;A String&quot;, # The dimensions for the unsampled report.
  &quot;downloadType&quot;: &quot;A String&quot;, # The type of download you need to use for the report data file. Possible values include `GOOGLE_DRIVE` and `GOOGLE_CLOUD_STORAGE`. If the value is `GOOGLE_DRIVE`, see the `driveDownloadDetails` field. If the value is `GOOGLE_CLOUD_STORAGE`, see the `cloudStorageDownloadDetails` field.
  &quot;kind&quot;: &quot;analytics#unsampledReport&quot;, # Resource type for an Analytics unsampled report.
  &quot;metrics&quot;: &quot;A String&quot;, # The metrics for the unsampled report.
  &quot;end-date&quot;: &quot;A String&quot;, # The end date for the unsampled report.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this unsampled report belongs.
  &quot;created&quot;: &quot;A String&quot;, # Time this unsampled report was created.
  &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this unsampled report belongs.
  &quot;segment&quot;: &quot;A String&quot;, # The segment for the unsampled report.
  &quot;updated&quot;: &quot;A String&quot;, # Time this unsampled report was last modified.
  &quot;id&quot;: &quot;A String&quot;, # Unsampled report ID.
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this unsampled report belongs. The web property ID is of the form UA-XXXXX-YY.
  &quot;start-date&quot;: &quot;A String&quot;, # The start date for the unsampled report.
  &quot;status&quot;: &quot;A String&quot;, # Status of this unsampled report. Possible values are PENDING, COMPLETED, or FAILED.
  &quot;cloudStorageDownloadDetails&quot;: { # Download details for a file stored in Google Cloud Storage.
    &quot;bucketId&quot;: &quot;A String&quot;, # Id of the bucket the file object is stored in.
    &quot;objectId&quot;: &quot;A String&quot;, # Id of the file object containing the report data.
  },
  &quot;filters&quot;: &quot;A String&quot;, # The filters for the unsampled report.
  &quot;driveDownloadDetails&quot;: { # Download details for a file stored in Google Drive.
    &quot;documentId&quot;: &quot;A String&quot;, # Id of the document/file containing the report data.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for this unsampled report.
}


Returns:
  An object of the form:

    { # JSON template for Analytics unsampled report resource.
    &quot;title&quot;: &quot;A String&quot;, # Title of the unsampled report.
    &quot;dimensions&quot;: &quot;A String&quot;, # The dimensions for the unsampled report.
    &quot;downloadType&quot;: &quot;A String&quot;, # The type of download you need to use for the report data file. Possible values include `GOOGLE_DRIVE` and `GOOGLE_CLOUD_STORAGE`. If the value is `GOOGLE_DRIVE`, see the `driveDownloadDetails` field. If the value is `GOOGLE_CLOUD_STORAGE`, see the `cloudStorageDownloadDetails` field.
    &quot;kind&quot;: &quot;analytics#unsampledReport&quot;, # Resource type for an Analytics unsampled report.
    &quot;metrics&quot;: &quot;A String&quot;, # The metrics for the unsampled report.
    &quot;end-date&quot;: &quot;A String&quot;, # The end date for the unsampled report.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this unsampled report belongs.
    &quot;created&quot;: &quot;A String&quot;, # Time this unsampled report was created.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this unsampled report belongs.
    &quot;segment&quot;: &quot;A String&quot;, # The segment for the unsampled report.
    &quot;updated&quot;: &quot;A String&quot;, # Time this unsampled report was last modified.
    &quot;id&quot;: &quot;A String&quot;, # Unsampled report ID.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this unsampled report belongs. The web property ID is of the form UA-XXXXX-YY.
    &quot;start-date&quot;: &quot;A String&quot;, # The start date for the unsampled report.
    &quot;status&quot;: &quot;A String&quot;, # Status of this unsampled report. Possible values are PENDING, COMPLETED, or FAILED.
    &quot;cloudStorageDownloadDetails&quot;: { # Download details for a file stored in Google Cloud Storage.
      &quot;bucketId&quot;: &quot;A String&quot;, # Id of the bucket the file object is stored in.
      &quot;objectId&quot;: &quot;A String&quot;, # Id of the file object containing the report data.
    },
    &quot;filters&quot;: &quot;A String&quot;, # The filters for the unsampled report.
    &quot;driveDownloadDetails&quot;: { # Download details for a file stored in Google Drive.
      &quot;documentId&quot;: &quot;A String&quot;, # Id of the document/file containing the report data.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this unsampled report.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, webPropertyId, profileId, max_results=None, start_index=None)</code>
  <pre>Lists unsampled reports to which the user has access.

Args:
  accountId: string, Account ID to retrieve unsampled reports for. Must be a specific account ID, ~all is not supported. (required)
  webPropertyId: string, Web property ID to retrieve unsampled reports for. Must be a specific web property ID, ~all is not supported. (required)
  profileId: string, View (Profile) ID to retrieve unsampled reports for. Must be a specific view (profile) ID, ~all is not supported. (required)
  max_results: integer, The maximum number of unsampled reports to include in this response.
  start_index: integer, An index of the first unsampled report to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.

Returns:
  An object of the form:

    { # An unsampled report collection lists Analytics unsampled reports to which the user has access. Each view (profile) can have a set of unsampled reports. Each resource in the unsampled report collection corresponds to a single Analytics unsampled report.
    &quot;items&quot;: [ # A list of unsampled reports.
      { # JSON template for Analytics unsampled report resource.
        &quot;title&quot;: &quot;A String&quot;, # Title of the unsampled report.
        &quot;dimensions&quot;: &quot;A String&quot;, # The dimensions for the unsampled report.
        &quot;downloadType&quot;: &quot;A String&quot;, # The type of download you need to use for the report data file. Possible values include `GOOGLE_DRIVE` and `GOOGLE_CLOUD_STORAGE`. If the value is `GOOGLE_DRIVE`, see the `driveDownloadDetails` field. If the value is `GOOGLE_CLOUD_STORAGE`, see the `cloudStorageDownloadDetails` field.
        &quot;kind&quot;: &quot;analytics#unsampledReport&quot;, # Resource type for an Analytics unsampled report.
        &quot;metrics&quot;: &quot;A String&quot;, # The metrics for the unsampled report.
        &quot;end-date&quot;: &quot;A String&quot;, # The end date for the unsampled report.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this unsampled report belongs.
        &quot;created&quot;: &quot;A String&quot;, # Time this unsampled report was created.
        &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this unsampled report belongs.
        &quot;segment&quot;: &quot;A String&quot;, # The segment for the unsampled report.
        &quot;updated&quot;: &quot;A String&quot;, # Time this unsampled report was last modified.
        &quot;id&quot;: &quot;A String&quot;, # Unsampled report ID.
        &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this unsampled report belongs. The web property ID is of the form UA-XXXXX-YY.
        &quot;start-date&quot;: &quot;A String&quot;, # The start date for the unsampled report.
        &quot;status&quot;: &quot;A String&quot;, # Status of this unsampled report. Possible values are PENDING, COMPLETED, or FAILED.
        &quot;cloudStorageDownloadDetails&quot;: { # Download details for a file stored in Google Cloud Storage.
          &quot;bucketId&quot;: &quot;A String&quot;, # Id of the bucket the file object is stored in.
          &quot;objectId&quot;: &quot;A String&quot;, # Id of the file object containing the report data.
        },
        &quot;filters&quot;: &quot;A String&quot;, # The filters for the unsampled report.
        &quot;driveDownloadDetails&quot;: { # Download details for a file stored in Google Drive.
          &quot;documentId&quot;: &quot;A String&quot;, # Id of the document/file containing the report data.
        },
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this unsampled report.
      },
    ],
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of resources in the result.
    &quot;startIndex&quot;: 42, # The starting index of the resources, which is 1 by default or otherwise specified by the start-index query parameter.
    &quot;username&quot;: &quot;A String&quot;, # Email ID of the authenticated user
    &quot;previousLink&quot;: &quot;A String&quot;, # Link to previous page for this unsampled report collection.
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to next page for this unsampled report collection.
    &quot;itemsPerPage&quot;: 42, # The maximum number of resources the response can contain, regardless of the actual number of resources returned. Its value ranges from 1 to 1000 with a value of 1000 by default, or otherwise specified by the max-results query parameter.
    &quot;kind&quot;: &quot;analytics#unsampledReports&quot;, # Collection type.
  }</pre>
</div>

</body></html>