// adventuresync_android.proto // Reconstructed from com.nianticlabs.pokemongo 0.431.0 (versionCode 2026092402, arm64-v8a). // Field numbers were recovered from the compiled parsers; names come from the C# types, // so some may differ from Niantic's originals. Study material, not an official API. syntax = "proto3"; package niantic.adventuresync; message AdventureSyncSettingsProto { bool fitness_service_enabled = 1; bool awareness_service_enabled = 2; bool persistent_breadcrumb_service_enabled = 3; bool sensor_service_enabled = 4; bool persistent_location_service_enabled = 5; bool breadcrumb_service_enabled = 6; } message AndroidDataSource { bool is_raw = 1; string app_package_name = 2; string stream_identifier = 3; string stream_name = 4; AndroidDevice device = 5; string data_type = 6; } message AndroidDevice { string manufacturer = 1; string model = 2; DeviceType type = 3; string uid = 4; enum DeviceType { DEVICE_TYPE_UNKNOWN = 0; DEVICE_TYPE_PHONE = 1; DEVICE_TYPE_TABLET = 2; DEVICE_TYPE_WATCH = 3; DEVICE_TYPE_CHEST_STRAP = 4; DEVICE_TYPE_SCALE = 5; DEVICE_TYPE_HEAD_MOUNTED = 6; } } message BackgroundToken { bytes token = 1; int64 expiration_time = 2; bytes iv = 3; } message BreadcrumbRecordProto { int64 timestamp_ms = 1; double latitude_deg = 2; double longitude_deg = 3; bool app_is_foregrounded = 4; double altitude_m = 5; double accuracy_m = 6; } message DebugInfoProto { double latitude = 1; double longitude = 2; } message FitnessMetricsProto { double distance_walked_meters = 1; int32 step_count = 2; double calories_burned_kcals = 3; int64 exercise_duration_mi = 4; double wheelchair_distance_meters = 5; double wheelchair_push_count = 6; } message FitnessMetricsReportHistory { repeated MetricsHistory weekly_history = 1; repeated MetricsHistory daily_history = 2; repeated MetricsHistory hourly_history = 3; message MetricsHistory { int64 bucket = 1; FitnessMetricsProto metrics = 2; } } message FitnessRecordProto { map hourly_reports = 1; repeated FitnessSample raw_samples = 2; int64 last_aggregation_timestamp_ms = 3; FitnessStatsProto fitness_stats = 4; FitnessMetricsReportHistory report_history = 5; } message FitnessReportProto { FitnessMetricsProto metrics = 10; bytes game_data = 11; oneof window { int32 day_offset_from_now = 1; int32 week_offset_from_now = 2; int32 hour_offset_from_now = 3; } } message FitnessSample { FitnessSampleType sample_type = 1; int64 sample_start_timestamp_ms = 2; int64 sample_end_timestamp_ms = 3; double value = 4; FitnessSourceType source_type = 5; FitnessSampleMetadata metadata = 6; enum FitnessSampleType { FITNESS_SAMPLE_TYPE_SAMPLE_UNSET = 0; FITNESS_SAMPLE_TYPE_STEPS = 1; FITNESS_SAMPLE_TYPE_WALKING_DISTANCE_METERS = 2; FITNESS_SAMPLE_TYPE_WHEELCHAIR_DISTANCE_METERS = 3; FITNESS_SAMPLE_TYPE_CALORIES_KCALS = 4; FITNESS_SAMPLE_TYPE_WHEELCHAIR_PUSH_COUNT = 5; FITNESS_SAMPLE_TYPE_EXERCISE_TIME_MI = 6; } enum FitnessSourceType { FITNESS_SOURCE_TYPE_SOURCE_UNSET = 0; FITNESS_SOURCE_TYPE_HEALTHKIT = 1; FITNESS_SOURCE_TYPE_GOOGLE_FIT = 2; FITNESS_SOURCE_TYPE_APPLE_WATCH = 3; FITNESS_SOURCE_TYPE_GPS = 4; FITNESS_SOURCE_TYPE_ANDROID_SENSOR_HUB = 5; } } message FitnessSampleMetadata { AndroidDataSource original_data_source = 1; AndroidDataSource data_source = 2; IosSourceRevision source_revision = 3; IosDevice device = 4; bool user_entered = 5; } message FitnessStatsProto { int64 last_accumulated_timestamp_ms = 1; FitnessMetricsProto accumulated = 2; FitnessMetricsProto pending = 3; double player_initial_walk_km = 4; double player_total_walk_km = 5; int64 player_total_steps = 6; } message FitnessUpdateOutProto { Status status = 1; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR_UNKNOWN = 2; } } message FitnessUpdateProto { repeated FitnessSample fitness_samples = 1; } message GeofenceMetadata { double latitude_deg = 1; double longitude_deg = 2; double radius = 3; string identifier = 4; int64 expiration_ms = 5; int64 dwell_time_ms = 6; bool fire_on_entrance = 7; bool fire_on_exit = 8; } message GeofenceUpdateOutProto { repeated GeofenceMetadata geofence = 1; } message GeofenceUpdateProto { int32 number_of_points = 1; double minimum_point_radius_m = 2; } message GetAdventureSyncFitnessReportRequestProto { int32 num_of_days = 1; int32 num_of_weeks = 2; } message GetAdventureSyncFitnessReportResponseProto { Status status = 1; repeated FitnessReportProto daily_reports = 2; repeated FitnessReportProto weekly_reports = 3; int64 week_reset_timestamp_since_monday_ms = 4; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR_PLAYER_NOT_FOUND = 2; STATUS_ERROR_RECORDS_NOT_FOUND = 3; STATUS_ERROR_INVALID_WINDOW = 4; STATUS_ERROR_UNKNOWN = 5; } } message GetAdventureSyncSettingsRequestProto { } message GetAdventureSyncSettingsResponseProto { Status status = 1; AdventureSyncSettingsProto adventure_sync_settings = 2; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR_UNKNOWN = 2; STATUS_ERROR_PLAYER_NOT_FOUND = 3; } } message GetFitnessReportOutProto { Status status = 1; repeated FitnessReportProto daily_reports = 2; repeated FitnessReportProto weekly_reports = 3; int64 week_reset_timestamp_since_monday_ms = 4; repeated FitnessReportProto hourly_reports = 5; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR_PLAYER_NOT_FOUND = 2; STATUS_ERROR_RECORDS_NOT_FOUND = 3; STATUS_ERROR_INVALID_WINDOW = 4; STATUS_ERROR_UNKNOWN = 5; } } message GetFitnessReportProto { int32 num_of_days = 1; int32 num_of_weeks = 2; int32 num_of_hours = 3; } message IosDevice { string name = 8; string manufacturer = 9; string model = 10; string hardware = 11; string software = 12; } message IosSourceRevision { string name = 1; string bundle = 2; string version = 3; string product = 4; string os = 5; } message LocationPingOutProto { } message LocationPingProto { string geofence_identifier = 1; PingReason reason = 2; enum PingReason { PING_REASON_UNSET = 0; PING_REASON_ENTRANCE_EVENT = 1; PING_REASON_EXIT_EVENT = 2; PING_REASON_DWELL_EVENT = 3; PING_REASON_VISIT_EVENT = 4; PING_REASON_FITNESS_WAKEUP = 5; PING_REASON_OTHER_WAKEUP = 6; } } message LocationPingUpdateProto { string geofence_identifier = 1; PingReason reason = 3; int64 timestamp_ms = 4; double latitude_deg = 5; double longitude_deg = 6; bool app_is_foregrounded = 7; string time_zone = 8; sint32 time_zone_offset_min = 9; double accuracy_m = 10; enum PingReason { PING_REASON_UNSET = 0; PING_REASON_ENTRANCE_EVENT = 1; PING_REASON_EXIT_EVENT = 2; PING_REASON_DWELL_EVENT = 3; PING_REASON_VISIT_EVENT = 4; PING_REASON_FITNESS_WAKEUP = 5; PING_REASON_OTHER_WAKEUP = 6; } } message PingRequestProto { int32 response_size_bytes = 1; string random_request_bytes = 2; bool use_cache_for_random_request_bytes = 3; string return_value = 4; } message PingResponseProto { string user_info = 1; string server_info = 2; string random_response_bytes = 3; string return_value = 4; } message RegisterBackgroundDeviceActionProto { string device_type = 1; string device_id = 2; } message RegisterBackgroundDeviceResponseProto { Status status = 1; BackgroundToken token = 2; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR = 2; } } message UpdateAdventureSyncFitnessRequestProto { repeated FitnessSample fitness_samples = 1; } message UpdateAdventureSyncFitnessResponseProto { Status status = 1; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR_UNKNOWN = 2; } } message UpdateAdventureSyncSettingsRequestProto { AdventureSyncSettingsProto adventure_sync_settings = 1; } message UpdateAdventureSyncSettingsResponseProto { Status status = 1; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR_UNKNOWN = 2; STATUS_ERROR_PLAYER_NOT_FOUND = 3; } } message UpdateBreadcrumbHistoryRequestProto { string session_context = 1; repeated BreadcrumbRecordProto breadcrumb_history = 2; bool initial_update = 3; } message UpdateBreadcrumbHistoryResponseProto { Status status = 1; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR_UNKNOWN = 2; STATUS_ERROR_PLAYER_NOT_FOUND = 3; } } message UpdateBulkPlayerLocationRequestProto { repeated LocationPingUpdateProto location_ping_update = 1; } message UpdateBulkPlayerLocationResponseProto { Status status = 1; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_ERROR_UNKNOWN = 2; STATUS_ERROR_PLAYER_NOT_FOUND = 3; } }