// niantic_titan_protos.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.titan; message ARCommonMetadata { string application_id = 1; string platform = 2; string manufacturer = 3; string device_model = 4; string user_id = 5; string client_id = 6; string developer_id = 7; string ardk_version = 8; string ardk_app_instance_id = 9; string request_id = 10; } message AsyncFileUploadCompleteOutProto { ErrorStatus error = 1; PlayerSubmissionTypeProto submission_type = 2; string poi_id = 3; bytes post_action_game_info = 4; enum ErrorStatus { ERROR_STATUS_UNSET = 0; ERROR_STATUS_SERVER_UPDATE_FAILED = 1; ERROR_STATUS_MISSING_SUBMISSION_ID = 2; ERROR_STATUS_MISSING_SUBMISSION_TYPE = 3; ERROR_STATUS_MISSING_UPLOAD_STATUS = 4; } } message AsyncFileUploadCompleteProto { string submission_id = 1; Status upload_status = 3; ARCommonMetadata ar_common_metadata = 4; enum Status { STATUS_UNSET = 0; STATUS_UPLOAD_DONE = 1; STATUS_UPLOAD_FAILED = 2; } } message AvailableSubmissionsPerSubmissionType { PlayerSubmissionTypeProto player_submission_type = 1; int32 submissions_left = 2; int32 min_player_level = 3; bool is_feature_enabled = 4; int64 time_window_for_submissions_limit_ms = 5; int32 max_poi_distance_in_meters = 6; repeated string blacklisted_os = 7; repeated string blacklisted_device_id = 8; bool is_whitelisted_user = 9; bool is_upload_later_enabled = 10; float daily_new_submissions = 11; int32 max_submissions = 12; bool is_wayfarer_onboarding_enabled = 13; } message GameClientPhotoGalleryPoiImageProto { string image_id = 1; string poi_id = 2; string submitter_codename = 3; string image_url = 4; int64 creation_timestamp_ms = 5; bool has_player_voted = 6; int32 num_votes_from_game = 7; int32 num_votes_niantic_wide = 8; } message GenerateGmapSignedUrlOutProto { Result result = 1; string signed_url = 2; enum Result { RESULT_UNSET = 0; RESULT_SUCCESS = 1; RESULT_ERROR_PLAYER_NOT_VALID = 2; RESULT_ERROR_RATE_LIMITED = 3; RESULT_ERROR_MISSING_INPUT = 4; RESULT_ERROR_UNKNOWN = 5; } } message GenerateGmapSignedUrlProto { double latitude = 1; double longitude = 2; int32 width = 3; int32 height = 4; int32 zoom = 5; string language_code = 6; string country_code = 7; string map_style = 8; string map_type = 9; string icon_params = 10; bool is_multi_marker_map = 11; LocationE6Proto original_location = 12; LocationE6Proto proposed_location = 13; } message GeodataServiceGameClientPoiProto { string poi_id = 1; string title = 2; string description = 3; LocationE6Proto location = 4; string image_url = 5; bool is_in_game = 6; } message GetAvailableSubmissionsOutProto { int32 submissions_left = 1; int32 min_player_level = 2; bool has_valid_email = 3; bool is_feature_enabled = 4; int64 time_window_for_submissions_limit_ms = 5; int32 max_poi_distance_in_meters = 6; repeated string blacklisted_os = 7; repeated AvailableSubmissionsPerSubmissionType availability_result_per_type = 8; repeated string blacklisted_device_id = 9; int32 max_poi_location_edit_move_distance_meters = 10; bool is_upload_later_enabled = 11; string category_cloud_storage_directory_path = 12; bool has_wayfarer_account = 13; bool is_poi_submission_category_enabled = 14; bool passed_wayfarer_quiz = 15; string urban_typology_cloud_storage_path = 16; } message GetAvailableSubmissionsProto { PlayerSubmissionTypeProto submission_type = 1; repeated PlayerSubmissionTypeProto submission_types = 2; } message GetGmapSettingsOutProto { Result result = 1; string gmap_template_url = 2; int32 max_poi_distance_in_meters = 3; int32 min_zoom = 4; int32 max_zoom = 5; enum Result { RESULT_UNSET = 0; RESULT_SUCCESS = 1; RESULT_ERROR_UNKNOWN = 2; RESULT_ERROR_MISSING_CONFIG = 3; RESULT_ERROR_NO_UNIQUE_ID = 4; } } message GetGmapSettingsProto { } message GetGrapeshotUploadUrlOutProto { Status status = 1; map file_context_to_grapeshot_data = 4; map file_context_to_signed_url = 5; enum Status { STATUS_UNSET = 0; STATUS_FAILURE = 1; STATUS_SUCCESS = 2; STATUS_MISSING_FILE_CONTEXTS = 3; STATUS_DUPLICATE_FILE_CONTEXT = 4; STATUS_MISSING_SUBMISSION_TYPE = 5; STATUS_MISSING_SUBMISSION_ID = 6; STATUS_ALREADY_UPLOADED = 7; } } message GetGrapeshotUploadUrlProto { PlayerSubmissionTypeProto submission_type = 1; string submission_id = 2; repeated string file_upload_context = 3; string developer_id = 11; } message GetImageGallerySettingsOutProto { bool is_image_gallery_enabled = 1; int32 max_periodic_image_loaded_count = 2; } message GetImageGallerySettingsProto { } message GetImagesForPoiOutProto { Status status = 1; repeated GameClientPhotoGalleryPoiImageProto photo_gallery_poi_images = 2; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_POI_NOT_FOUND = 2; STATUS_INVALID_REQUEST = 3; } } message GetImagesForPoiProto { string poi_id = 1; } message GetPlayerSubmissionValidationSettingsOutProto { repeated string banned_metadata_text = 1; } message GetPlayerSubmissionValidationSettingsProto { } message GetPoisInRadiusOutProto { Status status = 1; repeated GeodataServiceGameClientPoiProto pois = 2; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_INTERNAL_ERROR = 2; } } message GetPoisInRadiusProto { LocationE6Proto location = 1; } message GetUploadUrlOutProto { Status status = 1; string signed_url = 2; string supporting_image_signed_url = 3; map context_signed_urls = 4; enum Status { STATUS_UNSET = 0; STATUS_FAILURES = 1; STATUS_SUCCESS = 2; STATUS_MISSING_IMAGE_CONTEXTS = 3; STATUS_DUPLICATE_IMAGE_CONTEXTS = 4; STATUS_ALREADY_UPLOADED = 5; STATUS_MISSING_REQUIRED_IMAGE_CONTEXTS = 6; STATUS_TOO_MANY_IMAGE_CONTEXTS = 7; } } message GetUploadUrlProto { string user_id = 1; string game_unique_id = 2; PlayerSubmissionTypeProto submission_type = 3; string submission_id = 4; repeated string image_contexts = 5; } message GrapeshotAuthenticationDataProto { string authorization = 1; string date = 2; } message GrapeshotChunkDataProto { string chunk_file_path = 1; uint32 chunk_number = 2; GrapeshotAuthenticationDataProto upload_authentication = 3; GrapeshotAuthenticationDataProto delete_authentication = 4; } message GrapeshotComposeDataProto { string target_file_path = 1; GrapeshotAuthenticationDataProto authentication = 2; string hash = 3; } message GrapeshotUploadingDataProto { repeated GrapeshotChunkDataProto chunk_data = 1; GrapeshotComposeDataProto compose_data = 2; string gcs_bucket = 3; int32 number_of_chunks = 4; } message LocationE6Proto { int32 latitude_e6 = 1; int32 longitude_e6 = 2; } enum NominationType { NOMINATION_TYPE_REGULAR = 0; NOMINATION_TYPE_PROVISIONAL = 1; } message PlayerSubmissionResponseProto { Status status = 1; string submission_id = 2; repeated string messages = 3; bytes post_action_game_info = 4; enum Status { STATUS_UNSPECIFIED = 0; STATUS_SUCCESS = 1; STATUS_INTERNAL_ERROR = 2; STATUS_TOO_MANY_RECENT_SUBMISSIONS = 3; STATUS_MINOR = 4; STATUS_NOT_AVAILABLE = 5; STATUS_INVALID_INPUT = 6; STATUS_MISSING_IMAGE = 7; STATUS_DISTANCE_VALIDATION_FAILED = 8; } } enum PlayerSubmissionTypeProto { PLAYER_SUBMISSION_TYPE_PROTO_TYPE_UNSPECIFIED = 0; PLAYER_SUBMISSION_TYPE_PROTO_POI_SUBMISSION = 1; PLAYER_SUBMISSION_TYPE_PROTO_POI_IMAGE_SUBMISSION = 3; PLAYER_SUBMISSION_TYPE_PROTO_POI_TEXT_METADATA_UPDATE = 4; PLAYER_SUBMISSION_TYPE_PROTO_POI_LOCATION_UPDATE = 5; PLAYER_SUBMISSION_TYPE_PROTO_POI_TAKEDOWN_REQUEST = 6; PLAYER_SUBMISSION_TYPE_PROTO_POI_AR_VIDEO_SUBMISSION = 7; PLAYER_SUBMISSION_TYPE_PROTO_SPONSOR_POI_REPORT = 8; PLAYER_SUBMISSION_TYPE_PROTO_SPONSOR_POI_LOCATION_UPDATE = 9; PLAYER_SUBMISSION_TYPE_PROTO_POI_CATEGORY_VOTE_SUBMISSION = 10; } enum PoiInvalidReason { POI_INVALID_REASON_INVALID_REASON_UNSPECIFIED = 0; POI_INVALID_REASON_NO_PEDESTRIAN_ACCESS = 1; POI_INVALID_REASON_OBSTRUCTS_EMERGENCY_SERVICES = 2; POI_INVALID_REASON_PRIVATE_RESIDENTIAL_PROPERTY = 3; POI_INVALID_REASON_SCHOOL = 4; POI_INVALID_REASON_PERMANENTLY_REMOVED = 5; POI_INVALID_REASON_DUPLICATE = 6; POI_INVALID_REASON_NOT_SUITABLE_FOR_AR = 7; POI_INVALID_REASON_UNSAFE = 8; POI_INVALID_REASON_SENSITIVE = 9; POI_INVALID_REASON_LOCATION_DOES_NOT_EXIST = 10; POI_INVALID_REASON_ABUSE = 11; } message PoiVideoSubmissionMetadataProto { string poi_id = 1; LocationE6Proto location = 2; int32 player_level = 3; UserType user_type = 4; bool is_private = 5; string geographic_coverage = 6; repeated string built_form = 7; repeated ScanTag scan_tags = 8; string developer_id = 11; ARCommonMetadata ar_common_metadata = 12; } enum ScanTag { SCAN_TAG_DEFAULT_SCAN = 0; SCAN_TAG_PUBLIC = 1; SCAN_TAG_PRIVATE = 2; SCAN_TAG_WAYSPOT_CENTRIC = 3; SCAN_TAG_FREE_FORM = 4; SCAN_TAG_EXPERIMENTAL = 5; } enum SponsorPoiInvalidReason { SPONSOR_POI_INVALID_REASON_SPONSOR_POI_REASON_UNSPECIFIED = 0; SPONSOR_POI_INVALID_REASON_SPONSOR_POI_REASON_DOES_NOT_EXIST = 1; SPONSOR_POI_INVALID_REASON_SPONSOR_POI_REASON_NOT_SAFE = 2; SPONSOR_POI_INVALID_REASON_SPONSOR_POI_REASON_NOT_TRUTHFUL = 3; SPONSOR_POI_INVALID_REASON_SPONSOR_POI_REASON_NOT_FAMILY_FRIENDLY = 4; SPONSOR_POI_INVALID_REASON_SPONSOR_POI_REASON_OFFENSIVE_CONTENT = 5; } message SubmitNewPoiOutProto { Status status = 1; string submission_id = 2; repeated string messages = 3; string poi_id = 4; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_FAILURE = 2; STATUS_INTERNAL_ERROR = 3; STATUS_TOO_MANY_RECENT_SUBMISSIONS = 4; STATUS_INVALID_INPUT = 5; STATUS_MINOR = 6; STATUS_NOT_AVAILABLE = 7; STATUS_ALREADY_EXISTS = 8; } } message SubmitNewPoiProto { string title = 1; string long_description = 2; int32 lat_e6 = 4; int32 lng_e6 = 5; string supporting_statement = 14; bool async_file_upload = 18; repeated string player_submitted_category_ids = 19; string category_suggestion = 20; NominationType nomination_type = 21; string developer_id = 22; } message SubmitPlayerImageVoteForPoiOutProto { Status status = 1; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_POI_NOT_FOUND = 2; STATUS_POI_IMAGE_NOT_FOUND = 3; STATUS_INVALID_REQUEST = 6; } } message SubmitPlayerImageVoteForPoiProto { repeated string image_ids_to_vote_for = 1; repeated string image_ids_to_unvote = 2; string poi_id = 3; } message SubmitPoiCategoryVoteRecordProto { string poi_id = 1; repeated string player_submitted_category_ids = 2; string category_suggestion = 3; string developer_id = 4; } message SubmitPoiImageProto { string poi_id = 1; bool async_file_upload = 2; string developer_id = 3; NominationType nomination_type = 21; } message SubmitPoiLocationUpdateProto { string poi_id = 1; LocationE6Proto location = 2; string developer_id = 3; } message SubmitPoiTakedownRequestProto { string poi_id = 1; PoiInvalidReason invalid_reason = 2; string developer_id = 3; string supporting_statement = 4; bool async_file_upload = 5; } message SubmitPoiTextMetadataUpdateProto { string poi_id = 1; string title = 2; string description = 3; string developer_id = 4; } message SubmitSponsorPoiLocationUpdateProto { string poi_id = 1; LocationE6Proto location = 2; } message SubmitSponsorPoiReportProto { string poi_id = 1; SponsorPoiInvalidReason invalid_reason = 2; string additional_details = 3; } enum UserType { USER_TYPE_PLAYER = 0; USER_TYPE_DEVELOPER = 1; USER_TYPE_SURVEYOR = 2; USER_TYPE_DEVELOPER8_TH_WALL = 3; }