<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="fitness_v1.users.dataSources.dataPointChanges.html">dataPointChanges()</a></code>
</p>
<p class="firstline">Returns the dataPointChanges Resource.</p>

<p class="toc_element">
  <code><a href="fitness_v1.users.dataSources.datasets.html">datasets()</a></code>
</p>
<p class="firstline">Returns the datasets Resource.</p>

<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="#create">create(userId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new data source that is unique across all data sources belonging to this user. A data source is a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point in every dataset inserted into or read from the Fitness API has an associated data source. Each data source produces a unique stream of dataset updates, with a unique data source identifier. Not all changes to data source affect the data stream ID, so that data collected by updated versions of the same application/device can still be considered to belong to the same data source. Data sources are identified using a string generated by the server, based on the contents of the source being created. The dataStreamId field should not be set when invoking this method. It will be automatically generated by the server with the correct format. If a dataStreamId is set, it must match the format that the server would generate. This format is a combination of some fields from the data source, and has a specific order. If it doesn't match, the request will fail with an error. Specifying a DataType which is not a known type (beginning with "com.google.") will create a DataSource with a *custom data type*. Custom data types are only readable by the application that created them. Custom data types are *deprecated*; use standard data types instead. In addition to the data source fields included in the data source ID, the developer project number that is authenticated when creating the data source is included. This developer project number is obfuscated when read by any other developer reading public data types.</p>
<p class="toc_element">
  <code><a href="#delete">delete(userId, dataSourceId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified data source. The request will fail if the data source contains any data points.</p>
<p class="toc_element">
  <code><a href="#get">get(userId, dataSourceId, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the specified data source.</p>
<p class="toc_element">
  <code><a href="#list">list(userId, dataTypeName=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all data sources that are visible to the developer, using the OAuth scopes provided. The list is not exhaustive; the user may have private data sources that are only visible to other developers, or calls using other scopes.</p>
<p class="toc_element">
  <code><a href="#update">update(userId, dataSourceId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified data source. The dataStreamId, dataType, type, dataStreamName, and device properties with the exception of version, cannot be modified. Data sources are identified by their dataStreamId.</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="create">create(userId, body=None, x__xgafv=None)</code>
  <pre>Creates a new data source that is unique across all data sources belonging to this user. A data source is a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point in every dataset inserted into or read from the Fitness API has an associated data source. Each data source produces a unique stream of dataset updates, with a unique data source identifier. Not all changes to data source affect the data stream ID, so that data collected by updated versions of the same application/device can still be considered to belong to the same data source. Data sources are identified using a string generated by the server, based on the contents of the source being created. The dataStreamId field should not be set when invoking this method. It will be automatically generated by the server with the correct format. If a dataStreamId is set, it must match the format that the server would generate. This format is a combination of some fields from the data source, and has a specific order. If it doesn&#x27;t match, the request will fail with an error. Specifying a DataType which is not a known type (beginning with &quot;com.google.&quot;) will create a DataSource with a *custom data type*. Custom data types are only readable by the application that created them. Custom data types are *deprecated*; use standard data types instead. In addition to the data source fields included in the data source ID, the developer project number that is authenticated when creating the data source is included. This developer project number is obfuscated when read by any other developer reading public data types.

Args:
  userId: string, Create the data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. (required)
  body: object, The request body.
    The object takes the form of:

{ # Definition of a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point inserted into or read from this service has an associated data source. The data source contains enough information to uniquely identify its data, including the hardware device and the application that collected and/or transformed the data. It also holds useful metadata, such as the hardware and application versions, and the device type. Each data source produces a unique stream of data, with a unique identifier. Not all changes to data source affect the stream identifier, so that data collected by updated versions of the same application/device can still be considered to belong to the same data stream.
  &quot;application&quot;: { # Information about an application which feeds sensor data into the platform.
    &quot;detailsUrl&quot;: &quot;A String&quot;, # An optional URI that can be used to link back to the application.
    &quot;name&quot;: &quot;A String&quot;, # The name of this application. This is required for REST clients, but we do not enforce uniqueness of this name. It is provided as a matter of convenience for other developers who would like to identify which REST created an Application or Data Source.
    &quot;packageName&quot;: &quot;A String&quot;, # Package name for this application. This is used as a unique identifier when created by Android applications, but cannot be specified by REST clients. REST clients will have their developer project number reflected into the Data Source data stream IDs, instead of the packageName.
    &quot;version&quot;: &quot;A String&quot;, # Version of the application. You should update this field whenever the application changes in a way that affects the computation of the data.
  },
  &quot;dataQualityStandard&quot;: [ # DO NOT POPULATE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries. It will be removed in a future version entirely.
    &quot;A String&quot;,
  ],
  &quot;dataStreamId&quot;: &quot;A String&quot;, # A unique identifier for the data stream produced by this data source. The identifier includes: - The physical device&#x27;s manufacturer, model, and serial number (UID). - The application&#x27;s package name or name. Package name is used when the data source was created by an Android application. The developer project number is used when the data source was created by a REST client. - The data source&#x27;s type. - The data source&#x27;s stream name. Note that not all attributes of the data source are used as part of the stream identifier. In particular, the version of the hardware/the application isn&#x27;t used. This allows us to preserve the same stream through version updates. This also means that two DataSource objects may represent the same data stream even if they&#x27;re not equal. The exact format of the data stream ID created by an Android application is: type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName The exact format of the data stream ID created by a REST client is: type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName When any of the optional fields that make up the data stream ID are absent, they will be omitted from the data stream ID. The minimum viable data stream ID would be: type:dataType.name:developer project number Finally, the developer project number and device UID are obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the developer project number in clear and normal form. This means a client will see a different set of data_stream_ids than another client with different credentials.
  &quot;dataStreamName&quot;: &quot;A String&quot;, # The stream name uniquely identifies this particular data source among other data sources of the same type from the same underlying producer. Setting the stream name is optional, but should be done whenever an application exposes two streams for the same data type, or when a device has two equivalent sensors.
  &quot;dataType&quot;: { # The data type defines the schema for a stream of data being collected by, inserted into, or queried from the Fitness API.
    &quot;field&quot;: [ # A field represents one dimension of a data type.
      { # In case of multi-dimensional data (such as an accelerometer with x, y, and z axes) each field represents one dimension. Each data type field has a unique name which identifies it. The field also defines the format of the data (int, float, etc.). This message is only instantiated in code and not used for wire comms or stored in any way.
        &quot;format&quot;: &quot;A String&quot;, # The different supported formats for each field in a data type.
        &quot;name&quot;: &quot;A String&quot;, # Defines the name and format of data. Unlike data type names, field names are not namespaced, and only need to be unique within the data type.
        &quot;optional&quot;: True or False,
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Each data type has a unique, namespaced, name. All data types in the com.google namespace are shared as part of the platform.
  },
  &quot;device&quot;: { # Representation of an integrated device (such as a phone or a wearable) that can hold sensors. Each sensor is exposed as a data source. The main purpose of the device information contained in this class is to identify the hardware of a particular data source. This can be useful in different ways, including: - Distinguishing two similar sensors on different devices (the step counter on two nexus 5 phones, for instance) - Display the source of data to the user (by using the device make / model) - Treat data differently depending on sensor type (accelerometers on a watch may give different patterns than those on a phone) - Build different analysis models for each device/version. # Representation of an integrated device (such as a phone or a wearable) that can hold sensors.
    &quot;manufacturer&quot;: &quot;A String&quot;, # Manufacturer of the product/hardware.
    &quot;model&quot;: &quot;A String&quot;, # End-user visible model name for the device.
    &quot;type&quot;: &quot;A String&quot;, # A constant representing the type of the device.
    &quot;uid&quot;: &quot;A String&quot;, # The serial number or other unique ID for the hardware. This field is obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the uid field in clear and normal form. The obfuscation preserves equality; that is, given two IDs, if id1 == id2, obfuscated(id1) == obfuscated(id2).
    &quot;version&quot;: &quot;A String&quot;, # Version string for the device hardware/software.
  },
  &quot;name&quot;: &quot;A String&quot;, # An end-user visible name for this data source.
  &quot;type&quot;: &quot;A String&quot;, # A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Definition of a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point inserted into or read from this service has an associated data source. The data source contains enough information to uniquely identify its data, including the hardware device and the application that collected and/or transformed the data. It also holds useful metadata, such as the hardware and application versions, and the device type. Each data source produces a unique stream of data, with a unique identifier. Not all changes to data source affect the stream identifier, so that data collected by updated versions of the same application/device can still be considered to belong to the same data stream.
  &quot;application&quot;: { # Information about an application which feeds sensor data into the platform.
    &quot;detailsUrl&quot;: &quot;A String&quot;, # An optional URI that can be used to link back to the application.
    &quot;name&quot;: &quot;A String&quot;, # The name of this application. This is required for REST clients, but we do not enforce uniqueness of this name. It is provided as a matter of convenience for other developers who would like to identify which REST created an Application or Data Source.
    &quot;packageName&quot;: &quot;A String&quot;, # Package name for this application. This is used as a unique identifier when created by Android applications, but cannot be specified by REST clients. REST clients will have their developer project number reflected into the Data Source data stream IDs, instead of the packageName.
    &quot;version&quot;: &quot;A String&quot;, # Version of the application. You should update this field whenever the application changes in a way that affects the computation of the data.
  },
  &quot;dataQualityStandard&quot;: [ # DO NOT POPULATE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries. It will be removed in a future version entirely.
    &quot;A String&quot;,
  ],
  &quot;dataStreamId&quot;: &quot;A String&quot;, # A unique identifier for the data stream produced by this data source. The identifier includes: - The physical device&#x27;s manufacturer, model, and serial number (UID). - The application&#x27;s package name or name. Package name is used when the data source was created by an Android application. The developer project number is used when the data source was created by a REST client. - The data source&#x27;s type. - The data source&#x27;s stream name. Note that not all attributes of the data source are used as part of the stream identifier. In particular, the version of the hardware/the application isn&#x27;t used. This allows us to preserve the same stream through version updates. This also means that two DataSource objects may represent the same data stream even if they&#x27;re not equal. The exact format of the data stream ID created by an Android application is: type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName The exact format of the data stream ID created by a REST client is: type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName When any of the optional fields that make up the data stream ID are absent, they will be omitted from the data stream ID. The minimum viable data stream ID would be: type:dataType.name:developer project number Finally, the developer project number and device UID are obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the developer project number in clear and normal form. This means a client will see a different set of data_stream_ids than another client with different credentials.
  &quot;dataStreamName&quot;: &quot;A String&quot;, # The stream name uniquely identifies this particular data source among other data sources of the same type from the same underlying producer. Setting the stream name is optional, but should be done whenever an application exposes two streams for the same data type, or when a device has two equivalent sensors.
  &quot;dataType&quot;: { # The data type defines the schema for a stream of data being collected by, inserted into, or queried from the Fitness API.
    &quot;field&quot;: [ # A field represents one dimension of a data type.
      { # In case of multi-dimensional data (such as an accelerometer with x, y, and z axes) each field represents one dimension. Each data type field has a unique name which identifies it. The field also defines the format of the data (int, float, etc.). This message is only instantiated in code and not used for wire comms or stored in any way.
        &quot;format&quot;: &quot;A String&quot;, # The different supported formats for each field in a data type.
        &quot;name&quot;: &quot;A String&quot;, # Defines the name and format of data. Unlike data type names, field names are not namespaced, and only need to be unique within the data type.
        &quot;optional&quot;: True or False,
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Each data type has a unique, namespaced, name. All data types in the com.google namespace are shared as part of the platform.
  },
  &quot;device&quot;: { # Representation of an integrated device (such as a phone or a wearable) that can hold sensors. Each sensor is exposed as a data source. The main purpose of the device information contained in this class is to identify the hardware of a particular data source. This can be useful in different ways, including: - Distinguishing two similar sensors on different devices (the step counter on two nexus 5 phones, for instance) - Display the source of data to the user (by using the device make / model) - Treat data differently depending on sensor type (accelerometers on a watch may give different patterns than those on a phone) - Build different analysis models for each device/version. # Representation of an integrated device (such as a phone or a wearable) that can hold sensors.
    &quot;manufacturer&quot;: &quot;A String&quot;, # Manufacturer of the product/hardware.
    &quot;model&quot;: &quot;A String&quot;, # End-user visible model name for the device.
    &quot;type&quot;: &quot;A String&quot;, # A constant representing the type of the device.
    &quot;uid&quot;: &quot;A String&quot;, # The serial number or other unique ID for the hardware. This field is obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the uid field in clear and normal form. The obfuscation preserves equality; that is, given two IDs, if id1 == id2, obfuscated(id1) == obfuscated(id2).
    &quot;version&quot;: &quot;A String&quot;, # Version string for the device hardware/software.
  },
  &quot;name&quot;: &quot;A String&quot;, # An end-user visible name for this data source.
  &quot;type&quot;: &quot;A String&quot;, # A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(userId, dataSourceId, x__xgafv=None)</code>
  <pre>Deletes the specified data source. The request will fail if the data source contains any data points.

Args:
  userId: string, Retrieve a data source 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 to delete. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Definition of a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point inserted into or read from this service has an associated data source. The data source contains enough information to uniquely identify its data, including the hardware device and the application that collected and/or transformed the data. It also holds useful metadata, such as the hardware and application versions, and the device type. Each data source produces a unique stream of data, with a unique identifier. Not all changes to data source affect the stream identifier, so that data collected by updated versions of the same application/device can still be considered to belong to the same data stream.
  &quot;application&quot;: { # Information about an application which feeds sensor data into the platform.
    &quot;detailsUrl&quot;: &quot;A String&quot;, # An optional URI that can be used to link back to the application.
    &quot;name&quot;: &quot;A String&quot;, # The name of this application. This is required for REST clients, but we do not enforce uniqueness of this name. It is provided as a matter of convenience for other developers who would like to identify which REST created an Application or Data Source.
    &quot;packageName&quot;: &quot;A String&quot;, # Package name for this application. This is used as a unique identifier when created by Android applications, but cannot be specified by REST clients. REST clients will have their developer project number reflected into the Data Source data stream IDs, instead of the packageName.
    &quot;version&quot;: &quot;A String&quot;, # Version of the application. You should update this field whenever the application changes in a way that affects the computation of the data.
  },
  &quot;dataQualityStandard&quot;: [ # DO NOT POPULATE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries. It will be removed in a future version entirely.
    &quot;A String&quot;,
  ],
  &quot;dataStreamId&quot;: &quot;A String&quot;, # A unique identifier for the data stream produced by this data source. The identifier includes: - The physical device&#x27;s manufacturer, model, and serial number (UID). - The application&#x27;s package name or name. Package name is used when the data source was created by an Android application. The developer project number is used when the data source was created by a REST client. - The data source&#x27;s type. - The data source&#x27;s stream name. Note that not all attributes of the data source are used as part of the stream identifier. In particular, the version of the hardware/the application isn&#x27;t used. This allows us to preserve the same stream through version updates. This also means that two DataSource objects may represent the same data stream even if they&#x27;re not equal. The exact format of the data stream ID created by an Android application is: type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName The exact format of the data stream ID created by a REST client is: type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName When any of the optional fields that make up the data stream ID are absent, they will be omitted from the data stream ID. The minimum viable data stream ID would be: type:dataType.name:developer project number Finally, the developer project number and device UID are obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the developer project number in clear and normal form. This means a client will see a different set of data_stream_ids than another client with different credentials.
  &quot;dataStreamName&quot;: &quot;A String&quot;, # The stream name uniquely identifies this particular data source among other data sources of the same type from the same underlying producer. Setting the stream name is optional, but should be done whenever an application exposes two streams for the same data type, or when a device has two equivalent sensors.
  &quot;dataType&quot;: { # The data type defines the schema for a stream of data being collected by, inserted into, or queried from the Fitness API.
    &quot;field&quot;: [ # A field represents one dimension of a data type.
      { # In case of multi-dimensional data (such as an accelerometer with x, y, and z axes) each field represents one dimension. Each data type field has a unique name which identifies it. The field also defines the format of the data (int, float, etc.). This message is only instantiated in code and not used for wire comms or stored in any way.
        &quot;format&quot;: &quot;A String&quot;, # The different supported formats for each field in a data type.
        &quot;name&quot;: &quot;A String&quot;, # Defines the name and format of data. Unlike data type names, field names are not namespaced, and only need to be unique within the data type.
        &quot;optional&quot;: True or False,
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Each data type has a unique, namespaced, name. All data types in the com.google namespace are shared as part of the platform.
  },
  &quot;device&quot;: { # Representation of an integrated device (such as a phone or a wearable) that can hold sensors. Each sensor is exposed as a data source. The main purpose of the device information contained in this class is to identify the hardware of a particular data source. This can be useful in different ways, including: - Distinguishing two similar sensors on different devices (the step counter on two nexus 5 phones, for instance) - Display the source of data to the user (by using the device make / model) - Treat data differently depending on sensor type (accelerometers on a watch may give different patterns than those on a phone) - Build different analysis models for each device/version. # Representation of an integrated device (such as a phone or a wearable) that can hold sensors.
    &quot;manufacturer&quot;: &quot;A String&quot;, # Manufacturer of the product/hardware.
    &quot;model&quot;: &quot;A String&quot;, # End-user visible model name for the device.
    &quot;type&quot;: &quot;A String&quot;, # A constant representing the type of the device.
    &quot;uid&quot;: &quot;A String&quot;, # The serial number or other unique ID for the hardware. This field is obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the uid field in clear and normal form. The obfuscation preserves equality; that is, given two IDs, if id1 == id2, obfuscated(id1) == obfuscated(id2).
    &quot;version&quot;: &quot;A String&quot;, # Version string for the device hardware/software.
  },
  &quot;name&quot;: &quot;A String&quot;, # An end-user visible name for this data source.
  &quot;type&quot;: &quot;A String&quot;, # A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(userId, dataSourceId, x__xgafv=None)</code>
  <pre>Returns the specified data source.

Args:
  userId: string, Retrieve a data source 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 to retrieve. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Definition of a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point inserted into or read from this service has an associated data source. The data source contains enough information to uniquely identify its data, including the hardware device and the application that collected and/or transformed the data. It also holds useful metadata, such as the hardware and application versions, and the device type. Each data source produces a unique stream of data, with a unique identifier. Not all changes to data source affect the stream identifier, so that data collected by updated versions of the same application/device can still be considered to belong to the same data stream.
  &quot;application&quot;: { # Information about an application which feeds sensor data into the platform.
    &quot;detailsUrl&quot;: &quot;A String&quot;, # An optional URI that can be used to link back to the application.
    &quot;name&quot;: &quot;A String&quot;, # The name of this application. This is required for REST clients, but we do not enforce uniqueness of this name. It is provided as a matter of convenience for other developers who would like to identify which REST created an Application or Data Source.
    &quot;packageName&quot;: &quot;A String&quot;, # Package name for this application. This is used as a unique identifier when created by Android applications, but cannot be specified by REST clients. REST clients will have their developer project number reflected into the Data Source data stream IDs, instead of the packageName.
    &quot;version&quot;: &quot;A String&quot;, # Version of the application. You should update this field whenever the application changes in a way that affects the computation of the data.
  },
  &quot;dataQualityStandard&quot;: [ # DO NOT POPULATE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries. It will be removed in a future version entirely.
    &quot;A String&quot;,
  ],
  &quot;dataStreamId&quot;: &quot;A String&quot;, # A unique identifier for the data stream produced by this data source. The identifier includes: - The physical device&#x27;s manufacturer, model, and serial number (UID). - The application&#x27;s package name or name. Package name is used when the data source was created by an Android application. The developer project number is used when the data source was created by a REST client. - The data source&#x27;s type. - The data source&#x27;s stream name. Note that not all attributes of the data source are used as part of the stream identifier. In particular, the version of the hardware/the application isn&#x27;t used. This allows us to preserve the same stream through version updates. This also means that two DataSource objects may represent the same data stream even if they&#x27;re not equal. The exact format of the data stream ID created by an Android application is: type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName The exact format of the data stream ID created by a REST client is: type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName When any of the optional fields that make up the data stream ID are absent, they will be omitted from the data stream ID. The minimum viable data stream ID would be: type:dataType.name:developer project number Finally, the developer project number and device UID are obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the developer project number in clear and normal form. This means a client will see a different set of data_stream_ids than another client with different credentials.
  &quot;dataStreamName&quot;: &quot;A String&quot;, # The stream name uniquely identifies this particular data source among other data sources of the same type from the same underlying producer. Setting the stream name is optional, but should be done whenever an application exposes two streams for the same data type, or when a device has two equivalent sensors.
  &quot;dataType&quot;: { # The data type defines the schema for a stream of data being collected by, inserted into, or queried from the Fitness API.
    &quot;field&quot;: [ # A field represents one dimension of a data type.
      { # In case of multi-dimensional data (such as an accelerometer with x, y, and z axes) each field represents one dimension. Each data type field has a unique name which identifies it. The field also defines the format of the data (int, float, etc.). This message is only instantiated in code and not used for wire comms or stored in any way.
        &quot;format&quot;: &quot;A String&quot;, # The different supported formats for each field in a data type.
        &quot;name&quot;: &quot;A String&quot;, # Defines the name and format of data. Unlike data type names, field names are not namespaced, and only need to be unique within the data type.
        &quot;optional&quot;: True or False,
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Each data type has a unique, namespaced, name. All data types in the com.google namespace are shared as part of the platform.
  },
  &quot;device&quot;: { # Representation of an integrated device (such as a phone or a wearable) that can hold sensors. Each sensor is exposed as a data source. The main purpose of the device information contained in this class is to identify the hardware of a particular data source. This can be useful in different ways, including: - Distinguishing two similar sensors on different devices (the step counter on two nexus 5 phones, for instance) - Display the source of data to the user (by using the device make / model) - Treat data differently depending on sensor type (accelerometers on a watch may give different patterns than those on a phone) - Build different analysis models for each device/version. # Representation of an integrated device (such as a phone or a wearable) that can hold sensors.
    &quot;manufacturer&quot;: &quot;A String&quot;, # Manufacturer of the product/hardware.
    &quot;model&quot;: &quot;A String&quot;, # End-user visible model name for the device.
    &quot;type&quot;: &quot;A String&quot;, # A constant representing the type of the device.
    &quot;uid&quot;: &quot;A String&quot;, # The serial number or other unique ID for the hardware. This field is obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the uid field in clear and normal form. The obfuscation preserves equality; that is, given two IDs, if id1 == id2, obfuscated(id1) == obfuscated(id2).
    &quot;version&quot;: &quot;A String&quot;, # Version string for the device hardware/software.
  },
  &quot;name&quot;: &quot;A String&quot;, # An end-user visible name for this data source.
  &quot;type&quot;: &quot;A String&quot;, # A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(userId, dataTypeName=None, x__xgafv=None)</code>
  <pre>Lists all data sources that are visible to the developer, using the OAuth scopes provided. The list is not exhaustive; the user may have private data sources that are only visible to other developers, or calls using other scopes.

Args:
  userId: string, List data sources for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. (required)
  dataTypeName: string, The names of data types to include in the list. If not specified, all data sources will be returned. (repeated)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;dataSource&quot;: [ # A previously created data source.
    { # Definition of a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point inserted into or read from this service has an associated data source. The data source contains enough information to uniquely identify its data, including the hardware device and the application that collected and/or transformed the data. It also holds useful metadata, such as the hardware and application versions, and the device type. Each data source produces a unique stream of data, with a unique identifier. Not all changes to data source affect the stream identifier, so that data collected by updated versions of the same application/device can still be considered to belong to the same data stream.
      &quot;application&quot;: { # Information about an application which feeds sensor data into the platform.
        &quot;detailsUrl&quot;: &quot;A String&quot;, # An optional URI that can be used to link back to the application.
        &quot;name&quot;: &quot;A String&quot;, # The name of this application. This is required for REST clients, but we do not enforce uniqueness of this name. It is provided as a matter of convenience for other developers who would like to identify which REST created an Application or Data Source.
        &quot;packageName&quot;: &quot;A String&quot;, # Package name for this application. This is used as a unique identifier when created by Android applications, but cannot be specified by REST clients. REST clients will have their developer project number reflected into the Data Source data stream IDs, instead of the packageName.
        &quot;version&quot;: &quot;A String&quot;, # Version of the application. You should update this field whenever the application changes in a way that affects the computation of the data.
      },
      &quot;dataQualityStandard&quot;: [ # DO NOT POPULATE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries. It will be removed in a future version entirely.
        &quot;A String&quot;,
      ],
      &quot;dataStreamId&quot;: &quot;A String&quot;, # A unique identifier for the data stream produced by this data source. The identifier includes: - The physical device&#x27;s manufacturer, model, and serial number (UID). - The application&#x27;s package name or name. Package name is used when the data source was created by an Android application. The developer project number is used when the data source was created by a REST client. - The data source&#x27;s type. - The data source&#x27;s stream name. Note that not all attributes of the data source are used as part of the stream identifier. In particular, the version of the hardware/the application isn&#x27;t used. This allows us to preserve the same stream through version updates. This also means that two DataSource objects may represent the same data stream even if they&#x27;re not equal. The exact format of the data stream ID created by an Android application is: type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName The exact format of the data stream ID created by a REST client is: type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName When any of the optional fields that make up the data stream ID are absent, they will be omitted from the data stream ID. The minimum viable data stream ID would be: type:dataType.name:developer project number Finally, the developer project number and device UID are obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the developer project number in clear and normal form. This means a client will see a different set of data_stream_ids than another client with different credentials.
      &quot;dataStreamName&quot;: &quot;A String&quot;, # The stream name uniquely identifies this particular data source among other data sources of the same type from the same underlying producer. Setting the stream name is optional, but should be done whenever an application exposes two streams for the same data type, or when a device has two equivalent sensors.
      &quot;dataType&quot;: { # The data type defines the schema for a stream of data being collected by, inserted into, or queried from the Fitness API.
        &quot;field&quot;: [ # A field represents one dimension of a data type.
          { # In case of multi-dimensional data (such as an accelerometer with x, y, and z axes) each field represents one dimension. Each data type field has a unique name which identifies it. The field also defines the format of the data (int, float, etc.). This message is only instantiated in code and not used for wire comms or stored in any way.
            &quot;format&quot;: &quot;A String&quot;, # The different supported formats for each field in a data type.
            &quot;name&quot;: &quot;A String&quot;, # Defines the name and format of data. Unlike data type names, field names are not namespaced, and only need to be unique within the data type.
            &quot;optional&quot;: True or False,
          },
        ],
        &quot;name&quot;: &quot;A String&quot;, # Each data type has a unique, namespaced, name. All data types in the com.google namespace are shared as part of the platform.
      },
      &quot;device&quot;: { # Representation of an integrated device (such as a phone or a wearable) that can hold sensors. Each sensor is exposed as a data source. The main purpose of the device information contained in this class is to identify the hardware of a particular data source. This can be useful in different ways, including: - Distinguishing two similar sensors on different devices (the step counter on two nexus 5 phones, for instance) - Display the source of data to the user (by using the device make / model) - Treat data differently depending on sensor type (accelerometers on a watch may give different patterns than those on a phone) - Build different analysis models for each device/version. # Representation of an integrated device (such as a phone or a wearable) that can hold sensors.
        &quot;manufacturer&quot;: &quot;A String&quot;, # Manufacturer of the product/hardware.
        &quot;model&quot;: &quot;A String&quot;, # End-user visible model name for the device.
        &quot;type&quot;: &quot;A String&quot;, # A constant representing the type of the device.
        &quot;uid&quot;: &quot;A String&quot;, # The serial number or other unique ID for the hardware. This field is obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the uid field in clear and normal form. The obfuscation preserves equality; that is, given two IDs, if id1 == id2, obfuscated(id1) == obfuscated(id2).
        &quot;version&quot;: &quot;A String&quot;, # Version string for the device hardware/software.
      },
      &quot;name&quot;: &quot;A String&quot;, # An end-user visible name for this data source.
      &quot;type&quot;: &quot;A String&quot;, # A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="update">update(userId, dataSourceId, body=None, x__xgafv=None)</code>
  <pre>Updates the specified data source. The dataStreamId, dataType, type, dataStreamName, and device properties with the exception of version, cannot be modified. Data sources are identified by their dataStreamId.

Args:
  userId: string, Update the data source 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 to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # Definition of a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point inserted into or read from this service has an associated data source. The data source contains enough information to uniquely identify its data, including the hardware device and the application that collected and/or transformed the data. It also holds useful metadata, such as the hardware and application versions, and the device type. Each data source produces a unique stream of data, with a unique identifier. Not all changes to data source affect the stream identifier, so that data collected by updated versions of the same application/device can still be considered to belong to the same data stream.
  &quot;application&quot;: { # Information about an application which feeds sensor data into the platform.
    &quot;detailsUrl&quot;: &quot;A String&quot;, # An optional URI that can be used to link back to the application.
    &quot;name&quot;: &quot;A String&quot;, # The name of this application. This is required for REST clients, but we do not enforce uniqueness of this name. It is provided as a matter of convenience for other developers who would like to identify which REST created an Application or Data Source.
    &quot;packageName&quot;: &quot;A String&quot;, # Package name for this application. This is used as a unique identifier when created by Android applications, but cannot be specified by REST clients. REST clients will have their developer project number reflected into the Data Source data stream IDs, instead of the packageName.
    &quot;version&quot;: &quot;A String&quot;, # Version of the application. You should update this field whenever the application changes in a way that affects the computation of the data.
  },
  &quot;dataQualityStandard&quot;: [ # DO NOT POPULATE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries. It will be removed in a future version entirely.
    &quot;A String&quot;,
  ],
  &quot;dataStreamId&quot;: &quot;A String&quot;, # A unique identifier for the data stream produced by this data source. The identifier includes: - The physical device&#x27;s manufacturer, model, and serial number (UID). - The application&#x27;s package name or name. Package name is used when the data source was created by an Android application. The developer project number is used when the data source was created by a REST client. - The data source&#x27;s type. - The data source&#x27;s stream name. Note that not all attributes of the data source are used as part of the stream identifier. In particular, the version of the hardware/the application isn&#x27;t used. This allows us to preserve the same stream through version updates. This also means that two DataSource objects may represent the same data stream even if they&#x27;re not equal. The exact format of the data stream ID created by an Android application is: type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName The exact format of the data stream ID created by a REST client is: type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName When any of the optional fields that make up the data stream ID are absent, they will be omitted from the data stream ID. The minimum viable data stream ID would be: type:dataType.name:developer project number Finally, the developer project number and device UID are obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the developer project number in clear and normal form. This means a client will see a different set of data_stream_ids than another client with different credentials.
  &quot;dataStreamName&quot;: &quot;A String&quot;, # The stream name uniquely identifies this particular data source among other data sources of the same type from the same underlying producer. Setting the stream name is optional, but should be done whenever an application exposes two streams for the same data type, or when a device has two equivalent sensors.
  &quot;dataType&quot;: { # The data type defines the schema for a stream of data being collected by, inserted into, or queried from the Fitness API.
    &quot;field&quot;: [ # A field represents one dimension of a data type.
      { # In case of multi-dimensional data (such as an accelerometer with x, y, and z axes) each field represents one dimension. Each data type field has a unique name which identifies it. The field also defines the format of the data (int, float, etc.). This message is only instantiated in code and not used for wire comms or stored in any way.
        &quot;format&quot;: &quot;A String&quot;, # The different supported formats for each field in a data type.
        &quot;name&quot;: &quot;A String&quot;, # Defines the name and format of data. Unlike data type names, field names are not namespaced, and only need to be unique within the data type.
        &quot;optional&quot;: True or False,
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Each data type has a unique, namespaced, name. All data types in the com.google namespace are shared as part of the platform.
  },
  &quot;device&quot;: { # Representation of an integrated device (such as a phone or a wearable) that can hold sensors. Each sensor is exposed as a data source. The main purpose of the device information contained in this class is to identify the hardware of a particular data source. This can be useful in different ways, including: - Distinguishing two similar sensors on different devices (the step counter on two nexus 5 phones, for instance) - Display the source of data to the user (by using the device make / model) - Treat data differently depending on sensor type (accelerometers on a watch may give different patterns than those on a phone) - Build different analysis models for each device/version. # Representation of an integrated device (such as a phone or a wearable) that can hold sensors.
    &quot;manufacturer&quot;: &quot;A String&quot;, # Manufacturer of the product/hardware.
    &quot;model&quot;: &quot;A String&quot;, # End-user visible model name for the device.
    &quot;type&quot;: &quot;A String&quot;, # A constant representing the type of the device.
    &quot;uid&quot;: &quot;A String&quot;, # The serial number or other unique ID for the hardware. This field is obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the uid field in clear and normal form. The obfuscation preserves equality; that is, given two IDs, if id1 == id2, obfuscated(id1) == obfuscated(id2).
    &quot;version&quot;: &quot;A String&quot;, # Version string for the device hardware/software.
  },
  &quot;name&quot;: &quot;A String&quot;, # An end-user visible name for this data source.
  &quot;type&quot;: &quot;A String&quot;, # A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Definition of a unique source of sensor data. Data sources can expose raw data coming from hardware sensors on local or companion devices. They can also expose derived data, created by transforming or merging other data sources. Multiple data sources can exist for the same data type. Every data point inserted into or read from this service has an associated data source. The data source contains enough information to uniquely identify its data, including the hardware device and the application that collected and/or transformed the data. It also holds useful metadata, such as the hardware and application versions, and the device type. Each data source produces a unique stream of data, with a unique identifier. Not all changes to data source affect the stream identifier, so that data collected by updated versions of the same application/device can still be considered to belong to the same data stream.
  &quot;application&quot;: { # Information about an application which feeds sensor data into the platform.
    &quot;detailsUrl&quot;: &quot;A String&quot;, # An optional URI that can be used to link back to the application.
    &quot;name&quot;: &quot;A String&quot;, # The name of this application. This is required for REST clients, but we do not enforce uniqueness of this name. It is provided as a matter of convenience for other developers who would like to identify which REST created an Application or Data Source.
    &quot;packageName&quot;: &quot;A String&quot;, # Package name for this application. This is used as a unique identifier when created by Android applications, but cannot be specified by REST clients. REST clients will have their developer project number reflected into the Data Source data stream IDs, instead of the packageName.
    &quot;version&quot;: &quot;A String&quot;, # Version of the application. You should update this field whenever the application changes in a way that affects the computation of the data.
  },
  &quot;dataQualityStandard&quot;: [ # DO NOT POPULATE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries. It will be removed in a future version entirely.
    &quot;A String&quot;,
  ],
  &quot;dataStreamId&quot;: &quot;A String&quot;, # A unique identifier for the data stream produced by this data source. The identifier includes: - The physical device&#x27;s manufacturer, model, and serial number (UID). - The application&#x27;s package name or name. Package name is used when the data source was created by an Android application. The developer project number is used when the data source was created by a REST client. - The data source&#x27;s type. - The data source&#x27;s stream name. Note that not all attributes of the data source are used as part of the stream identifier. In particular, the version of the hardware/the application isn&#x27;t used. This allows us to preserve the same stream through version updates. This also means that two DataSource objects may represent the same data stream even if they&#x27;re not equal. The exact format of the data stream ID created by an Android application is: type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName The exact format of the data stream ID created by a REST client is: type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName When any of the optional fields that make up the data stream ID are absent, they will be omitted from the data stream ID. The minimum viable data stream ID would be: type:dataType.name:developer project number Finally, the developer project number and device UID are obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the developer project number in clear and normal form. This means a client will see a different set of data_stream_ids than another client with different credentials.
  &quot;dataStreamName&quot;: &quot;A String&quot;, # The stream name uniquely identifies this particular data source among other data sources of the same type from the same underlying producer. Setting the stream name is optional, but should be done whenever an application exposes two streams for the same data type, or when a device has two equivalent sensors.
  &quot;dataType&quot;: { # The data type defines the schema for a stream of data being collected by, inserted into, or queried from the Fitness API.
    &quot;field&quot;: [ # A field represents one dimension of a data type.
      { # In case of multi-dimensional data (such as an accelerometer with x, y, and z axes) each field represents one dimension. Each data type field has a unique name which identifies it. The field also defines the format of the data (int, float, etc.). This message is only instantiated in code and not used for wire comms or stored in any way.
        &quot;format&quot;: &quot;A String&quot;, # The different supported formats for each field in a data type.
        &quot;name&quot;: &quot;A String&quot;, # Defines the name and format of data. Unlike data type names, field names are not namespaced, and only need to be unique within the data type.
        &quot;optional&quot;: True or False,
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Each data type has a unique, namespaced, name. All data types in the com.google namespace are shared as part of the platform.
  },
  &quot;device&quot;: { # Representation of an integrated device (such as a phone or a wearable) that can hold sensors. Each sensor is exposed as a data source. The main purpose of the device information contained in this class is to identify the hardware of a particular data source. This can be useful in different ways, including: - Distinguishing two similar sensors on different devices (the step counter on two nexus 5 phones, for instance) - Display the source of data to the user (by using the device make / model) - Treat data differently depending on sensor type (accelerometers on a watch may give different patterns than those on a phone) - Build different analysis models for each device/version. # Representation of an integrated device (such as a phone or a wearable) that can hold sensors.
    &quot;manufacturer&quot;: &quot;A String&quot;, # Manufacturer of the product/hardware.
    &quot;model&quot;: &quot;A String&quot;, # End-user visible model name for the device.
    &quot;type&quot;: &quot;A String&quot;, # A constant representing the type of the device.
    &quot;uid&quot;: &quot;A String&quot;, # The serial number or other unique ID for the hardware. This field is obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the uid field in clear and normal form. The obfuscation preserves equality; that is, given two IDs, if id1 == id2, obfuscated(id1) == obfuscated(id2).
    &quot;version&quot;: &quot;A String&quot;, # Version string for the device hardware/software.
  },
  &quot;name&quot;: &quot;A String&quot;, # An end-user visible name for this data source.
  &quot;type&quot;: &quot;A String&quot;, # A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
}</pre>
</div>

</body></html>