<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="#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)</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="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.
      "status": "A String", # Status of this unsampled report. Possible values are PENDING, COMPLETED, or FAILED.
      "kind": "analytics#unsampledReport", # Resource type for an Analytics unsampled report.
      "cloudStorageDownloadDetails": { # Download details for a file stored in Google Cloud Storage.
        "bucketId": "A String", # Id of the bucket the file object is stored in.
        "objectId": "A String", # Id of the file object containing the report data.
      },
      "downloadType": "A String", # 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.
      "dimensions": "A String", # The dimensions for the unsampled report.
      "created": "A String", # Time this unsampled report was created.
      "segment": "A String", # The segment for the unsampled report.
      "start-date": "A String", # The start date for the unsampled report.
      "updated": "A String", # Time this unsampled report was last modified.
      "driveDownloadDetails": { # Download details for a file stored in Google Drive.
        "documentId": "A String", # Id of the document/file containing the report data.
      },
      "metrics": "A String", # The metrics for the unsampled report.
      "title": "A String", # Title of the unsampled report.
      "filters": "A String", # The filters for the unsampled report.
      "webPropertyId": "A String", # Web property ID to which this unsampled report belongs. The web property ID is of the form UA-XXXXX-YY.
      "profileId": "A String", # View (Profile) ID to which this unsampled report belongs.
      "end-date": "A String", # The end date for the unsampled report.
      "id": "A String", # Unsampled report ID.
      "selfLink": "A String", # Link for this unsampled report.
      "accountId": "A String", # Account ID to which this unsampled report belongs.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(accountId, webPropertyId, profileId, body)</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. (required)
    The object takes the form of:

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


Returns:
  An object of the form:

    { # JSON template for Analytics unsampled report resource.
      "status": "A String", # Status of this unsampled report. Possible values are PENDING, COMPLETED, or FAILED.
      "kind": "analytics#unsampledReport", # Resource type for an Analytics unsampled report.
      "cloudStorageDownloadDetails": { # Download details for a file stored in Google Cloud Storage.
        "bucketId": "A String", # Id of the bucket the file object is stored in.
        "objectId": "A String", # Id of the file object containing the report data.
      },
      "downloadType": "A String", # 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.
      "dimensions": "A String", # The dimensions for the unsampled report.
      "created": "A String", # Time this unsampled report was created.
      "segment": "A String", # The segment for the unsampled report.
      "start-date": "A String", # The start date for the unsampled report.
      "updated": "A String", # Time this unsampled report was last modified.
      "driveDownloadDetails": { # Download details for a file stored in Google Drive.
        "documentId": "A String", # Id of the document/file containing the report data.
      },
      "metrics": "A String", # The metrics for the unsampled report.
      "title": "A String", # Title of the unsampled report.
      "filters": "A String", # The filters for the unsampled report.
      "webPropertyId": "A String", # Web property ID to which this unsampled report belongs. The web property ID is of the form UA-XXXXX-YY.
      "profileId": "A String", # View (Profile) ID to which this unsampled report belongs.
      "end-date": "A String", # The end date for the unsampled report.
      "id": "A String", # Unsampled report ID.
      "selfLink": "A String", # Link for this unsampled report.
      "accountId": "A String", # Account ID to which this unsampled report belongs.
    }</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.
    "username": "A String", # Email ID of the authenticated user
    "kind": "analytics#unsampledReports", # Collection type.
    "items": [ # A list of unsampled reports.
      { # JSON template for Analytics unsampled report resource.
          "status": "A String", # Status of this unsampled report. Possible values are PENDING, COMPLETED, or FAILED.
          "kind": "analytics#unsampledReport", # Resource type for an Analytics unsampled report.
          "cloudStorageDownloadDetails": { # Download details for a file stored in Google Cloud Storage.
            "bucketId": "A String", # Id of the bucket the file object is stored in.
            "objectId": "A String", # Id of the file object containing the report data.
          },
          "downloadType": "A String", # 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.
          "dimensions": "A String", # The dimensions for the unsampled report.
          "created": "A String", # Time this unsampled report was created.
          "segment": "A String", # The segment for the unsampled report.
          "start-date": "A String", # The start date for the unsampled report.
          "updated": "A String", # Time this unsampled report was last modified.
          "driveDownloadDetails": { # Download details for a file stored in Google Drive.
            "documentId": "A String", # Id of the document/file containing the report data.
          },
          "metrics": "A String", # The metrics for the unsampled report.
          "title": "A String", # Title of the unsampled report.
          "filters": "A String", # The filters for the unsampled report.
          "webPropertyId": "A String", # Web property ID to which this unsampled report belongs. The web property ID is of the form UA-XXXXX-YY.
          "profileId": "A String", # View (Profile) ID to which this unsampled report belongs.
          "end-date": "A String", # The end date for the unsampled report.
          "id": "A String", # Unsampled report ID.
          "selfLink": "A String", # Link for this unsampled report.
          "accountId": "A String", # Account ID to which this unsampled report belongs.
        },
    ],
    "itemsPerPage": 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.
    "previousLink": "A String", # Link to previous page for this unsampled report collection.
    "startIndex": 42, # The starting index of the resources, which is 1 by default or otherwise specified by the start-index query parameter.
    "nextLink": "A String", # Link to next page for this unsampled report collection.
    "totalResults": 42, # The total number of results for the query, regardless of the number of resources in the result.
  }</pre>
</div>

</body></html>