<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", # The type of change: APPEND, RESET, or DELETE.
            "time": "A String", # The time when the change occurred.
          },
        ],
        "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>