// Copyright 2026 Google LLC.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Code generated file. DO NOT EDIT.

// Package health provides access to the Google Health API.
//
// For product documentation, see: https://developers.google.com/health
//
// # Library status
//
// These client libraries are officially supported by Google. However, this
// library is considered complete and is in maintenance mode. This means
// that we will address critical bugs and security issues but will not add
// any new features.
//
// When possible, we recommend using our newer
// [Cloud Client Libraries for Go](https://pkg.go.dev/cloud.google.com/go)
// that are still actively being worked and iterated on.
//
// # Creating a client
//
// Usage example:
//
//	import "google.golang.org/api/health/v4"
//	...
//	ctx := context.Background()
//	healthService, err := health.NewService(ctx)
//
// In this example, Google Application Default Credentials are used for
// authentication. For information on how to create and obtain Application
// Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
//
// # Other authentication options
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	healthService, err := health.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth
// flow, use [google.golang.org/api/option.WithTokenSource]:
//
//	config := &oauth2.Config{...}
//	// ...
//	token, err := config.Exchange(ctx, ...)
//	healthService, err := health.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package health // import "google.golang.org/api/health/v4"

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"log/slog"
	"net/http"
	"net/url"
	"strconv"
	"strings"

	"github.com/googleapis/gax-go/v2/internallog"
	googleapi "google.golang.org/api/googleapi"
	internal "google.golang.org/api/internal"
	gensupport "google.golang.org/api/internal/gensupport"
	option "google.golang.org/api/option"
	internaloption "google.golang.org/api/option/internaloption"
	htransport "google.golang.org/api/transport/http"
)

// Always reference these packages, just in case the auto-generated code
// below doesn't.
var _ = bytes.NewBuffer
var _ = strconv.Itoa
var _ = fmt.Sprintf
var _ = json.NewDecoder
var _ = io.Copy
var _ = url.Parse
var _ = gensupport.MarshalJSON
var _ = googleapi.Version
var _ = errors.New
var _ = strings.Replace
var _ = context.Canceled
var _ = internaloption.WithDefaultEndpoint
var _ = internal.Version
var _ = internallog.New

const apiId = "health:v4"
const apiName = "health"
const apiVersion = "v4"
const basePath = "https://health.googleapis.com/"
const basePathTemplate = "https://health.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://health.mtls.googleapis.com/"

// OAuth2 scopes used by this API.
const (
	// See, edit, configure, and delete your Google Cloud data and see the email
	// address for your Google Account.
	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
)

// NewService creates a new Service.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
	scopesOption := internaloption.WithDefaultScopes(
		"https://www.googleapis.com/auth/cloud-platform",
	)
	// NOTE: prepend, so we don't override user-specified scopes.
	opts = append([]option.ClientOption{scopesOption}, opts...)
	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
	opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate))
	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
	opts = append(opts, internaloption.EnableNewAuthLibrary())
	client, endpoint, err := htransport.NewClient(ctx, opts...)
	if err != nil {
		return nil, err
	}
	s := &Service{client: client, BasePath: basePath, logger: internaloption.GetLogger(opts)}
	s.Projects = NewProjectsService(s)
	s.Users = NewUsersService(s)
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

// New creates a new Service. It uses the provided http.Client for requests.
//
// Deprecated: please use NewService instead.
// To provide a custom HTTP client, use option.WithHTTPClient.
// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func New(client *http.Client) (*Service, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	return NewService(context.TODO(), option.WithHTTPClient(client))
}

type Service struct {
	client    *http.Client
	logger    *slog.Logger
	BasePath  string // API endpoint base URL
	UserAgent string // optional additional User-Agent fragment

	Projects *ProjectsService

	Users *UsersService
}

func (s *Service) userAgent() string {
	if s.UserAgent == "" {
		return googleapi.UserAgent
	}
	return googleapi.UserAgent + " " + s.UserAgent
}

func NewProjectsService(s *Service) *ProjectsService {
	rs := &ProjectsService{s: s}
	rs.Subscribers = NewProjectsSubscribersService(s)
	return rs
}

type ProjectsService struct {
	s *Service

	Subscribers *ProjectsSubscribersService
}

func NewProjectsSubscribersService(s *Service) *ProjectsSubscribersService {
	rs := &ProjectsSubscribersService{s: s}
	return rs
}

type ProjectsSubscribersService struct {
	s *Service
}

func NewUsersService(s *Service) *UsersService {
	rs := &UsersService{s: s}
	rs.DataTypes = NewUsersDataTypesService(s)
	return rs
}

type UsersService struct {
	s *Service

	DataTypes *UsersDataTypesService
}

func NewUsersDataTypesService(s *Service) *UsersDataTypesService {
	rs := &UsersDataTypesService{s: s}
	rs.DataPoints = NewUsersDataTypesDataPointsService(s)
	return rs
}

type UsersDataTypesService struct {
	s *Service

	DataPoints *UsersDataTypesDataPointsService
}

func NewUsersDataTypesDataPointsService(s *Service) *UsersDataTypesDataPointsService {
	rs := &UsersDataTypesDataPointsService{s: s}
	return rs
}

type UsersDataTypesDataPointsService struct {
	s *Service
}

// ActiveMinutes: Record of active minutes in a given time interval.
type ActiveMinutes struct {
	// ActiveMinutesByActivityLevel: Required. Active minutes by activity level. At
	// most one record per activity level is allowed.
	ActiveMinutesByActivityLevel []*ActiveMinutesByActivityLevel `json:"activeMinutesByActivityLevel,omitempty"`
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "ActiveMinutesByActivityLevel") to unconditionally include in API requests.
	// By default, fields with empty or default values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields
	// for more details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveMinutesByActivityLevel") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActiveMinutes) MarshalJSON() ([]byte, error) {
	type NoMethod ActiveMinutes
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActiveMinutesByActivityLevel: Active minutes at a given activity level.
type ActiveMinutesByActivityLevel struct {
	// ActiveMinutes: Required. Number of whole minutes spent in activity.
	ActiveMinutes int64 `json:"activeMinutes,omitempty,string"`
	// ActivityLevel: Required. The level of activity.
	//
	// Possible values:
	//   "ACTIVITY_LEVEL_UNSPECIFIED" - Activity level is unspecified.
	//   "LIGHT" - Light activity level.
	//   "MODERATE" - Moderate activity level.
	//   "VIGOROUS" - Vigorous activity level.
	ActivityLevel string `json:"activityLevel,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveMinutes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveMinutes") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActiveMinutesByActivityLevel) MarshalJSON() ([]byte, error) {
	type NoMethod ActiveMinutesByActivityLevel
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActiveMinutesRollupByActivityLevel: Active minutes by activity level.
type ActiveMinutesRollupByActivityLevel struct {
	// ActiveMinutesSum: Number of whole minutes spent in activity.
	ActiveMinutesSum int64 `json:"activeMinutesSum,omitempty,string"`
	// ActivityLevel: The level of activity.
	//
	// Possible values:
	//   "ACTIVITY_LEVEL_UNSPECIFIED" - Activity level is unspecified.
	//   "LIGHT" - Light activity level.
	//   "MODERATE" - Moderate activity level.
	//   "VIGOROUS" - Vigorous activity level.
	ActivityLevel string `json:"activityLevel,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveMinutesSum") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveMinutesSum") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActiveMinutesRollupByActivityLevel) MarshalJSON() ([]byte, error) {
	type NoMethod ActiveMinutesRollupByActivityLevel
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActiveMinutesRollupValue: Represents the result of the rollup of the active
// minutes data type.
type ActiveMinutesRollupValue struct {
	// ActiveMinutesRollupByActivityLevel: Active minutes by activity level. At
	// most one record per activity level is allowed.
	ActiveMinutesRollupByActivityLevel []*ActiveMinutesRollupByActivityLevel `json:"activeMinutesRollupByActivityLevel,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "ActiveMinutesRollupByActivityLevel") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "ActiveMinutesRollupByActivityLevel") to include in API requests with the
	// JSON null value. By default, fields with empty values are omitted from API
	// requests. See https://pkg.go.dev/google.golang.org/api#hdr-NullFields for
	// more details.
	NullFields []string `json:"-"`
}

func (s ActiveMinutesRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod ActiveMinutesRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActiveZoneMinutes: Record of active zone minutes in a given time interval.
type ActiveZoneMinutes struct {
	// ActiveZoneMinutes: Required. Number of Active Zone Minutes earned in the
	// given time interval. Note: active_zone_minutes equals to 1 for low intensity
	// (fat burn) zones or 2 for high intensity zones (cardio, peak).
	ActiveZoneMinutes int64 `json:"activeZoneMinutes,omitempty,string"`
	// HeartRateZone: Required. Heart rate zone in which the active zone minutes
	// have been earned, in the given time interval.
	//
	// Possible values:
	//   "HEART_RATE_ZONE_UNSPECIFIED" - Unspecified heart rate zone.
	//   "FAT_BURN" - The fat burn heart rate zone.
	//   "CARDIO" - The cardio heart rate zone.
	//   "PEAK" - The peak heart rate zone.
	HeartRateZone string `json:"heartRateZone,omitempty"`
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveZoneMinutes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveZoneMinutes") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActiveZoneMinutes) MarshalJSON() ([]byte, error) {
	type NoMethod ActiveZoneMinutes
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActiveZoneMinutesRollupValue: Represents the result of the rollup of the
// active zone minutes data type.
type ActiveZoneMinutesRollupValue struct {
	// SumInCardioHeartZone: Active zone minutes in `HeartRateZone.CARDIO`.
	SumInCardioHeartZone int64 `json:"sumInCardioHeartZone,omitempty,string"`
	// SumInFatBurnHeartZone: Active zone minutes in `HeartRateZone.FAT_BURN`.
	SumInFatBurnHeartZone int64 `json:"sumInFatBurnHeartZone,omitempty,string"`
	// SumInPeakHeartZone: Active zone minutes in `HeartRateZone.PEAK`.
	SumInPeakHeartZone int64 `json:"sumInPeakHeartZone,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "SumInCardioHeartZone") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "SumInCardioHeartZone") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActiveZoneMinutesRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod ActiveZoneMinutesRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActivityLevel: Internal type to capture activity level during a certain time
// interval.
type ActivityLevel struct {
	// ActivityLevelType: Required. Activity level type in the given time interval.
	//
	// Possible values:
	//   "ACTIVITY_LEVEL_TYPE_UNSPECIFIED" - Unspecified activity level type.
	//   "SEDENTARY" - Sedentary activity level.
	//   "LIGHTLY_ACTIVE" - Lightly active activity level.
	//   "MODERATELY_ACTIVE" - Moderately active activity level.
	//   "VERY_ACTIVE" - Very active activity level.
	ActivityLevelType string `json:"activityLevelType,omitempty"`
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActivityLevelType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActivityLevelType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActivityLevel) MarshalJSON() ([]byte, error) {
	type NoMethod ActivityLevel
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActivityLevelRollupByActivityLevelType: Represents the total duration in a
// specific activity level type.
type ActivityLevelRollupByActivityLevelType struct {
	// ActivityLevelType: Activity level type.
	//
	// Possible values:
	//   "ACTIVITY_LEVEL_TYPE_UNSPECIFIED" - Unspecified activity level type.
	//   "SEDENTARY" - Sedentary activity level.
	//   "LIGHTLY_ACTIVE" - Lightly active activity level.
	//   "MODERATELY_ACTIVE" - Moderately active activity level.
	//   "VERY_ACTIVE" - Very active activity level.
	ActivityLevelType string `json:"activityLevelType,omitempty"`
	// TotalDuration: Total duration in the activity level type.
	TotalDuration string `json:"totalDuration,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActivityLevelType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActivityLevelType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ActivityLevelRollupByActivityLevelType) MarshalJSON() ([]byte, error) {
	type NoMethod ActivityLevelRollupByActivityLevelType
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ActivityLevelRollupValue: Represents the result of the rollup of the
// activity level data type.
type ActivityLevelRollupValue struct {
	// ActivityLevelRollupsByActivityLevelType: List of total durations in each
	// activity level type.
	ActivityLevelRollupsByActivityLevelType []*ActivityLevelRollupByActivityLevelType `json:"activityLevelRollupsByActivityLevelType,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "ActivityLevelRollupsByActivityLevelType") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "ActivityLevelRollupsByActivityLevelType") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted from
	// API requests. See https://pkg.go.dev/google.golang.org/api#hdr-NullFields
	// for more details.
	NullFields []string `json:"-"`
}

func (s ActivityLevelRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod ActivityLevelRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Altitude: Captures the altitude gain (i.e. deltas), and not level above sea,
// for a user in millimeters.
type Altitude struct {
	// GainMillimeters: Required. Altitude gain in millimeters over the observed
	// interval.
	GainMillimeters int64 `json:"gainMillimeters,omitempty,string"`
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g. "GainMillimeters") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GainMillimeters") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Altitude) MarshalJSON() ([]byte, error) {
	type NoMethod Altitude
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// AltitudeRollupValue: Represents the result of the rollup of the user's
// altitude.
type AltitudeRollupValue struct {
	// GainMillimetersSum: Sum of the altitude gain in millimeters.
	GainMillimetersSum int64 `json:"gainMillimetersSum,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "GainMillimetersSum") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GainMillimetersSum") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s AltitudeRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod AltitudeRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Application: Optional metadata for the application that provided this data.
type Application struct {
	// GoogleWebClientId: Output only. The Google OAuth 2.0 client ID of the web
	// application or service that recorded the data. This is the client ID used
	// during the Google OAuth flow to obtain user credentials. This field is
	// system-populated when the data is uploaded from Google Web API.
	GoogleWebClientId string `json:"googleWebClientId,omitempty"`
	// PackageName: Output only. A unique identifier for the mobile application
	// that was the source of the data. This is typically the application's package
	// name on Android (e.g., `com.google.fitbit`) or the bundle ID on iOS. This
	// field is informational and helps trace data origin. This field is
	// system-populated when the data is uploaded from the Fitbit mobile
	// application, Health Connect or Health Kit.
	PackageName string `json:"packageName,omitempty"`
	// WebClientId: Output only. The client ID of the application that recorded the
	// data. This ID is a legacy Fitbit API client ID, which is different from a
	// Google OAuth client ID. Example format: `ABC123`. This field is
	// system-populated and used for tracing data from legacy Fitbit API
	// integrations. This field is system-populated when the data is uploaded from
	// a legacy Fitbit API integration.
	WebClientId string `json:"webClientId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "GoogleWebClientId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "GoogleWebClientId") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Application) MarshalJSON() ([]byte, error) {
	type NoMethod Application
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BatchDeleteDataPointsRequest: Request to delete a batch of identifiable data
// points.
type BatchDeleteDataPointsRequest struct {
	// Names: Required. The names of the DataPoints to delete. A maximum of 10000
	// data points can be deleted in a single request.
	Names []string `json:"names,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Names") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Names") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BatchDeleteDataPointsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod BatchDeleteDataPointsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// BodyFat: Body fat measurement.
type BodyFat struct {
	// Percentage: Required. Body fat percentage, in range [0, 100].
	Percentage float64 `json:"percentage,omitempty"`
	// SampleTime: Required. The time at which body fat was measured.
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Percentage") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Percentage") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BodyFat) MarshalJSON() ([]byte, error) {
	type NoMethod BodyFat
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *BodyFat) UnmarshalJSON(data []byte) error {
	type NoMethod BodyFat
	var s1 struct {
		Percentage gensupport.JSONFloat64 `json:"percentage"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Percentage = float64(s1.Percentage)
	return nil
}

// BodyFatRollupValue: Represents the result of the rollup of the body fat data
// type.
type BodyFatRollupValue struct {
	// BodyFatPercentageAvg: Average body fat percentage.
	BodyFatPercentageAvg float64 `json:"bodyFatPercentageAvg,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BodyFatPercentageAvg") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BodyFatPercentageAvg") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s BodyFatRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod BodyFatRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *BodyFatRollupValue) UnmarshalJSON(data []byte) error {
	type NoMethod BodyFatRollupValue
	var s1 struct {
		BodyFatPercentageAvg gensupport.JSONFloat64 `json:"bodyFatPercentageAvg"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BodyFatPercentageAvg = float64(s1.BodyFatPercentageAvg)
	return nil
}

// CaloriesInHeartRateZoneRollupValue: Represents the result of the rollup of
// the calories in heart rate zone data type.
type CaloriesInHeartRateZoneRollupValue struct {
	// CaloriesInHeartRateZones: List of calories burned in each heart rate zone.
	CaloriesInHeartRateZones []*CaloriesInHeartRateZoneValue `json:"caloriesInHeartRateZones,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CaloriesInHeartRateZones")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CaloriesInHeartRateZones") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CaloriesInHeartRateZoneRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod CaloriesInHeartRateZoneRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CaloriesInHeartRateZoneValue: Represents the amount of kilocalories burned
// in a specific heart rate zone.
type CaloriesInHeartRateZoneValue struct {
	// HeartRateZone: The heart rate zone.
	//
	// Possible values:
	//   "HEART_RATE_ZONE_TYPE_UNSPECIFIED" - Unspecified heart rate zone.
	//   "LIGHT" - The light heart rate zone.
	//   "MODERATE" - The moderate heart rate zone.
	//   "VIGOROUS" - The vigorous heart rate zone.
	//   "PEAK" - The peak heart rate zone.
	HeartRateZone string `json:"heartRateZone,omitempty"`
	// Kcal: The amount of kilocalories burned in the specified heart rate zone.
	Kcal float64 `json:"kcal,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HeartRateZone") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HeartRateZone") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CaloriesInHeartRateZoneValue) MarshalJSON() ([]byte, error) {
	type NoMethod CaloriesInHeartRateZoneValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *CaloriesInHeartRateZoneValue) UnmarshalJSON(data []byte) error {
	type NoMethod CaloriesInHeartRateZoneValue
	var s1 struct {
		Kcal gensupport.JSONFloat64 `json:"kcal"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Kcal = float64(s1.Kcal)
	return nil
}

// CivilDateTime: Civil time representation similar to google.type.DateTime,
// but ensures that neither the timezone nor the UTC offset can be set to avoid
// confusion between civil and physical time queries.
type CivilDateTime struct {
	// Date: Required. Calendar date.
	Date *Date `json:"date,omitempty"`
	// Time: Optional. Time of day. Defaults to the start of the day, at midnight
	// if omitted.
	Time *TimeOfDay `json:"time,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Date") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Date") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CivilDateTime) MarshalJSON() ([]byte, error) {
	type NoMethod CivilDateTime
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CivilTimeInterval: Counterpart of google.type.Interval, but using
// CivilDateTime.
type CivilTimeInterval struct {
	// End: Required. The exclusive end of the range.
	End *CivilDateTime `json:"end,omitempty"`
	// Start: Required. The inclusive start of the range.
	Start *CivilDateTime `json:"start,omitempty"`
	// ForceSendFields is a list of field names (e.g. "End") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "End") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CivilTimeInterval) MarshalJSON() ([]byte, error) {
	type NoMethod CivilTimeInterval
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// CreateSubscriberPayload: Payload for creating a subscriber.
type CreateSubscriberPayload struct {
	// EndpointAuthorization: Required. Authorization mechanism for the subscriber
	// endpoint. The `secret` within this message is crucial for endpoint
	// verification and for securing webhook notifications.
	EndpointAuthorization *EndpointAuthorization `json:"endpointAuthorization,omitempty"`
	// EndpointUri: Required. The full HTTPS URI where update notifications will be
	// sent. The URI must be a valid URL and use HTTPS as the scheme. This endpoint
	// will be verified during the `CreateSubscriber` call. See CreateSubscriber
	// RPC documentation for verification details.
	EndpointUri string `json:"endpointUri,omitempty"`
	// SubscriberConfigs: Optional. Configuration for the subscriber.
	SubscriberConfigs []*SubscriberConfig `json:"subscriberConfigs,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndpointAuthorization") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EndpointAuthorization") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s CreateSubscriberPayload) MarshalJSON() ([]byte, error) {
	type NoMethod CreateSubscriberPayload
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DailyHeartRateVariability: Represents the daily heart rate variability data
// type. At least one of the following fields must be set: -
// `average_heart_rate_variability_milliseconds` -
// `non_rem_heart_rate_beats_per_minute` - `entropy` -
// `deep_sleep_root_mean_square_of_successive_differences_milliseconds`
type DailyHeartRateVariability struct {
	// AverageHeartRateVariabilityMilliseconds: Optional. A user's average heart
	// rate variability calculated using the root mean square of successive
	// differences (RMSSD) in times between heartbeats.
	AverageHeartRateVariabilityMilliseconds float64 `json:"averageHeartRateVariabilityMilliseconds,omitempty"`
	// Date: Required. Date (in the user's timezone) of heart rate variability
	// measurement.
	Date *Date `json:"date,omitempty"`
	// DeepSleepRootMeanSquareOfSuccessiveDifferencesMilliseconds: Optional. The
	// root mean square of successive differences (RMSSD) value during deep sleep.
	DeepSleepRootMeanSquareOfSuccessiveDifferencesMilliseconds float64 `json:"deepSleepRootMeanSquareOfSuccessiveDifferencesMilliseconds,omitempty"`
	// Entropy: Optional. The Shanon entropy of heartbeat intervals. Entropy
	// quantifies randomness or disorder in a system. High entropy indicates high
	// HRV. Entropy is measured from the histogram of time interval between
	// successive heart beats values measured during sleep.
	Entropy float64 `json:"entropy,omitempty"`
	// NonRemHeartRateBeatsPerMinute: Optional. Non-REM heart rate
	NonRemHeartRateBeatsPerMinute int64 `json:"nonRemHeartRateBeatsPerMinute,omitempty,string"`
	// ForceSendFields is a list of field names (e.g.
	// "AverageHeartRateVariabilityMilliseconds") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "AverageHeartRateVariabilityMilliseconds") to include in API requests with
	// the JSON null value. By default, fields with empty values are omitted from
	// API requests. See https://pkg.go.dev/google.golang.org/api#hdr-NullFields
	// for more details.
	NullFields []string `json:"-"`
}

func (s DailyHeartRateVariability) MarshalJSON() ([]byte, error) {
	type NoMethod DailyHeartRateVariability
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *DailyHeartRateVariability) UnmarshalJSON(data []byte) error {
	type NoMethod DailyHeartRateVariability
	var s1 struct {
		AverageHeartRateVariabilityMilliseconds                    gensupport.JSONFloat64 `json:"averageHeartRateVariabilityMilliseconds"`
		DeepSleepRootMeanSquareOfSuccessiveDifferencesMilliseconds gensupport.JSONFloat64 `json:"deepSleepRootMeanSquareOfSuccessiveDifferencesMilliseconds"`
		Entropy                                                    gensupport.JSONFloat64 `json:"entropy"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageHeartRateVariabilityMilliseconds = float64(s1.AverageHeartRateVariabilityMilliseconds)
	s.DeepSleepRootMeanSquareOfSuccessiveDifferencesMilliseconds = float64(s1.DeepSleepRootMeanSquareOfSuccessiveDifferencesMilliseconds)
	s.Entropy = float64(s1.Entropy)
	return nil
}

// DailyHeartRateZones: User's heart rate zone thresholds based on the Karvonen
// algorithm for a specific day.
type DailyHeartRateZones struct {
	// Date: Required. Date (in user's timezone) of the heart rate zones record.
	Date *Date `json:"date,omitempty"`
	// HeartRateZones: Required. The heart rate zones.
	HeartRateZones []*HeartRateZone `json:"heartRateZones,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Date") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Date") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyHeartRateZones) MarshalJSON() ([]byte, error) {
	type NoMethod DailyHeartRateZones
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DailyOxygenSaturation: A daily oxygen saturation (SpO2) record. Represents
// the user's daily oxygen saturation summary, typically calculated during
// sleep.
type DailyOxygenSaturation struct {
	// AveragePercentage: Required. The average value of the oxygen saturation
	// samples during the sleep.
	AveragePercentage float64 `json:"averagePercentage,omitempty"`
	// Date: Required. Date (in user's timezone) of the daily oxygen saturation
	// record.
	Date *Date `json:"date,omitempty"`
	// LowerBoundPercentage: Required. The lower bound of the confidence interval
	// of oxygen saturation samples during sleep.
	LowerBoundPercentage float64 `json:"lowerBoundPercentage,omitempty"`
	// StandardDeviationPercentage: Optional. Standard deviation of the daily
	// oxygen saturation averages from the past 7-30 days.
	StandardDeviationPercentage float64 `json:"standardDeviationPercentage,omitempty"`
	// UpperBoundPercentage: Required. The upper bound of the confidence interval
	// of oxygen saturation samples during sleep.
	UpperBoundPercentage float64 `json:"upperBoundPercentage,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AveragePercentage") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AveragePercentage") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyOxygenSaturation) MarshalJSON() ([]byte, error) {
	type NoMethod DailyOxygenSaturation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *DailyOxygenSaturation) UnmarshalJSON(data []byte) error {
	type NoMethod DailyOxygenSaturation
	var s1 struct {
		AveragePercentage           gensupport.JSONFloat64 `json:"averagePercentage"`
		LowerBoundPercentage        gensupport.JSONFloat64 `json:"lowerBoundPercentage"`
		StandardDeviationPercentage gensupport.JSONFloat64 `json:"standardDeviationPercentage"`
		UpperBoundPercentage        gensupport.JSONFloat64 `json:"upperBoundPercentage"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AveragePercentage = float64(s1.AveragePercentage)
	s.LowerBoundPercentage = float64(s1.LowerBoundPercentage)
	s.StandardDeviationPercentage = float64(s1.StandardDeviationPercentage)
	s.UpperBoundPercentage = float64(s1.UpperBoundPercentage)
	return nil
}

// DailyRespiratoryRate: A daily average respiratory rate (breaths per minute)
// for a day of the year. One data point per day calculated for the main sleep.
type DailyRespiratoryRate struct {
	// BreathsPerMinute: Required. The average number of breaths taken per minute.
	BreathsPerMinute float64 `json:"breathsPerMinute,omitempty"`
	// Date: Required. The date on which the respiratory rate was measured.
	Date *Date `json:"date,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BreathsPerMinute") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BreathsPerMinute") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyRespiratoryRate) MarshalJSON() ([]byte, error) {
	type NoMethod DailyRespiratoryRate
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *DailyRespiratoryRate) UnmarshalJSON(data []byte) error {
	type NoMethod DailyRespiratoryRate
	var s1 struct {
		BreathsPerMinute gensupport.JSONFloat64 `json:"breathsPerMinute"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BreathsPerMinute = float64(s1.BreathsPerMinute)
	return nil
}

// DailyRestingHeartRate: Measures the daily resting heart rate for a user,
// calculated using the all day heart rate measurements.
type DailyRestingHeartRate struct {
	// BeatsPerMinute: Required. The resting heart rate value in beats per minute.
	BeatsPerMinute int64 `json:"beatsPerMinute,omitempty,string"`
	// DailyRestingHeartRateMetadata: Optional. Metadata for the daily resting
	// heart rate.
	DailyRestingHeartRateMetadata *DailyRestingHeartRateMetadata `json:"dailyRestingHeartRateMetadata,omitempty"`
	// Date: Required. Date (in the user's timezone) of the resting heart rate
	// measurement.
	Date *Date `json:"date,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BeatsPerMinute") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BeatsPerMinute") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyRestingHeartRate) MarshalJSON() ([]byte, error) {
	type NoMethod DailyRestingHeartRate
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DailyRestingHeartRateMetadata: Metadata for the daily resting heart rate.
type DailyRestingHeartRateMetadata struct {
	// CalculationMethod: Required. The method used to calculate the resting heart
	// rate.
	//
	// Possible values:
	//   "CALCULATION_METHOD_UNSPECIFIED" - The calculation method is unspecified.
	//   "WITH_SLEEP" - The resting heart rate is calculated using the sleep data.
	//   "ONLY_WITH_AWAKE_DATA" - The resting heart rate is calculated using only
	// awake data.
	CalculationMethod string `json:"calculationMethod,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CalculationMethod") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CalculationMethod") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyRestingHeartRateMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod DailyRestingHeartRateMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DailyRollUpDataPointsRequest: Request to roll up data points by civil time
// intervals.
type DailyRollUpDataPointsRequest struct {
	// DataSourceFamily: Optional. The data source family name to roll up. If
	// empty, data points from all available data sources will be rolled up.
	// Format: `users/me/dataSourceFamilies/{data_source_family}` The supported
	// values are: - `users/me/dataSourceFamilies/all-sources` - default value -
	// `users/me/dataSourceFamilies/google-wearables` - tracker devices -
	// `users/me/dataSourceFamilies/google-sources` - Google first party sources
	DataSourceFamily string `json:"dataSourceFamily,omitempty"`
	// PageSize: Optional. The maximum number of data points to return. If
	// unspecified, at most 1440 data points will be returned. The maximum page
	// size is 10000; values above that will be truncated accordingly.
	PageSize int64 `json:"pageSize,omitempty"`
	// PageToken: Optional. The `next_page_token` from a previous request, if any.
	// All other request fields need to be the same as in the initial request when
	// the page token is specified.
	PageToken string `json:"pageToken,omitempty"`
	// Range: Required. Closed-open range of data points that will be rolled up.
	// The start time must be aligned with the aggregation window. The maximum
	// range for `calories-in-heart-rate-zone`, `heart-rate`, `active-minutes` and
	// `total-calories` is 14 days. The maximum range for all other data types is
	// 90 days.
	Range *CivilTimeInterval `json:"range,omitempty"`
	// WindowSizeDays: Optional. Aggregation window size, in number of days.
	// Defaults to 1 if not specified.
	WindowSizeDays int64 `json:"windowSizeDays,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DataSourceFamily") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DataSourceFamily") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyRollUpDataPointsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod DailyRollUpDataPointsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DailyRollUpDataPointsResponse: Response containing the list of rolled up
// data points.
type DailyRollUpDataPointsResponse struct {
	// RollupDataPoints: Values for each aggregation time window.
	RollupDataPoints []*DailyRollupDataPoint `json:"rollupDataPoints,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "RollupDataPoints") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RollupDataPoints") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyRollUpDataPointsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod DailyRollUpDataPointsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DailyRollupDataPoint: Value of a daily rollup for a single civil time
// interval (aggregation window)
type DailyRollupDataPoint struct {
	// ActiveMinutes: Returned by default when rolling up data points from the
	// `active-minutes` data type, or when requested explicitly using the
	// `active-minutes` rollup type identifier.
	ActiveMinutes *ActiveMinutesRollupValue `json:"activeMinutes,omitempty"`
	// ActiveZoneMinutes: Returned by default when rolling up data points from the
	// `active-zone-minutes` data type, or when requested explicitly using the
	// `active-zone-minutes` rollup type identifier.
	ActiveZoneMinutes *ActiveZoneMinutesRollupValue `json:"activeZoneMinutes,omitempty"`
	// ActivityLevel: Returned by default when rolling up data points from the
	// `activity-level` data type, or when requested explicitly using the
	// `activity-level` rollup type identifier.
	ActivityLevel *ActivityLevelRollupValue `json:"activityLevel,omitempty"`
	// Altitude: Returned by default when rolling up data points from the
	// `altitude` data type, or when requested explicitly using the `altitude`
	// rollup type identifier.
	Altitude *AltitudeRollupValue `json:"altitude,omitempty"`
	// BodyFat: Returned by default when rolling up data points from the `body-fat`
	// data type, or when requested explicitly using the `body-fat` rollup type
	// identifier.
	BodyFat *BodyFatRollupValue `json:"bodyFat,omitempty"`
	// CaloriesInHeartRateZone: Returned by default when rolling up data points
	// from the `calories-in-heart-rate-zone` data type, or when requested
	// explicitly using the `calories-in-heart-rate-zone` rollup type identifier.
	CaloriesInHeartRateZone *CaloriesInHeartRateZoneRollupValue `json:"caloriesInHeartRateZone,omitempty"`
	// CivilEndTime: End time of the window this value aggregates over
	CivilEndTime *CivilDateTime `json:"civilEndTime,omitempty"`
	// CivilStartTime: Start time of the window this value aggregates over
	CivilStartTime *CivilDateTime `json:"civilStartTime,omitempty"`
	// Distance: Returned by default when rolling up data points from the
	// `distance` data type, or when requested explicitly using the `distance`
	// rollup type identifier.
	Distance *DistanceRollupValue `json:"distance,omitempty"`
	// Floors: Returned by default when rolling up data points from the `floors`
	// data type, or when requested explicitly using the `floors` rollup type
	// identifier.
	Floors *FloorsRollupValue `json:"floors,omitempty"`
	// HeartRate: Returned by default when rolling up data points from the
	// `heart-rate` data type, or when requested explicitly using the `heart-rate`
	// rollup type identifier.
	HeartRate *HeartRateRollupValue `json:"heartRate,omitempty"`
	// HeartRateVariabilityPersonalRange: Returned by default when rolling up data
	// points from the `daily-heart-rate-variability` data type, or when requested
	// explicitly using the `heart-rate-variability-personal-range` rollup type
	// identifier.
	HeartRateVariabilityPersonalRange *HeartRateVariabilityPersonalRangeRollupValue `json:"heartRateVariabilityPersonalRange,omitempty"`
	// HydrationLog: Returned by default when rolling up data points from the
	// `hydration-log` data type, or when requested explicitly using the
	// `hydration-log` rollup type identifier.
	HydrationLog *HydrationLogRollupValue `json:"hydrationLog,omitempty"`
	// RestingHeartRatePersonalRange: Returned by default when rolling up data
	// points from the `daily-resting-heart-rate` data type, or when requested
	// explicitly using the `resting-heart-rate-personal-range` rollup type
	// identifier.
	RestingHeartRatePersonalRange *RestingHeartRatePersonalRangeRollupValue `json:"restingHeartRatePersonalRange,omitempty"`
	// RunVo2Max: Returned by default when rolling up data points from the
	// `run-vo2-max` data type, or when requested explicitly using the
	// `run-vo2-max` rollup type identifier.
	RunVo2Max *RunVO2MaxRollupValue `json:"runVo2Max,omitempty"`
	// SedentaryPeriod: Returned by default when rolling up data points from the
	// `sedentary-period` data type, or when requested explicitly using the
	// `sedentary-period` rollup type identifier.
	SedentaryPeriod *SedentaryPeriodRollupValue `json:"sedentaryPeriod,omitempty"`
	// Steps: Returned by default when rolling up data points from the `steps` data
	// type, or when requested explicitly using the `steps` rollup type identifier.
	Steps *StepsRollupValue `json:"steps,omitempty"`
	// SwimLengthsData: Returned by default when rolling up data points from the
	// `swim-lengths-data` data type, or when requested explicitly using the
	// `swim-lengths-data` rollup type identifier.
	SwimLengthsData *SwimLengthsDataRollupValue `json:"swimLengthsData,omitempty"`
	// TimeInHeartRateZone: Returned by default when rolling up data points from
	// the `time-in-heart-rate-zone` data type, or when requested explicitly using
	// the `time-in-heart-rate-zone` rollup type identifier.
	TimeInHeartRateZone *TimeInHeartRateZoneRollupValue `json:"timeInHeartRateZone,omitempty"`
	// TotalCalories: Returned by default when rolling up data points from the
	// `total-calories` data type, or when requested explicitly using the
	// `total-calories` rollup type identifier.
	TotalCalories *TotalCaloriesRollupValue `json:"totalCalories,omitempty"`
	// Weight: Returned by default when rolling up data points from the `weight`
	// data type, or when requested explicitly using the `weight` rollup type
	// identifier.
	Weight *WeightRollupValue `json:"weight,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveMinutes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveMinutes") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyRollupDataPoint) MarshalJSON() ([]byte, error) {
	type NoMethod DailyRollupDataPoint
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DailySleepTemperatureDerivations: Provides derived sleep temperature values,
// calculated from skin or internal device temperature readings during sleep.
type DailySleepTemperatureDerivations struct {
	// BaselineTemperatureCelsius: Optional. The user's baseline skin temperature.
	// It is the median of the user's nightly skin temperature over the past 30
	// days.
	BaselineTemperatureCelsius float64 `json:"baselineTemperatureCelsius,omitempty"`
	// Date: Required. Date for which the sleep temperature derivations are
	// calculated.
	Date *Date `json:"date,omitempty"`
	// NightlyTemperatureCelsius: Required. The user's nightly skin temperature. It
	// is the mean of skin temperature samples taken from the user’s sleep.
	NightlyTemperatureCelsius float64 `json:"nightlyTemperatureCelsius,omitempty"`
	// RelativeNightlyStddev30dCelsius: Optional. The standard deviation of the
	// user’s relative nightly skin temperature (temperature - baseline) over the
	// past 30 days.
	RelativeNightlyStddev30dCelsius float64 `json:"relativeNightlyStddev30dCelsius,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BaselineTemperatureCelsius")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BaselineTemperatureCelsius") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailySleepTemperatureDerivations) MarshalJSON() ([]byte, error) {
	type NoMethod DailySleepTemperatureDerivations
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *DailySleepTemperatureDerivations) UnmarshalJSON(data []byte) error {
	type NoMethod DailySleepTemperatureDerivations
	var s1 struct {
		BaselineTemperatureCelsius      gensupport.JSONFloat64 `json:"baselineTemperatureCelsius"`
		NightlyTemperatureCelsius       gensupport.JSONFloat64 `json:"nightlyTemperatureCelsius"`
		RelativeNightlyStddev30dCelsius gensupport.JSONFloat64 `json:"relativeNightlyStddev30dCelsius"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BaselineTemperatureCelsius = float64(s1.BaselineTemperatureCelsius)
	s.NightlyTemperatureCelsius = float64(s1.NightlyTemperatureCelsius)
	s.RelativeNightlyStddev30dCelsius = float64(s1.RelativeNightlyStddev30dCelsius)
	return nil
}

// DailyVO2Max: Contains a daily summary of the user's VO2 max (cardio fitness
// score), which is the maximum rate of oxygen the body can use during
// exercise.
type DailyVO2Max struct {
	// CardioFitnessLevel: Optional. Represents the user's cardio fitness level
	// based on their VO2 max.
	//
	// Possible values:
	//   "CARDIO_FITNESS_LEVEL_UNSPECIFIED" - Unspecified cardio fitness level.
	//   "POOR" - Poor cardio fitness level.
	//   "FAIR" - Fair cardio fitness level.
	//   "AVERAGE" - Average cardio fitness level.
	//   "GOOD" - Good cardio fitness level.
	//   "VERY_GOOD" - Very good cardio fitness level.
	//   "EXCELLENT" - Excellent cardio fitness level.
	CardioFitnessLevel string `json:"cardioFitnessLevel,omitempty"`
	// Date: Required. The date for which the Daily VO2 max was measured.
	Date *Date `json:"date,omitempty"`
	// Estimated: Optional. An estimated field is added to indicate when the
	// confidence has decreased sufficiently to consider the value an estimation.
	Estimated bool `json:"estimated,omitempty"`
	// Vo2Max: Required. Daily VO2 max value measured as in ml consumed oxygen / kg
	// of body weight / min.
	Vo2Max float64 `json:"vo2Max,omitempty"`
	// Vo2MaxCovariance: Optional. The covariance of the VO2 max value.
	Vo2MaxCovariance float64 `json:"vo2MaxCovariance,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CardioFitnessLevel") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CardioFitnessLevel") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DailyVO2Max) MarshalJSON() ([]byte, error) {
	type NoMethod DailyVO2Max
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *DailyVO2Max) UnmarshalJSON(data []byte) error {
	type NoMethod DailyVO2Max
	var s1 struct {
		Vo2Max           gensupport.JSONFloat64 `json:"vo2Max"`
		Vo2MaxCovariance gensupport.JSONFloat64 `json:"vo2MaxCovariance"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Vo2Max = float64(s1.Vo2Max)
	s.Vo2MaxCovariance = float64(s1.Vo2MaxCovariance)
	return nil
}

// DataPoint: A computed or recorded metric.
type DataPoint struct {
	// ActiveMinutes: Optional. Data for points in the `active-minutes` interval
	// data type collection.
	ActiveMinutes *ActiveMinutes `json:"activeMinutes,omitempty"`
	// ActiveZoneMinutes: Optional. Data for points in the `active-zone-minutes`
	// interval data type collection, measured in minutes.
	ActiveZoneMinutes *ActiveZoneMinutes `json:"activeZoneMinutes,omitempty"`
	// ActivityLevel: Optional. Data for points in the `activity-level` daily data
	// type collection.
	ActivityLevel *ActivityLevel `json:"activityLevel,omitempty"`
	// Altitude: Optional. Data for points in the `altitude` interval data type
	// collection.
	Altitude *Altitude `json:"altitude,omitempty"`
	// BodyFat: Optional. Data for points in the `body-fat` sample data type
	// collection.
	BodyFat *BodyFat `json:"bodyFat,omitempty"`
	// DailyHeartRateVariability: Optional. Data for points in the
	// `daily-heart-rate-variability` daily data type collection.
	DailyHeartRateVariability *DailyHeartRateVariability `json:"dailyHeartRateVariability,omitempty"`
	// DailyHeartRateZones: Optional. Data for points in the
	// `daily-heart-rate-zones` daily data type collection.
	DailyHeartRateZones *DailyHeartRateZones `json:"dailyHeartRateZones,omitempty"`
	// DailyOxygenSaturation: Optional. Data for points in the
	// `daily-oxygen-saturation` daily data type collection.
	DailyOxygenSaturation *DailyOxygenSaturation `json:"dailyOxygenSaturation,omitempty"`
	// DailyRespiratoryRate: Optional. Data for points in the
	// `daily-respiratory-rate` daily data type collection.
	DailyRespiratoryRate *DailyRespiratoryRate `json:"dailyRespiratoryRate,omitempty"`
	// DailyRestingHeartRate: Optional. Data for points in the
	// `daily-resting-heart-rate` daily data type collection.
	DailyRestingHeartRate *DailyRestingHeartRate `json:"dailyRestingHeartRate,omitempty"`
	// DailySleepTemperatureDerivations: Optional. Data for points in the
	// `daily-sleep-temperature-derivations` daily data type collection.
	DailySleepTemperatureDerivations *DailySleepTemperatureDerivations `json:"dailySleepTemperatureDerivations,omitempty"`
	// DailyVo2Max: Optional. Data for points in the `daily-vo2-max` daily data
	// type collection.
	DailyVo2Max *DailyVO2Max `json:"dailyVo2Max,omitempty"`
	// DataSource: Optional. Data source information for the metric
	DataSource *DataSource `json:"dataSource,omitempty"`
	// Distance: Optional. Data for points in the `distance` interval data type
	// collection.
	Distance *Distance `json:"distance,omitempty"`
	// Exercise: Optional. Data for points in the `exercise` session data type
	// collection.
	Exercise *Exercise `json:"exercise,omitempty"`
	// Floors: Optional. Data for points in the `floors` interval data type
	// collection.
	Floors *Floors `json:"floors,omitempty"`
	// HeartRate: Optional. Data for points in the `heart-rate` sample data type
	// collection.
	HeartRate *HeartRate `json:"heartRate,omitempty"`
	// HeartRateVariability: Optional. Data for points in the
	// `heart-rate-variability` sample data type collection.
	HeartRateVariability *HeartRateVariability `json:"heartRateVariability,omitempty"`
	// Height: Optional. Data for points in the `height` sample data type
	// collection.
	Height *Height `json:"height,omitempty"`
	// HydrationLog: Optional. Data for points in the `hydration-log` session data
	// type collection.
	HydrationLog *HydrationLog `json:"hydrationLog,omitempty"`
	// Name: Identifier. Data point name, only supported for the subset of
	// identifiable data types. For the majority of the data types, individual data
	// points do not need to be identified and this field would be empty. Format:
	// `users/{user}/dataTypes/{data_type}/dataPoints/{data_point}` Example:
	// `users/abcd1234/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcd
	// ef` The `{user}` ID is a system-generated identifier, as described in
	// Identity.health_user_id. The `{data_type}` ID corresponds to the kebab-case
	// version of the field names in the DataPoint data union field, e.g.
	// `total-calories` for the `total_calories` field. The `{data_point}` ID can
	// be client-provided or system-generated. If client-provided, it must be a
	// string of 4-63 characters, containing only lowercase letters, numbers, and
	// hyphens.
	Name string `json:"name,omitempty"`
	// OxygenSaturation: Optional. Data for points in the `oxygen-saturation`
	// sample data type collection.
	OxygenSaturation *OxygenSaturation `json:"oxygenSaturation,omitempty"`
	// RespiratoryRateSleepSummary: Optional. Data for points in the
	// `respiratory-rate-sleep-summary` sample data type collection.
	RespiratoryRateSleepSummary *RespiratoryRateSleepSummary `json:"respiratoryRateSleepSummary,omitempty"`
	// RunVo2Max: Optional. Data for points in the `run-vo2-max` sample data type
	// collection.
	RunVo2Max *RunVO2Max `json:"runVo2Max,omitempty"`
	// SedentaryPeriod: Optional. Data for points in the `sedentary-period`
	// interval data type collection.
	SedentaryPeriod *SedentaryPeriod `json:"sedentaryPeriod,omitempty"`
	// Sleep: Optional. Data for points in the `sleep` session data type
	// collection.
	Sleep *Sleep `json:"sleep,omitempty"`
	// Steps: Optional. Data for points in the `steps` interval data type
	// collection.
	Steps *Steps `json:"steps,omitempty"`
	// SwimLengthsData: Optional. Data for points in the `swim-lengths-data`
	// interval data type collection.
	SwimLengthsData *SwimLengthsData `json:"swimLengthsData,omitempty"`
	// TimeInHeartRateZone: Optional. Data for points in the
	// `time-in-heart-rate-zone` interval data type collection.
	TimeInHeartRateZone *TimeInHeartRateZone `json:"timeInHeartRateZone,omitempty"`
	// Vo2Max: Optional. Data for points in the `vo2-max` sample data type
	// collection.
	Vo2Max *VO2Max `json:"vo2Max,omitempty"`
	// Weight: Optional. Data for points in the `weight` sample data type
	// collection.
	Weight *Weight `json:"weight,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "ActiveMinutes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveMinutes") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DataPoint) MarshalJSON() ([]byte, error) {
	type NoMethod DataPoint
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DataSource: Data Source definition to track the origin of data. Each health
// data point, regardless of the complexity or data model (whether a simple
// step count or a detailed sleep session) must retain information about its
// source of origin (e.g. the device or app that collected it).
type DataSource struct {
	// Application: Output only. Captures metadata for the application that
	// provided this data.
	Application *Application `json:"application,omitempty"`
	// Device: Optional. Captures metadata for raw data points originating from
	// devices. We expect this data source to be used for data points written on
	// device sync.
	Device *Device `json:"device,omitempty"`
	// Platform: Output only. Captures the platform that uploaded the data.
	//
	// Possible values:
	//   "PLATFORM_UNSPECIFIED" - The platform is unspecified.
	//   "FITBIT" - The data was uploaded from Fitbit.
	//   "HEALTH_CONNECT" - The data was uploaded from Health Connect.
	//   "HEALTH_KIT" - The data was uploaded from Health Kit.
	//   "FIT" - The data was uploaded from Google Fit.
	//   "FITBIT_WEB_API" - The data was uploaded from Fitbit legacy Web API.
	//   "NEST" - The data was uploaded from Nest devices.
	//   "GOOGLE_WEB_API" - The data was uploaded from Google Health API.
	//   "GOOGLE_PARTNER_INTEGRATION" - The data was uploaded from Google Partner
	// Integrations.
	Platform string `json:"platform,omitempty"`
	// RecordingMethod: Optional. Captures how the data was recorded.
	//
	// Possible values:
	//   "RECORDING_METHOD_UNSPECIFIED" - The recording method is unspecified.
	//   "MANUAL" - The data was manually entered by the user.
	//   "PASSIVELY_MEASURED" - The data was passively measured by a device.
	//   "DERIVED" - The data was derived from other data, e.g., by an algorithm in
	// the backend.
	//   "ACTIVELY_MEASURED" - The data was actively measured by a device.
	//   "UNKNOWN" - The recording method is unknown. This is set when the data is
	// uploaded from a third party app that does not provide this information.
	RecordingMethod string `json:"recordingMethod,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Application") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Application") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DataSource) MarshalJSON() ([]byte, error) {
	type NoMethod DataSource
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Date: Represents a whole or partial calendar date, such as a birthday. The
// time of day and time zone are either specified elsewhere or are
// insignificant. The date is relative to the Gregorian Calendar. This can
// represent one of the following: * A full date, with non-zero year, month,
// and day values. * A month and day, with a zero year (for example, an
// anniversary). * A year on its own, with a zero month and a zero day. * A
// year and month, with a zero day (for example, a credit card expiration
// date). Related types: * google.type.TimeOfDay * google.type.DateTime *
// google.protobuf.Timestamp
type Date struct {
	// Day: Day of a month. Must be from 1 to 31 and valid for the year and month,
	// or 0 to specify a year by itself or a year and month where the day isn't
	// significant.
	Day int64 `json:"day,omitempty"`
	// Month: Month of a year. Must be from 1 to 12, or 0 to specify a year without
	// a month and day.
	Month int64 `json:"month,omitempty"`
	// Year: Year of the date. Must be from 1 to 9999, or 0 to specify a date
	// without a year.
	Year int64 `json:"year,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Day") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Day") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Date) MarshalJSON() ([]byte, error) {
	type NoMethod Date
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DateTime: Represents civil time (or occasionally physical time). This type
// can represent a civil time in one of a few possible ways: * When utc_offset
// is set and time_zone is unset: a civil time on a calendar day with a
// particular offset from UTC. * When time_zone is set and utc_offset is unset:
// a civil time on a calendar day in a particular time zone. * When neither
// time_zone nor utc_offset is set: a civil time on a calendar day in local
// time. The date is relative to the Proleptic Gregorian Calendar. If year,
// month, or day are 0, the DateTime is considered not to have a specific year,
// month, or day respectively. This type may also be used to represent a
// physical time if all the date and time fields are set and either case of the
// `time_offset` oneof is set. Consider using `Timestamp` message for physical
// time instead. If your use case also would like to store the user's timezone,
// that can be done in another field. This type is more flexible than some
// applications may want. Make sure to document and validate your application's
// limitations.
type DateTime struct {
	// Day: Optional. Day of month. Must be from 1 to 31 and valid for the year and
	// month, or 0 if specifying a datetime without a day.
	Day int64 `json:"day,omitempty"`
	// Hours: Optional. Hours of day in 24 hour format. Should be from 0 to 23,
	// defaults to 0 (midnight). An API may choose to allow the value "24:00:00"
	// for scenarios like business closing time.
	Hours int64 `json:"hours,omitempty"`
	// Minutes: Optional. Minutes of hour of day. Must be from 0 to 59, defaults to
	// 0.
	Minutes int64 `json:"minutes,omitempty"`
	// Month: Optional. Month of year. Must be from 1 to 12, or 0 if specifying a
	// datetime without a month.
	Month int64 `json:"month,omitempty"`
	// Nanos: Optional. Fractions of seconds in nanoseconds. Must be from 0 to
	// 999,999,999, defaults to 0.
	Nanos int64 `json:"nanos,omitempty"`
	// Seconds: Optional. Seconds of minutes of the time. Must normally be from 0
	// to 59, defaults to 0. An API may allow the value 60 if it allows
	// leap-seconds.
	Seconds int64 `json:"seconds,omitempty"`
	// TimeZone: Time zone.
	TimeZone *TimeZone `json:"timeZone,omitempty"`
	// UtcOffset: UTC offset. Must be whole seconds, between -18 hours and +18
	// hours. For example, a UTC offset of -4:00 would be represented as { seconds:
	// -14400 }.
	UtcOffset string `json:"utcOffset,omitempty"`
	// Year: Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a
	// datetime without a year.
	Year int64 `json:"year,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Day") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Day") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DateTime) MarshalJSON() ([]byte, error) {
	type NoMethod DateTime
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Device: Captures metadata about the device that recorded the measurement.
type Device struct {
	// DisplayName: Optional. An optional name for the device.
	DisplayName string `json:"displayName,omitempty"`
	// FormFactor: Optional. Captures the form factor of the device.
	//
	// Possible values:
	//   "FORM_FACTOR_UNSPECIFIED" - The form factor is unspecified.
	//   "FITNESS_BAND" - The device is a fitness band.
	//   "WATCH" - The device is a watch.
	//   "PHONE" - The device is a phone.
	//   "RING" - The device is a ring.
	//   "CHEST_STRAP" - The device is a chest strap.
	//   "SCALE" - The device is a scale.
	//   "TABLET" - The device is a tablet.
	//   "HEAD_MOUNTED" - The device is a head mounted device.
	//   "SMART_DISPLAY" - The device is a smart display.
	FormFactor string `json:"formFactor,omitempty"`
	// Manufacturer: Optional. An optional manufacturer of the device.
	Manufacturer string `json:"manufacturer,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisplayName") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Device) MarshalJSON() ([]byte, error) {
	type NoMethod Device
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Distance: Distance traveled over an interval of time.
type Distance struct {
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// Millimeters: Required. Distance in millimeters over the observed interval.
	Millimeters int64 `json:"millimeters,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "Interval") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Interval") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Distance) MarshalJSON() ([]byte, error) {
	type NoMethod Distance
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// DistanceRollupValue: Result of the rollup of the user's distance.
type DistanceRollupValue struct {
	// MillimetersSum: Sum of the distance in millimeters.
	MillimetersSum int64 `json:"millimetersSum,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "MillimetersSum") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MillimetersSum") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s DistanceRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod DistanceRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// EndpointAuthorization: Authorization mechanism for a subscriber endpoint.
// For all requests sent by the Webhooks service, the JSON payload is
// cryptographically signed. The signature is delivered in the
// `X-HEALTHAPI-SIGNATURE` HTTP header. This is an ECDSA (NIST P256) signature
// of the JSON payload. Clients must verify this signature using Google Health
// API's public key to confirm the payload was sent by the Health API.
type EndpointAuthorization struct {
	// Secret: Required. Input only. Provides a client-provided secret that will be
	// sent with each notification to the subscriber endpoint using the
	// "Authorization" header. The value must include the authorization scheme,
	// e.g., "Bearer " or "Basic ", as it will be used as the full Authorization
	// header value. This secret is used by the API to test the endpoint during
	// `CreateSubscriber` and `UpdateSubscriber` calls, and will be sent in the
	// `Authorization` header for all subsequent webhook notifications to this
	// endpoint.
	Secret string `json:"secret,omitempty"`
	// SecretSet: Output only. Whether the secret is set.
	SecretSet bool `json:"secretSet,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Secret") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Secret") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s EndpointAuthorization) MarshalJSON() ([]byte, error) {
	type NoMethod EndpointAuthorization
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Exercise: An exercise that stores information about a physical activity.
type Exercise struct {
	// ActiveDuration: Optional. Duration excluding pauses.
	ActiveDuration string `json:"activeDuration,omitempty"`
	// CreateTime: Output only. Represents the timestamp of the creation of the
	// exercise.
	CreateTime string `json:"createTime,omitempty"`
	// DisplayName: Required. Exercise display name.
	DisplayName string `json:"displayName,omitempty"`
	// ExerciseEvents: Optional. Exercise events that happen during an exercise,
	// such as pause & restarts.
	ExerciseEvents []*ExerciseEvent `json:"exerciseEvents,omitempty"`
	// ExerciseMetadata: Optional. Additional exercise metadata.
	ExerciseMetadata *ExerciseMetadata `json:"exerciseMetadata,omitempty"`
	// ExerciseType: Required. The type of activity performed during an exercise.
	//
	// Possible values:
	//   "EXERCISE_TYPE_UNSPECIFIED" - Exercise type is unspecified.
	//   "RUNNING" - Running type.
	//   "WALKING" - Walking type.
	//   "BIKING" - Biking type.
	//   "SWIMMING" - Swimming type.
	//   "HIKING" - Hiking type.
	//   "YOGA" - Yoga type.
	//   "PILATES" - Pilates type.
	//   "WORKOUT" - Workout type.
	//   "HIIT" - HIIT type.
	//   "WEIGHTLIFTING" - Weightlifting type.
	//   "STRENGTH_TRAINING" - Strength training type.
	//   "OTHER" - Other type.
	ExerciseType string `json:"exerciseType,omitempty"`
	// Interval: Required. Observed exercise interval
	Interval *SessionTimeInterval `json:"interval,omitempty"`
	// MetricsSummary: Required. Summary metrics for this exercise ( )
	MetricsSummary *MetricsSummary `json:"metricsSummary,omitempty"`
	// Notes: Optional. Standard free-form notes captured at manual logging.
	Notes string `json:"notes,omitempty"`
	// SplitSummaries: Optional. Laps or splits recorded within an exercise. Laps
	// could be split based on distance or other criteria (duration, etc.) Laps
	// should not be overlapping with each other.
	SplitSummaries []*SplitSummary `json:"splitSummaries,omitempty"`
	// Splits: Optional. The default split is 1 km or 1 mile. - if the movement
	// distance is less than the default, then there are no splits - if the
	// movement distance is greater than or equal to the default, then we have
	// splits
	Splits []*SplitSummary `json:"splits,omitempty"`
	// UpdateTime: Output only. This is the timestamp of the last update to the
	// exercise.
	UpdateTime string `json:"updateTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveDuration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveDuration") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Exercise) MarshalJSON() ([]byte, error) {
	type NoMethod Exercise
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExerciseEvent: Represents instantaneous events that happen during an
// exercise, such as start, stop, pause, split.
type ExerciseEvent struct {
	// EventTime: Required. Exercise event time
	EventTime string `json:"eventTime,omitempty"`
	// EventUtcOffset: Required. Exercise event time offset from UTC
	EventUtcOffset string `json:"eventUtcOffset,omitempty"`
	// ExerciseEventType: Required. The type of the event, such as start, stop,
	// pause, resume.
	//
	// Possible values:
	//   "EXERCISE_EVENT_TYPE_UNSPECIFIED" - Exercise event type is unspecified.
	//   "START" - Exercise start event.
	//   "STOP" - Exercise stop event.
	//   "PAUSE" - Exercise pause event.
	//   "RESUME" - Exercise resume event.
	//   "AUTO_PAUSE" - Exercise auto-pause event.
	//   "AUTO_RESUME" - Exercise auto-resume event.
	ExerciseEventType string `json:"exerciseEventType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EventTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EventTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExerciseEvent) MarshalJSON() ([]byte, error) {
	type NoMethod ExerciseEvent
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExerciseMetadata: Additional exercise metadata.
type ExerciseMetadata struct {
	// HasGps: Optional. Whether the exercise had GPS tracking.
	HasGps bool `json:"hasGps,omitempty"`
	// PoolLengthMillimeters: Optional. Pool length in millimeters. Only present in
	// the swimming exercises.
	PoolLengthMillimeters int64 `json:"poolLengthMillimeters,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "HasGps") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HasGps") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExerciseMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ExerciseMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ExportExerciseTcxResponse: Represents a Response for exporting exercise data
// in TCX format.
type ExportExerciseTcxResponse struct {
	// TcxData: Contains the exported TCX data.
	TcxData string `json:"tcxData,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "TcxData") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "TcxData") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ExportExerciseTcxResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ExportExerciseTcxResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Floors: Gained elevation measured in floors over the time interval
type Floors struct {
	// Count: Required. Number of floors in the recorded interval
	Count int64 `json:"count,omitempty,string"`
	// Interval: Required. Observed interval
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Count") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Floors) MarshalJSON() ([]byte, error) {
	type NoMethod Floors
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// FloorsRollupValue: Represents the result of the rollup of the user's floors.
type FloorsRollupValue struct {
	// CountSum: Sum of the floors count.
	CountSum int64 `json:"countSum,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "CountSum") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CountSum") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s FloorsRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod FloorsRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// GoogleDevicesandservicesHealthV4DataType: Represents a type of health data a
// user can have data points recorded for. It matches the parent resource of
// collection containing data points of the given type. Clients currently do
// not need to interact with this resource directly.
type GoogleDevicesandservicesHealthV4DataType struct {
	// Name: Identifier. The resource name of the data type. Format:
	// `users/{user}/dataTypes/{data_type}` See DataPoint.name for examples and
	// possible values.
	Name string `json:"name,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Name") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Name") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s GoogleDevicesandservicesHealthV4DataType) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleDevicesandservicesHealthV4DataType
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HeartRate: A heart rate measurement.
type HeartRate struct {
	// BeatsPerMinute: Required. The heart rate value in beats per minute.
	BeatsPerMinute int64 `json:"beatsPerMinute,omitempty,string"`
	// Metadata: Optional. Metadata about the heart rate sample.
	Metadata *HeartRateMetadata `json:"metadata,omitempty"`
	// SampleTime: Required. Observation time
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BeatsPerMinute") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BeatsPerMinute") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HeartRate) MarshalJSON() ([]byte, error) {
	type NoMethod HeartRate
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HeartRateMetadata: Heart rate metadata.
type HeartRateMetadata struct {
	// MotionContext: Optional. Indicates the user’s level of activity when the
	// heart rate sample was measured
	//
	// Possible values:
	//   "MOTION_CONTEXT_UNSPECIFIED" - The default value when no data is
	// available.
	//   "ACTIVE" - The user is active.
	//   "SEDENTARY" - The user is inactive.
	MotionContext string `json:"motionContext,omitempty"`
	// SensorLocation: Optional. Indicates the location of the sensor that measured
	// the heart rate.
	//
	// Possible values:
	//   "SENSOR_LOCATION_UNSPECIFIED" - The default value when no data is
	// available.
	//   "CHEST" - Chest sensor.
	//   "WRIST" - Wrist sensor.
	//   "FINGER" - Finger sensor.
	//   "HAND" - Hand sensor.
	//   "EAR_LOBE" - Ear lobe sensor.
	//   "FOOT" - Foot sensor.
	SensorLocation string `json:"sensorLocation,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MotionContext") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MotionContext") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HeartRateMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod HeartRateMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HeartRateRollupValue: Represents the result of the rollup of the heart rate
// data type.
type HeartRateRollupValue struct {
	// BeatsPerMinuteAvg: The average heart rate value in the interval.
	BeatsPerMinuteAvg float64 `json:"beatsPerMinuteAvg,omitempty"`
	// BeatsPerMinuteMax: The maximum heart rate value in the interval.
	BeatsPerMinuteMax float64 `json:"beatsPerMinuteMax,omitempty"`
	// BeatsPerMinuteMin: The minimum heart rate value in the interval.
	BeatsPerMinuteMin float64 `json:"beatsPerMinuteMin,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BeatsPerMinuteAvg") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BeatsPerMinuteAvg") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HeartRateRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod HeartRateRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *HeartRateRollupValue) UnmarshalJSON(data []byte) error {
	type NoMethod HeartRateRollupValue
	var s1 struct {
		BeatsPerMinuteAvg gensupport.JSONFloat64 `json:"beatsPerMinuteAvg"`
		BeatsPerMinuteMax gensupport.JSONFloat64 `json:"beatsPerMinuteMax"`
		BeatsPerMinuteMin gensupport.JSONFloat64 `json:"beatsPerMinuteMin"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BeatsPerMinuteAvg = float64(s1.BeatsPerMinuteAvg)
	s.BeatsPerMinuteMax = float64(s1.BeatsPerMinuteMax)
	s.BeatsPerMinuteMin = float64(s1.BeatsPerMinuteMin)
	return nil
}

// HeartRateVariability: Captures user's heart rate variability (HRV) as
// measured by the root mean square of successive differences (RMSSD) between
// normal heartbeats or by standard deviation of the inter-beat intervals
// (SDNN).
type HeartRateVariability struct {
	// RootMeanSquareOfSuccessiveDifferencesMilliseconds: Optional. The root mean
	// square of successive differences between normal heartbeats. This is a
	// measure of heart rate variability used by Fitbit.
	RootMeanSquareOfSuccessiveDifferencesMilliseconds float64 `json:"rootMeanSquareOfSuccessiveDifferencesMilliseconds,omitempty"`
	// SampleTime: Required. The time of the heart rate variability measurement.
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// StandardDeviationMilliseconds: Optional. The standard deviation of the heart
	// rate variability measurement.
	StandardDeviationMilliseconds float64 `json:"standardDeviationMilliseconds,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "RootMeanSquareOfSuccessiveDifferencesMilliseconds") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "RootMeanSquareOfSuccessiveDifferencesMilliseconds") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HeartRateVariability) MarshalJSON() ([]byte, error) {
	type NoMethod HeartRateVariability
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *HeartRateVariability) UnmarshalJSON(data []byte) error {
	type NoMethod HeartRateVariability
	var s1 struct {
		RootMeanSquareOfSuccessiveDifferencesMilliseconds gensupport.JSONFloat64 `json:"rootMeanSquareOfSuccessiveDifferencesMilliseconds"`
		StandardDeviationMilliseconds                     gensupport.JSONFloat64 `json:"standardDeviationMilliseconds"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RootMeanSquareOfSuccessiveDifferencesMilliseconds = float64(s1.RootMeanSquareOfSuccessiveDifferencesMilliseconds)
	s.StandardDeviationMilliseconds = float64(s1.StandardDeviationMilliseconds)
	return nil
}

// HeartRateVariabilityPersonalRangeRollupValue: Represents the result of the
// rollup of the user's daily heart rate variability personal range.
type HeartRateVariabilityPersonalRangeRollupValue struct {
	// AverageHeartRateVariabilityMillisecondsMax: The upper bound of the user's
	// average heart rate variability personal range.
	AverageHeartRateVariabilityMillisecondsMax float64 `json:"averageHeartRateVariabilityMillisecondsMax,omitempty"`
	// AverageHeartRateVariabilityMillisecondsMin: The lower bound of the user's
	// average heart rate variability personal range.
	AverageHeartRateVariabilityMillisecondsMin float64 `json:"averageHeartRateVariabilityMillisecondsMin,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "AverageHeartRateVariabilityMillisecondsMax") to unconditionally include in
	// API requests. By default, fields with empty or default values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "AverageHeartRateVariabilityMillisecondsMax") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HeartRateVariabilityPersonalRangeRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod HeartRateVariabilityPersonalRangeRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *HeartRateVariabilityPersonalRangeRollupValue) UnmarshalJSON(data []byte) error {
	type NoMethod HeartRateVariabilityPersonalRangeRollupValue
	var s1 struct {
		AverageHeartRateVariabilityMillisecondsMax gensupport.JSONFloat64 `json:"averageHeartRateVariabilityMillisecondsMax"`
		AverageHeartRateVariabilityMillisecondsMin gensupport.JSONFloat64 `json:"averageHeartRateVariabilityMillisecondsMin"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AverageHeartRateVariabilityMillisecondsMax = float64(s1.AverageHeartRateVariabilityMillisecondsMax)
	s.AverageHeartRateVariabilityMillisecondsMin = float64(s1.AverageHeartRateVariabilityMillisecondsMin)
	return nil
}

// HeartRateZone: The heart rate zone.
type HeartRateZone struct {
	// HeartRateZoneType: Required. The heart rate zone type.
	//
	// Possible values:
	//   "HEART_RATE_ZONE_TYPE_UNSPECIFIED" - Unspecified heart rate zone.
	//   "LIGHT" - The light heart rate zone.
	//   "MODERATE" - The moderate heart rate zone.
	//   "VIGOROUS" - The vigorous heart rate zone.
	//   "PEAK" - The peak heart rate zone.
	HeartRateZoneType string `json:"heartRateZoneType,omitempty"`
	// MaxBeatsPerMinute: Required. Maximum heart rate for this zone in beats per
	// minute.
	MaxBeatsPerMinute int64 `json:"maxBeatsPerMinute,omitempty,string"`
	// MinBeatsPerMinute: Required. Minimum heart rate for this zone in beats per
	// minute.
	MinBeatsPerMinute int64 `json:"minBeatsPerMinute,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "HeartRateZoneType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HeartRateZoneType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HeartRateZone) MarshalJSON() ([]byte, error) {
	type NoMethod HeartRateZone
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Height: Body height measurement.
type Height struct {
	// HeightMillimeters: Required. Height of the user in millimeters.
	HeightMillimeters int64 `json:"heightMillimeters,omitempty,string"`
	// SampleTime: Required. The time at which the height was recorded.
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HeightMillimeters") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HeightMillimeters") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Height) MarshalJSON() ([]byte, error) {
	type NoMethod Height
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HttpHeader: Represents an HTTP header.
type HttpHeader struct {
	// Key: The HTTP header key. It is case insensitive.
	Key string `json:"key,omitempty"`
	// Value: The HTTP header value.
	Value string `json:"value,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Key") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Key") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HttpHeader) MarshalJSON() ([]byte, error) {
	type NoMethod HttpHeader
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HttpResponse: Represents an HTTP response.
type HttpResponse struct {
	// Body: The HTTP response body. If the body is not expected, it should be
	// empty.
	Body string `json:"body,omitempty"`
	// Headers: The HTTP response headers. The ordering of the headers is
	// significant. Multiple headers with the same key may present for the
	// response.
	Headers []*HttpHeader `json:"headers,omitempty"`
	// Reason: The HTTP reason phrase, such as "OK" or "Not Found".
	Reason string `json:"reason,omitempty"`
	// Status: The HTTP status code, such as 200 or 404.
	Status int64 `json:"status,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Body") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Body") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HttpResponse) MarshalJSON() ([]byte, error) {
	type NoMethod HttpResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HydrationLog: Holds information about a user logged hydration.
type HydrationLog struct {
	// AmountConsumed: Required. Amount of liquid (ex. water) consumed.
	AmountConsumed *VolumeQuantity `json:"amountConsumed,omitempty"`
	// Interval: Required. Observed interval.
	Interval *SessionTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AmountConsumed") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AmountConsumed") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HydrationLog) MarshalJSON() ([]byte, error) {
	type NoMethod HydrationLog
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// HydrationLogRollupValue: Represents the result of the rollup of the
// hydration log data type.
type HydrationLogRollupValue struct {
	// AmountConsumed: Rollup for amount consumed.
	AmountConsumed *VolumeQuantityRollup `json:"amountConsumed,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AmountConsumed") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AmountConsumed") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s HydrationLogRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod HydrationLogRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Identity: Represents details about the Google user's identity.
type Identity struct {
	// HealthUserId: Output only. The Google User Identifier in the Google Health
	// APIs. It matches the `{user}` resource ID segment in the resource name
	// paths, e.g. `users/{user}/dataTypes/steps`. Valid values are strings of 1-63
	// characters, and valid characters are lowercase and uppercase letters,
	// numbers, and hyphens.
	HealthUserId string `json:"healthUserId,omitempty"`
	// LegacyUserId: Output only. The legacy Fitbit User identifier. This is the
	// Fitbit ID used in the legacy Fitbit APIs (v1-v3). It can be referenced by
	// clients migrating from the legacy Fitbit APIs to map their existing
	// identifiers to the new Google user ID. It **must not** be used for any other
	// purpose. It is not of any use for new clients using only the Google Health
	// APIs. Valid values are strings of 1-63 characters, and valid characters are
	// lowercase and uppercase letters, numbers, and hyphens.
	LegacyUserId string `json:"legacyUserId,omitempty"`
	// Name: Identifier. The resource name of this Identity resource. Format:
	// `users/me/identity`
	Name string `json:"name,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "HealthUserId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HealthUserId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Identity) MarshalJSON() ([]byte, error) {
	type NoMethod Identity
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Interval: Represents a time interval, encoded as a Timestamp start
// (inclusive) and a Timestamp end (exclusive). The start must be less than or
// equal to the end. When the start equals the end, the interval is empty
// (matches no time). When both start and end are unspecified, the interval
// matches any time.
type Interval struct {
	// EndTime: Optional. Exclusive end of the interval. If specified, a Timestamp
	// matching this interval will have to be before the end.
	EndTime string `json:"endTime,omitempty"`
	// StartTime: Optional. Inclusive start of the interval. If specified, a
	// Timestamp matching this interval will have to be the same or after the
	// start.
	StartTime string `json:"startTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTime") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Interval) MarshalJSON() ([]byte, error) {
	type NoMethod Interval
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListDataPointsResponse: Response containing raw data points matching the
// query
type ListDataPointsResponse struct {
	// DataPoints: Data points matching the query
	DataPoints []*DataPoint `json:"dataPoints,omitempty"`
	// NextPageToken: Next page token, empty if the response is complete
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DataPoints") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DataPoints") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListDataPointsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListDataPointsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ListSubscribersResponse: Response message for ListSubscribers.
type ListSubscribersResponse struct {
	// NextPageToken: A token, which can be sent as `page_token` to retrieve the
	// next page. If this field is omitted, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Subscribers: Subscribers from the specified project.
	Subscribers []*Subscriber `json:"subscribers,omitempty"`
	// TotalSize: The total number of subscribers matching the request.
	TotalSize int64 `json:"totalSize,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ListSubscribersResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListSubscribersResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// MetricsSummary: Summary metrics for an exercise.
type MetricsSummary struct {
	// ActiveZoneMinutes: Optional. Total active zone minutes for the exercise.
	ActiveZoneMinutes int64 `json:"activeZoneMinutes,omitempty,string"`
	// AverageHeartRateBeatsPerMinute: Optional. Average heart rate during the
	// exercise.
	AverageHeartRateBeatsPerMinute int64 `json:"averageHeartRateBeatsPerMinute,omitempty,string"`
	// AveragePaceSecondsPerMeter: Optional. Average pace in seconds per meter.
	AveragePaceSecondsPerMeter float64 `json:"averagePaceSecondsPerMeter,omitempty"`
	// AverageSpeedMillimetersPerSecond: Optional. Average speed in millimeters per
	// second.
	AverageSpeedMillimetersPerSecond float64 `json:"averageSpeedMillimetersPerSecond,omitempty"`
	// CaloriesKcal: Optional. Total calories burned by the user during the
	// exercise.
	CaloriesKcal float64 `json:"caloriesKcal,omitempty"`
	// DistanceMillimeters: Optional. Total distance covered by the user during the
	// exercise.
	DistanceMillimeters float64 `json:"distanceMillimeters,omitempty"`
	// ElevationGainMillimeters: Optional. Total elevation gain during the
	// exercise.
	ElevationGainMillimeters float64 `json:"elevationGainMillimeters,omitempty"`
	// HeartRateZoneDurations: Optional. Time spent in each heart rate zone.
	HeartRateZoneDurations *TimeInHeartRateZones `json:"heartRateZoneDurations,omitempty"`
	// MobilityMetrics: Optional. Mobility workouts specific metrics. Only present
	// in the advanced running exercises.
	MobilityMetrics *MobilityMetrics `json:"mobilityMetrics,omitempty"`
	// RunVo2Max: Optional. Run VO2 max value for the exercise. Only present in the
	// running exercises at the top level as in the summary of the whole exercise.
	RunVo2Max float64 `json:"runVo2Max,omitempty"`
	// Steps: Optional. Total steps taken during the exercise.
	Steps int64 `json:"steps,omitempty,string"`
	// TotalSwimLengths: Optional. Number of full pool lengths completed during the
	// exercise. Only present in the swimming exercises at the top level as in the
	// summary of the whole exercise.
	TotalSwimLengths float64 `json:"totalSwimLengths,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveZoneMinutes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveZoneMinutes") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MetricsSummary) MarshalJSON() ([]byte, error) {
	type NoMethod MetricsSummary
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *MetricsSummary) UnmarshalJSON(data []byte) error {
	type NoMethod MetricsSummary
	var s1 struct {
		AveragePaceSecondsPerMeter       gensupport.JSONFloat64 `json:"averagePaceSecondsPerMeter"`
		AverageSpeedMillimetersPerSecond gensupport.JSONFloat64 `json:"averageSpeedMillimetersPerSecond"`
		CaloriesKcal                     gensupport.JSONFloat64 `json:"caloriesKcal"`
		DistanceMillimeters              gensupport.JSONFloat64 `json:"distanceMillimeters"`
		ElevationGainMillimeters         gensupport.JSONFloat64 `json:"elevationGainMillimeters"`
		RunVo2Max                        gensupport.JSONFloat64 `json:"runVo2Max"`
		TotalSwimLengths                 gensupport.JSONFloat64 `json:"totalSwimLengths"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AveragePaceSecondsPerMeter = float64(s1.AveragePaceSecondsPerMeter)
	s.AverageSpeedMillimetersPerSecond = float64(s1.AverageSpeedMillimetersPerSecond)
	s.CaloriesKcal = float64(s1.CaloriesKcal)
	s.DistanceMillimeters = float64(s1.DistanceMillimeters)
	s.ElevationGainMillimeters = float64(s1.ElevationGainMillimeters)
	s.RunVo2Max = float64(s1.RunVo2Max)
	s.TotalSwimLengths = float64(s1.TotalSwimLengths)
	return nil
}

// MobilityMetrics: Mobility workouts specific metrics
type MobilityMetrics struct {
	// AvgCadenceStepsPerMinute: Optional. Cadence is a measure of the frequency of
	// your foot strikes. Steps / min in real time during workout.
	AvgCadenceStepsPerMinute float64 `json:"avgCadenceStepsPerMinute,omitempty"`
	// AvgGroundContactTimeDuration: Optional. The ground contact time for a
	// particular stride is the amount of time for which the foot was in contact
	// with the ground on that stride
	AvgGroundContactTimeDuration string `json:"avgGroundContactTimeDuration,omitempty"`
	// AvgStrideLengthMillimeters: Optional. Stride length is a measure of the
	// distance covered by a single stride
	AvgStrideLengthMillimeters int64 `json:"avgStrideLengthMillimeters,omitempty,string"`
	// AvgVerticalOscillationMillimeters: Optional. Distance off the ground your
	// center of mass moves with each stride while running
	AvgVerticalOscillationMillimeters int64 `json:"avgVerticalOscillationMillimeters,omitempty,string"`
	// AvgVerticalRatio: Optional. Vertical oscillation/stride length between [5.0,
	// 11.0].
	AvgVerticalRatio float64 `json:"avgVerticalRatio,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AvgCadenceStepsPerMinute")
	// to unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AvgCadenceStepsPerMinute") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s MobilityMetrics) MarshalJSON() ([]byte, error) {
	type NoMethod MobilityMetrics
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *MobilityMetrics) UnmarshalJSON(data []byte) error {
	type NoMethod MobilityMetrics
	var s1 struct {
		AvgCadenceStepsPerMinute gensupport.JSONFloat64 `json:"avgCadenceStepsPerMinute"`
		AvgVerticalRatio         gensupport.JSONFloat64 `json:"avgVerticalRatio"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.AvgCadenceStepsPerMinute = float64(s1.AvgCadenceStepsPerMinute)
	s.AvgVerticalRatio = float64(s1.AvgVerticalRatio)
	return nil
}

// ObservationSampleTime: Represents a sample time of an observed data point.
type ObservationSampleTime struct {
	// CivilTime: Output only. The civil time in the timezone the subject is in at
	// the time of the observation.
	CivilTime *CivilDateTime `json:"civilTime,omitempty"`
	// PhysicalTime: Required. The time of the observation.
	PhysicalTime string `json:"physicalTime,omitempty"`
	// UtcOffset: Required. The offset of the user's local time during the
	// observation relative to the Coordinated Universal Time (UTC).
	UtcOffset string `json:"utcOffset,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CivilTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CivilTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ObservationSampleTime) MarshalJSON() ([]byte, error) {
	type NoMethod ObservationSampleTime
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ObservationTimeInterval: Represents a time interval of an observed data
// point.
type ObservationTimeInterval struct {
	// CivilEndTime: Output only. Observed interval end time in civil time in the
	// timezone the subject is in at the end of the observed interval
	CivilEndTime *CivilDateTime `json:"civilEndTime,omitempty"`
	// CivilStartTime: Output only. Observed interval start time in civil time in
	// the timezone the subject is in at the start of the observed interval
	CivilStartTime *CivilDateTime `json:"civilStartTime,omitempty"`
	// EndTime: Required. Observed interval end time.
	EndTime string `json:"endTime,omitempty"`
	// EndUtcOffset: Required. The offset of the user's local time at the end of
	// the observation relative to the Coordinated Universal Time (UTC).
	EndUtcOffset string `json:"endUtcOffset,omitempty"`
	// StartTime: Required. Observed interval start time.
	StartTime string `json:"startTime,omitempty"`
	// StartUtcOffset: Required. The offset of the user's local time at the start
	// of the observation relative to the Coordinated Universal Time (UTC).
	StartUtcOffset string `json:"startUtcOffset,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CivilEndTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CivilEndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ObservationTimeInterval) MarshalJSON() ([]byte, error) {
	type NoMethod ObservationTimeInterval
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Operation: This resource represents a long-running operation that is the
// result of a network API call.
type Operation struct {
	// Done: If the value is `false`, it means the operation is still in progress.
	// If `true`, the operation is completed, and either `error` or `response` is
	// available.
	Done bool `json:"done,omitempty"`
	// Error: The error result of the operation in case of failure or cancellation.
	Error *Status `json:"error,omitempty"`
	// Metadata: Service-specific metadata associated with the operation. It
	// typically contains progress information and common metadata such as create
	// time. Some services might not provide such metadata. Any method that returns
	// a long-running operation should document the metadata type, if any.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`
	// Name: The server-assigned name, which is only unique within the same service
	// that originally returns it. If you use the default HTTP mapping, the `name`
	// should be a resource name ending with `operations/{unique_id}`.
	Name string `json:"name,omitempty"`
	// Response: The normal, successful response of the operation. If the original
	// method returns no data on success, such as `Delete`, the response is
	// `google.protobuf.Empty`. If the original method is standard
	// `Get`/`Create`/`Update`, the response should be the resource. For other
	// methods, the response should have the type `XxxResponse`, where `Xxx` is the
	// original method name. For example, if the original method name is
	// `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
	Response googleapi.RawMessage `json:"response,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Done") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Done") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Operation) MarshalJSON() ([]byte, error) {
	type NoMethod Operation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OutOfBedSegment: A time interval to represent an out-of-bed segment.
type OutOfBedSegment struct {
	// EndTime: Required. Segment end time.
	EndTime string `json:"endTime,omitempty"`
	// EndUtcOffset: Required. The offset of the user's local time at the end of
	// the segment relative to the Coordinated Universal Time (UTC).
	EndUtcOffset string `json:"endUtcOffset,omitempty"`
	// StartTime: Required. Segment tart time.
	StartTime string `json:"startTime,omitempty"`
	// StartUtcOffset: Required. The offset of the user's local time at the start
	// of the segment relative to the Coordinated Universal Time (UTC).
	StartUtcOffset string `json:"startUtcOffset,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTime") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OutOfBedSegment) MarshalJSON() ([]byte, error) {
	type NoMethod OutOfBedSegment
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// OxygenSaturation: Captures the user's instantaneous oxygen saturation
// percentage (SpO2).
type OxygenSaturation struct {
	// Percentage: Required. The oxygen saturation percentage. Valid values are
	// from 0 to 100.
	Percentage float64 `json:"percentage,omitempty"`
	// SampleTime: Required. The time at which oxygen saturation was measured.
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Percentage") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Percentage") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s OxygenSaturation) MarshalJSON() ([]byte, error) {
	type NoMethod OxygenSaturation
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *OxygenSaturation) UnmarshalJSON(data []byte) error {
	type NoMethod OxygenSaturation
	var s1 struct {
		Percentage gensupport.JSONFloat64 `json:"percentage"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Percentage = float64(s1.Percentage)
	return nil
}

// Profile: Profile details.
type Profile struct {
	// Age: Optional. The age in years based on the user's birth date. Updates to
	// this field are currently not supported.
	Age int64 `json:"age,omitempty"`
	// AutoRunningStrideLengthMm: Output only. The automatically calculated running
	// stride length, in millimeters. The user must consent to one of the following
	// access scopes to access this field: -
	// `https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly`
	// - `https://www.googleapis.com/auth/googlehealth.activity_and_fitness`
	AutoRunningStrideLengthMm int64 `json:"autoRunningStrideLengthMm,omitempty"`
	// AutoWalkingStrideLengthMm: Output only. The automatically calculated walking
	// stride length, in millimeters. The user must consent to one of the following
	// access scopes to access this field: -
	// `https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly`
	// - `https://www.googleapis.com/auth/googlehealth.activity_and_fitness`
	AutoWalkingStrideLengthMm int64 `json:"autoWalkingStrideLengthMm,omitempty"`
	// MembershipStartDate: Output only. The date the user created their account.
	// Updates to this field are currently not supported.
	MembershipStartDate *Date `json:"membershipStartDate,omitempty"`
	// Name: Identifier. The resource name of this Profile resource. Format:
	// `users/{user}/profile` Example: `users/1234567890/profile` or
	// `users/me/profile` The {user} ID is a system-generated Google Health API
	// user ID, a string of 1-63 characters consisting of lowercase and uppercase
	// letters, numbers, and hyphens. The literal `me` can also be used to refer to
	// the authenticated user.
	Name string `json:"name,omitempty"`
	// UserConfiguredRunningStrideLengthMm: Optional. The user's user configured
	// running stride length, in millimeters. The user must consent to one of the
	// following access scopes to access this field: -
	// `https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly`
	// - `https://www.googleapis.com/auth/googlehealth.activity_and_fitness`
	UserConfiguredRunningStrideLengthMm int64 `json:"userConfiguredRunningStrideLengthMm,omitempty"`
	// UserConfiguredWalkingStrideLengthMm: Optional. The user's user configured
	// walking stride length, in millimeters. The user must consent to one of the
	// following access scopes to access this field: -
	// `https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly`
	// - `https://www.googleapis.com/auth/googlehealth.activity_and_fitness`
	UserConfiguredWalkingStrideLengthMm int64 `json:"userConfiguredWalkingStrideLengthMm,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "Age") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Age") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Profile) MarshalJSON() ([]byte, error) {
	type NoMethod Profile
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReconcileDataPointsResponse: Response containing the list of reconciled
// DataPoints.
type ReconcileDataPointsResponse struct {
	// DataPoints: Data points matching the query
	DataPoints []*ReconciledDataPoint `json:"dataPoints,omitempty"`
	// NextPageToken: Next page token, empty if the response is complete
	NextPageToken string `json:"nextPageToken,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "DataPoints") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DataPoints") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReconcileDataPointsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ReconcileDataPointsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// ReconciledDataPoint: A reconciled computed or recorded metric.
type ReconciledDataPoint struct {
	// ActiveMinutes: Data for points in the `active-minutes` interval data type
	// collection.
	ActiveMinutes *ActiveMinutes `json:"activeMinutes,omitempty"`
	// ActiveZoneMinutes: Data for points in the `active-zone-minutes` interval
	// data type collection, measured in minutes.
	ActiveZoneMinutes *ActiveZoneMinutes `json:"activeZoneMinutes,omitempty"`
	// ActivityLevel: Data for points in the `activity-level` daily data type
	// collection.
	ActivityLevel *ActivityLevel `json:"activityLevel,omitempty"`
	// Altitude: Data for points in the `altitude` interval data type collection.
	Altitude *Altitude `json:"altitude,omitempty"`
	// BodyFat: Data for points in the `body-fat` sample data type collection.
	BodyFat *BodyFat `json:"bodyFat,omitempty"`
	// DailyHeartRateVariability: Data for points in the
	// `daily-heart-rate-variability` daily data type collection.
	DailyHeartRateVariability *DailyHeartRateVariability `json:"dailyHeartRateVariability,omitempty"`
	// DailyHeartRateZones: Data for points in the `daily-heart-rate-zones` daily
	// data type collection.
	DailyHeartRateZones *DailyHeartRateZones `json:"dailyHeartRateZones,omitempty"`
	// DailyOxygenSaturation: Data for points in the `daily-oxygen-saturation`
	// daily data type collection.
	DailyOxygenSaturation *DailyOxygenSaturation `json:"dailyOxygenSaturation,omitempty"`
	// DailyRespiratoryRate: Data for points in the `daily-respiratory-rate` daily
	// data type collection.
	DailyRespiratoryRate *DailyRespiratoryRate `json:"dailyRespiratoryRate,omitempty"`
	// DailyRestingHeartRate: Data for points in the `daily-resting-heart-rate`
	// daily data type collection.
	DailyRestingHeartRate *DailyRestingHeartRate `json:"dailyRestingHeartRate,omitempty"`
	// DailySleepTemperatureDerivations: Data for points in the
	// `daily-sleep-temperature-derivations` daily data type collection.
	DailySleepTemperatureDerivations *DailySleepTemperatureDerivations `json:"dailySleepTemperatureDerivations,omitempty"`
	// DailyVo2Max: Data for points in the `daily-vo2-max` daily data type
	// collection.
	DailyVo2Max *DailyVO2Max `json:"dailyVo2Max,omitempty"`
	// DataPointName: Identifier. Data point name, only supported for the subset of
	// identifiable data types. For the majority of the data types, individual data
	// points do not need to be identified and this field would be empty. Format:
	// `users/{user}/dataTypes/{data_type}/dataPoints/{data_point}` Example:
	// `users/abcd1234/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890abcd
	// ef` The `{user}` ID is a system-generated identifier, as described in
	// Identity.health_user_id. The `{data_type}` ID corresponds to the kebab-case
	// version of the field names in the DataPoint data union field, e.g.
	// `total-calories` for the `total_calories` field. The `{data_point}` ID can
	// be client-provided or system-generated. If client-provided, it must be a
	// string of 4-63 characters, containing only lowercase letters, numbers, and
	// hyphens.
	DataPointName string `json:"dataPointName,omitempty"`
	// Distance: Data for points in the `distance` interval data type collection.
	Distance *Distance `json:"distance,omitempty"`
	// Exercise: Data for points in the `exercise` session data type collection.
	Exercise *Exercise `json:"exercise,omitempty"`
	// Floors: Data for points in the `floors` interval data type collection.
	Floors *Floors `json:"floors,omitempty"`
	// HeartRate: Data for points in the `heart-rate` sample data type collection.
	HeartRate *HeartRate `json:"heartRate,omitempty"`
	// HeartRateVariability: Data for points in the `heart-rate-variability` sample
	// data type collection.
	HeartRateVariability *HeartRateVariability `json:"heartRateVariability,omitempty"`
	// Height: Data for points in the `height` sample data type collection.
	Height *Height `json:"height,omitempty"`
	// HydrationLog: Data for points in the `hydration-log` session data type
	// collection.
	HydrationLog *HydrationLog `json:"hydrationLog,omitempty"`
	// OxygenSaturation: Data for points in the `oxygen-saturation` sample data
	// type collection.
	OxygenSaturation *OxygenSaturation `json:"oxygenSaturation,omitempty"`
	// RespiratoryRateSleepSummary: Data for points in the
	// `respiratory-rate-sleep-summary` sample data type collection.
	RespiratoryRateSleepSummary *RespiratoryRateSleepSummary `json:"respiratoryRateSleepSummary,omitempty"`
	// RunVo2Max: Data for points in the `run-vo2-max` sample data type collection.
	RunVo2Max *RunVO2Max `json:"runVo2Max,omitempty"`
	// SedentaryPeriod: Data for points in the `sedentary-period` interval data
	// type collection.
	SedentaryPeriod *SedentaryPeriod `json:"sedentaryPeriod,omitempty"`
	// Sleep: Data for points in the `sleep` session data type collection.
	Sleep *Sleep `json:"sleep,omitempty"`
	// Steps: Data for points in the `steps` interval data type collection.
	Steps *Steps `json:"steps,omitempty"`
	// SwimLengthsData: Data for points in the `swim-lengths-data` interval data
	// type collection.
	SwimLengthsData *SwimLengthsData `json:"swimLengthsData,omitempty"`
	// TimeInHeartRateZone: Data for points in the `time-in-heart-rate-zone`
	// interval data type collection.
	TimeInHeartRateZone *TimeInHeartRateZone `json:"timeInHeartRateZone,omitempty"`
	// Vo2Max: Data for points in the `vo2-max` sample data type collection.
	Vo2Max *VO2Max `json:"vo2Max,omitempty"`
	// Weight: Data for points in the `weight` sample data type collection.
	Weight *Weight `json:"weight,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveMinutes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveMinutes") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s ReconciledDataPoint) MarshalJSON() ([]byte, error) {
	type NoMethod ReconciledDataPoint
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RespiratoryRateSleepSummary: Records respiratory rate details during sleep.
// Can have multiple per day if the user sleeps multiple times.
type RespiratoryRateSleepSummary struct {
	// DeepSleepStats: Optional. Respiratory rate statistics for deep sleep.
	DeepSleepStats *RespiratoryRateSleepSummaryStatistics `json:"deepSleepStats,omitempty"`
	// FullSleepStats: Required. Full respiratory rate statistics.
	FullSleepStats *RespiratoryRateSleepSummaryStatistics `json:"fullSleepStats,omitempty"`
	// LightSleepStats: Optional. Respiratory rate statistics for light sleep.
	LightSleepStats *RespiratoryRateSleepSummaryStatistics `json:"lightSleepStats,omitempty"`
	// RemSleepStats: Optional. Respiratory rate statistics for REM sleep.
	RemSleepStats *RespiratoryRateSleepSummaryStatistics `json:"remSleepStats,omitempty"`
	// SampleTime: Required. The time at which respiratory rate was measured.
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeepSleepStats") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DeepSleepStats") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RespiratoryRateSleepSummary) MarshalJSON() ([]byte, error) {
	type NoMethod RespiratoryRateSleepSummary
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RespiratoryRateSleepSummaryStatistics: Respiratory rate statistics for a
// given sleep stage.
type RespiratoryRateSleepSummaryStatistics struct {
	// BreathsPerMinute: Required. Average breaths per minute.
	BreathsPerMinute float64 `json:"breathsPerMinute,omitempty"`
	// SignalToNoise: Optional. How trustworthy the data is for the computation.
	SignalToNoise float64 `json:"signalToNoise,omitempty"`
	// StandardDeviation: Optional. Standard deviation of the respiratory rate
	// during sleep.
	StandardDeviation float64 `json:"standardDeviation,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BreathsPerMinute") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BreathsPerMinute") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RespiratoryRateSleepSummaryStatistics) MarshalJSON() ([]byte, error) {
	type NoMethod RespiratoryRateSleepSummaryStatistics
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *RespiratoryRateSleepSummaryStatistics) UnmarshalJSON(data []byte) error {
	type NoMethod RespiratoryRateSleepSummaryStatistics
	var s1 struct {
		BreathsPerMinute  gensupport.JSONFloat64 `json:"breathsPerMinute"`
		SignalToNoise     gensupport.JSONFloat64 `json:"signalToNoise"`
		StandardDeviation gensupport.JSONFloat64 `json:"standardDeviation"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BreathsPerMinute = float64(s1.BreathsPerMinute)
	s.SignalToNoise = float64(s1.SignalToNoise)
	s.StandardDeviation = float64(s1.StandardDeviation)
	return nil
}

// RestingHeartRatePersonalRangeRollupValue: Represents the rollup value for
// the daily resting heart rate data type.
type RestingHeartRatePersonalRangeRollupValue struct {
	// BeatsPerMinuteMax: The upper bound of the user's daily resting heart rate
	// personal range.
	BeatsPerMinuteMax float64 `json:"beatsPerMinuteMax,omitempty"`
	// BeatsPerMinuteMin: The lower bound of the user's daily resting heart rate
	// personal range.
	BeatsPerMinuteMin float64 `json:"beatsPerMinuteMin,omitempty"`
	// ForceSendFields is a list of field names (e.g. "BeatsPerMinuteMax") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "BeatsPerMinuteMax") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RestingHeartRatePersonalRangeRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod RestingHeartRatePersonalRangeRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *RestingHeartRatePersonalRangeRollupValue) UnmarshalJSON(data []byte) error {
	type NoMethod RestingHeartRatePersonalRangeRollupValue
	var s1 struct {
		BeatsPerMinuteMax gensupport.JSONFloat64 `json:"beatsPerMinuteMax"`
		BeatsPerMinuteMin gensupport.JSONFloat64 `json:"beatsPerMinuteMin"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.BeatsPerMinuteMax = float64(s1.BeatsPerMinuteMax)
	s.BeatsPerMinuteMin = float64(s1.BeatsPerMinuteMin)
	return nil
}

// RollUpDataPointsRequest: Request to roll up data points by physical time
// intervals.
type RollUpDataPointsRequest struct {
	// DataSourceFamily: Optional. The data source family name to roll up. If
	// empty, data points from all available data sources will be rolled up.
	// Format: `users/me/dataSourceFamilies/{data_source_family}` The supported
	// values are: - `users/me/dataSourceFamilies/all-sources` - default value -
	// `users/me/dataSourceFamilies/google-wearables` - tracker devices -
	// `users/me/dataSourceFamilies/google-sources` - Google first party sources
	DataSourceFamily string `json:"dataSourceFamily,omitempty"`
	// PageSize: Optional. The maximum number of data points to return. If
	// unspecified, at most 1440 data points will be returned. The maximum page
	// size is 10000; values above that will be truncated accordingly.
	PageSize int64 `json:"pageSize,omitempty"`
	// PageToken: Optional. The next_page_token from a previous request, if any.
	// All other request fields need to be the same as in the initial request when
	// the page token is specified.
	PageToken string `json:"pageToken,omitempty"`
	// Range: Required. Closed-open range of data points that will be rolled up.
	// The maximum range for `calories-in-heart-rate-zone`, `heart-rate`,
	// `active-minutes` and `total-calories` is 14 days. The maximum range for all
	// other data types is 90 days.
	Range *Interval `json:"range,omitempty"`
	// WindowSize: Required. The size of the time window to group data points into
	// before applying the aggregation functions.
	WindowSize string `json:"windowSize,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DataSourceFamily") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DataSourceFamily") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RollUpDataPointsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod RollUpDataPointsRequest
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RollUpDataPointsResponse: Response containing the list of rolled up data
// points.
type RollUpDataPointsResponse struct {
	// NextPageToken: A token, which can be sent as `page_token` to retrieve the
	// next page. If this field is omitted, there are no subsequent pages.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// RollupDataPoints: Values for each aggregation time window.
	RollupDataPoints []*RollupDataPoint `json:"rollupDataPoints,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "NextPageToken") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "NextPageToken") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RollUpDataPointsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod RollUpDataPointsResponse
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RollupDataPoint: Value of a rollup for a single physical time interval
// (aggregation window)
type RollupDataPoint struct {
	// ActiveMinutes: Returned by default when rolling up data points from the
	// `active-minutes` data type, or when requested explicitly using the
	// `active-minutes` rollup type identifier.
	ActiveMinutes *ActiveMinutesRollupValue `json:"activeMinutes,omitempty"`
	// ActiveZoneMinutes: Returned by default when rolling up data points from the
	// `active-zone-minutes` data type, or when requested explicitly using the
	// `active-zone-minutes` rollup type identifier.
	ActiveZoneMinutes *ActiveZoneMinutesRollupValue `json:"activeZoneMinutes,omitempty"`
	// ActivityLevel: Returned by default when rolling up data points from the
	// `activity-level` data type, or when requested explicitly using the
	// `activity-level` rollup type identifier.
	ActivityLevel *ActivityLevelRollupValue `json:"activityLevel,omitempty"`
	// Altitude: Returned by default when rolling up data points from the
	// `altitude` data type, or when requested explicitly using the `altitude`
	// rollup type identifier.
	Altitude *AltitudeRollupValue `json:"altitude,omitempty"`
	// BodyFat: Returned by default when rolling up data points from the `body-fat`
	// data type, or when requested explicitly using the `body-fat` rollup type
	// identifier.
	BodyFat *BodyFatRollupValue `json:"bodyFat,omitempty"`
	// CaloriesInHeartRateZone: Returned by default when rolling up data points
	// from the `calories-in-heart-rate-zone` data type, or when requested
	// explicitly using the `calories-in-heart-rate-zone` rollup type identifier.
	CaloriesInHeartRateZone *CaloriesInHeartRateZoneRollupValue `json:"caloriesInHeartRateZone,omitempty"`
	// Distance: Returned by default when rolling up data points from the
	// `distance` data type, or when requested explicitly using the `distance`
	// rollup type identifier.
	Distance *DistanceRollupValue `json:"distance,omitempty"`
	// EndTime: End time of the window this value aggregates over
	EndTime string `json:"endTime,omitempty"`
	// Floors: Returned by default when rolling up data points from the `floors`
	// data type, or when requested explicitly using the `floors` rollup type
	// identifier.
	Floors *FloorsRollupValue `json:"floors,omitempty"`
	// HeartRate: Returned by default when rolling up data points from the
	// `heart-rate` data type, or when requested explicitly using the `heart-rate`
	// rollup type identifier.
	HeartRate *HeartRateRollupValue `json:"heartRate,omitempty"`
	// HydrationLog: Returned by default when rolling up data points from the
	// `hydration-log` data type, or when requested explicitly using the
	// `hydration-log` rollup type identifier.
	HydrationLog *HydrationLogRollupValue `json:"hydrationLog,omitempty"`
	// RunVo2Max: Returned by default when rolling up data points from the
	// `run-vo2-max` data type, or when requested explicitly using the
	// `run-vo2-max` rollup type identifier.
	RunVo2Max *RunVO2MaxRollupValue `json:"runVo2Max,omitempty"`
	// SedentaryPeriod: Returned by default when rolling up data points from the
	// `sedentary-period` data type, or when requested explicitly using the
	// `sedentary-period` rollup type identifier.
	SedentaryPeriod *SedentaryPeriodRollupValue `json:"sedentaryPeriod,omitempty"`
	// StartTime: Start time of the window this value aggregates over
	StartTime string `json:"startTime,omitempty"`
	// Steps: Returned by default when rolling up data points from the `steps` data
	// type, or when requested explicitly using the `steps` rollup type identifier.
	Steps *StepsRollupValue `json:"steps,omitempty"`
	// SwimLengthsData: Returned by default when rolling up data points from the
	// `swim-lengths-data` data type, or when requested explicitly using the
	// `swim-lengths-data` rollup type identifier.
	SwimLengthsData *SwimLengthsDataRollupValue `json:"swimLengthsData,omitempty"`
	// TimeInHeartRateZone: Returned by default when rolling up data points from
	// the `time-in-heart-rate-zone` data type, or when requested explicitly using
	// the `time-in-heart-rate-zone` rollup type identifier.
	TimeInHeartRateZone *TimeInHeartRateZoneRollupValue `json:"timeInHeartRateZone,omitempty"`
	// TotalCalories: Returned by default when rolling up data points from the
	// `total-calories` data type, or when requested explicitly using the
	// `total-calories` rollup type identifier.
	TotalCalories *TotalCaloriesRollupValue `json:"totalCalories,omitempty"`
	// Weight: Returned by default when rolling up data points from the `weight`
	// data type, or when requested explicitly using the `weight` rollup type
	// identifier.
	Weight *WeightRollupValue `json:"weight,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveMinutes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveMinutes") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RollupDataPoint) MarshalJSON() ([]byte, error) {
	type NoMethod RollupDataPoint
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// RunVO2Max: VO2 max value calculated based on the user's running activity.
// Value stored in ml/kg/min.
type RunVO2Max struct {
	// RunVo2Max: Required. Run VO2 max value in ml/kg/min.
	RunVo2Max float64 `json:"runVo2Max,omitempty"`
	// SampleTime: Required. The time at which the metric was measured.
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RunVo2Max") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RunVo2Max") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RunVO2Max) MarshalJSON() ([]byte, error) {
	type NoMethod RunVO2Max
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *RunVO2Max) UnmarshalJSON(data []byte) error {
	type NoMethod RunVO2Max
	var s1 struct {
		RunVo2Max gensupport.JSONFloat64 `json:"runVo2Max"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RunVo2Max = float64(s1.RunVo2Max)
	return nil
}

// RunVO2MaxRollupValue: Represents the result of the rollup of the user's
// daily heart rate variability personal range.
type RunVO2MaxRollupValue struct {
	// RateAvg: Average value of run VO2 max in the interval.
	RateAvg float64 `json:"rateAvg,omitempty"`
	// RateMax: Maximum value of run VO2 max in the interval.
	RateMax float64 `json:"rateMax,omitempty"`
	// RateMin: Minimum value of run VO2 max in the interval..
	RateMin float64 `json:"rateMin,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RateAvg") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RateAvg") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s RunVO2MaxRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod RunVO2MaxRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *RunVO2MaxRollupValue) UnmarshalJSON(data []byte) error {
	type NoMethod RunVO2MaxRollupValue
	var s1 struct {
		RateAvg gensupport.JSONFloat64 `json:"rateAvg"`
		RateMax gensupport.JSONFloat64 `json:"rateMax"`
		RateMin gensupport.JSONFloat64 `json:"rateMin"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RateAvg = float64(s1.RateAvg)
	s.RateMax = float64(s1.RateMax)
	s.RateMin = float64(s1.RateMin)
	return nil
}

// SedentaryPeriod: SedentaryPeriod SedentaryPeriod data represents the periods
// of time that the user was sedentary (i.e. not moving while wearing the
// device).
type SedentaryPeriod struct {
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Interval") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Interval") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SedentaryPeriod) MarshalJSON() ([]byte, error) {
	type NoMethod SedentaryPeriod
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SedentaryPeriodRollupValue: Represents the result of the rollup of the
// user's sedentary periods.
type SedentaryPeriodRollupValue struct {
	// DurationSum: The total time user spent sedentary during the interval.
	DurationSum string `json:"durationSum,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DurationSum") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DurationSum") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SedentaryPeriodRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod SedentaryPeriodRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SessionTimeInterval: Represents a time interval of session data point, which
// bundles multiple observed metrics together.
type SessionTimeInterval struct {
	// CivilEndTime: Output only. Session end time in civil time in the timezone
	// the subject is in at the end of the session.
	CivilEndTime *CivilDateTime `json:"civilEndTime,omitempty"`
	// CivilStartTime: Output only. Session start time in civil time in the
	// timezone the subject is in at the start of the session.
	CivilStartTime *CivilDateTime `json:"civilStartTime,omitempty"`
	// EndTime: Required. The end time of the observed session.
	EndTime string `json:"endTime,omitempty"`
	// EndUtcOffset: Required. The offset of the user's local time at the end of
	// the session relative to the Coordinated Universal Time (UTC).
	EndUtcOffset string `json:"endUtcOffset,omitempty"`
	// StartTime: Required. The start time of the observed session.
	StartTime string `json:"startTime,omitempty"`
	// StartUtcOffset: Required. The offset of the user's local time at the start
	// of the session relative to the Coordinated Universal Time (UTC).
	StartUtcOffset string `json:"startUtcOffset,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CivilEndTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CivilEndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SessionTimeInterval) MarshalJSON() ([]byte, error) {
	type NoMethod SessionTimeInterval
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Settings: Settings details.
type Settings struct {
	// AutoStrideEnabled: Optional. True if the user's stride length is determined
	// automatically. Updates to this field are currently not supported.
	AutoStrideEnabled bool `json:"autoStrideEnabled,omitempty"`
	// DistanceUnit: Optional. The measurement unit defined in the user's account
	// settings. Updates to this field are currently not supported.
	//
	// Possible values:
	//   "DISTANCE_UNIT_UNSPECIFIED" - Distance unit is not specified.
	//   "DISTANCE_UNIT_MILES" - Distance unit is miles.
	//   "DISTANCE_UNIT_KILOMETERS" - Distance unit is kilometers.
	DistanceUnit string `json:"distanceUnit,omitempty"`
	// GlucoseUnit: Optional. The measurement unit defined in the user's account
	// settings.
	//
	// Possible values:
	//   "GLUCOSE_UNIT_UNSPECIFIED" - Glucose unit is not specified.
	//   "GLUCOSE_UNIT_MG_DL" - Glucose unit is mg/dL.
	//   "GLUCOSE_UNIT_MMOL_L" - Glucose unit is mmol/l.
	GlucoseUnit string `json:"glucoseUnit,omitempty"`
	// HeightUnit: Optional. The measurement unit defined in the user's account
	// settings.
	//
	// Possible values:
	//   "HEIGHT_UNIT_UNSPECIFIED" - Height unit is not specified.
	//   "HEIGHT_UNIT_INCHES" - Height unit is inches.
	//   "HEIGHT_UNIT_CENTIMETERS" - Height unit is cm.
	HeightUnit string `json:"heightUnit,omitempty"`
	// LanguageLocale: Optional. The locale defined in the user's account settings.
	// Updates to this field are currently not supported.
	LanguageLocale string `json:"languageLocale,omitempty"`
	// Name: Identifier. The resource name of this Settings resource. Format:
	// `users/{user}/settings` Example: `users/1234567890/settings` or
	// `users/me/settings` The {user} ID is a system-generated Google Health API
	// user ID, a string of 1-63 characters consisting of lowercase and uppercase
	// letters, numbers, and hyphens. The literal `me` can also be used to refer to
	// the authenticated user.
	Name string `json:"name,omitempty"`
	// StrideLengthRunningType: Optional. The stride length type defined in the
	// user's account settings for running. Updates to this field are currently not
	// supported.
	//
	// Possible values:
	//   "STRIDE_LENGTH_TYPE_UNSPECIFIED" - Stride length type is not specified.
	//   "STRIDE_LENGTH_TYPE_DEFAULT" - Stride length type is computed based on the
	// user's gender and height.
	//   "STRIDE_LENGTH_TYPE_MANUAL" - Stride length type is manually set by the
	// user.
	//   "STRIDE_LENGTH_TYPE_AUTO" - Stride length type is determined
	// automatically.
	StrideLengthRunningType string `json:"strideLengthRunningType,omitempty"`
	// StrideLengthWalkingType: Optional. The stride length type defined in the
	// user's account settings for walking. Updates to this field are currently not
	// supported.
	//
	// Possible values:
	//   "STRIDE_LENGTH_TYPE_UNSPECIFIED" - Stride length type is not specified.
	//   "STRIDE_LENGTH_TYPE_DEFAULT" - Stride length type is computed based on the
	// user's gender and height.
	//   "STRIDE_LENGTH_TYPE_MANUAL" - Stride length type is manually set by the
	// user.
	//   "STRIDE_LENGTH_TYPE_AUTO" - Stride length type is determined
	// automatically.
	StrideLengthWalkingType string `json:"strideLengthWalkingType,omitempty"`
	// SwimUnit: Optional. The measurement unit defined in the user's account
	// settings.
	//
	// Possible values:
	//   "SWIM_UNIT_UNSPECIFIED" - Swim unit is not specified.
	//   "SWIM_UNIT_METERS" - Swim unit is meters.
	//   "SWIM_UNIT_YARDS" - Swim unit is yards.
	SwimUnit string `json:"swimUnit,omitempty"`
	// TemperatureUnit: Optional. The measurement unit defined in the user's
	// account settings.
	//
	// Possible values:
	//   "TEMPERATURE_UNIT_UNSPECIFIED" - Temperature unit is not specified.
	//   "TEMPERATURE_UNIT_CELSIUS" - Temperature unit is Celsius.
	//   "TEMPERATURE_UNIT_FAHRENHEIT" - Temperature unit is Fahrenheit.
	TemperatureUnit string `json:"temperatureUnit,omitempty"`
	// TimeZone: Optional. The timezone defined in the user's account settings.
	// This follows the IANA Time Zone Database (https://www.iana.org/time-zones).
	// Updates to this field are currently not supported.
	TimeZone string `json:"timeZone,omitempty"`
	// UtcOffset: Optional. The user's timezone offset relative to UTC. Updates to
	// this field are currently not supported.
	UtcOffset string `json:"utcOffset,omitempty"`
	// WaterUnit: Optional. The measurement unit defined in the user's account
	// settings.
	//
	// Possible values:
	//   "WATER_UNIT_UNSPECIFIED" - Water unit is not specified.
	//   "WATER_UNIT_ML" - Water unit is milliliters.
	//   "WATER_UNIT_FL_OZ" - Water unit is fluid ounces.
	//   "WATER_UNIT_CUP" - Water unit is cups.
	WaterUnit string `json:"waterUnit,omitempty"`
	// WeightUnit: Optional. The measurement unit defined in the user's account
	// settings.
	//
	// Possible values:
	//   "WEIGHT_UNIT_UNSPECIFIED" - Weight unit is not specified.
	//   "WEIGHT_UNIT_POUNDS" - Weight unit is pounds.
	//   "WEIGHT_UNIT_STONE" - Weight unit is stones.
	//   "WEIGHT_UNIT_KILOGRAMS" - Weight unit is kilograms.
	WeightUnit string `json:"weightUnit,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the server.
	googleapi.ServerResponse `json:"-"`
	// ForceSendFields is a list of field names (e.g. "AutoStrideEnabled") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AutoStrideEnabled") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Settings) MarshalJSON() ([]byte, error) {
	type NoMethod Settings
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Sleep: A sleep session possibly including stages.
type Sleep struct {
	// CreateTime: Output only. Creation time of this sleep observation.
	CreateTime string `json:"createTime,omitempty"`
	// Interval: Required. Observed sleep interval.
	Interval *SessionTimeInterval `json:"interval,omitempty"`
	// Metadata: Optional. Sleep metadata: processing, main, manually edited,
	// stages status.
	Metadata *SleepMetadata `json:"metadata,omitempty"`
	// OutOfBedSegments: Optional. “Out of bed” segments that can overlap with
	// sleep stages.
	OutOfBedSegments []*OutOfBedSegment `json:"outOfBedSegments,omitempty"`
	// Stages: Optional. List of non-overlapping contiguous sleep stage segments
	// that cover the sleep period.
	Stages []*SleepStage `json:"stages,omitempty"`
	// Summary: Output only. Sleep summary: metrics and stages summary.
	Summary *SleepSummary `json:"summary,omitempty"`
	// Type: Optional. SleepType: classic or stages.
	//
	// Possible values:
	//   "SLEEP_TYPE_UNSPECIFIED" - Sleep type is unspecified.
	//   "CLASSIC" - Classic sleep is a sleep with 3 stages types: AWAKE, RESTLESS
	// and ASLEEP.
	//   "STAGES" - On top of "classic" sleep stages an additional processing pass
	// can calculate stages more precisely, overwriting the prior stages with
	// AWAKE, LIGHT, REM and DEEP.
	Type string `json:"type,omitempty"`
	// UpdateTime: Output only. Last update time of this sleep observation.
	UpdateTime string `json:"updateTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Sleep) MarshalJSON() ([]byte, error) {
	type NoMethod Sleep
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SleepMetadata: Additional information about how the sleep was processed.
type SleepMetadata struct {
	// ExternalId: Optional. Sleep identifier relevant in the context of the data
	// source.
	ExternalId string `json:"externalId,omitempty"`
	// ManuallyEdited: Output only. Some sleeps autodetected by algorithms can be
	// manually edited by users.
	ManuallyEdited bool `json:"manuallyEdited,omitempty"`
	// Nap: Output only. Naps are sleeps without stages and relatively short
	// durations.
	Nap bool `json:"nap,omitempty"`
	// Processed: Output only. Sleep and sleep stages algorithms finished
	// processing.
	Processed bool `json:"processed,omitempty"`
	// StagesStatus: Output only. Sleep stages algorithm processing status.
	//
	// Possible values:
	//   "STAGES_STATE_UNSPECIFIED" - Output only. Sleep stages status is
	// unspecified.
	//   "REJECTED_COVERAGE" - Output only. Sleep stages cannot be computed due to
	// low RR coverage.
	//   "REJECTED_MAX_GAP" - Output only. Sleep stages cannot be computed due to
	// the large middle gap (2h).
	//   "REJECTED_START_GAP" - Output only. Sleep stages cannot be computed due to
	// the large start gap (1h).
	//   "REJECTED_END_GAP" - Output only. Sleep stages cannot be computed due to
	// the large end gap (1h).
	//   "REJECTED_NAP" - Output only. Sleep stages cannot be computed because the
	// sleep log is a nap (has < 3h duration).
	//   "REJECTED_SERVER" - Output only. Sleep stages cannot be computed because
	// input data is not available (PPGV2, wake magnitude, etc).
	//   "TIMEOUT" - Output only. Sleep stages cannot be computed due to server
	// timeout.
	//   "SUCCEEDED" - Output only. Sleep stages successfully computed.
	//   "PROCESSING_INTERNAL_ERROR" - Output only. Sleep stages cannot be computed
	// due to server internal error.
	StagesStatus string `json:"stagesStatus,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ExternalId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ExternalId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SleepMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod SleepMetadata
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SleepStage: Sleep stage segment.
type SleepStage struct {
	// CreateTime: Output only. Creation time of this sleep stages segment.
	CreateTime string `json:"createTime,omitempty"`
	// EndTime: Required. Sleep stage end time.
	EndTime string `json:"endTime,omitempty"`
	// EndUtcOffset: Required. The offset of the user's local time at the end of
	// the sleep stage relative to the Coordinated Universal Time (UTC).
	EndUtcOffset string `json:"endUtcOffset,omitempty"`
	// StartTime: Required. Sleep stage start time.
	StartTime string `json:"startTime,omitempty"`
	// StartUtcOffset: Required. The offset of the user's local time at the start
	// of the sleep stage relative to the Coordinated Universal Time (UTC).
	StartUtcOffset string `json:"startUtcOffset,omitempty"`
	// Type: Required. Sleep stage type: AWAKE, DEEP, REM, LIGHT etc.
	//
	// Possible values:
	//   "SLEEP_STAGE_TYPE_UNSPECIFIED" - The default unset value.
	//   "AWAKE" - Sleep stage AWAKE.
	//   "LIGHT" - Sleep stage LIGHT.
	//   "DEEP" - Sleep stage DEEP.
	//   "REM" - Sleep stage REM.
	//   "ASLEEP" - Sleep stage ASLEEP.
	//   "RESTLESS" - Sleep stage RESTLESS.
	Type string `json:"type,omitempty"`
	// UpdateTime: Output only. Last update time of this sleep stages segment.
	UpdateTime string `json:"updateTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SleepStage) MarshalJSON() ([]byte, error) {
	type NoMethod SleepStage
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SleepSummary:  Sleep summary: metrics and stages summary.
type SleepSummary struct {
	// MinutesAfterWakeUp: Output only. Minutes after wake up calculated by
	// restlessness algorithm.
	MinutesAfterWakeUp int64 `json:"minutesAfterWakeUp,omitempty,string"`
	// MinutesAsleep: Output only. Total number of minutes asleep. For classic
	// sleep it is the sum of ASLEEP stages (excluding AWAKE and RESTLESS). For
	// "stages" sleep it is the sum of LIGHT, REM and DEEP stages (excluding
	// AWAKE).
	MinutesAsleep int64 `json:"minutesAsleep,omitempty,string"`
	// MinutesAwake: Output only. Total number of minutes awake. It is a sum of all
	// AWAKE stages.
	MinutesAwake int64 `json:"minutesAwake,omitempty,string"`
	// MinutesInSleepPeriod: Output only. Delta between wake time and bedtime. It
	// is the sum of all stages.
	MinutesInSleepPeriod int64 `json:"minutesInSleepPeriod,omitempty,string"`
	// MinutesToFallAsleep: Output only. Minutes to fall asleep calculated by
	// restlessness algorithm.
	MinutesToFallAsleep int64 `json:"minutesToFallAsleep,omitempty,string"`
	// StagesSummary: Output only. List of summaries (total duration and segment
	// count) per each sleep stage type.
	StagesSummary []*StageSummary `json:"stagesSummary,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MinutesAfterWakeUp") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MinutesAfterWakeUp") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SleepSummary) MarshalJSON() ([]byte, error) {
	type NoMethod SleepSummary
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SplitSummary: Represents splits or laps recorded within an exercise. Lap
// events partition a workout into segments based on criteria like distance,
// time, or calories.
type SplitSummary struct {
	// ActiveDuration: Output only. Lap time excluding the pauses.
	ActiveDuration string `json:"activeDuration,omitempty"`
	// EndTime: Required. Lap end time
	EndTime string `json:"endTime,omitempty"`
	// EndUtcOffset: Required. Lap end time offset from UTC
	EndUtcOffset string `json:"endUtcOffset,omitempty"`
	// MetricsSummary: Required. Summary metrics for this split.
	MetricsSummary *MetricsSummary `json:"metricsSummary,omitempty"`
	// SplitType: Required. Method used to split the exercise laps. Users may
	// manually mark the lap as complete even if the tracking is automatic.
	//
	// Possible values:
	//   "SPLIT_TYPE_UNSPECIFIED" - Split type is unspecified.
	//   "MANUAL" - Manual split.
	//   "DURATION" - Split by duration.
	//   "DISTANCE" - Split by distance.
	//   "CALORIES" - Split by calories.
	SplitType string `json:"splitType,omitempty"`
	// StartTime: Required. Lap start time
	StartTime string `json:"startTime,omitempty"`
	// StartUtcOffset: Required. Lap start time offset from UTC
	StartUtcOffset string `json:"startUtcOffset,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ActiveDuration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ActiveDuration") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SplitSummary) MarshalJSON() ([]byte, error) {
	type NoMethod SplitSummary
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// StageSummary: Total duration and segment count for a stage.
type StageSummary struct {
	// Count: Output only. Number of sleep stages segments.
	Count int64 `json:"count,omitempty,string"`
	// Minutes: Output only. Total duration in minutes of a sleep stage.
	Minutes int64 `json:"minutes,omitempty,string"`
	// Type: Output only. Sleep stage type: AWAKE, DEEP, REM, LIGHT etc.
	//
	// Possible values:
	//   "SLEEP_STAGE_TYPE_UNSPECIFIED" - The default unset value.
	//   "AWAKE" - Sleep stage AWAKE.
	//   "LIGHT" - Sleep stage LIGHT.
	//   "DEEP" - Sleep stage DEEP.
	//   "REM" - Sleep stage REM.
	//   "ASLEEP" - Sleep stage ASLEEP.
	//   "RESTLESS" - Sleep stage RESTLESS.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Count") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s StageSummary) MarshalJSON() ([]byte, error) {
	type NoMethod StageSummary
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Status: The `Status` type defines a logical error model that is suitable for
// different programming environments, including REST APIs and RPC APIs. It is
// used by gRPC (https://github.com/grpc). Each `Status` message contains three
// pieces of data: error code, error message, and error details. You can find
// out more about this error model and how to work with it in the API Design
// Guide (https://cloud.google.com/apis/design/errors).
type Status struct {
	// Code: The status code, which should be an enum value of google.rpc.Code.
	Code int64 `json:"code,omitempty"`
	// Details: A list of messages that carry the error details. There is a common
	// set of message types for APIs to use.
	Details []googleapi.RawMessage `json:"details,omitempty"`
	// Message: A developer-facing error message, which should be in English. Any
	// user-facing error message should be localized and sent in the
	// google.rpc.Status.details field, or localized by the client.
	Message string `json:"message,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Code") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Code") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Status) MarshalJSON() ([]byte, error) {
	type NoMethod Status
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Steps: Step count over the time interval.
type Steps struct {
	// Count: Required. Number of steps in the recorded interval.
	Count int64 `json:"count,omitempty,string"`
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Count") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Count") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Steps) MarshalJSON() ([]byte, error) {
	type NoMethod Steps
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// StepsRollupValue: Represents the result of the rollup of the steps data
// type.
type StepsRollupValue struct {
	// CountSum: Total number of steps in the interval.
	CountSum int64 `json:"countSum,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "CountSum") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CountSum") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s StepsRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod StepsRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Subscriber: -- Resource Messages -- A subscriber receives notifications from
// Google Health API.
type Subscriber struct {
	// CreateTime: Output only. The time at which the subscriber was created.
	CreateTime string `json:"createTime,omitempty"`
	// EndpointAuthorization: Required. Authorization mechanism for a subscriber
	// endpoint. This is required to ensure the endpoint can be verified.
	EndpointAuthorization *EndpointAuthorization `json:"endpointAuthorization,omitempty"`
	// EndpointUri: Required. The full HTTPS URI where update notifications will be
	// sent. The URI must be a valid URL and use HTTPS as the scheme. This endpoint
	// will be verified during CreateSubscriber and UpdateSubscriber calls. See RPC
	// documentation for verification details.
	EndpointUri string `json:"endpointUri,omitempty"`
	// Name: Identifier. The resource name of the Subscriber. Format:
	// projects/{project}/subscribers/{subscriber} The {project} ID is a Google
	// Cloud Project ID or Project Number. The {subscriber} ID is user-settable
	// (4-36 characters, matching /a-z ([a-z0-9-]{2,34}[a-z0-9])/) if provided
	// during creation, or system-generated otherwise (e.g., a UUID). Example
	// (User-settable subscriber ID): projects/my-project/subscribers/my-sub-123
	// Example (System-generated subscriber ID):
	// projects/my-project/subscribers/a1b2c3d4-e5f6-7890-1234-567890abcdef
	Name string `json:"name,omitempty"`
	// State: Output only. The state of the subscriber.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Represents an unspecified subscriber state.
	//   "UNVERIFIED" - Represents an unverified subscriber. This is the initial
	// state of the subscriber when it is created. The backend will verify the
	// subscriber's endpoint_uri.
	//   "ACTIVE" - Represents an active subscriber. The endpoint has been
	// verified.
	//   "INACTIVE" - Represents an inactive subscriber.
	State string `json:"state,omitempty"`
	// SubscriberConfigs: Optional. Configuration for the subscriber.
	SubscriberConfigs []*SubscriberConfig `json:"subscriberConfigs,omitempty"`
	// UpdateTime: Output only. The time at which the subscriber was last updated.
	UpdateTime string `json:"updateTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Subscriber) MarshalJSON() ([]byte, error) {
	type NoMethod Subscriber
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SubscriberConfig: Configuration for a subscriber. A notification is sent to
// a subscription ONLY if the subscriber has a config for the data type.
type SubscriberConfig struct {
	// DataTypes: Required. Supported data types are: "altitude", "distance",
	// "floors", "sleep", "steps", "weight". Values should be in kebab-case.
	DataTypes []string `json:"dataTypes,omitempty"`
	// SubscriptionCreatePolicy: Required. Policy for subscription creation.
	//
	// Possible values:
	//   "SUBSCRIPTION_CREATE_POLICY_UNSPECIFIED" - Represents an unspecified
	// policy.
	//   "AUTOMATIC" - When using `AUTOMATIC`, individual subscriptions are not
	// created or stored. Instead, eligibility for notifications is computed
	// dynamically. When a data update occurs for a given data type, notifications
	// are sent to all subscribers with an `AUTOMATIC` policy for that data type,
	// provided the user has granted the necessary consents. This means you do not
	// need to call `CreateSubscription` for each user; notifications are managed
	// automatically based on user consents. As `Subscription` resources are not
	// stored, they cannot be retrieved or managed through `GetSubscription`,
	// `ListSubscriptions`, `UpdateSubscription`, or `DeleteSubscription`.
	//   "MANUAL" - Requires subscriptions to be created manually for new users.
	// The developer needs to call CreateSubscription for new users.
	SubscriptionCreatePolicy string `json:"subscriptionCreatePolicy,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DataTypes") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DataTypes") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SubscriberConfig) MarshalJSON() ([]byte, error) {
	type NoMethod SubscriberConfig
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SwimLengthsData: Swim lengths data over the time interval.
type SwimLengthsData struct {
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// StrokeCount: Required. Number of strokes in the lap.
	StrokeCount int64 `json:"strokeCount,omitempty,string"`
	// SwimStrokeType: Required. Swim stroke type.
	//
	// Possible values:
	//   "SWIM_STROKE_TYPE_UNSPECIFIED" - Swim stroke type is unspecified.
	//   "FREESTYLE" - Freestyle swim stroke type.
	//   "BACKSTROKE" - Backstroke swim stroke type.
	//   "BREASTSTROKE" - Breaststroke swim stroke type.
	//   "BUTTERFLY" - Butterfly swim stroke type.
	SwimStrokeType string `json:"swimStrokeType,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Interval") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Interval") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SwimLengthsData) MarshalJSON() ([]byte, error) {
	type NoMethod SwimLengthsData
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// SwimLengthsDataRollupValue: Represents the result of the rollup of the swim
// lengths data type.
type SwimLengthsDataRollupValue struct {
	// StrokeCountSum: Total number of swim strokes in the interval.
	StrokeCountSum int64 `json:"strokeCountSum,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "StrokeCountSum") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "StrokeCountSum") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s SwimLengthsDataRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod SwimLengthsDataRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimeInHeartRateZone: Time in heart rate zone record. It's an interval spent
// in specific heart rate zone.
type TimeInHeartRateZone struct {
	// HeartRateZoneType: Required. Heart rate zone type.
	//
	// Possible values:
	//   "HEART_RATE_ZONE_TYPE_UNSPECIFIED" - Unspecified heart rate zone.
	//   "LIGHT" - The light heart rate zone.
	//   "MODERATE" - The moderate heart rate zone.
	//   "VIGOROUS" - The vigorous heart rate zone.
	//   "PEAK" - The peak heart rate zone.
	HeartRateZoneType string `json:"heartRateZoneType,omitempty"`
	// Interval: Required. Observed interval.
	Interval *ObservationTimeInterval `json:"interval,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HeartRateZoneType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HeartRateZoneType") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TimeInHeartRateZone) MarshalJSON() ([]byte, error) {
	type NoMethod TimeInHeartRateZone
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimeInHeartRateZoneRollupValue: Represents the result of the rollup of the
// time in heart rate zone data type.
type TimeInHeartRateZoneRollupValue struct {
	// TimeInHeartRateZones: List of time spent in each heart rate zone.
	TimeInHeartRateZones []*TimeInHeartRateZoneValue `json:"timeInHeartRateZones,omitempty"`
	// ForceSendFields is a list of field names (e.g. "TimeInHeartRateZones") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "TimeInHeartRateZones") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TimeInHeartRateZoneRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod TimeInHeartRateZoneRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimeInHeartRateZoneValue: Represents the total time spent in a specific
// heart rate zone.
type TimeInHeartRateZoneValue struct {
	// Duration: The total time spent in the specified heart rate zone.
	Duration string `json:"duration,omitempty"`
	// HeartRateZone: The heart rate zone.
	//
	// Possible values:
	//   "HEART_RATE_ZONE_TYPE_UNSPECIFIED" - Unspecified heart rate zone.
	//   "LIGHT" - The light heart rate zone.
	//   "MODERATE" - The moderate heart rate zone.
	//   "VIGOROUS" - The vigorous heart rate zone.
	//   "PEAK" - The peak heart rate zone.
	HeartRateZone string `json:"heartRateZone,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Duration") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Duration") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TimeInHeartRateZoneValue) MarshalJSON() ([]byte, error) {
	type NoMethod TimeInHeartRateZoneValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimeInHeartRateZones: Time spent in each heart rate zone.
type TimeInHeartRateZones struct {
	// LightTime: Optional. Time spent in light heart rate zone.
	LightTime string `json:"lightTime,omitempty"`
	// ModerateTime: Optional. Time spent in moderate heart rate zone.
	ModerateTime string `json:"moderateTime,omitempty"`
	// PeakTime: Optional. Time spent in peak heart rate zone.
	PeakTime string `json:"peakTime,omitempty"`
	// VigorousTime: Optional. Time spent in vigorous heart rate zone.
	VigorousTime string `json:"vigorousTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LightTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LightTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TimeInHeartRateZones) MarshalJSON() ([]byte, error) {
	type NoMethod TimeInHeartRateZones
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimeOfDay: Represents a time of day. The date and time zone are either not
// significant or are specified elsewhere. An API may choose to allow leap
// seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.
type TimeOfDay struct {
	// Hours: Hours of a day in 24 hour format. Must be greater than or equal to 0
	// and typically must be less than or equal to 23. An API may choose to allow
	// the value "24:00:00" for scenarios like business closing time.
	Hours int64 `json:"hours,omitempty"`
	// Minutes: Minutes of an hour. Must be greater than or equal to 0 and less
	// than or equal to 59.
	Minutes int64 `json:"minutes,omitempty"`
	// Nanos: Fractions of seconds, in nanoseconds. Must be greater than or equal
	// to 0 and less than or equal to 999,999,999.
	Nanos int64 `json:"nanos,omitempty"`
	// Seconds: Seconds of a minute. Must be greater than or equal to 0 and
	// typically must be less than or equal to 59. An API may allow the value 60 if
	// it allows leap-seconds.
	Seconds int64 `json:"seconds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Hours") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Hours") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TimeOfDay) MarshalJSON() ([]byte, error) {
	type NoMethod TimeOfDay
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TimeZone: Represents a time zone from the IANA Time Zone Database
// (https://www.iana.org/time-zones).
type TimeZone struct {
	// Id: IANA Time Zone Database time zone. For example "America/New_York".
	Id string `json:"id,omitempty"`
	// Version: Optional. IANA Time Zone Database version number. For example
	// "2019a".
	Version string `json:"version,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Id") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Id") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TimeZone) MarshalJSON() ([]byte, error) {
	type NoMethod TimeZone
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// TotalCaloriesRollupValue: Represents the result of the rollup of the user's
// total calories.
type TotalCaloriesRollupValue struct {
	// KcalSum: Sum of the total calories in kilocalories.
	KcalSum float64 `json:"kcalSum,omitempty"`
	// ForceSendFields is a list of field names (e.g. "KcalSum") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "KcalSum") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s TotalCaloriesRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod TotalCaloriesRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *TotalCaloriesRollupValue) UnmarshalJSON(data []byte) error {
	type NoMethod TotalCaloriesRollupValue
	var s1 struct {
		KcalSum gensupport.JSONFloat64 `json:"kcalSum"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.KcalSum = float64(s1.KcalSum)
	return nil
}

// VO2Max: VO2 max measurement.
type VO2Max struct {
	// MeasurementMethod: Optional. The method used to measure the VO2 max value.
	//
	// Possible values:
	//   "MEASUREMENT_METHOD_UNSPECIFIED" - Unspecified measurement method.
	//   "FITBIT_RUN" - Fitbit specific, measures VO2 max rate during a run.
	//   "GOOGLE_DEMOGRAPHIC" - Google specific, measures VO2 max rate for a user
	// based on their demographic data.
	//   "COOPER_TEST" - Run as far as possible for 12 minutes. Distance correlated
	// with age and gender translates to a VO2 max value.
	//   "HEART_RATE_RATIO" - Maximum heart rate divided by the resting heart rate,
	// with a multiplier applied. Does not require any exercise.
	//   "METABOLIC_CART" - Measured by a medical device called metabolic cart.
	//   "MULTISTAGE_FITNESS_TEST" - Continuous 20m back-and-forth runs with
	// increasing difficulty, until exhaustion.
	//   "ROCKPORT_FITNESS_TEST" - Measured using walking exercise.
	//   "MAX_EXERCISE" - Healthkit specific, measures VO2 max rate by monitoring
	// exercise to the user’s physical limit. Similar to COOPER_TEST or
	// MULTISTAGE_FITNESS_TEST.
	//   "PREDICTION_SUB_MAX_EXERCISE" - Healthkit specific, estimates VO2 max rate
	// based on low-intensity exercise. Similar to ROCKPORT_FITNESS_TEST.
	//   "PREDICTION_NON_EXERCISE" - Healthkit specific, estimates VO2 max rate
	// without any exercise. Similar to HEART_RATE_RATIO.
	//   "OTHER" - Use when the method is not covered in this enum.
	MeasurementMethod string `json:"measurementMethod,omitempty"`
	// SampleTime: Required. The time at which VO2 max was measured.
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// Vo2Max: Required. VO2 max value measured as in ml consumed oxygen / kg of
	// body weight / min.
	Vo2Max float64 `json:"vo2Max,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MeasurementMethod") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MeasurementMethod") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VO2Max) MarshalJSON() ([]byte, error) {
	type NoMethod VO2Max
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *VO2Max) UnmarshalJSON(data []byte) error {
	type NoMethod VO2Max
	var s1 struct {
		Vo2Max gensupport.JSONFloat64 `json:"vo2Max"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Vo2Max = float64(s1.Vo2Max)
	return nil
}

// VolumeQuantity: Represents the volume quantity.
type VolumeQuantity struct {
	// Milliliters: Required. Value representing the volume in milliliters.
	Milliliters float64 `json:"milliliters,omitempty"`
	// UserProvidedUnit: Optional. Value representing the user provided unit.
	//
	// Possible values:
	//   "VOLUME_UNIT_UNSPECIFIED" - Unspecified volume unit.
	//   "CUP_IMPERIAL" - Cup (imperial)
	//   "CUP_US" - Cup (US)
	//   "FLUID_OUNCE_IMPERIAL" - Fluid ounce (imperial)
	//   "FLUID_OUNCE_US" - Fluid ounce (US)
	//   "LITER" - Liter
	//   "MILLILITER" - Milliliter
	//   "PINT_IMPERIAL" - Pint (imperial)
	//   "PINT_US" - Pint (US)
	UserProvidedUnit string `json:"userProvidedUnit,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Milliliters") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Milliliters") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VolumeQuantity) MarshalJSON() ([]byte, error) {
	type NoMethod VolumeQuantity
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *VolumeQuantity) UnmarshalJSON(data []byte) error {
	type NoMethod VolumeQuantity
	var s1 struct {
		Milliliters gensupport.JSONFloat64 `json:"milliliters"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Milliliters = float64(s1.Milliliters)
	return nil
}

// VolumeQuantityRollup: Rollup for volume quantity.
type VolumeQuantityRollup struct {
	// MillilitersSum: Required. The sum of volume in milliliters.
	MillilitersSum float64 `json:"millilitersSum,omitempty"`
	// UserProvidedUnitLast: Optional. The user provided unit on the last element.
	//
	// Possible values:
	//   "VOLUME_UNIT_UNSPECIFIED" - Unspecified volume unit.
	//   "CUP_IMPERIAL" - Cup (imperial)
	//   "CUP_US" - Cup (US)
	//   "FLUID_OUNCE_IMPERIAL" - Fluid ounce (imperial)
	//   "FLUID_OUNCE_US" - Fluid ounce (US)
	//   "LITER" - Liter
	//   "MILLILITER" - Milliliter
	//   "PINT_IMPERIAL" - Pint (imperial)
	//   "PINT_US" - Pint (US)
	UserProvidedUnitLast string `json:"userProvidedUnitLast,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MillilitersSum") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MillilitersSum") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s VolumeQuantityRollup) MarshalJSON() ([]byte, error) {
	type NoMethod VolumeQuantityRollup
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *VolumeQuantityRollup) UnmarshalJSON(data []byte) error {
	type NoMethod VolumeQuantityRollup
	var s1 struct {
		MillilitersSum gensupport.JSONFloat64 `json:"millilitersSum"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.MillilitersSum = float64(s1.MillilitersSum)
	return nil
}

// WebhookNotificationCloudLog: Log message for a webhook notification sent by
// the Google Health API to a subscriber's endpoint. Includes the HTTP response
// received from the endpoint.
type WebhookNotificationCloudLog struct {
	// HttpResponse: Required. Represents the HTTP response. This message includes
	// the status code, reason phrase, headers, and body.
	HttpResponse *HttpResponse `json:"httpResponse,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HttpResponse") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HttpResponse") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s WebhookNotificationCloudLog) MarshalJSON() ([]byte, error) {
	type NoMethod WebhookNotificationCloudLog
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

// Weight: Body weight measurement.
type Weight struct {
	// Notes: Optional. Standard free-form notes captured at manual logging.
	Notes string `json:"notes,omitempty"`
	// SampleTime: Required. The time at which the weight was measured
	SampleTime *ObservationSampleTime `json:"sampleTime,omitempty"`
	// WeightGrams: Required. Weight of a user in grams.
	WeightGrams float64 `json:"weightGrams,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Notes") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Notes") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s Weight) MarshalJSON() ([]byte, error) {
	type NoMethod Weight
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *Weight) UnmarshalJSON(data []byte) error {
	type NoMethod Weight
	var s1 struct {
		WeightGrams gensupport.JSONFloat64 `json:"weightGrams"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.WeightGrams = float64(s1.WeightGrams)
	return nil
}

// WeightRollupValue: Represents the result of the rollup of the weight data
// type.
type WeightRollupValue struct {
	// WeightGramsAvg: Average weight in grams.
	WeightGramsAvg float64 `json:"weightGramsAvg,omitempty"`
	// ForceSendFields is a list of field names (e.g. "WeightGramsAvg") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "WeightGramsAvg") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

func (s WeightRollupValue) MarshalJSON() ([]byte, error) {
	type NoMethod WeightRollupValue
	return gensupport.MarshalJSON(NoMethod(s), s.ForceSendFields, s.NullFields)
}

func (s *WeightRollupValue) UnmarshalJSON(data []byte) error {
	type NoMethod WeightRollupValue
	var s1 struct {
		WeightGramsAvg gensupport.JSONFloat64 `json:"weightGramsAvg"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.WeightGramsAvg = float64(s1.WeightGramsAvg)
	return nil
}

type ProjectsSubscribersCreateCall struct {
	s                       *Service
	parent                  string
	createsubscriberpayload *CreateSubscriberPayload
	urlParams_              gensupport.URLParams
	ctx_                    context.Context
	header_                 http.Header
}

// Create: Registers a new subscriber endpoint to receive notifications. A
// subscriber represents an application or service that wishes to receive data
// change notifications for users who have granted consent. **Endpoint
// Verification:** For a subscriber to be successfully created, the provided
// `endpoint_uri` must be a valid HTTPS endpoint and must pass an automated
// verification check. The backend will send two HTTP POST requests to the
// `endpoint_uri`: 1. **Verification with Authorization:** * **Headers:**
// Includes `Content-Type: application/json` and `Authorization` (with the
// exact value from `CreateSubscriberPayload.endpoint_authorization.secret`). *
// **Body:** `{"type": "verification"}` * **Expected Response:** HTTP `201
// Created`. 2. **Verification without Authorization:** * **Headers:** Includes
// `Content-Type: application/json`. The `Authorization` header is OMITTED. *
// **Body:** `{"type": "verification"}` * **Expected Response:** HTTP `401
// Unauthorized` or `403 Forbidden`. Both tests must pass for the subscriber
// creation to succeed. If verification fails, the operation will not be
// completed and an error will be returned. This process ensures the endpoint
// is reachable and correctly validates the `Authorization` header.
//
//   - parent: The parent resource where this subscriber will be created. Format:
//     projects/{project} Example: projects/my-project-123.
func (r *ProjectsSubscribersService) Create(parent string, createsubscriberpayload *CreateSubscriberPayload) *ProjectsSubscribersCreateCall {
	c := &ProjectsSubscribersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.createsubscriberpayload = createsubscriberpayload
	return c
}

// SubscriberId sets the optional parameter "subscriberId": The ID to use for
// the subscriber, which will become the final component of the subscriber's
// resource name. This value should be 4-36 characters, and valid characters
// are /a-z ([a-z0-9-]{2,34}[a-z0-9])/.
func (c *ProjectsSubscribersCreateCall) SubscriberId(subscriberId string) *ProjectsSubscribersCreateCall {
	c.urlParams_.Set("subscriberId", subscriberId)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsSubscribersCreateCall) Fields(s ...googleapi.Field) *ProjectsSubscribersCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsSubscribersCreateCall) Context(ctx context.Context) *ProjectsSubscribersCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsSubscribersCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsSubscribersCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.createsubscriberpayload)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+parent}/subscribers")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.projects.subscribers.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.projects.subscribers.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsSubscribersCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.projects.subscribers.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsSubscribersDeleteCall struct {
	s          *Service
	name       string
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Delete: Deletes a subscriber registration. This will stop all notifications
// to the subscriber's endpoint.
//
//   - name: The name of the subscriber to delete. Format:
//     projects/{project}/subscribers/{subscriber} Example:
//     projects/my-project/subscribers/my-subscriber-123 The {subscriber} ID is
//     user-settable (4-36 characters, matching /a-z ([a-z0-9-]{2,34}[a-z0-9])/)
//     or system-generated if not provided during creation.
func (r *ProjectsSubscribersService) Delete(name string) *ProjectsSubscribersDeleteCall {
	c := &ProjectsSubscribersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Force sets the optional parameter "force": If set to true, any child
// resources (e.g., subscriptions) will also be deleted. If false (default) and
// child resources exist, the request will fail.
func (c *ProjectsSubscribersDeleteCall) Force(force bool) *ProjectsSubscribersDeleteCall {
	c.urlParams_.Set("force", fmt.Sprint(force))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsSubscribersDeleteCall) Fields(s ...googleapi.Field) *ProjectsSubscribersDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsSubscribersDeleteCall) Context(ctx context.Context) *ProjectsSubscribersDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsSubscribersDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsSubscribersDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("DELETE", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.projects.subscribers.delete", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.projects.subscribers.delete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsSubscribersDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.projects.subscribers.delete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsSubscribersListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Lists all subscribers registered within the owned Google Cloud
// Project.
//
//   - parent: The parent, which owns this collection of subscribers. Format:
//     projects/{project}.
func (r *ProjectsSubscribersService) List(parent string) *ProjectsSubscribersListCall {
	c := &ProjectsSubscribersListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// subscribers to return. The service may return fewer than this value. If
// unspecified, at most 50 subscribers will be returned. The maximum value is
// 1000; values above 1000 will be coerced to 1000.
func (c *ProjectsSubscribersListCall) PageSize(pageSize int64) *ProjectsSubscribersListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": A page token, received
// from a previous `ListSubscribers` call. Provide this to retrieve the
// subsequent page. When paginating, all other parameters provided to
// `ListSubscribers` must match the call that provided the page token.
func (c *ProjectsSubscribersListCall) PageToken(pageToken string) *ProjectsSubscribersListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsSubscribersListCall) Fields(s ...googleapi.Field) *ProjectsSubscribersListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *ProjectsSubscribersListCall) IfNoneMatch(entityTag string) *ProjectsSubscribersListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsSubscribersListCall) Context(ctx context.Context) *ProjectsSubscribersListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsSubscribersListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsSubscribersListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+parent}/subscribers")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.projects.subscribers.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.projects.subscribers.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListSubscribersResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *ProjectsSubscribersListCall) Do(opts ...googleapi.CallOption) (*ListSubscribersResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListSubscribersResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.projects.subscribers.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *ProjectsSubscribersListCall) Pages(ctx context.Context, f func(*ListSubscribersResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type ProjectsSubscribersPatchCall struct {
	s          *Service
	name       string
	subscriber *Subscriber
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Patch: Updates the configuration of an existing subscriber, such as the
// endpoint URI or the data types it's interested in. **Endpoint
// Verification:** If the `endpoint_uri` or `endpoint_authorization` field is
// included in the `update_mask`, the backend will re-verify the endpoint. The
// verification process is the same as described in `CreateSubscriber`: 1.
// **Verification with Authorization:** POST to the new or existing
// `endpoint_uri` with the new or existing `Authorization` secret. Expects HTTP
// `201 Created`. 2. **Verification without Authorization:** POST to the
// `endpoint_uri` without the `Authorization` header. Expects HTTP `401
// Unauthorized` or `403 Forbidden`. Both tests must pass using the potentially
// updated values for the subscriber update to succeed. If verification fails,
// the update will not be applied, and an error will be returned.
//
//   - name: Identifier. The resource name of the Subscriber. Format:
//     projects/{project}/subscribers/{subscriber} The {project} ID is a Google
//     Cloud Project ID or Project Number. The {subscriber} ID is user-settable
//     (4-36 characters, matching /a-z ([a-z0-9-]{2,34}[a-z0-9])/) if provided
//     during creation, or system-generated otherwise (e.g., a UUID). Example
//     (User-settable subscriber ID): projects/my-project/subscribers/my-sub-123
//     Example (System-generated subscriber ID):
//     projects/my-project/subscribers/a1b2c3d4-e5f6-7890-1234-567890abcdef.
func (r *ProjectsSubscribersService) Patch(name string, subscriber *Subscriber) *ProjectsSubscribersPatchCall {
	c := &ProjectsSubscribersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.subscriber = subscriber
	return c
}

// UpdateMask sets the optional parameter "updateMask": A field mask that
// specifies which fields of the Subscriber message are to be updated. This
// allows for partial updates. Supported fields: - endpoint_uri -
// subscriber_configs - endpoint_authorization
func (c *ProjectsSubscribersPatchCall) UpdateMask(updateMask string) *ProjectsSubscribersPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *ProjectsSubscribersPatchCall) Fields(s ...googleapi.Field) *ProjectsSubscribersPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *ProjectsSubscribersPatchCall) Context(ctx context.Context) *ProjectsSubscribersPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *ProjectsSubscribersPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ProjectsSubscribersPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.subscriber)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.projects.subscribers.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.projects.subscribers.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *ProjectsSubscribersPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.projects.subscribers.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersGetIdentityCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// GetIdentity: Gets the user's identity. It includes the legacy Fitbit user ID
// and the Google user ID and it can be used by migrating clients to map
// identifiers between the two systems.
//
// - name: The resource name of the Identity. Format: `users/me/identity`.
func (r *UsersService) GetIdentity(name string) *UsersGetIdentityCall {
	c := &UsersGetIdentityCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersGetIdentityCall) Fields(s ...googleapi.Field) *UsersGetIdentityCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *UsersGetIdentityCall) IfNoneMatch(entityTag string) *UsersGetIdentityCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersGetIdentityCall) Context(ctx context.Context) *UsersGetIdentityCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersGetIdentityCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersGetIdentityCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.getIdentity", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.getIdentity" call.
// Any non-2xx status code is an error. Response headers are in either
// *Identity.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersGetIdentityCall) Do(opts ...googleapi.CallOption) (*Identity, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Identity{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.getIdentity", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersGetProfileCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// GetProfile: Returns user Profile details.
//
// - name: The name of the Profile. Format: `users/me/profile`.
func (r *UsersService) GetProfile(name string) *UsersGetProfileCall {
	c := &UsersGetProfileCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersGetProfileCall) Fields(s ...googleapi.Field) *UsersGetProfileCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *UsersGetProfileCall) IfNoneMatch(entityTag string) *UsersGetProfileCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersGetProfileCall) Context(ctx context.Context) *UsersGetProfileCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersGetProfileCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersGetProfileCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.getProfile", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.getProfile" call.
// Any non-2xx status code is an error. Response headers are in either
// *Profile.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersGetProfileCall) Do(opts ...googleapi.CallOption) (*Profile, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Profile{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.getProfile", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersGetSettingsCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// GetSettings: Returns user settings details.
//
// - name: The name of the Settings. Format: `users/me/settings`.
func (r *UsersService) GetSettings(name string) *UsersGetSettingsCall {
	c := &UsersGetSettingsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersGetSettingsCall) Fields(s ...googleapi.Field) *UsersGetSettingsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *UsersGetSettingsCall) IfNoneMatch(entityTag string) *UsersGetSettingsCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersGetSettingsCall) Context(ctx context.Context) *UsersGetSettingsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersGetSettingsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersGetSettingsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.getSettings", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.getSettings" call.
// Any non-2xx status code is an error. Response headers are in either
// *Settings.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersGetSettingsCall) Do(opts ...googleapi.CallOption) (*Settings, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Settings{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.getSettings", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersUpdateProfileCall struct {
	s          *Service
	name       string
	profile    *Profile
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// UpdateProfile: Updates the user's profile details.
//
//   - name: Identifier. The resource name of this Profile resource. Format:
//     `users/{user}/profile` Example: `users/1234567890/profile` or
//     `users/me/profile` The {user} ID is a system-generated Google Health API
//     user ID, a string of 1-63 characters consisting of lowercase and uppercase
//     letters, numbers, and hyphens. The literal `me` can also be used to refer
//     to the authenticated user.
func (r *UsersService) UpdateProfile(name string, profile *Profile) *UsersUpdateProfileCall {
	c := &UsersUpdateProfileCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.profile = profile
	return c
}

// UpdateMask sets the optional parameter "updateMask": The list of fields to
// be updated.
func (c *UsersUpdateProfileCall) UpdateMask(updateMask string) *UsersUpdateProfileCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersUpdateProfileCall) Fields(s ...googleapi.Field) *UsersUpdateProfileCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersUpdateProfileCall) Context(ctx context.Context) *UsersUpdateProfileCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersUpdateProfileCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersUpdateProfileCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.profile)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.updateProfile", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.updateProfile" call.
// Any non-2xx status code is an error. Response headers are in either
// *Profile.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersUpdateProfileCall) Do(opts ...googleapi.CallOption) (*Profile, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Profile{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.updateProfile", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersUpdateSettingsCall struct {
	s          *Service
	name       string
	settings   *Settings
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// UpdateSettings: Updates the user's settings details.
//
//   - name: Identifier. The resource name of this Settings resource. Format:
//     `users/{user}/settings` Example: `users/1234567890/settings` or
//     `users/me/settings` The {user} ID is a system-generated Google Health API
//     user ID, a string of 1-63 characters consisting of lowercase and uppercase
//     letters, numbers, and hyphens. The literal `me` can also be used to refer
//     to the authenticated user.
func (r *UsersService) UpdateSettings(name string, settings *Settings) *UsersUpdateSettingsCall {
	c := &UsersUpdateSettingsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.settings = settings
	return c
}

// UpdateMask sets the optional parameter "updateMask": The list of fields to
// be updated.
func (c *UsersUpdateSettingsCall) UpdateMask(updateMask string) *UsersUpdateSettingsCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersUpdateSettingsCall) Fields(s ...googleapi.Field) *UsersUpdateSettingsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersUpdateSettingsCall) Context(ctx context.Context) *UsersUpdateSettingsCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersUpdateSettingsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersUpdateSettingsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.settings)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.updateSettings", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.updateSettings" call.
// Any non-2xx status code is an error. Response headers are in either
// *Settings.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersUpdateSettingsCall) Do(opts ...googleapi.CallOption) (*Settings, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Settings{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.updateSettings", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersDataTypesDataPointsBatchDeleteCall struct {
	s                            *Service
	parent                       string
	batchdeletedatapointsrequest *BatchDeleteDataPointsRequest
	urlParams_                   gensupport.URLParams
	ctx_                         context.Context
	header_                      http.Header
}

// BatchDelete: Delete a batch of identifyable data points.
//
//   - parent: Optional. Parent (data type) for the Data Point collection Format:
//     `users/me/dataTypes/{data_type}`, e.g.: - `users/me/dataTypes/steps` -
//     `users/me/dataTypes/-` For a list of the supported data types see the
//     DataPoint data union field. Deleting data points across multiple data type
//     collections is supported following https://aip.dev/159. If this is set,
//     the parent of all of the data points specified in `names` must match this
//     field.
func (r *UsersDataTypesDataPointsService) BatchDelete(parent string, batchdeletedatapointsrequest *BatchDeleteDataPointsRequest) *UsersDataTypesDataPointsBatchDeleteCall {
	c := &UsersDataTypesDataPointsBatchDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.batchdeletedatapointsrequest = batchdeletedatapointsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsBatchDeleteCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsBatchDeleteCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDataTypesDataPointsBatchDeleteCall) Context(ctx context.Context) *UsersDataTypesDataPointsBatchDeleteCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsBatchDeleteCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsBatchDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.batchdeletedatapointsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+parent}/dataPoints:batchDelete")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.batchDelete", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.dataTypes.dataPoints.batchDelete" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersDataTypesDataPointsBatchDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.batchDelete", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersDataTypesDataPointsCreateCall struct {
	s          *Service
	parent     string
	datapoint  *DataPoint
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Creates a single identifiable data point.
//
//   - parent: The parent resource name where the data point will be created.
//     Format: `users/{user}/dataTypes/{data_type}`.
func (r *UsersDataTypesDataPointsService) Create(parent string, datapoint *DataPoint) *UsersDataTypesDataPointsCreateCall {
	c := &UsersDataTypesDataPointsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.datapoint = datapoint
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsCreateCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsCreateCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDataTypesDataPointsCreateCall) Context(ctx context.Context) *UsersDataTypesDataPointsCreateCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsCreateCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.datapoint)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+parent}/dataPoints")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.create", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.dataTypes.dataPoints.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersDataTypesDataPointsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersDataTypesDataPointsDailyRollUpCall struct {
	s                            *Service
	parent                       string
	dailyrollupdatapointsrequest *DailyRollUpDataPointsRequest
	urlParams_                   gensupport.URLParams
	ctx_                         context.Context
	header_                      http.Header
}

// DailyRollUp: Roll up data points over civil time intervals for supported
// data types.
//
//   - parent: Parent data type of the Data Point collection. Format:
//     `users/{user}/dataTypes/{data_type}`, e.g.: - `users/me/dataTypes/steps` -
//     `users/me/dataTypes/distance` For a list of the supported data types see
//     the DailyRollupDataPoint value union field.
func (r *UsersDataTypesDataPointsService) DailyRollUp(parent string, dailyrollupdatapointsrequest *DailyRollUpDataPointsRequest) *UsersDataTypesDataPointsDailyRollUpCall {
	c := &UsersDataTypesDataPointsDailyRollUpCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.dailyrollupdatapointsrequest = dailyrollupdatapointsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsDailyRollUpCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsDailyRollUpCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDataTypesDataPointsDailyRollUpCall) Context(ctx context.Context) *UsersDataTypesDataPointsDailyRollUpCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsDailyRollUpCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsDailyRollUpCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.dailyrollupdatapointsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+parent}/dataPoints:dailyRollUp")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.dailyRollUp", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.dataTypes.dataPoints.dailyRollUp" call.
// Any non-2xx status code is an error. Response headers are in either
// *DailyRollUpDataPointsResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *UsersDataTypesDataPointsDailyRollUpCall) Do(opts ...googleapi.CallOption) (*DailyRollUpDataPointsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &DailyRollUpDataPointsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.dailyRollUp", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersDataTypesDataPointsExportExerciseTcxCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// ExportExerciseTcx: Exports exercise data in TCX format. Note: While the
// Authorization section below states that any one of the listed scopes is
// accepted, this specific method requires the user to provide both one of the
// `activity_and_fitness` scopes (`normal` or `readonly`) AND one of the
// `location` scopes (`normal` or `readonly`) in their access token to succeed.
//
//   - name: The resource name of the exercise data point to export. Format:
//     `users/{user}/dataTypes/exercise/dataPoints/{data_point}` Example:
//     `users/me/dataTypes/exercise/dataPoints/2026443605080188808` The `{user}`
//     is the alias "me" currently. Future versions may support user IDs. The
//     `{data_point}` ID maps to the exercise ID, which is a long integer.
func (r *UsersDataTypesDataPointsService) ExportExerciseTcx(name string) *UsersDataTypesDataPointsExportExerciseTcxCall {
	c := &UsersDataTypesDataPointsExportExerciseTcxCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// PartialData sets the optional parameter "partialData": Indicates whether to
// include the TCX data points when the GPS data is not available. If not
// specified, defaults to `false` and partial data will not be included.
func (c *UsersDataTypesDataPointsExportExerciseTcxCall) PartialData(partialData bool) *UsersDataTypesDataPointsExportExerciseTcxCall {
	c.urlParams_.Set("partialData", fmt.Sprint(partialData))
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsExportExerciseTcxCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsExportExerciseTcxCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *UsersDataTypesDataPointsExportExerciseTcxCall) IfNoneMatch(entityTag string) *UsersDataTypesDataPointsExportExerciseTcxCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do and Download methods.
func (c *UsersDataTypesDataPointsExportExerciseTcxCall) Context(ctx context.Context) *UsersDataTypesDataPointsExportExerciseTcxCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsExportExerciseTcxCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsExportExerciseTcxCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}:exportExerciseTcx")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.exportExerciseTcx", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Download fetches the API endpoint's "media" value, instead of the normal
// API response value. If the returned error is nil, the Response is guaranteed to
// have a 2xx status code. Callers must close the Response.Body as usual.
func (c *UsersDataTypesDataPointsExportExerciseTcxCall) Download(opts ...googleapi.CallOption) (*http.Response, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("media")
	if err != nil {
		return nil, err
	}
	if err := googleapi.CheckResponse(res); err != nil {
		res.Body.Close()
		return nil, gensupport.WrapError(err)
	}
	return res, nil
}

// Do executes the "health.users.dataTypes.dataPoints.exportExerciseTcx" call.
// Any non-2xx status code is an error. Response headers are in either
// *ExportExerciseTcxResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *UsersDataTypesDataPointsExportExerciseTcxCall) Do(opts ...googleapi.CallOption) (*ExportExerciseTcxResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ExportExerciseTcxResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.exportExerciseTcx", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersDataTypesDataPointsGetCall struct {
	s            *Service
	name         string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Get: Get a single identifyable data point.
//
//   - name: The name of the data point to retrieve. Format:
//     `users/{user}/dataTypes/{data_type}/dataPoints/{data_point}` See
//     DataPoint.name for examples and possible values.
func (r *UsersDataTypesDataPointsService) Get(name string) *UsersDataTypesDataPointsGetCall {
	c := &UsersDataTypesDataPointsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsGetCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *UsersDataTypesDataPointsGetCall) IfNoneMatch(entityTag string) *UsersDataTypesDataPointsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDataTypesDataPointsGetCall) Context(ctx context.Context) *UsersDataTypesDataPointsGetCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsGetCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.name,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.get", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.dataTypes.dataPoints.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *DataPoint.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersDataTypesDataPointsGetCall) Do(opts ...googleapi.CallOption) (*DataPoint, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &DataPoint{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersDataTypesDataPointsListCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// List: Query user health and fitness data points.
//
//   - parent: Parent data type of the Data Point collection. Format:
//     `users/me/dataTypes/{data_type}`, e.g.: - `users/me/dataTypes/steps` -
//     `users/me/dataTypes/weight` For a list of the supported data types see the
//     DataPoint data union field.
func (r *UsersDataTypesDataPointsService) List(parent string) *UsersDataTypesDataPointsListCall {
	c := &UsersDataTypesDataPointsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Filter expression following
// https://google.aip.dev/160. A time range (either physical or civil) can be
// specified. The supported filter fields are: - Interval start time: -
// Pattern: `{interval_data_type}.interval.start_time` - Supported comparison
// operators: `>=`, `<` - Timestamp literal expected in RFC-3339 format -
// Supported logical operators: `AND` - Example: - `steps.interval.start_time
// >= "2023-11-24T00:00:00Z" AND steps.interval.start_time <
// "2023-11-25T00:00:00Z" - `distance.interval.start_time >=
// "2024-08-14T12:34:56Z" - Interval civil start time: - Pattern:
// `{interval_data_type}.interval.civil_start_time` - Supported comparison
// operators: `>=`, `<` - Date with optional time literal expected in ISO 8601
// `YYYY-MM-DD[THH:mm:ss]` format - Supported logical operators: `AND` -
// Example: - `steps.interval.civil_start_time >= "2023-11-24" AND
// steps.interval.civil_start_time < "2023-11-25" -
// `distance.interval.civil_start_time >= "2024-08-14T12:34:56" - Sample
// observation physical time: - Pattern:
// `{sample_data_type}.sample_time.physical_time` - Supported comparison
// operators: `>=`, `<` - Timestamp literal expected in RFC-3339 format -
// Supported logical operators: `AND` - Example: -
// `weight.sample_time.physical_time >= "2023-11-24T00:00:00Z" AND
// weight.sample_time.physical_time < "2023-11-25T00:00:00Z" -
// `weight.sample_time.physical_time >= "2024-08-14T12:34:56Z" - Sample
// observation civil time: - Pattern:
// `{sample_data_type}.sample_time.civil_time` - Supported comparison
// operators: `>=`, `<` - Date with optional time literal expected in ISO 8601
// `YYYY-MM-DD[THH:mm:ss]` format - Supported logical operators: `AND` -
// Example: - `weight.sample_time.civil_time >= "2023-11-24" AND
// weight.sample_time.civil_time < "2023-11-25" -
// `weight.sample_time.civil_time >= "2024-08-14T12:34:56" - Daily summary
// date: - Pattern: `{daily_summary_data_type}.date` - Supported comparison
// operators: `>=`, `<` - Date literal expected in ISO 8601 `YYYY-MM-DD` format
// - Supported logical operators: `AND` - Example: -
// `daily_resting_heart_rate.date >= "2024-08-14" -
// `daily_heart_rate_variability.date < "2024-08-15" - Session civil start
// time (**Excluding Sleep**): - Pattern:
// `{session_data_type}.interval.civil_start_time` - Supported comparison
// operators: `>=`, `<` - Date with optional time literal expected in ISO 8601
// `YYYY-MM-DD[THH:mm:ss]` format - Supported logical operators: `AND` -
// Example: - `exercise.interval.civil_start_time >= "2023-11-24" AND
// exercise.interval.civil_start_time < "2023-11-25" -
// `exercise.interval.civil_start_time >= "2024-08-14T12:34:56" - Session end
// time (**Sleep specific**): - Pattern: `sleep.interval.end_time` - Supported
// comparison operators: `>=`, `<` - Timestamp literal expected in RFC-3339
// format - Supported logical operators: `AND`, `OR` - Example: -
// `sleep.interval.end_time >= "2023-11-24T00:00:00Z" AND
// sleep.interval.end_time < "2023-11-25T00:00:00Z" - Session civil end time
// (**Sleep specific**): - Pattern: `sleep.interval.civil_end_time` - Supported
// comparison operators: `>=`, `<` - Date with optional time literal expected
// in ISO 8601 `YYYY-MM-DD[THH:mm:ss]` format - Supported logical operators:
// `AND`, `OR` - Example: - `sleep.interval.civil_end_time >= "2023-11-24" AND
// sleep.interval.civil_end_time < "2023-11-25" Data points in the response
// will be ordered by the interval start time in descending order.
func (c *UsersDataTypesDataPointsListCall) Filter(filter string) *UsersDataTypesDataPointsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of data
// points to return. If unspecified, at most 1440 data points will be returned.
// The maximum page size is 10000; values above that will be truncated
// accordingly. For `exercise` and `sleep` the default page size is 25. The
// maximum page size for `exercise` and `sleep` is 25.
func (c *UsersDataTypesDataPointsListCall) PageSize(pageSize int64) *UsersDataTypesDataPointsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The `next_page_token`
// from a previous request, if any.
func (c *UsersDataTypesDataPointsListCall) PageToken(pageToken string) *UsersDataTypesDataPointsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsListCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *UsersDataTypesDataPointsListCall) IfNoneMatch(entityTag string) *UsersDataTypesDataPointsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDataTypesDataPointsListCall) Context(ctx context.Context) *UsersDataTypesDataPointsListCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsListCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+parent}/dataPoints")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.list", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.dataTypes.dataPoints.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListDataPointsResponse.ServerResponse.Header or (if a response was returned
// at all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
// check whether the returned error was because http.StatusNotModified was
// returned.
func (c *UsersDataTypesDataPointsListCall) Do(opts ...googleapi.CallOption) (*ListDataPointsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListDataPointsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *UsersDataTypesDataPointsListCall) Pages(ctx context.Context, f func(*ListDataPointsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type UsersDataTypesDataPointsPatchCall struct {
	s          *Service
	nameid     string
	datapoint  *DataPoint
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Patch: Updates a single identifiable data point. If a data point with the
// specified `name` is not found, the request will fail.
//
//   - name: Identifier. Data point name, only supported for the subset of
//     identifiable data types. For the majority of the data types, individual
//     data points do not need to be identified and this field would be empty.
//     Format: `users/{user}/dataTypes/{data_type}/dataPoints/{data_point}`
//     Example:
//     `users/abcd1234/dataTypes/sleep/dataPoints/a1b2c3d4-e5f6-7890-1234-567890ab
//     cdef` The `{user}` ID is a system-generated identifier, as described in
//     Identity.health_user_id. The `{data_type}` ID corresponds to the
//     kebab-case version of the field names in the DataPoint data union field,
//     e.g. `total-calories` for the `total_calories` field. The `{data_point}`
//     ID can be client-provided or system-generated. If client-provided, it must
//     be a string of 4-63 characters, containing only lowercase letters,
//     numbers, and hyphens.
func (r *UsersDataTypesDataPointsService) Patch(nameid string, datapoint *DataPoint) *UsersDataTypesDataPointsPatchCall {
	c := &UsersDataTypesDataPointsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.nameid = nameid
	c.datapoint = datapoint
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsPatchCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDataTypesDataPointsPatchCall) Context(ctx context.Context) *UsersDataTypesDataPointsPatchCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsPatchCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.datapoint)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+name}")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("PATCH", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"name": c.nameid,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.dataTypes.dataPoints.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at all) in
// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
// whether the returned error was because http.StatusNotModified was returned.
func (c *UsersDataTypesDataPointsPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Operation{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type UsersDataTypesDataPointsReconcileCall struct {
	s            *Service
	parent       string
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Reconcile: Reconcile data points from multiple data sources into a single
// data stream.
//
//   - parent: Parent data type of the Data Point collection. Format:
//     `users/me/dataTypes/{data_type}`, e.g.: - `users/me/dataTypes/steps` -
//     `users/me/dataTypes/heart-rate` For a list of the supported data types see
//     the DataPoint data union field.
func (r *UsersDataTypesDataPointsService) Reconcile(parent string) *UsersDataTypesDataPointsReconcileCall {
	c := &UsersDataTypesDataPointsReconcileCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// DataSourceFamily sets the optional parameter "dataSourceFamily": The data
// source family name to reconcile. If empty, data points from all data sources
// will be reconciled. Format:
// `users/me/dataSourceFamilies/{data_source_family}` The supported values are:
// - `users/me/dataSourceFamilies/all-sources` - default value -
// `users/me/dataSourceFamilies/google-wearables` - tracker devices -
// `users/me/dataSourceFamilies/google-sources` - Google first party sources
func (c *UsersDataTypesDataPointsReconcileCall) DataSourceFamily(dataSourceFamily string) *UsersDataTypesDataPointsReconcileCall {
	c.urlParams_.Set("dataSourceFamily", dataSourceFamily)
	return c
}

// Filter sets the optional parameter "filter": Filter expression based on
// https://aip.dev/160. A time range, either physical or civil, can be
// specified. See the ListDataPointsRequest.filter for the supported fields and
// syntax.
func (c *UsersDataTypesDataPointsReconcileCall) Filter(filter string) *UsersDataTypesDataPointsReconcileCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of data
// points to return. If unspecified, at most 1440 data points will be returned.
// The maximum page size is 10000; values above that will be truncated
// accordingly. For `exercise` and `sleep` the default page size is 25. The
// maximum page size for `exercise` and `sleep` is 25.
func (c *UsersDataTypesDataPointsReconcileCall) PageSize(pageSize int64) *UsersDataTypesDataPointsReconcileCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The `next_page_token`
// from a previous request, if any.
func (c *UsersDataTypesDataPointsReconcileCall) PageToken(pageToken string) *UsersDataTypesDataPointsReconcileCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsReconcileCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsReconcileCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets an optional parameter which makes the operation fail if the
// object's ETag matches the given value. This is useful for getting updates
// only after the object has changed since the last request.
func (c *UsersDataTypesDataPointsReconcileCall) IfNoneMatch(entityTag string) *UsersDataTypesDataPointsReconcileCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDataTypesDataPointsReconcileCall) Context(ctx context.Context) *UsersDataTypesDataPointsReconcileCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsReconcileCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsReconcileCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "", c.header_)
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+parent}/dataPoints:reconcile")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("GET", urls, nil)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.reconcile", "request", internallog.HTTPRequest(req, nil))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.dataTypes.dataPoints.reconcile" call.
// Any non-2xx status code is an error. Response headers are in either
// *ReconcileDataPointsResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *UsersDataTypesDataPointsReconcileCall) Do(opts ...googleapi.CallOption) (*ReconcileDataPointsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ReconcileDataPointsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.reconcile", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *UsersDataTypesDataPointsReconcileCall) Pages(ctx context.Context, f func(*ReconcileDataPointsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken"))
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.PageToken(x.NextPageToken)
	}
}

type UsersDataTypesDataPointsRollUpCall struct {
	s                       *Service
	parent                  string
	rollupdatapointsrequest *RollUpDataPointsRequest
	urlParams_              gensupport.URLParams
	ctx_                    context.Context
	header_                 http.Header
}

// RollUp: Roll up data points over physical time intervals for supported data
// types.
//
//   - parent: Parent data type of the Data Point collection. Format:
//     `users/{user}/dataTypes/{data_type}`, e.g.: - `users/me/dataTypes/steps` -
//     `users/me/dataTypes/distance` For a list of the supported data types see
//     the RollupDataPoint value union field.
func (r *UsersDataTypesDataPointsService) RollUp(parent string, rollupdatapointsrequest *RollUpDataPointsRequest) *UsersDataTypesDataPointsRollUpCall {
	c := &UsersDataTypesDataPointsRollUpCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.rollupdatapointsrequest = rollupdatapointsrequest
	return c
}

// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse for more
// details.
func (c *UsersDataTypesDataPointsRollUpCall) Fields(s ...googleapi.Field) *UsersDataTypesDataPointsRollUpCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method.
func (c *UsersDataTypesDataPointsRollUpCall) Context(ctx context.Context) *UsersDataTypesDataPointsRollUpCall {
	c.ctx_ = ctx
	return c
}

// Header returns a http.Header that can be modified by the caller to add
// headers to the request.
func (c *UsersDataTypesDataPointsRollUpCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *UsersDataTypesDataPointsRollUpCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.rollupdatapointsrequest)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+parent}/dataPoints:rollUp")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.rollUp", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "health.users.dataTypes.dataPoints.rollUp" call.
// Any non-2xx status code is an error. Response headers are in either
// *RollUpDataPointsResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *UsersDataTypesDataPointsRollUpCall) Do(opts ...googleapi.CallOption) (*RollUpDataPointsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &RollUpDataPointsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "health.users.dataTypes.dataPoints.rollUp", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

// Pages invokes f for each page of results.
// A non-nil error returned from f will halt the iteration.
// The provided context supersedes any context provided to the Context method.
func (c *UsersDataTypesDataPointsRollUpCall) Pages(ctx context.Context, f func(*RollUpDataPointsResponse) error) error {
	c.ctx_ = ctx
	defer func(pt string) { c.rollupdatapointsrequest.PageToken = pt }(c.rollupdatapointsrequest.PageToken)
	for {
		x, err := c.Do()
		if err != nil {
			return err
		}
		if err := f(x); err != nil {
			return err
		}
		if x.NextPageToken == "" {
			return nil
		}
		c.rollupdatapointsrequest.PageToken = x.NextPageToken
	}
}
