<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.dailyUploads.html">dailyUploads</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(accountId, webPropertyId, customDataSourceId, date, type)</a></code></p>
<p class="firstline">Delete uploaded data for the given date.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, webPropertyId, customDataSourceId, start_date, end_date, max_results=None, start_index=None)</a></code></p>
<p class="firstline">List daily uploads to which the user has access.</p>
<p class="toc_element">
  <code><a href="#upload">upload(accountId, webPropertyId, customDataSourceId, date, appendNumber, type, reset=None, media_body=None)</a></code></p>
<p class="firstline">Update/Overwrite data for a custom data source.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(accountId, webPropertyId, customDataSourceId, date, type)</code>
  <pre>Delete uploaded data for the given date.

Args:
  accountId: string, Account Id associated with daily upload delete. (required)
  webPropertyId: string, Web property Id associated with daily upload delete. (required)
  customDataSourceId: string, Custom data source Id associated with daily upload delete. (required)
  date: string, Date for which data is to be deleted. Date should be formatted as YYYY-MM-DD. (required)
  type: string, Type of data for this delete. (required)
    Allowed values
      cost - Value for specifying cost data upload.
</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, webPropertyId, customDataSourceId, start_date, end_date, max_results=None, start_index=None)</code>
  <pre>List daily uploads to which the user has access.

Args:
  accountId: string, Account Id for the daily uploads to retrieve. (required)
  webPropertyId: string, Web property Id for the daily uploads to retrieve. (required)
  customDataSourceId: string, Custom data source Id for daily uploads to retrieve. (required)
  start_date: string, Start date of the form YYYY-MM-DD. (required)
  end_date: string, End date of the form YYYY-MM-DD. (required)
  max_results: integer, The maximum number of custom data sources to include in this response.
  start_index: integer, A 1-based index of the first daily upload to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.

Returns:
  An object of the form:

    { # A daily upload collection lists Analytics daily uploads to which the user has access. Each resource in the collection corresponds to a single Analytics daily upload.
    "username": "A String", # Email ID of the authenticated user
    "kind": "analytics#dailyUploads", # Collection type. Value is analytics#dailyUploads.
    "items": [ # A collection of daily uploads.
      { # Metadata for daily upload entity.
        "recentChanges": [ # Change log for last 10 changes in chronological order.
          {
            "change": "A String",
            "time": "A String",
          },
        ],
        "kind": "analytics#dailyUpload", # Resource type for Analytics daily upload.
        "modifiedTime": "A String", # Time this daily upload was last modified.
        "appendCount": 42, # Number of appends for this date.
        "customDataSourceId": "A String", # Custom data source ID to which this daily upload belongs.
        "date": "A String", # Date associated with daily upload.
        "webPropertyId": "A String", # Web property ID of the form UA-XXXXX-YY to which this daily upload belongs.
        "createdTime": "A String", # Time this daily upload was created.
        "parentLink": { # Parent link for a daily upload. Points to the custom data source to which this daily upload belongs.
          "href": "A String", # Link to the custom data source to which this daily upload belongs.
          "type": "analytics#customDataSource", # Value is "analytics#customDataSource".
        },
        "selfLink": "A String", # Link for this daily upload.
        "accountId": "A String", # Account ID to which this daily upload 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 daily upload 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 daily upload collection.
    "totalResults": 42, # The total number of results for the query, regardless of the number of results in the response.
  }</pre>
</div>

<div class="method">
    <code class="details" id="upload">upload(accountId, webPropertyId, customDataSourceId, date, appendNumber, type, reset=None, media_body=None)</code>
  <pre>Update/Overwrite data for a custom data source.

Args:
  accountId: string, Account Id associated with daily upload. (required)
  webPropertyId: string, Web property Id associated with daily upload. (required)
  customDataSourceId: string, Custom data source Id to which the data being uploaded belongs. (required)
  date: string, Date for which data is uploaded. Date should be formatted as YYYY-MM-DD. (required)
  appendNumber: integer, Append number for this upload indexed from 1. (required)
  type: string, Type of data for this upload. (required)
    Allowed values
      cost - Value for specifying cost data upload.
  reset: boolean, Reset/Overwrite all previous appends for this date and start over with this file as the first upload.
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # Metadata returned for a successful append operation.
    "kind": "analytics#dailyUploadAppend", # Resource type for Analytics daily upload append.
    "customDataSourceId": "A String", # Custom data source Id to which this daily upload append belongs.
    "appendNumber": 42, # Append number.
    "webPropertyId": "A String", # Web property Id of the form UA-XXXXX-YY to which this daily upload append belongs.
    "date": "A String", # Date associated with daily upload append.
    "nextAppendLink": "A String",
    "accountId": "A String", # Account Id to which this daily upload append belongs.
  }</pre>
</div>

</body></html>