// niantic_platform_marketing_notifications_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.platform.marketing; message LocalDateTimeProto { int32 year = 1; int32 month = 2; int32 day_of_month = 3; int32 hour = 4; int32 minute = 5; int32 second = 6; int32 nano_of_second = 7; } message NewsfeedMetadata { int64 created_time_ms = 1; int64 expired_time_ms = 2; bool send_to_player_in_local_tz = 3; LocalDateTimeProto start_date_time = 4; LocalDateTimeProto end_date_time = 5; } message NewsfeedPost { string title = 1; string preview_text = 2; string thumbnail_image_url = 3; repeated NewsfeedChannel newsfeed_channel = 4; string post_content = 5; NewsfeedMetadata newsfeed_metadata = 6; map key_value_pairs = 7; string config_name = 8; bool priority_flag = 51; bool read_flag = 52; repeated string country_code_allow = 63; repeated string country_code_deny = 64; repeated string player_id_allow = 65; repeated string player_id_deny = 66; PreviewMetadata preview_metadata = 100; enum NewsfeedChannel { NEWSFEED_CHANNEL_NOT_DEFINED = 0; NEWSFEED_CHANNEL_NEWSFEED_MESSAGE_CHANNEL = 1; NEWSFEED_CHANNEL_IN_APP_MESSAGE_CHANNEL = 2; } message PreviewMetadata { map attributes = 1; string player_hashed_id = 2; string rendered_title = 3; string rendered_preview_text = 4; string rendered_post_content = 5; } } message NewsfeedPostRecord { NewsfeedPost newsfeed_post = 1; string newsfeed_post_id = 2; int64 newsfeed_post_campaign_id = 3; } message NewsfeedSource { int64 campaign_id = 1; NewsfeedPost.NewsfeedChannel channel = 2; string language = 3; } message PlatformFetchNewsfeedRequest { repeated NewsfeedPost.NewsfeedChannel newsfeed_channel = 1; string language_version = 2; string country_code = 3; string local_timezone = 4; } message PlatformFetchNewsfeedResponse { Status status = 1; repeated NewsfeedPostRecord post_record = 2; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_INTERNAL_ERROR = 2; STATUS_CHANNEL_NOT_DEFINED = 3; STATUS_RPC_DISABLED = 4; } } message PlatformMarkNewsfeedReadRequest { repeated string newsfeed_post_id = 1; repeated NewsfeedSource target_newsfeed = 2; } message PlatformMarkNewsfeedReadResponse { Status status = 1; enum Status { STATUS_UNSET = 0; STATUS_SUCCESS = 1; STATUS_INTERNAL_ERROR = 2; STATUS_EMPTY_PLAYER_ID = 3; STATUS_EMPTY_APP_ID = 4; STATUS_RPC_DISABLED = 5; } }