<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="fitness_v1.html">Fitness API</a> . <a href="fitness_v1.users.html">users</a> . <a href="fitness_v1.users.dataSources.html">dataSources</a> . <a href="fitness_v1.users.dataSources.dataPointChanges.html">dataPointChanges</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="#list">list(userId, dataSourceId, limit=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Queries for user's data point changes for a particular data source.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</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="list">list(userId, dataSourceId, limit=None, pageToken=None, x__xgafv=None)</code>
  <pre>Queries for user&#x27;s data point changes for a particular data source.

Args:
  userId: string, List data points for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. (required)
  dataSourceId: string, The data stream ID of the data source that created the dataset. (required)
  limit: integer, If specified, no more than this many data point changes will be included in the response.
  pageToken: string, The continuation token, which is used to page through large result sets. To get the next page of results, set this parameter to the value of nextPageToken from the previous response.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;dataSourceId&quot;: &quot;A String&quot;, # The data stream ID of the data source with data point changes.
  &quot;deletedDataPoint&quot;: [ # Deleted data points for the user. Note, for modifications this should be parsed before handling insertions.
    { # Represents a single data point, generated by a particular data source. A data point holds a value for each field, an end timestamp and an optional start time. The exact semantics of each of these attributes are specified in the documentation for the particular data type. A data point can represent an instantaneous measurement, reading or input observation, as well as averages or aggregates over a time interval. Check the data type documentation to determine which is the case for a particular data type. Data points always contain one value for each field of the data type.
      &quot;computationTimeMillis&quot;: &quot;A String&quot;, # DO NOT USE THIS FIELD. It is ignored, and not stored.
      &quot;dataTypeName&quot;: &quot;A String&quot;, # The data type defining the format of the values in this data point.
      &quot;endTimeNanos&quot;: &quot;A String&quot;, # The end time of the interval represented by this data point, in nanoseconds since epoch.
      &quot;modifiedTimeMillis&quot;: &quot;A String&quot;, # Indicates the last time this data point was modified. Useful only in contexts where we are listing the data changes, rather than representing the current state of the data.
      &quot;originDataSourceId&quot;: &quot;A String&quot;, # If the data point is contained in a dataset for a derived data source, this field will be populated with the data source stream ID that created the data point originally. WARNING: do not rely on this field for anything other than debugging. The value of this field, if it is set at all, is an implementation detail and is not guaranteed to remain consistent.
      &quot;rawTimestampNanos&quot;: &quot;A String&quot;, # The raw timestamp from the original SensorEvent.
      &quot;startTimeNanos&quot;: &quot;A String&quot;, # The start time of the interval represented by this data point, in nanoseconds since epoch.
      &quot;value&quot;: [ # Values of each data type field for the data point. It is expected that each value corresponding to a data type field will occur in the same order that the field is listed with in the data type specified in a data source. Only one of integer and floating point fields will be populated, depending on the format enum value within data source&#x27;s type field.
        { # Holder object for the value of a single field in a data point. A field value has a particular format and is only ever set to one of an integer or a floating point value.
          &quot;fpVal&quot;: 3.14, # Floating point value. When this is set, other values must not be set.
          &quot;intVal&quot;: 42, # Integer value. When this is set, other values must not be set.
          &quot;mapVal&quot;: [ # Map value. The valid key space and units for the corresponding value of each entry should be documented as part of the data type definition. Keys should be kept small whenever possible. Data streams with large keys and high data frequency may be down sampled.
            {
              &quot;key&quot;: &quot;A String&quot;,
              &quot;value&quot;: { # Holder object for the value of an entry in a map field of a data point. A map value supports a subset of the formats that the regular Value supports.
                &quot;fpVal&quot;: 3.14, # Floating point value.
              },
            },
          ],
          &quot;stringVal&quot;: &quot;A String&quot;, # String value. When this is set, other values must not be set. Strings should be kept small whenever possible. Data streams with large string values and high data frequency may be down sampled.
        },
      ],
    },
  ],
  &quot;insertedDataPoint&quot;: [ # Inserted data points for the user.
    { # Represents a single data point, generated by a particular data source. A data point holds a value for each field, an end timestamp and an optional start time. The exact semantics of each of these attributes are specified in the documentation for the particular data type. A data point can represent an instantaneous measurement, reading or input observation, as well as averages or aggregates over a time interval. Check the data type documentation to determine which is the case for a particular data type. Data points always contain one value for each field of the data type.
      &quot;computationTimeMillis&quot;: &quot;A String&quot;, # DO NOT USE THIS FIELD. It is ignored, and not stored.
      &quot;dataTypeName&quot;: &quot;A String&quot;, # The data type defining the format of the values in this data point.
      &quot;endTimeNanos&quot;: &quot;A String&quot;, # The end time of the interval represented by this data point, in nanoseconds since epoch.
      &quot;modifiedTimeMillis&quot;: &quot;A String&quot;, # Indicates the last time this data point was modified. Useful only in contexts where we are listing the data changes, rather than representing the current state of the data.
      &quot;originDataSourceId&quot;: &quot;A String&quot;, # If the data point is contained in a dataset for a derived data source, this field will be populated with the data source stream ID that created the data point originally. WARNING: do not rely on this field for anything other than debugging. The value of this field, if it is set at all, is an implementation detail and is not guaranteed to remain consistent.
      &quot;rawTimestampNanos&quot;: &quot;A String&quot;, # The raw timestamp from the original SensorEvent.
      &quot;startTimeNanos&quot;: &quot;A String&quot;, # The start time of the interval represented by this data point, in nanoseconds since epoch.
      &quot;value&quot;: [ # Values of each data type field for the data point. It is expected that each value corresponding to a data type field will occur in the same order that the field is listed with in the data type specified in a data source. Only one of integer and floating point fields will be populated, depending on the format enum value within data source&#x27;s type field.
        { # Holder object for the value of a single field in a data point. A field value has a particular format and is only ever set to one of an integer or a floating point value.
          &quot;fpVal&quot;: 3.14, # Floating point value. When this is set, other values must not be set.
          &quot;intVal&quot;: 42, # Integer value. When this is set, other values must not be set.
          &quot;mapVal&quot;: [ # Map value. The valid key space and units for the corresponding value of each entry should be documented as part of the data type definition. Keys should be kept small whenever possible. Data streams with large keys and high data frequency may be down sampled.
            {
              &quot;key&quot;: &quot;A String&quot;,
              &quot;value&quot;: { # Holder object for the value of an entry in a map field of a data point. A map value supports a subset of the formats that the regular Value supports.
                &quot;fpVal&quot;: 3.14, # Floating point value.
              },
            },
          ],
          &quot;stringVal&quot;: &quot;A String&quot;, # String value. When this is set, other values must not be set. Strings should be kept small whenever possible. Data streams with large string values and high data frequency may be down sampled.
        },
      ],
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # The continuation token, which is used to page through large result sets. Provide this value in a subsequent request to return the next page of results.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</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>