From ea280c4eb73a86b145df253b413524ffcc8da0ab Mon Sep 17 00:00:00 2001 From: Google APIs Date: Fri, 14 Aug 2026 06:57:47 -0700 Subject: [PATCH] feat: add menstrual cycle, symptoms, and mood data types to Health API v4 feat: expand ExerciseType enum with comprehensive activity categories feat: add granular OAuth scopes and per-method authorization mappings fix!: An existing packaging option `google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb` for `go_package` is removed fix!: A new packaging option `google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb` for `go_package` is added docs: improve documentation for data_source_family and window_size parameters This update introduces several capabilities and refinements to Google Devices and Services Health API v4: 1. New Data Models & DataPoint Fields: - Added support for menstrual cycle tracking (`MenstrualPeriod`, `OvulationTest` with `OvulationTestResult` enum). - Added symptom tracking (`Symptoms` with `SymptomValue` enum). - Added emotional wellbeing tracking (`Moods` with `Mood` and `Valence` enums). - Expanded `ExerciseType` enum with additional activity classifications. 2. Authorization & Scopes: - Introduced granular OAuth scopes (such as `logged_symptoms`, `mindfulness`, `reproductive_health`, `nutrition`, `profile.writeonly`, and `settings.writeonly`). - Configured explicit per-RPC canonical scopes for all `DataPointsService` and `HealthProfileService` methods. 3. Documentation Improvements: - Clarified behavior and definitions for `data_source_family` filter values (`all-sources`, `google-wearables`, `google-sources`). - Clarified constraints on aggregation `window_size` (minimum 1 second). PiperOrigin-RevId: 964677373 --- .../devicesandservices/health/v4/BUILD.bazel | 3 +- .../health/v4/data_coordinates.proto | 2 +- .../health/v4/data_model.proto | 1086 ++++++++++++++++- .../health/v4/data_points.proto | 74 +- .../health/v4/data_source.proto | 2 +- .../health/v4/data_subscription_service.proto | 13 +- .../health/v4/health_profile.proto | 9 +- .../health/v4/health_v4.yaml | 81 +- .../health/v4/medical_device_info.proto | 2 +- .../v4/webhook_notification_cloud_log.proto | 2 +- 10 files changed, 1183 insertions(+), 91 deletions(-) diff --git a/google/devicesandservices/health/v4/BUILD.bazel b/google/devicesandservices/health/v4/BUILD.bazel index 943aade9c0..1dac25aa8b 100644 --- a/google/devicesandservices/health/v4/BUILD.bazel +++ b/google/devicesandservices/health/v4/BUILD.bazel @@ -139,7 +139,7 @@ load( go_grpc_library( name = "health_go_proto", - importpath = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main", + importpath = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4", protos = [":health_proto"], deps = [ "//google/api:annotations_go_proto", @@ -353,6 +353,7 @@ load( csharp_proto_library( name = "health_csharp_proto", + extra_opts = [], deps = [":health_proto"], ) diff --git a/google/devicesandservices/health/v4/data_coordinates.proto b/google/devicesandservices/health/v4/data_coordinates.proto index 24c646b401..abcb1e46c2 100644 --- a/google/devicesandservices/health/v4/data_coordinates.proto +++ b/google/devicesandservices/health/v4/data_coordinates.proto @@ -23,7 +23,7 @@ import "google/type/date.proto"; import "google/type/timeofday.proto"; option csharp_namespace = "Google.DevicesAndServices.Health.V4"; -option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb"; +option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb"; option java_multiple_files = true; option java_outer_classname = "DataCoordinatesProto"; option java_package = "com.google.devicesandservices.health.v4"; diff --git a/google/devicesandservices/health/v4/data_model.proto b/google/devicesandservices/health/v4/data_model.proto index f39f8e4800..06f422f007 100644 --- a/google/devicesandservices/health/v4/data_model.proto +++ b/google/devicesandservices/health/v4/data_model.proto @@ -25,7 +25,7 @@ import "google/protobuf/timestamp.proto"; import "google/type/date.proto"; option csharp_namespace = "Google.DevicesAndServices.Health.V4"; -option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb"; +option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb"; option java_multiple_files = true; option java_outer_classname = "DataModelProto"; option java_package = "com.google.devicesandservices.health.v4"; @@ -299,6 +299,27 @@ enum VolumeUnit { PINT_US = 8; } +// Ovulation test result. +enum OvulationTestResult { + // Unspecified result. + OVULATION_TEST_RESULT_UNSPECIFIED = 0; + + // Negative result. + NEGATIVE = 1; + + // Luteinizing hormone surge. + LUTEINIZING_HORMONE_SURGE = 2; + + // Estrogen surge. + ESTROGEN_SURGE = 3; + + // Positive result. + POSITIVE = 4; + + // Indeterminate result. + INDETERMINATE = 5; +} + // Record of active zone minutes in a given time interval. message ActiveZoneMinutes { // Represents different heart rate zones. @@ -987,45 +1008,553 @@ message Exercise { } // The type of activity performed during an exercise. + // May receive new values in the future. enum ExerciseType { // Exercise type is unspecified. EXERCISE_TYPE_UNSPECIFIED = 0; - // Running type. - RUNNING = 1; + // Aerobic workout type. + AEROBIC_WORKOUT = 13; - // Walking type. - WALKING = 2; + // Archery type. + ARCHERY = 47; + + // Assault bike type. + ASSAULT_BIKE = 164; + + // Backpacking type. + BACKPACKING = 181; + + // Badminton type. + BADMINTON = 48; + + // Ballet type. + BALLET = 103; + + // Ballroom dance type. + BALLROOM_DANCE = 156; + + // Barre class type. + BARRE_CLASS = 49; + + // Baseball type. + BASEBALL = 50; + + // Basketball type. + BASKETBALL = 51; // Biking type. BIKING = 3; - // Swimming type. - SWIMMING = 4; + // Billiards type. + BILLIARDS = 180; + + // Body weight type. + BODY_WEIGHT = 149; + + // Bootcamp type. + BOOTCAMP = 14; + + // Bowling type. + BOWLING = 52; + + // Boxing type. + BOXING = 53; + + // Breakdancing type. + BREAKDANCING = 157; + + // Calisthenics type. + CALISTHENICS = 54; + + // Canoeing type. + CANOEING = 15; + + // Cardio sculpt type. + CARDIO_SCULPT = 129; + + // Cardio workout type. + CARDIO_WORKOUT = 140; + + // Carpentry type. + CARPENTRY = 108; + + // Cheerleading type. + CHEERLEADING = 165; + + // Circuit training type. + CIRCUIT_TRAINING = 16; + + // Cleaning type. + CLEANING = 105; + + // Climbing type. + CLIMBING = 55; + + // Core training type. + CORE_TRAINING = 17; + + // Cricket type. + CRICKET = 56; + + // Croquet type. + CROQUET = 111; + + // Cross country ski type. + CROSS_COUNTRY_SKI = 18; + + // Cross training type. + CROSS_TRAINING = 57; + + // Crossfit type. + CROSSFIT = 19; + + // Curling type. + CURLING = 58; + + // Dancing type. + DANCING = 20; + + // Diving type. + DIVING = 59; + + // Electric bike type. + ELECTRIC_BIKE = 152; + + // Electric scooter type. + ELECTRIC_SCOOTER = 168; + + // Elliptical type. + ELLIPTICAL = 21; + + // Equestrian sports type. + EQUESTRIAN_SPORTS = 60; + + // Exercise class type. + EXERCISE_CLASS = 61; + + // Fencing type. + FENCING = 62; + + // Field hockey type. + FIELD_HOCKEY = 113; + + // Fishing type. + FISHING = 63; + + // Fitness gaming type. + FITNESS_GAMING = 64; + + // Foiling type. + FOILING = 175; + + // Football american type. + FOOTBALL_AMERICAN = 65; + + // Football australian type. + FOOTBALL_AUSTRALIAN = 66; + + // Free weights type. + FREE_WEIGHTS = 148; + + // Frisbee playing general type. + FRISBEE_PLAYING_GENERAL = 67; + + // Functional strength training type. + FUNCTIONAL_STRENGTH_TRAINING = 68; + + // Gardening type. + GARDENING = 107; + + // Golf type. + GOLF = 22; + + // Gymnastics type. + GYMNASTICS = 69; + + // Handball type. + HANDBALL = 70; + + // Hand cycling type. + HAND_CYCLING = 71; + + // Hiit type. + HIIT = 9; // Hiking type. HIKING = 5; - // Yoga type. - YOGA = 6; + // Hip hop type. + HIP_HOP = 158; + + // Hockey type. + HOCKEY = 72; + + // Hoeing type. + HOEING = 109; + + // Household chores type. + HOUSEHOLD_CHORES = 137; + + // Hunting type. + HUNTING = 73; + + // Ice skating type. + ICE_SKATING = 127; + + // Incline run type. + INCLINE_RUN = 142; + + // Incline walk type. + INCLINE_WALK = 146; + + // Indoor climbing type. + INDOOR_CLIMBING = 23; + + // Interval workout type. + INTERVAL_WORKOUT = 24; + + // Jazz dance type. + JAZZ_DANCE = 154; + + // Jiu jitsu type. + JIU_JITSU = 160; + + // Jumping rope type. + JUMPING_ROPE = 74; + + // Karate type. + KARATE = 159; + + // Kayaking type. + KAYAKING = 25; + + // Kickboxing type. + KICKBOXING = 26; + + // Kitesurfing type. + KITESURFING = 172; + + // Lacrosse type. + LACROSSE = 75; + + // Martial arts type. + MARTIAL_ARTS = 27; + + // Meditate type. + MEDITATE = 28; + + // Modern dance type. + MODERN_DANCE = 153; + + // Motocross type. + MOTOCROSS = 114; + + // Motorcycle type. + MOTORCYCLE = 121; + + // Mountain bike type. + MOUNTAIN_BIKE = 128; + + // Mowing lawn type. + MOWING_LAWN = 106; + + // Muay thai type. + MUAY_THAI = 162; + + // Multisport type. + MULTISPORT = 76; + + // Musical performance type. + MUSICAL_PERFORMANCE = 163; + + // Nordic walking type. + NORDIC_WALKING = 145; + + // Orienteering type. + ORIENTEERING = 115; + + // Other type. + OTHER = 12; + + // Outdoor bike type. + OUTDOOR_BIKE = 29; + + // Outdoor workout type. + OUTDOOR_WORKOUT = 30; + + // Paddleboarding type. + PADDLEBOARDING = 31; + + // Padel type. + PADEL = 176; + + // Painting type. + PAINTING = 170; + + // Paragliding type. + PARAGLIDING = 78; + + // Parkour type. + PARKOUR = 166; + + // Pickelball type. + PICKELBALL = 79; // Pilates type. PILATES = 7; - // Workout type. - WORKOUT = 8; + // Polo type. + POLO = 116; - // HIIT type. - HIIT = 9; + // Powerlifting type. + POWERLIFTING = 32; - // Weightlifting type. - WEIGHTLIFTING = 10; + // Power walking type. + POWER_WALKING = 143; + + // Racket sports type. + RACKET_SPORTS = 169; + + // Racquetball type. + RACQUETBALL = 80; + + // Resistance bands type. + RESISTANCE_BANDS = 151; + + // Rock climbing type. + ROCK_CLIMBING = 123; + + // Rollerblading type. + ROLLERBLADING = 33; + + // Roller skating type. + ROLLER_SKATING = 118; + + // Rowing type. + ROWING = 81; + + // Rowing machine type. + ROWING_MACHINE = 34; + + // Rucking type. + RUCKING = 144; + + // Rugby type. + RUGBY = 82; + + // Running type. + RUNNING = 1; + + // Sailing type. + SAILING = 83; + + // Scootering type. + SCOOTERING = 167; + + // Scuba diving type. + SCUBA_DIVING = 84; + + // Shooting type. + SHOOTING = 104; + + // Shoveling type. + SHOVELING = 171; + + // Skateboarding type. + SKATEBOARDING = 117; + + // Skating type. + SKATING = 35; + + // Skiing type. + SKIING = 36; + + // Skydiving type. + SKYDIVING = 182; + + // Snorkeling type. + SNORKELING = 37; + + // Snowboarding type. + SNOWBOARDING = 38; + + // Snowmobiling type. + SNOWMOBILING = 179; + + // Snowshoeing type. + SNOWSHOEING = 85; + + // Snow sport type. + SNOW_SPORT = 86; + + // Soccer type. + SOCCER = 87; + + // Softball type. + SOFTBALL = 88; + + // Speed skating type. + SPEED_SKATING = 178; + + // Spinning type. + SPINNING = 39; + + // Sport type. + SPORT = 40; + + // Squash type. + SQUASH = 89; + + // Stairclimber type. + STAIRCLIMBER = 41; + + // Stationary bike type. + STATIONARY_BIKE = 139; + + // Step training type. + STEP_TRAINING = 90; // Strength training type. STRENGTH_TRAINING = 11; - // Other type. - OTHER = 12; + // Stretching type. + STRETCHING = 42; + + // Stroller walk type. + STROLLER_WALK = 122; + + // Surfing type. + SURFING = 43; + + // Swimming type. + SWIMMING = 4; + + // Swimming open water type. + SWIMMING_OPEN_WATER = 91; + + // Swimming pool type. + SWIMMING_POOL = 101; + + // Synchronized swimming type. + SYNCHRONIZED_SWIMMING = 177; + + // Tabata workout type. + TABATA_WORKOUT = 130; + + // Table tennis type. + TABLE_TENNIS = 92; + + // Taekwondo type. + TAEKWONDO = 161; + + // Tai chi type. + TAI_CHI = 93; + + // Tango type. + TANGO = 155; + + // Tennis type. + TENNIS = 44; + + // Track and field type. + TRACK_AND_FIELD = 94; + + // Trail run type. + TRAIL_RUN = 141; + + // Trampoline type. + TRAMPOLINE = 119; + + // Treadmill type. + TREADMILL = 45; + + // Treadmill walk type. + TREADMILL_WALK = 138; + + // Trx type. + TRX = 131; + + // Ultimate frisbee type. + ULTIMATE_FRISBEE = 112; + + // Unicycling type. + UNICYCLING = 102; + + // Volleyball type. + VOLLEYBALL = 95; + + // Volleyball beach type. + VOLLEYBALL_BEACH = 120; + + // Wakeboarding type. + WAKEBOARDING = 173; + + // Walking type. + WALKING = 2; + + // Walk with weights type. + WALK_WITH_WEIGHTS = 147; + + // Water aerobics type. + WATER_AEROBICS = 96; + + // Water jogging type. + WATER_JOGGING = 126; + + // Water polo type. + WATER_POLO = 97; + + // Water skiing type. + WATER_SKIING = 124; + + // Water sport type. + WATER_SPORT = 98; + + // Water volleyball type. + WATER_VOLLEYBALL = 125; + + // Weeding type. + WEEDING = 110; + + // Weightlifting type. + WEIGHTLIFTING = 10; + + // Weight machines type. + WEIGHT_MACHINES = 150; + + // Weights type. + WEIGHTS = 46; + + // Wheelchair type. + WHEELCHAIR = 99; + + // Windsurfing type. + WINDSURFING = 174; + + // Workout type. + WORKOUT = 8; + + // Wrestling type. + WRESTLING = 100; + + // Yoga type. + YOGA = 6; + + // Yoga bikram type. + YOGA_BIKRAM = 132; + + // Yoga hatha type. + YOGA_HATHA = 133; + + // Yoga power type. + YOGA_POWER = 134; + + // Yoga vinyasa type. + YOGA_VINYASA = 135; + + // Zumba type. + ZUMBA = 136; } // Required. Observed exercise interval @@ -1061,7 +1590,12 @@ message Exercise { ExerciseMetadata exercise_metadata = 11 [(google.api.field_behavior) = OPTIONAL]; - // Required. Exercise display name. + // Required. The localized, human-readable name of the exercise. + // For all exercise types other than `OTHER`, the system ignores client + // input and overrides this field with a generated name based on + // `exercise_type` (e.g., "Walking" for `WALKING`). If `exercise_type` is + // `OTHER`, this field can contain the user's custom, free-form display + // name. string display_name = 12 [(google.api.field_behavior) = REQUIRED]; // Optional. Duration excluding pauses. @@ -1469,7 +2003,7 @@ message MetricsSummary { // Represents the weight quantity. message WeightQuantity { - // Required. Value representing the weight in grams. + // Required. The weight value in grams. optional double grams = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. Value representing the user provided unit. @@ -1478,7 +2012,7 @@ message WeightQuantity { // Represents the energy quantity. message EnergyQuantity { - // Required. Value representing the energy in kilocalories. + // Required. The energy value in kilocalories. optional double kcal = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. Value representing the user provided unit. @@ -1487,14 +2021,14 @@ message EnergyQuantity { // Represents the quantity of a nutrient. message NutrientQuantity { - // Required. Value representing the quantity of the nutrient. + // Required. The quantity of the nutrient, measured in grams. WeightQuantity quantity = 1 [(google.api.field_behavior) = REQUIRED]; - // Required. Value representing the nutrient. + // Required. The nutrient type. Nutrient nutrient = 2 [(google.api.field_behavior) = REQUIRED]; } -// Holds information about a user logged food. +// Holds information about food logged by a user. // // There are two ways of creating a nutrition log based on the food type: // 1. Identified food: Using the food field, which is a reference to a Food @@ -1506,12 +2040,12 @@ message NutrientQuantity { // `total_fat` fields manually. // // The identified food is preferred over the anonymous food. -// Nutrition logs created from anonymous food are not be editable. +// Nutrition logs created from anonymous food are not editable. message NutritionLog { // Represents different properties and information about the serving of a // specific food. message Serving { - // Optional. Amount of food consumed, fractional values are supported. + // Optional. The number of servings. optional double amount = 1 [(google.api.field_behavior) = OPTIONAL]; // Required. Food measurement unit @@ -1528,56 +2062,45 @@ message NutritionLog { [(google.api.field_behavior) = OUTPUT_ONLY]; } - // Required. Observed interval. + // Required. The time window when the food was logged. SessionTimeInterval interval = 2 [(google.api.field_behavior) = REQUIRED]; - // Optional. Value representing the nutrients of the nutrition log. + // Optional. An array of individual nutrient values for the nutrition log. repeated NutrientQuantity nutrients = 3 [(google.api.field_behavior) = OPTIONAL]; - // Optional. Value representing the energy of the nutrition log. - // For nutrition logs created from an identified food, this field will be - // populated based on the referenced food. For anonymous food, this field will - // be populated manually. + // Optional. The total energy of the food, measured in kilocalories (`kcal`). EnergyQuantity energy = 4 [(google.api.field_behavior) = OPTIONAL]; - // Optional. Value representing the energy from fat of the nutrition log. - // For nutrition logs created from an identified food, this field will be - // populated based on the referenced food. For anonymous food, this field will - // be populated manually. + // Optional. The energy from fat, measured in kilocalories (`kcal`). EnergyQuantity energy_from_fat = 5 [(google.api.field_behavior) = OPTIONAL]; - // Optional. Value representing the total carbohydrate of the nutrition log. - // For nutrition logs created from an identified food, this field will be - // populated based on the referenced food. For anonymous food, this field will - // be populated manually. + // Optional. The total carbohydrate content, measured in grams. WeightQuantity total_carbohydrate = 7 [(google.api.field_behavior) = OPTIONAL]; - // Optional. Value representing the total fat of the nutrition log. - // For nutrition logs created from an identified food, this field will be - // populated based on the referenced food. For anonymous food, this field will - // be populated manually. + // Optional. The total fat content, measured in grams. WeightQuantity total_fat = 8 [(google.api.field_behavior) = OPTIONAL]; - // Optional. Value representing the meal type of the nutrition log. + // Optional. The meal category. One of `BREAKFAST`, `LUNCH`, `DINNER`, or + // `SNACK`. MealType meal_type = 13 [(google.api.field_behavior) = OPTIONAL]; - // Optional. Value representing the nutrition log serving. + // Optional. The serving information for the logged food. Serving serving = 14 [(google.api.field_behavior) = OPTIONAL]; - // Required. Represents the food ID. + // Optional. The resource name of the Food item. Required when creating a + // nutrition log from an identified food. For anonymous food logs, use the + // `food_display_name` field instead. string food = 15 [ - (google.api.field_behavior) = REQUIRED, + (google.api.field_behavior) = OPTIONAL, (google.api.resource_reference) = { type: "health.googleapis.com/DataPoint" } ]; - // Value representing the display name of the food. - // For nutrition logs created from an identified food, this field will be - // populated based on the referenced food. For anonymous food, this field will - // be populated manually. + // The display name of the food. For identified food logs, this is populated + // automatically from the referenced food. string food_display_name = 16; } @@ -1886,6 +2409,10 @@ message Sleep { StagesState stages_status = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Sleep and sleep stages algorithms finished processing. + // A `true` value indicates whether all data processing for the session is + // complete. + // A `false` value means sleep period is detected but sleep stages is still + // processing. bool processed = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Naps are sleeps without stages and relatively short @@ -1898,6 +2425,12 @@ message Sleep { // Optional. Sleep identifier relevant in the context of the data source. string external_id = 7 [(google.api.field_behavior) = OPTIONAL]; + + // Output only. `main_sleep`: the longest sleep session with stages within + // one day. If no sleep session has stages, then the longest sleep is the + // `main_sleep`. If there are multiple days of sleep in the response, there + // is one `main_sleep` per day. + bool main_sleep = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; } // @@ -1999,7 +2532,8 @@ message Sleep { repeated OutOfBedSegment out_of_bed_segments = 6 [(google.api.field_behavior) = OPTIONAL]; - // Optional. Sleep metadata: processing, main, manually edited, stages status. + // Optional. Sleep metadata: `processed`, `main_sleep`, `manually_edited`, and + // `stages_status`. SleepMetadata metadata = 8 [(google.api.field_behavior) = OPTIONAL]; // Output only. Sleep summary: metrics and stages summary. @@ -2012,6 +2546,11 @@ message Sleep { // Output only. Last update time of this sleep observation. google.protobuf.Timestamp update_time = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; + + // Output only. List of short awake segments (under a set threshold) that are + // part of the sleep session. These can overlap with sleep stages. + repeated SleepStage short_awakenings = 12 + [(google.api.field_behavior) = OUTPUT_ONLY]; } // Step count over the time interval. @@ -2093,6 +2632,17 @@ message TimeInHeartRateZoneRollupValue { } // Represents the result of the rollup of the user's total calories. +// +// Note: Queries for the `total-calories` data type must include a time +// interval filter (such as +// [`total_calories.interval.start_time`][google.devicesandservices.health.v4main.ObservationTimeInterval.start_time] +// or +// [`total_calories.interval.civil_start_time`][google.devicesandservices.health.v4main.ObservationTimeInterval.civil_start_time]). +// The maximum range is 14 days. +// +// Example filter query: +// `total_calories.interval.start_time >= "2026-04-20T00:00:00Z" AND +// total_calories.interval.start_time < "2026-04-21T00:00:00Z"` message TotalCaloriesRollupValue { // Sum of the total calories in kilocalories. optional double kcal_sum = 1; @@ -2325,3 +2875,435 @@ message ActiveEnergyBurnedRollupValue { // Output only. Sum of the active energy burned in kilocalories. optional double kcal_sum = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; } + +// Menstrual period record. +message MenstrualPeriod { + // Required. Observed interval. + ObservationTimeInterval interval = 2 [(google.api.field_behavior) = REQUIRED]; + + // Optional. Standard free-form notes captured at manual logging. + string notes = 4 [(google.api.field_behavior) = OPTIONAL]; +} + +// Ovulation test record. +message OvulationTest { + // Required. The time at which ovulation test was measured. + ObservationSampleTime sample_time = 2 + [(google.api.field_behavior) = REQUIRED]; + + // Required. The result of the ovulation test. + OvulationTestResult result = 3 [(google.api.field_behavior) = REQUIRED]; +} + +// Symptoms logged by the user. +message Symptoms { + // Enum representing possible symptom values. + enum SymptomValue { + // Unspecified symptom value. + SYMPTOM_VALUE_UNSPECIFIED = 0; + + // Abdominal cramps. + CRAMPS = 1; + + // Headache. + HEADACHE = 2; + + // Tender breasts. + TENDER_BREASTS = 3; + + // Acne. + ACNE = 4; + + // Feeling sick or unwell. + SICK = 5; + + // Bloating or abdominal swelling. + BLOATED = 6; + + // Hot flashes. + HOT_FLASHES = 7; + + // Premenstrual syndrome symptoms. + PMS = 8; + + // Coughing. + COUGH = 9; + + // Fever or elevated body temperature. + FEVER = 10; + + // Difficulty breathing or shortness of breath. + DIFFICULTY_BREATHING = 11; + + // Back pain. + BACK_PAIN = 12; + + // Shakiness or tremors. + SHAKINESS = 13; + + // Excessive hunger. + HUNGER = 14; + + // Excessive sweating. + SWEATING = 15; + + // Anxiety or nervousness. + ANXIETY = 16; + + // Excessive thirst. + THIRST = 17; + + // Frequent urination. + FREQUENT_URINATION = 18; + + // Blurred vision. + BLURRED_VISION = 19; + + // Other symptoms. + OTHER = 20; + + // High sex drive. + SEX_DRIVE_HIGH = 21; + + // Medium sex drive. + SEX_DRIVE_MEDIUM = 22; + + // Low sex drive. + SEX_DRIVE_LOW = 23; + + // Heart palpitations or racing heart. + HEART_PALPITATIONS = 24; + + // Fainting or loss of consciousness. + FAINTING = 25; + + // Chest pain or discomfort. + CHEST_PAIN = 26; + + // Fatigue or extreme tiredness. + FATIGUE = 27; + + // Confusion or mental fogginess. + CONFUSION = 28; + + // Dizziness or lightheadedness. + DIZZINESS = 29; + + // Abdominal pain. + ABDOMINAL_PAIN = 30; + + // Bladder leaks. + BLADDER_LEAKS = 31; + + // Bleeding gums. + BLEEDING_GUMS = 32; + + // Brain fog. + BRAIN_FOG = 33; + + // Burning mouth. + BURNING_MOUTH = 34; + + // Constipation. + CONSTIPATION = 35; + + // Food cravings. + CRAVINGS = 36; + + // Decreased appetite. + DECREASED_APPETITE = 37; + + // Diarrhea. + DIARRHEA = 38; + + // Drawing pain. + DRAWING_PAIN = 39; + + // Dry eyes. + DRY_EYES = 40; + + // Dry hair. + DRY_HAIR = 41; + + // Dry skin. + DRY_SKIN = 42; + + // Exhaustion. + EXHAUSTION = 43; + + // Feeling good or well. + FEEL_GOOD = 44; + + // Food aversions. + FOOD_AVERSIONS = 45; + + // Hair loss. + HAIR_LOSS = 46; + + // Heartburn. + HEARTBURN = 47; + + // Hyperpigmentation. + HYPERPIGMENTATION = 48; + + // Increased appetite. + INCREASED_APPETITE = 49; + + // Increased appetite V2. + INCREASED_APPETITE_V2 = 50; + + // Insomnia or difficulty sleeping. + INSOMNIA = 51; + + // Joint pain. + JOINT_PAIN = 52; + + // Leg cramps. + LEG_CRAMPS = 53; + + // Milky nipple discharge. + MILKY_NIPPLE_DISCHARGE = 54; + + // Nausea. + NAUSEA = 55; + + // Night sweats. + NIGHT_SWEATS = 56; + + // Normal digestion. + NORMAL_DIGESTION = 57; + + // Normal stool. + NORMAL_STOOL = 58; + + // Perineum pain. + PERINEUM_PAIN = 59; + + // Sleepiness or drowsiness. + SLEEPINESS = 60; + + // Stretch marks. + STRETCH_MARKS = 61; + + // Swelling. + SWELLING = 62; + + // Vaginal dryness. + VAGINAL_DRYNESS = 63; + + // Vaginal itching. + VAGINAL_ITCHING = 64; + + // Vomiting. + VOMITING = 65; + } + + // Required. Time when the symptoms were logged. + ObservationSampleTime sample_time = 1 + [(google.api.field_behavior) = REQUIRED]; + + // Required. List of symptoms experienced. + repeated SymptomValue symptoms = 2 [(google.api.field_behavior) = REQUIRED]; +} + +// Moods record. +message Moods { + // The mood. + enum Mood { + // Unspecified mood. + MOOD_UNSPECIFIED = 0; + + // Amazed. + AMAZED = 1; + + // Amused. + AMUSED = 2; + + // Angry. + ANGRY = 3; + + // Annoyed. + ANNOYED = 4; + + // Anxious. + ANXIOUS = 5; + + // Happy. + HAPPY = 6; + + // Content. + CONTENT = 7; + + // Sad. + SAD = 8; + + // Worried. + WORRIED = 9; + + // Frustrated. + FRUSTRATED = 10; + + // Excited. + EXCITED = 11; + + // Calm. + CALM = 12; + + // Stressed. + STRESSED = 13; + + // Ashamed. + ASHAMED = 14; + + // Brave. + BRAVE = 15; + + // Confident. + CONFIDENT = 16; + + // Disappointed. + DISAPPOINTED = 17; + + // Discouraged. + DISCOURAGED = 18; + + // Disgusted. + DISGUSTED = 19; + + // Drained. + DRAINED = 20; + + // Embarrassed. + EMBARRASSED = 21; + + // Grateful. + GRATEFUL = 22; + + // Guilty. + GUILTY = 23; + + // Hopeful. + HOPEFUL = 24; + + // Hopeless. + HOPELESS = 25; + + // Indifferent. + INDIFFERENT = 26; + + // Irritated. + IRRITATED = 27; + + // Jealous. + JEALOUS = 28; + + // Joyful. + JOYFUL = 29; + + // Lonely. + LONELY = 30; + + // Overwhelmed. + OVERWHELMED = 31; + + // Passionate. + PASSIONATE = 32; + + // Peaceful. + PEACEFUL = 33; + + // Proud. + PROUD = 34; + + // Relieved. + RELIEVED = 35; + + // Satisfied. + SATISFIED = 36; + + // Scared. + SCARED = 37; + + // Surprised. + SURPRISED = 38; + + // Energized. + ENERGIZED = 39; + + // Fatigued. + FATIGUED = 40; + + // Very calm. + VERY_CALM = 41; + + // Very stressed. + VERY_STRESSED = 42; + + // Neutral. + NEUTRAL = 43; + + // Afraid. + AFRAID = 44; + + // Hurting. + HURTING = 45; + + // Bored. + BORED = 46; + + // Bitter. + BITTER = 47; + + // Envious. + ENVIOUS = 48; + + // Confused. + CONFUSED = 49; + + // Curious. + CURIOUS = 50; + + // Awestruck. + AWESTRUCK = 51; + + // Inspired. + INSPIRED = 52; + + // Longing. + LONGING = 53; + + // Accomplished. + ACCOMPLISHED = 54; + + // Loving. + LOVING = 55; + + // Compassionate. + COMPASSIONATE = 56; + } + + // The valence. + enum Valence { + // Unspecified valence. + VALENCE_UNSPECIFIED = 0; + + // Unpleasant. + UNPLEASANT = 1; + + // Baseline. + BASELINE = 2; + + // Pleasant. + PLEASANT = 3; + } + + // Required. The time at which moods were measured. + ObservationSampleTime sample_time = 2 + [(google.api.field_behavior) = REQUIRED]; + + // Required. The moods logged. + repeated Mood moods = 3 [(google.api.field_behavior) = REQUIRED]; + + // Optional. The valences. + repeated Valence valences = 5 [(google.api.field_behavior) = OPTIONAL]; +} diff --git a/google/devicesandservices/health/v4/data_points.proto b/google/devicesandservices/health/v4/data_points.proto index 64697a5a7c..0d6f8a7259 100644 --- a/google/devicesandservices/health/v4/data_points.proto +++ b/google/devicesandservices/health/v4/data_points.proto @@ -30,7 +30,7 @@ import "google/rpc/status.proto"; import "google/type/interval.proto"; option csharp_namespace = "Google.DevicesAndServices.Health.V4"; -option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb"; +option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb"; option java_multiple_files = true; option java_outer_classname = "DataPointsProto"; option java_package = "com.google.devicesandservices.health.v4"; @@ -43,9 +43,19 @@ service DataPointsService { option (google.api.default_host) = "health.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly," + "https://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly," "https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly," + "https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly," "https://www.googleapis.com/auth/googlehealth.location.readonly," - "https://www.googleapis.com/auth/googlehealth.sleep.readonly"; + "https://www.googleapis.com/auth/googlehealth.logged_symptoms.readonly," + "https://www.googleapis.com/auth/googlehealth.logged_symptoms.writeonly," + "https://www.googleapis.com/auth/googlehealth.mindfulness.readonly," + "https://www.googleapis.com/auth/googlehealth.mindfulness.writeonly," + "https://www.googleapis.com/auth/googlehealth.nutrition.writeonly," + "https://www.googleapis.com/auth/googlehealth.reproductive_health.readonly," + "https://www.googleapis.com/auth/googlehealth.reproductive_health.writeonly," + "https://www.googleapis.com/auth/googlehealth.sleep.readonly," + "https://www.googleapis.com/auth/googlehealth.sleep.writeonly"; // Get a single identifyable data point. rpc GetDataPoint(GetDataPointRequest) returns (DataPoint) { @@ -335,6 +345,22 @@ message DataPoint { // Optional. Data for points in the `blood-glucose` sample data type // collection. BloodGlucose blood_glucose = 46 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Data for points in the `menstrual-period` interval data type + // collection. + MenstrualPeriod menstrual_period = 49 + [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Data for points in the `ovulation-test` sample data type + // collection. + OvulationTest ovulation_test = 50 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Data for points in the `symptoms` sample data type + // collection. + Symptoms symptoms = 52 [(google.api.field_behavior) = OPTIONAL]; + + // Optional. Data for points in the `moods` sample data type collection. + Moods moods = 53 [(google.api.field_behavior) = OPTIONAL]; } // Identifier. Data point name, only supported for the subset of identifiable @@ -352,7 +378,7 @@ message DataPoint { // The `{data_type}` ID corresponds to the kebab-case version of the field // names in the [DataPoint // data][google.devicesandservices.health.v4.DataPoint] union - // field, e.g. `total-calories` for the `total_calories` field. + // field, e.g. `heart-rate` for the `heart_rate` field. // // The `{data_point}` ID can be client-provided or system-generated. // If client-provided, it must be a string of 4-63 characters, @@ -505,7 +531,7 @@ message ReconciledDataPoint { // The `{data_type}` ID corresponds to the kebab-case version of the field // names in the [DataPoint // data][google.devicesandservices.health.v4.DataPoint] union - // field, e.g. `total-calories` for the `total_calories` field. + // field, e.g. `heart-rate` for the `heart_rate` field. // // The `{data_point}` ID can be client-provided or system-generated. // If client-provided, it must be a string of 4-63 characters, @@ -1073,12 +1099,14 @@ message ReconcileDataPointsRequest { // // 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 + // - `users/me/dataSourceFamilies/all-sources` - Default value. Includes data + // from all available data sources. + // - `users/me/dataSourceFamilies/google-wearables` - Includes data from + // Google and Fitbit tracker devices (such as Fitbit trackers and Pixel + // Watch). Excludes manually logged data. + // - `users/me/dataSourceFamilies/google-sources` - Includes first-party + // Google data, such as data from tracker devices, manually logged data, and + // Health Connect. string data_source_family = 5 [(google.api.field_behavior) = OPTIONAL]; } @@ -1115,7 +1143,7 @@ message RollUpDataPointsRequest { google.type.Interval range = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The size of the time window to group data points into before - // applying the aggregation functions. + // applying the aggregation functions. Must be at least 1 second. google.protobuf.Duration window_size = 3 [(google.api.field_behavior) = REQUIRED]; @@ -1138,10 +1166,14 @@ message RollUpDataPointsRequest { // // 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 + // - `users/me/dataSourceFamilies/all-sources` - Default value. Includes data + // from all available data sources. + // - `users/me/dataSourceFamilies/google-wearables` - Includes data from + // Google and Fitbit tracker devices (such as Fitbit trackers and Pixel + // Watch). Excludes manually logged data. + // - `users/me/dataSourceFamilies/google-sources` - Includes first-party + // Google data, such as data from tracker devices, manually logged data, and + // Health Connect. string data_source_family = 7 [(google.api.field_behavior) = OPTIONAL]; } @@ -1201,10 +1233,14 @@ message DailyRollUpDataPointsRequest { // // 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 + // - `users/me/dataSourceFamilies/all-sources` - Default value. Includes data + // from all available data sources. + // - `users/me/dataSourceFamilies/google-wearables` - Includes data from + // Google and Fitbit tracker devices (such as Fitbit trackers and Pixel + // Watch). Excludes manually logged data. + // - `users/me/dataSourceFamilies/google-sources` - Includes first-party + // Google data, such as data from tracker devices, manually logged data, and + // Health Connect. string data_source_family = 7 [(google.api.field_behavior) = OPTIONAL]; } diff --git a/google/devicesandservices/health/v4/data_source.proto b/google/devicesandservices/health/v4/data_source.proto index 64438beb63..127d7b26a8 100644 --- a/google/devicesandservices/health/v4/data_source.proto +++ b/google/devicesandservices/health/v4/data_source.proto @@ -19,7 +19,7 @@ package google.devicesandservices.health.v4; import "google/api/field_behavior.proto"; option csharp_namespace = "Google.DevicesAndServices.Health.V4"; -option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb"; +option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb"; option java_multiple_files = true; option java_outer_classname = "DataSourceProto"; option java_package = "com.google.devicesandservices.health.v4"; diff --git a/google/devicesandservices/health/v4/data_subscription_service.proto b/google/devicesandservices/health/v4/data_subscription_service.proto index b0b3048776..e79c03f768 100644 --- a/google/devicesandservices/health/v4/data_subscription_service.proto +++ b/google/devicesandservices/health/v4/data_subscription_service.proto @@ -26,7 +26,7 @@ import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.DevicesAndServices.Health.V4"; -option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb"; +option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb"; option java_multiple_files = true; option java_outer_classname = "DataSubscriptionServiceProto"; option java_package = "com.google.devicesandservices.health.v4"; @@ -181,8 +181,8 @@ service DataSubscriptionService { // Request message for CreateSubscriber. message CreateSubscriberRequest { // Required. The parent resource where this subscriber will be created. - // Format: projects/{project} - // Example: projects/my-project-123 + // Format: projects/{project_number} + // Example: projects/1234567890 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { @@ -325,7 +325,7 @@ message ListSubscriptionsRequest { // - `data_type` // // The `user` identifier (e.g., `user1` in `users/user1`) refers to the public - // `healthUserId` + // `health_user_id` // // Example: user = "users/user1" // Example: user = "users/user1" OR user = "users/user2" @@ -484,8 +484,9 @@ message Subscription { // A subscriber will only receive notifications for data types that are // declared here. // A subscription can only subscribe to the data types of the subscriber. - // Supported data types are: "altitude", "distance", "floors", "sleep", - // "steps", "weight". + // The values should be in the format + // "users/{health_user_id}/dataTypes/{data_type}" where `{data_type}` is one + // of "altitude", "distance", "floors", "sleep", "steps", "weight". repeated string data_types = 2 [ (google.api.field_behavior) = OPTIONAL, (google.api.resource_reference) = { type: "health.googleapis.com/DataType" } diff --git a/google/devicesandservices/health/v4/health_profile.proto b/google/devicesandservices/health/v4/health_profile.proto index 9d73d14756..23af9dc61a 100644 --- a/google/devicesandservices/health/v4/health_profile.proto +++ b/google/devicesandservices/health/v4/health_profile.proto @@ -26,7 +26,7 @@ import "google/protobuf/timestamp.proto"; import "google/type/date.proto"; option csharp_namespace = "Google.DevicesAndServices.Health.V4"; -option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb"; +option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb"; option java_multiple_files = true; option java_outer_classname = "HealthProfileProto"; option java_package = "com.google.devicesandservices.health.v4"; @@ -41,8 +41,13 @@ service HealthProfileService { "https://www.googleapis.com/auth/googlehealth.ecg.readonly," "https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly," "https://www.googleapis.com/auth/googlehealth.irn.readonly," + "https://www.googleapis.com/auth/googlehealth.logged_symptoms.readonly," + "https://www.googleapis.com/auth/googlehealth.mindfulness.readonly," "https://www.googleapis.com/auth/googlehealth.profile.readonly," + "https://www.googleapis.com/auth/googlehealth.profile.writeonly," + "https://www.googleapis.com/auth/googlehealth.reproductive_health.readonly," "https://www.googleapis.com/auth/googlehealth.settings.readonly," + "https://www.googleapis.com/auth/googlehealth.settings.writeonly," "https://www.googleapis.com/auth/googlehealth.sleep.readonly"; // Returns user Profile details. @@ -556,8 +561,6 @@ message Settings { bool auto_stride_enabled = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. The measurement unit defined in the user's account settings. - // - // Updates to this field are currently not supported. DistanceUnit distance_unit = 5 [(google.api.field_behavior) = OPTIONAL]; // Optional. The measurement unit defined in the user's account settings. diff --git a/google/devicesandservices/health/v4/health_v4.yaml b/google/devicesandservices/health/v4/health_v4.yaml index 9a1f539d48..7d92af02b6 100644 --- a/google/devicesandservices/health/v4/health_v4.yaml +++ b/google/devicesandservices/health/v4/health_v4.yaml @@ -24,22 +24,68 @@ authentication: oauth: canonical_scopes: |- https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly, + https://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly, https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly, + https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly, https://www.googleapis.com/auth/googlehealth.location.readonly, - https://www.googleapis.com/auth/googlehealth.sleep.readonly + https://www.googleapis.com/auth/googlehealth.logged_symptoms.readonly, + https://www.googleapis.com/auth/googlehealth.logged_symptoms.writeonly, + https://www.googleapis.com/auth/googlehealth.mindfulness.readonly, + https://www.googleapis.com/auth/googlehealth.mindfulness.writeonly, + https://www.googleapis.com/auth/googlehealth.nutrition.writeonly, + https://www.googleapis.com/auth/googlehealth.reproductive_health.readonly, + https://www.googleapis.com/auth/googlehealth.reproductive_health.writeonly, + https://www.googleapis.com/auth/googlehealth.sleep.readonly, + https://www.googleapis.com/auth/googlehealth.sleep.writeonly + - selector: google.devicesandservices.health.v4.DataPointsService.BatchDeleteDataPoints + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly, + https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly, + https://www.googleapis.com/auth/googlehealth.logged_symptoms.writeonly, + https://www.googleapis.com/auth/googlehealth.mindfulness.writeonly, + https://www.googleapis.com/auth/googlehealth.nutrition.writeonly, + https://www.googleapis.com/auth/googlehealth.reproductive_health.writeonly, + https://www.googleapis.com/auth/googlehealth.sleep.writeonly + - selector: google.devicesandservices.health.v4.DataPointsService.CreateDataPoint + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly, + https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly, + https://www.googleapis.com/auth/googlehealth.logged_symptoms.writeonly, + https://www.googleapis.com/auth/googlehealth.mindfulness.writeonly, + https://www.googleapis.com/auth/googlehealth.nutrition.writeonly, + https://www.googleapis.com/auth/googlehealth.reproductive_health.writeonly, + https://www.googleapis.com/auth/googlehealth.sleep.writeonly - selector: google.devicesandservices.health.v4.DataPointsService.ExportExerciseTcx oauth: canonical_scopes: |- https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly, https://www.googleapis.com/auth/googlehealth.location.readonly + - selector: google.devicesandservices.health.v4.DataPointsService.GetDataPoint + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly, + https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly, + https://www.googleapis.com/auth/googlehealth.location.readonly, + https://www.googleapis.com/auth/googlehealth.logged_symptoms.readonly, + https://www.googleapis.com/auth/googlehealth.mindfulness.readonly, + https://www.googleapis.com/auth/googlehealth.reproductive_health.readonly, + https://www.googleapis.com/auth/googlehealth.sleep.readonly + - selector: google.devicesandservices.health.v4.DataPointsService.UpdateDataPoint + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.activity_and_fitness.writeonly, + https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.writeonly, + https://www.googleapis.com/auth/googlehealth.logged_symptoms.writeonly, + https://www.googleapis.com/auth/googlehealth.mindfulness.writeonly, + https://www.googleapis.com/auth/googlehealth.nutrition.writeonly, + https://www.googleapis.com/auth/googlehealth.reproductive_health.writeonly, + https://www.googleapis.com/auth/googlehealth.sleep.writeonly - selector: 'google.devicesandservices.health.v4.DataSubscriptionService.*' oauth: canonical_scopes: |- https://www.googleapis.com/auth/cloud-platform - - selector: 'google.devicesandservices.health.v4.HealthProfileService.*' - oauth: - canonical_scopes: |- - https://www.googleapis.com/auth/googlehealth.settings.readonly - selector: google.devicesandservices.health.v4.HealthProfileService.GetIdentity oauth: canonical_scopes: |- @@ -47,17 +93,40 @@ authentication: https://www.googleapis.com/auth/googlehealth.ecg.readonly, https://www.googleapis.com/auth/googlehealth.health_metrics_and_measurements.readonly, https://www.googleapis.com/auth/googlehealth.irn.readonly, + https://www.googleapis.com/auth/googlehealth.logged_symptoms.readonly, + https://www.googleapis.com/auth/googlehealth.mindfulness.readonly, https://www.googleapis.com/auth/googlehealth.profile.readonly, + https://www.googleapis.com/auth/googlehealth.reproductive_health.readonly, https://www.googleapis.com/auth/googlehealth.settings.readonly, https://www.googleapis.com/auth/googlehealth.sleep.readonly - selector: google.devicesandservices.health.v4.HealthProfileService.GetIrnProfile oauth: canonical_scopes: |- https://www.googleapis.com/auth/googlehealth.irn.readonly + - selector: google.devicesandservices.health.v4.HealthProfileService.GetPairedDevice + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.settings.readonly - selector: google.devicesandservices.health.v4.HealthProfileService.GetProfile oauth: canonical_scopes: |- https://www.googleapis.com/auth/googlehealth.profile.readonly + - selector: google.devicesandservices.health.v4.HealthProfileService.GetSettings + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.settings.readonly + - selector: google.devicesandservices.health.v4.HealthProfileService.ListPairedDevices + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.settings.readonly + - selector: google.devicesandservices.health.v4.HealthProfileService.UpdateProfile + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.profile.writeonly + - selector: google.devicesandservices.health.v4.HealthProfileService.UpdateSettings + oauth: + canonical_scopes: |- + https://www.googleapis.com/auth/googlehealth.settings.writeonly publishing: new_issue_uri: https://issuetracker.google.com/issues/new?component=1914241 @@ -65,7 +134,7 @@ publishing: api_short_name: health github_label: 'api: health' doc_tag_prefix: health - organization: CLOUD + organization: HEALTH library_settings: - version: google.devicesandservices.health.v4 launch_stage: GA diff --git a/google/devicesandservices/health/v4/medical_device_info.proto b/google/devicesandservices/health/v4/medical_device_info.proto index 0aa1db9fc8..fb85b52b07 100644 --- a/google/devicesandservices/health/v4/medical_device_info.proto +++ b/google/devicesandservices/health/v4/medical_device_info.proto @@ -19,7 +19,7 @@ package google.devicesandservices.health.v4; import "google/api/field_behavior.proto"; option csharp_namespace = "Google.DevicesAndServices.Health.V4"; -option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb"; +option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb"; option java_multiple_files = true; option java_outer_classname = "MedicalDeviceInfoProto"; option java_package = "com.google.devicesandservices.health.v4"; diff --git a/google/devicesandservices/health/v4/webhook_notification_cloud_log.proto b/google/devicesandservices/health/v4/webhook_notification_cloud_log.proto index dcb2f44ff5..63b2db1206 100644 --- a/google/devicesandservices/health/v4/webhook_notification_cloud_log.proto +++ b/google/devicesandservices/health/v4/webhook_notification_cloud_log.proto @@ -20,7 +20,7 @@ import "google/api/field_behavior.proto"; import "google/rpc/http.proto"; option csharp_namespace = "Google.DevicesAndServices.Health.V4"; -option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4main;healthpb"; +option go_package = "google.golang.org/genproto/googleapis/devicesandservices/health/apiv4;healthpb"; option java_multiple_files = true; option java_outer_classname = "WebhookNotificationCloudLogProto"; option java_package = "com.google.devicesandservices.health.v4";