syntax = "proto3";
package POGOProtos.Networking.Responses;

import public "POGOProtos.Data.Battle.proto";
import public "POGOProtos.Data.Capture.proto";
import public "POGOProtos.Enums.proto";
import public "POGOProtos.Data.proto";
import public "POGOProtos.Inventory.Item.proto";
import public "POGOProtos.Settings.Master.proto";
import public "POGOProtos.Settings.proto";
import public "POGOProtos.Map.Pokemon.proto";
import public "POGOProtos.Data.Player.proto";
import public "POGOProtos.Data.Gym.proto";
import public "POGOProtos.Map.Fort.proto";
import public "POGOProtos.Inventory.proto";
import public "POGOProtos.Map.proto";
import public "POGOProtos.Data.Avatar.proto";
import public "POGOProtos.Data.Logs.proto";

message AddFortModifierResponse {
	.POGOProtos.Networking.Responses.AddFortModifierResponse.Result result = 1;
	.POGOProtos.Networking.Responses.FortDetailsResponse fort_details = 2;

	enum Result {
		NO_RESULT_SET = 0;
		SUCCESS = 1;
		FORT_ALREADY_HAS_MODIFIER = 2;
		TOO_FAR_AWAY = 3;
		NO_ITEM_IN_INVENTORY = 4;
		POI_INACCESSIBLE = 5;
	}
}
message AttackGymResponse {
	.POGOProtos.Networking.Responses.AttackGymResponse.Result result = 1;
	.POGOProtos.Data.Battle.BattleLog battle_log = 2;
	string battle_id = 3;
	.POGOProtos.Data.Battle.BattlePokemonInfo active_defender = 4;
	.POGOProtos.Data.Battle.BattlePokemonInfo active_attacker = 5;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_INVALID_ATTACK_ACTIONS = 2;
		ERROR_NOT_IN_RANGE = 3;
	}
}
message CatchPokemonResponse {
	.POGOProtos.Networking.Responses.CatchPokemonResponse.CatchStatus status = 1;
	double miss_percent = 2;
	fixed64 captured_pokemon_id = 3;
	.POGOProtos.Data.Capture.CaptureAward capture_award = 4;
	.POGOProtos.Networking.Responses.CatchPokemonResponse.CaptureReason capture_reason = 5;
	int32 display_pokedex_id = 6;

	enum CatchStatus {
		CATCH_ERROR = 0;
		CATCH_SUCCESS = 1;
		CATCH_ESCAPE = 2;
		CATCH_FLEE = 3;
		CATCH_MISSED = 4;
	}

	enum CaptureReason {
		UNSET = 0;
		DEFAULT = 1;
		ELEMENTAL_BADGE = 2;
		CRITICAL_CATCH = 3;
	}
}
message CheckAwardedBadgesResponse {
	bool success = 1;
	repeated .POGOProtos.Enums.BadgeType awarded_badges = 2;
	repeated int32 awarded_badge_levels = 3;
	repeated string avatar_template_ids = 4;
}
message CheckChallengeResponse {
	bool show_challenge = 1;
	string challenge_url = 2;
}
message CheckCodenameAvailableResponse {
	string codename = 1;
	string user_message = 2;
	bool is_assignable = 3;
	.POGOProtos.Networking.Responses.CheckCodenameAvailableResponse.Status status = 4;

	enum Status {
		UNSET = 0;
		SUCCESS = 1;
		CODENAME_NOT_AVAILABLE = 2;
		CODENAME_NOT_VALID = 3;
		CURRENT_OWNER = 4;
		CODENAME_CHANGE_NOT_ALLOWED = 5;
	}
}
message ClaimCodenameResponse {
	string codename = 1;
	string user_message = 2;
	bool is_assignable = 3;
	.POGOProtos.Networking.Responses.ClaimCodenameResponse.Status status = 4;
	.POGOProtos.Data.PlayerData updated_player = 5;

	enum Status {
		UNSET = 0;
		SUCCESS = 1;
		CODENAME_NOT_AVAILABLE = 2;
		CODENAME_NOT_VALID = 3;
		CURRENT_OWNER = 4;
		CODENAME_CHANGE_NOT_ALLOWED = 5;
	}
}
message CollectDailyBonusResponse {
	.POGOProtos.Networking.Responses.CollectDailyBonusResponse.Result result = 1;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		FAILURE = 2;
		TOO_SOON = 3;
	}
}
message CollectDailyDefenderBonusResponse {
	.POGOProtos.Networking.Responses.CollectDailyDefenderBonusResponse.Result result = 1;
	repeated string currency_type = 2;
	repeated int32 currency_awarded = 3;
	int32 defenders_count = 4;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		FAILURE = 2;
		TOO_SOON = 3;
		NO_DEFENDERS = 4;
	}
}
message DiskEncounterResponse {
	Result result = 1;
	.POGOProtos.Data.PokemonData pokemon_data = 2;
	.POGOProtos.Data.Capture.CaptureProbability capture_probability = 3;
	.POGOProtos.Inventory.Item.ItemId active_item = 4;

	enum Result {
		UNKNOWN = 0;
		SUCCESS = 1;
		NOT_AVAILABLE = 2;
		NOT_IN_RANGE = 3;
		ENCOUNTER_ALREADY_FINISHED = 4;
		POKEMON_INVENTORY_FULL = 5;
	}
}
message DownloadItemTemplatesResponse {
	Result result = 1;
	repeated .POGOProtos.Networking.Responses.DownloadItemTemplatesResponse.ItemTemplate item_templates = 2;
	uint64 timestamp_ms = 3;
	int32 page_offset = 4;

	message ItemTemplate {
		string template_id = 1;
		.POGOProtos.Settings.Master.PokemonSettings pokemon_settings = 2;
		.POGOProtos.Settings.Master.ItemSettings item_settings = 3;
		.POGOProtos.Settings.Master.MoveSettings move_settings = 4;
		.POGOProtos.Settings.Master.MoveSequenceSettings move_sequence_settings = 5;
		.POGOProtos.Settings.Master.TypeEffectiveSettings type_effective = 8;
		.POGOProtos.Settings.Master.BadgeSettings badge_settings = 10;
		.POGOProtos.Settings.Master.CameraSettings camera = 11;
		.POGOProtos.Settings.Master.PlayerLevelSettings player_level = 12;
		.POGOProtos.Settings.Master.GymLevelSettings gym_level = 13;
		.POGOProtos.Settings.Master.GymBattleSettings battle_settings = 14;
		.POGOProtos.Settings.Master.EncounterSettings encounter_settings = 15;
		.POGOProtos.Settings.Master.IapItemDisplay iap_item_display = 16;
		.POGOProtos.Settings.Master.IapSettings iap_settings = 17;
		.POGOProtos.Settings.Master.PokemonUpgradeSettings pokemon_upgrades = 18;
		.POGOProtos.Settings.Master.EquippedBadgeSettings equipped_badges = 19;
		.POGOProtos.Settings.Master.QuestSettings quest_settings = 20;
		.POGOProtos.Settings.Master.AvatarCustomizationSettings avatar_customization = 21;
		.POGOProtos.Settings.Master.FormSettings form_settings = 22;
		.POGOProtos.Settings.Master.GenderSettings gender_settings = 23;
	}

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		PAGE = 2;
		RETRY = 3;
	}
}
message DownloadRemoteConfigVersionResponse {
	.POGOProtos.Networking.Responses.DownloadRemoteConfigVersionResponse.Result result = 1;
	uint64 item_templates_timestamp_ms = 2;  // Latest available?
	uint64 asset_digest_timestamp_ms = 3;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
	}
}
message DownloadSettingsResponse {
	string error = 1;
	string hash = 2;
	.POGOProtos.Settings.GlobalSettings settings = 3;
}
message EchoResponse {
	string context = 1;
}
message EncounterResponse {
	.POGOProtos.Map.Pokemon.WildPokemon wild_pokemon = 1;
	Background background = 2;
	Status status = 3;
	.POGOProtos.Data.Capture.CaptureProbability capture_probability = 4;
	.POGOProtos.Inventory.Item.ItemId active_item = 5;

	enum Background {
		PARK = 0;
		DESERT = 1;
	}

	enum Status {
		ENCOUNTER_ERROR = 0;
		ENCOUNTER_SUCCESS = 1;
		ENCOUNTER_NOT_FOUND = 2;
		ENCOUNTER_CLOSED = 3;
		ENCOUNTER_POKEMON_FLED = 4;
		ENCOUNTER_NOT_IN_RANGE = 5;
		ENCOUNTER_ALREADY_HAPPENED = 6;
		POKEMON_INVENTORY_FULL = 7;
		ENCOUNTER_BLOCKED_BY_ANTICHEAT = 8;
	}
}
message EncounterTutorialCompleteResponse {
	.POGOProtos.Networking.Responses.EncounterTutorialCompleteResponse.Result result = 1;
	.POGOProtos.Data.PokemonData pokemon_data = 2;
	.POGOProtos.Data.Capture.CaptureAward capture_award = 3;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_INVALID_POKEMON = 2;
	}
}
message EquipBadgeResponse {
	.POGOProtos.Networking.Responses.EquipBadgeResponse.Result result = 1;
	.POGOProtos.Data.Player.EquippedBadge equipped = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		COOLDOWN_ACTIVE = 2;
		NOT_QUALIFIED = 3;
	}
}
message EvolvePokemonResponse {
	.POGOProtos.Networking.Responses.EvolvePokemonResponse.Result result = 1;
	.POGOProtos.Data.PokemonData evolved_pokemon_data = 2;
	int32 experience_awarded = 3;
	int32 candy_awarded = 4;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		FAILED_POKEMON_MISSING = 2;
		FAILED_INSUFFICIENT_RESOURCES = 3;
		FAILED_POKEMON_CANNOT_EVOLVE = 4;
		FAILED_POKEMON_IS_DEPLOYED = 5;
		FAILED_INVALID_ITEM_REQUIREMENT = 6;
	}
}
message FortDeployPokemonResponse {
	.POGOProtos.Networking.Responses.FortDeployPokemonResponse.Result result = 1;
	.POGOProtos.Networking.Responses.FortDetailsResponse fort_details = 2;
	.POGOProtos.Data.PokemonData pokemon_data = 3;
	.POGOProtos.Data.Gym.GymState gym_state = 4;

	enum Result {
		NO_RESULT_SET = 0;
		SUCCESS = 1;
		ERROR_ALREADY_HAS_POKEMON_ON_FORT = 2;
		ERROR_OPPOSING_TEAM_OWNS_FORT = 3;
		ERROR_FORT_IS_FULL = 4;
		ERROR_NOT_IN_RANGE = 5;
		ERROR_PLAYER_HAS_NO_TEAM = 6;
		ERROR_POKEMON_NOT_FULL_HP = 7;
		ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 8;
		ERROR_POKEMON_IS_BUDDY = 9;
		ERROR_FORT_DEPLOY_LOCKOUT = 10;
		ERROR_PLAYER_HAS_NO_NICKNAME = 11;
		ERROR_POI_INACCESSIBLE = 12;
	}
}
message FortDetailsResponse {
	string fort_id = 1;
	.POGOProtos.Enums.TeamColor team_color = 2;
	.POGOProtos.Data.PokemonData pokemon_data = 3;
	string name = 4;
	repeated string image_urls = 5;
	int32 fp = 6;
	int32 stamina = 7;
	int32 max_stamina = 8;
	.POGOProtos.Map.Fort.FortType type = 9;
	double latitude = 10;
	double longitude = 11;
	string description = 12;
	repeated .POGOProtos.Map.Fort.FortModifier modifiers = 13;
}
message FortRecallPokemonResponse {
	.POGOProtos.Networking.Responses.FortRecallPokemonResponse.Result result = 1;
	.POGOProtos.Networking.Responses.FortDetailsResponse fort_details = 2;

	enum Result {
		NO_RESULT_SET = 0;
		SUCCESS = 1;
		ERROR_NOT_IN_RANGE = 2;
		ERROR_POKEMON_NOT_ON_FORT = 3;
		ERROR_NO_PLAYER = 4;
	}
}
message FortSearchResponse {
	.POGOProtos.Networking.Responses.FortSearchResponse.Result result = 1;
	repeated .POGOProtos.Inventory.Item.ItemAward items_awarded = 2;
	int32 gems_awarded = 3;
	.POGOProtos.Data.PokemonData pokemon_data_egg = 4;
	int32 experience_awarded = 5;
	int64 cooldown_complete_timestamp_ms = 6;
	int32 chain_hack_sequence_number = 7;

	enum Result {
		NO_RESULT_SET = 0;
		SUCCESS = 1;
		OUT_OF_RANGE = 2;
		IN_COOLDOWN_PERIOD = 3;
		INVENTORY_FULL = 4;
		EXCEEDED_DAILY_LIMIT = 5;
		POI_INACCESSIBLE = 6;
	}
}
message GetAssetDigestResponse {
	repeated .POGOProtos.Data.AssetDigestEntry digest = 1;
	uint64 timestamp_ms = 2;
	Result result = 3;
	int32 page_offset = 4;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		PAGE = 2;
		RETRY = 3;
	}
}
message GetBuddyWalkedResponse {
	bool success = 1;
	.POGOProtos.Enums.PokemonFamilyId family_candy_id = 2;
	int32 candy_earned_count = 3;
}
message GetDownloadUrlsResponse {
	repeated .POGOProtos.Data.DownloadUrlEntry download_urls = 1;
}
message GetGymDetailsResponse {
	.POGOProtos.Data.Gym.GymState gym_state = 1;
	string name = 2;
	repeated string urls = 3;
	.POGOProtos.Networking.Responses.GetGymDetailsResponse.Result result = 4;
	string description = 5;
	repeated string secondary_url = 6;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_NOT_IN_RANGE = 2;
	}
}
message GetHatchedEggsResponse {
	bool success = 1;
	repeated fixed64 pokemon_id = 2 [packed = true];
	repeated int32 experience_awarded = 3;
	repeated int32 candy_awarded = 4;
	repeated int32 stardust_awarded = 5;
	repeated float egg_km_walked = 6;
	repeated .POGOProtos.Data.PokemonData hatched_pokemon = 7;
}
message GetInboxResponse {
	Result result = 1;
	ClientInbox inbox = 2;

	message ClientInbox {
		repeated Notification notifications = 1;
		repeated TemplateVariable builtin_variables = 2;

		message Notification {
			string notification_id = 1;
			string title_key = 2;
			string category = 3;
			int64 create_timestamp_ms = 4;
			repeated TemplateVariable variables = 5;
			repeated Label labels = 6;

			enum Label {
				UNSET_LABEL = 0;
				UNREAD = 1;
				NEW = 2;
				IMMEDIATE = 3;
			}
		}

		message TemplateVariable {
			string name = 1;
			string literal = 2;
			string key = 3;
			string lookup_table = 4;
			bytes byte_value = 5;
		}
	}

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		FAILURE = 2;
	}
}
message GetIncensePokemonResponse {
	.POGOProtos.Networking.Responses.GetIncensePokemonResponse.Result result = 1;
	.POGOProtos.Enums.PokemonId pokemon_id = 2;
	double latitude = 3;
	double longitude = 4;
	string encounter_location = 5;
	fixed64 encounter_id = 6;
	int64 disappear_timestamp_ms = 7;
	.POGOProtos.Data.PokemonDisplay pokemon_display = 8;

	enum Result {
		INCENSE_ENCOUNTER_UNKNOWN = 0;
		INCENSE_ENCOUNTER_AVAILABLE = 1;
		INCENSE_ENCOUNTER_NOT_AVAILABLE = 2;
	}
}
message GetInventoryResponse {
	bool success = 1;
	.POGOProtos.Inventory.InventoryDelta inventory_delta = 2;
}
message GetMapObjectsResponse {
	repeated .POGOProtos.Map.MapCell map_cells = 1;
	.POGOProtos.Map.MapObjectsStatus status = 2;
	TimeOfDay time_of_day = 3;

	enum TimeOfDay {
		NONE = 0;
		DAY = 1;
		NIGHT = 2;
	}
}
message GetPlayerProfileResponse {
	.POGOProtos.Networking.Responses.GetPlayerProfileResponse.Result result = 1;
	int64 start_time = 2;
	repeated .POGOProtos.Data.PlayerBadge badges = 3;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
	}
}
message GetPlayerResponse {
	bool success = 1;
	.POGOProtos.Data.PlayerData player_data = 2;
	bool banned = 3;
	bool warn = 4;
}
message IncenseEncounterResponse {
	.POGOProtos.Networking.Responses.IncenseEncounterResponse.Result result = 1;
	.POGOProtos.Data.PokemonData pokemon_data = 2;
	.POGOProtos.Data.Capture.CaptureProbability capture_probability = 3;
	.POGOProtos.Inventory.Item.ItemId active_item = 4;

	enum Result {
		INCENSE_ENCOUNTER_UNKNOWN = 0;
		INCENSE_ENCOUNTER_SUCCESS = 1;
		INCENSE_ENCOUNTER_NOT_AVAILABLE = 2;
		POKEMON_INVENTORY_FULL = 3;
	}
}
message LevelUpRewardsResponse {
	.POGOProtos.Networking.Responses.LevelUpRewardsResponse.Result result = 1;
	repeated .POGOProtos.Inventory.Item.ItemAward items_awarded = 2;
	repeated .POGOProtos.Inventory.Item.ItemId items_unlocked = 4;
	repeated string avatar_template_ids = 5;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		AWARDED_ALREADY = 2;
	}
}
message ListAvatarCustomizationsResponse {
	Result result = 1;
	.POGOProtos.Data.Avatar.AvatarCustomization avatar_customizations = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		FAILURE = 2;
	}
}
message MarkTutorialCompleteResponse {
	bool success = 1;
	.POGOProtos.Data.PlayerData player_data = 2;
}
message NicknamePokemonResponse {
	.POGOProtos.Networking.Responses.NicknamePokemonResponse.Result result = 1;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_INVALID_NICKNAME = 2;
		ERROR_POKEMON_NOT_FOUND = 3;
		ERROR_POKEMON_IS_EGG = 4;
	}
}
message PushNotificationRegistryResponse {
	Result result = 1;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		NO_CHANGE = 2;
	}
}
message RecycleInventoryItemResponse {
	.POGOProtos.Networking.Responses.RecycleInventoryItemResponse.Result result = 1;
	int32 new_count = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_NOT_ENOUGH_COPIES = 2;
		ERROR_CANNOT_RECYCLE_INCUBATORS = 3;
	}
}
message RegisterBackgroundDeviceResponse {
	Status status = 1;
	.POGOProtos.Data.BackgroundToken token = 2;

	enum Status {
		UNSET = 0;
		SUCCESS = 1;
		ERROR = 2;
	}
}
message ReleasePokemonResponse {
	.POGOProtos.Networking.Responses.ReleasePokemonResponse.Result result = 1;
	int32 candy_awarded = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		POKEMON_DEPLOYED = 2;
		FAILED = 3;
		ERROR_POKEMON_IS_EGG = 4;
		ERROR_POKEMON_IS_BUDDY = 5;
	}
}
message SetAvatarItemAsViewedResponse {
	Result result = 1;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		FAILURE = 2;
	}
}
message SetAvatarResponse {
	.POGOProtos.Networking.Responses.SetAvatarResponse.Status status = 1;
	.POGOProtos.Data.PlayerData player_data = 2;

	enum Status {
		UNSET = 0;
		SUCCESS = 1;
		AVATAR_ALREADY_SET = 2;
		FAILURE = 3;
		SLOT_NOT_ALLOWED = 4;
		ITEM_NOT_OWNED = 5;
		INVALID_AVATAR_TYPE = 6;
	}
}
message SetBuddyPokemonResponse {
	.POGOProtos.Networking.Responses.SetBuddyPokemonResponse.Result result = 1;
	.POGOProtos.Data.BuddyPokemon updated_buddy = 2;

	enum Result {
		UNEST = 0;
		SUCCESS = 1;
		ERROR_POKEMON_DEPLOYED = 2;
		ERROR_POKEMON_NOT_OWNED = 3;
		ERROR_POKEMON_IS_EGG = 4;
	}
}
message SetContactSettingsResponse {
	.POGOProtos.Networking.Responses.SetContactSettingsResponse.Status status = 1;
	.POGOProtos.Data.PlayerData player_data = 2;

	enum Status {
		UNSET = 0;
		SUCCESS = 1;
		FAILURE = 2;
	}
}
message SetFavoritePokemonResponse {
	.POGOProtos.Networking.Responses.SetFavoritePokemonResponse.Result result = 1;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_POKEMON_NOT_FOUND = 2;
		ERROR_POKEMON_IS_EGG = 3;
	}
}
message SetPlayerTeamResponse {
	.POGOProtos.Networking.Responses.SetPlayerTeamResponse.Status status = 1;
	.POGOProtos.Data.PlayerData player_data = 2;

	enum Status {
		UNSET = 0;
		SUCCESS = 1;
		TEAM_ALREADY_SET = 2;
		FAILURE = 3;
	}
}
message SfidaActionLogResponse {
	.POGOProtos.Networking.Responses.SfidaActionLogResponse.Result result = 1;
	repeated .POGOProtos.Data.Logs.ActionLogEntry log_entries = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
	}
}
message SfidaRegistrationResponse {
	bytes access_token = 1;
}
message StartGymBattleResponse {
	.POGOProtos.Networking.Responses.StartGymBattleResponse.Result result = 1;
	int64 battle_start_timestamp_ms = 2;
	int64 battle_end_timestamp_ms = 3;
	string battle_id = 4;
	.POGOProtos.Data.Battle.BattleParticipant defender = 5;
	.POGOProtos.Data.Battle.BattleLog battle_log = 6;
	.POGOProtos.Data.Battle.BattleParticipant attacker = 7;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_GYM_NOT_FOUND = 2;
		ERROR_GYM_NEUTRAL = 3;
		ERROR_GYM_WRONG_TEAM = 4;
		ERROR_GYM_EMPTY = 5;
		ERROR_INVALID_DEFENDER = 6;
		ERROR_TRAINING_INVALID_ATTACKER_COUNT = 7;
		ERROR_ALL_POKEMON_FAINTED = 8;
		ERROR_TOO_MANY_BATTLES = 9;
		ERROR_TOO_MANY_PLAYERS = 10;
		ERROR_GYM_BATTLE_LOCKOUT = 11;
		ERROR_PLAYER_BELOW_MINIMUM_LEVEL = 12;
		ERROR_NOT_IN_RANGE = 13;
		ERROR_POI_INACCESSIBLE = 14;
	}
}
message UpdateNotificationResponse {
	repeated string notification_ids = 1;
	repeated int64 create_timestamp_ms = 2;
	.POGOProtos.Enums.NotificationState state = 3;
}
message UpgradePokemonResponse {
	.POGOProtos.Networking.Responses.UpgradePokemonResponse.Result result = 1;
	.POGOProtos.Data.PokemonData upgraded_pokemon = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_POKEMON_NOT_FOUND = 2;
		ERROR_INSUFFICIENT_RESOURCES = 3;
		ERROR_UPGRADE_NOT_AVAILABLE = 4;
		ERROR_POKEMON_IS_DEPLOYED = 5;
	}
}
message UseIncenseResponse {
	.POGOProtos.Networking.Responses.UseIncenseResponse.Result result = 1;
	.POGOProtos.Inventory.AppliedItem applied_incense = 2;

	enum Result {
		UNKNOWN = 0;
		SUCCESS = 1;
		INCENSE_ALREADY_ACTIVE = 2;
		NONE_IN_INVENTORY = 3;
		LOCATION_UNSET = 4;
	}
}
message UseItemCaptureResponse {
	bool success = 1;
	double item_capture_mult = 2;
	double item_flee_mult = 3;
	bool stop_movement = 4;
	bool stop_attack = 5;
	bool target_max = 6;
	bool target_slow = 7;
}
message UseItemEggIncubatorResponse {
	.POGOProtos.Networking.Responses.UseItemEggIncubatorResponse.Result result = 1;
	.POGOProtos.Inventory.EggIncubator egg_incubator = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_INCUBATOR_NOT_FOUND = 2;
		ERROR_POKEMON_EGG_NOT_FOUND = 3;
		ERROR_POKEMON_ID_NOT_EGG = 4;
		ERROR_INCUBATOR_ALREADY_IN_USE = 5;
		ERROR_POKEMON_ALREADY_INCUBATING = 6;
		ERROR_INCUBATOR_NO_USES_REMAINING = 7;
	}
}
message UseItemEncounterResponse {
	Status status = 1;
	.POGOProtos.Data.Capture.CaptureProbability capture_probability = 2;
	.POGOProtos.Inventory.Item.ItemId active_item = 3;

	enum Status {
		SUCCESS = 0;
		ALREADY_COMPLETED = 1;
		ACTIVE_ITEM_EXISTS = 2;
		NO_ITEM_IN_INVENTORY = 3;
		INVALID_ITEM_CATEGORY = 4;
	}
}
message UseItemGymResponse {
	.POGOProtos.Networking.Responses.UseItemGymResponse.Result result = 1;
	int64 updated_gp = 2;  // Gym Points (?)

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_CANNOT_USE = 2;
		ERROR_NOT_IN_RANGE = 3;
	}
}
message UseItemPotionResponse {
	.POGOProtos.Networking.Responses.UseItemPotionResponse.Result result = 1;
	int32 stamina = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_NO_POKEMON = 2;
		ERROR_CANNOT_USE = 3;
		ERROR_DEPLOYED_TO_FORT = 4;
	}
}
message UseItemReviveResponse {
	.POGOProtos.Networking.Responses.UseItemReviveResponse.Result result = 1;
	int32 stamina = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_NO_POKEMON = 2;
		ERROR_CANNOT_USE = 3;
		ERROR_DEPLOYED_TO_FORT = 4;
	}
}
message UseItemXpBoostResponse {
	.POGOProtos.Networking.Responses.UseItemXpBoostResponse.Result result = 1;
	.POGOProtos.Inventory.AppliedItems applied_items = 2;

	enum Result {
		UNSET = 0;
		SUCCESS = 1;
		ERROR_INVALID_ITEM_TYPE = 2;
		ERROR_XP_BOOST_ALREADY_ACTIVE = 3;
		ERROR_NO_ITEMS_REMAINING = 4;
		ERROR_LOCATION_UNSET = 5;
	}
}
message VerifyChallengeResponse {
	bool success = 1;
}
