syntax = "proto3";
package POGOProtos.Networking.Requests.Messages;

import public "POGOProtos.Inventory.Item.proto";
import public "POGOProtos.Data.Battle.proto";
import public "POGOProtos.Enums.proto";
import public "POGOProtos.Data.Player.proto";

message AddFortModifierMessage {
	.POGOProtos.Inventory.Item.ItemId modifier_type = 1;
	string fort_id = 2;
	double player_latitude = 3;
	double player_longitude = 4;
}
message AttackGymMessage {
	string gym_id = 1;
	string battle_id = 2;
	repeated .POGOProtos.Data.Battle.BattleAction attack_actions = 3;
	.POGOProtos.Data.Battle.BattleAction last_retrieved_actions = 4;
	double player_latitude = 5;
	double player_longitude = 6;
}
message CatchPokemonMessage {
	fixed64 encounter_id = 1;
	.POGOProtos.Inventory.Item.ItemId pokeball = 2;
	double normalized_reticle_size = 3;
	string spawn_point_id = 4;
	bool hit_pokemon = 5;
	double spin_modifier = 6;
	double normalized_hit_position = 7;
}
message CheckAwardedBadgesMessage {
	// No message needed.
}
message CheckCodenameAvailableMessage {
	string codename = 1;
}
message ClaimCodenameMessage {
	string codename = 1;
}
message CollectDailyBonusMessage {
	// No message needed.
}
message CollectDailyDefenderBonusMessage {
	// No message needed.
}
message DiskEncounterMessage {
	uint64 encounter_id = 1;
	string fort_id = 2;
	double player_latitude = 3;
	double player_longitude = 4;
}
message DownloadItemTemplatesMessage {
	// No message needed.
}
message DownloadRemoteConfigVersionMessage {
	.POGOProtos.Enums.Platform platform = 1;
	string device_manufacturer = 2;
	string device_model = 3;
	string locale = 4;
	uint32 app_version = 5;
}
message DownloadSettingsMessage {
	string hash = 1;
}
message EchoMessage {
	// No message needed.
}
message EncounterMessage {
	fixed64 encounter_id = 1;
	string spawn_point_id = 2;
	double player_latitude = 3;
	double player_longitude = 4;
}
message EncounterTutorialCompleteMessage {
	.POGOProtos.Enums.PokemonId pokemon_id = 1;
}
message EquipBadgeMessage {
	.POGOProtos.Enums.BadgeType badge_type = 1;
}
message EvolvePokemonMessage {
	fixed64 pokemon_id = 1;
}
message FortDeployPokemonMessage {
	string fort_id = 1;
	uint64 pokemon_id = 2;
	double player_latitude = 3;
	double player_longitude = 4;
}
message FortDetailsMessage {
	string fort_id = 1;
	double latitude = 2;
	double longitude = 3;
}
message FortRecallPokemonMessage {
	string fort_id = 1;
	uint64 pokemon_id = 2;
	double player_latitude = 3;
	double player_longitude = 4;
}
message FortSearchMessage {
	string fort_id = 1;
	double player_latitude = 2;
	double player_longitude = 3;
	double fort_latitude = 4;
	double fort_longitude = 5;
}
message GetAssetDigestMessage {
	.POGOProtos.Enums.Platform platform = 1;
	string device_manufacturer = 2;
	string device_model = 3;
	string locale = 4;
	uint32 app_version = 5;
}
message GetDownloadUrlsMessage {
	repeated string asset_id = 1;
}
message GetGymDetailsMessage {
	string gym_id = 1;
	double player_latitude = 2;
	double player_longitude = 3;
	double gym_latitude = 4;
	double gym_longitude = 5;
}
message GetHatchedEggsMessage {
	// No message needed.
}
message GetIncensePokemonMessage {
	double player_latitude = 1;
	double player_longitude = 2;
}
message GetInventoryMessage {
	int64 last_timestamp_ms = 1;
	int32 item_been_seen = 2; // TODO: Find out what this is.
}
message GetMapObjectsMessage {
	repeated uint64 cell_id = 1 [packed=true];
	repeated int64 since_timestamp_ms = 2 [packed=true];
	double latitude = 3;
	double longitude = 4;
}
message GetPlayerMessage {
	// No message needed.
}
message GetPlayerProfileMessage {
	string player_name = 1;
}
message GetSuggestedCodenamesMessage {
	// No message needed.
}
message IncenseEncounterMessage {
	int64 encounter_id = 1;
	string encounter_location = 2;
}
message LevelUpRewardsMessage {
	int32 level = 1;
}
message MarkTutorialCompleteMessage {
	repeated .POGOProtos.Enums.TutorialState tutorials_completed = 1;
	bool send_marketing_emails = 2;
	bool send_push_notifications = 3;
}
message NicknamePokemonMessage {
	fixed64 pokemon_id = 1;
	string nickname = 2;
}
message PlayerUpdateMessage {
	double latitude = 1;
	double longitude = 2;
}
message RecycleInventoryItemMessage {
	.POGOProtos.Inventory.Item.ItemId item_id = 1;
	int32 count = 2;
}
message ReleasePokemonMessage {
	fixed64 pokemon_id = 1;
}
message SetAvatarMessage {
	.POGOProtos.Data.Player.PlayerAvatar player_avatar = 2;
}
message SetContactSettingsMessage {
	.POGOProtos.Data.Player.ContactSettings contact_settings = 1;
}
message SetFavoritePokemonMessage {
	uint64 pokemon_id = 1;
	bool is_favorite = 2;
}
message SetPlayerTeamMessage {
	.POGOProtos.Enums.TeamColor team = 1;
}
message SfidaActionLogMessage {
	// No message needed.
}
message StartGymBattleMessage {
	string gym_id = 1;
	repeated fixed64 attacking_pokemon_ids = 2;
	uint64 defending_pokemon_id = 3;
	double player_latitude = 4;
	double player_longitude = 5;
}
message UpgradePokemonMessage {
	uint64 pokemon_id = 1;
}
message UseIncenseMessage {
	.POGOProtos.Inventory.Item.ItemId incense_type = 1;
}
message UseItemCaptureMessage {
	.POGOProtos.Inventory.Item.ItemId item_id = 1;
	fixed64 encounter_id = 2;
	string spawn_point_guid = 3;
}
message UseItemEggIncubatorMessage {
	string item_id = 1;
	uint64 pokemon_id = 2;
}
message UseItemGymMessage {
	.POGOProtos.Inventory.Item.ItemId item_id = 1;
	string gym_id = 2;
	double player_latitude = 3;
	double player_longitude = 4;
}
message UseItemPotionMessage {
	.POGOProtos.Inventory.Item.ItemId item_id = 1;
	uint64 pokemon_id = 2;
}
message UseItemReviveMessage {
	.POGOProtos.Inventory.Item.ItemId item_id = 1;
	uint64 pokemon_id = 2;
}
message UseItemXpBoostMessage {
	.POGOProtos.Inventory.Item.ItemId item_id = 1;
}
