-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Play Game Services SDK.
--   
--   The API for Google Play Game Services.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-games
@version 0.3.0


module Network.Google.Games.Types

-- | Default request referring to version <tt>v1</tt> of the Google Play
--   Game Services API. This contains the host and root path used as a
--   starting point for constructing service requests.
gamesService :: ServiceConfig

-- | Know the list of people in your circles, your age range, and language
plusLoginScope :: Proxy '["https://www.googleapis.com/auth/plus.login"]

-- | Share your Google+ profile information and view and manage your game
--   activity
gamesScope :: Proxy '["https://www.googleapis.com/auth/games"]

-- | View and manage its own configuration data in your Google Drive
driveAppDataScope :: Proxy '["https://www.googleapis.com/auth/drive.appdata"]

-- | Collection of players being retrieved
data PlayersListCollection

-- | <tt>played_with</tt> Retrieve a list of players you have played a
--   multiplayer game (realtime or turn-based) with recently.
PlayedWith :: PlayersListCollection

-- | This is a JSON template for a join room request.
--   
--   <i>See:</i> <a>roomJoinRequest</a> smart constructor.
data RoomJoinRequest

-- | Creates a value of <a>RoomJoinRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rjrNetworkDiagnostics</a></li>
--   <li><a>rjrKind</a></li>
--   <li><a>rjrClientAddress</a></li>
--   <li><a>rjrCapabilities</a></li>
--   </ul>
roomJoinRequest :: RoomJoinRequest

-- | Network diagnostics for the client joining the room.
rjrNetworkDiagnostics :: Lens' RoomJoinRequest (Maybe NetworkDiagnostics)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomJoinRequest.
rjrKind :: Lens' RoomJoinRequest Text

-- | Client address for the player joining the room.
rjrClientAddress :: Lens' RoomJoinRequest (Maybe RoomClientAddress)

-- | The capabilities that this client supports for realtime communication.
rjrCapabilities :: Lens' RoomJoinRequest [Text]

-- | An object representation of the individual components of the player's
--   name. For some players, these fields may not be present.
--   
--   <i>See:</i> <a>playerName</a> smart constructor.
data PlayerName

-- | Creates a value of <a>PlayerName</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnGivenName</a></li>
--   <li><a>pnFamilyName</a></li>
--   </ul>
playerName :: PlayerName

-- | The given name of this player. In some places, this is known as the
--   first name.
pnGivenName :: Lens' PlayerName (Maybe Text)

-- | The family name of this player. In some places, this is known as the
--   last name.
pnFamilyName :: Lens' PlayerName (Maybe Text)

-- | This is a JSON template for an snapshot object.
--   
--   <i>See:</i> <a>snapshot</a> smart constructor.
data Snapshot

-- | Creates a value of <a>Snapshot</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sLastModifiedMillis</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sProgressValue</a></li>
--   <li><a>sUniqueName</a></li>
--   <li><a>sCoverImage</a></li>
--   <li><a>sId</a></li>
--   <li><a>sDurationMillis</a></li>
--   <li><a>sTitle</a></li>
--   <li><a>sType</a></li>
--   <li><a>sDescription</a></li>
--   <li><a>sDriveId</a></li>
--   </ul>
snapshot :: Snapshot

-- | The timestamp (in millis since Unix epoch) of the last modification to
--   this snapshot.
sLastModifiedMillis :: Lens' Snapshot (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#snapshot.
sKind :: Lens' Snapshot Text

-- | The progress value (64-bit integer set by developer) associated with
--   this snapshot.
sProgressValue :: Lens' Snapshot (Maybe Int64)

-- | The unique name provided when the snapshot was created.
sUniqueName :: Lens' Snapshot (Maybe Text)

-- | The cover image of this snapshot. May be absent if there is no image.
sCoverImage :: Lens' Snapshot (Maybe SnapshotImage)

-- | The ID of the snapshot.
sId :: Lens' Snapshot (Maybe Text)

-- | The duration associated with this snapshot, in millis.
sDurationMillis :: Lens' Snapshot (Maybe Int64)

-- | The title of this snapshot.
sTitle :: Lens' Snapshot (Maybe Text)

-- | The type of this snapshot. Possible values are: - "SAVE_GAME" - A
--   snapshot representing a save game.
sType :: Lens' Snapshot (Maybe Text)

-- | The description of this snapshot.
sDescription :: Lens' Snapshot (Maybe Text)

-- | The ID of the file underlying this snapshot in the Drive API. Only
--   present if the snapshot is a view on a Drive file and the file is
--   owned by the caller.
sDriveId :: Lens' Snapshot (Maybe Text)

-- | This is a JSON template for a room resource object.
--   
--   <i>See:</i> <a>room</a> smart constructor.
data Room

-- | Creates a value of <a>Room</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rStatus</a></li>
--   <li><a>rVariant</a></li>
--   <li><a>rKind</a></li>
--   <li><a>rAutoMatchingStatus</a></li>
--   <li><a>rCreationDetails</a></li>
--   <li><a>rInviterId</a></li>
--   <li><a>rLastUpdateDetails</a></li>
--   <li><a>rRoomStatusVersion</a></li>
--   <li><a>rParticipants</a></li>
--   <li><a>rApplicationId</a></li>
--   <li><a>rAutoMatchingCriteria</a></li>
--   <li><a>rRoomId</a></li>
--   <li><a>rDescription</a></li>
--   </ul>
room :: Room

-- | The status of the room. Possible values are: - "ROOM_INVITING" - One
--   or more players have been invited and not responded. -
--   "ROOM_AUTO_MATCHING" - One or more slots need to be filled by
--   auto-matching. - "ROOM_CONNECTING" - Players have joined and are
--   connecting to each other (either before or after auto-matching). -
--   "ROOM_ACTIVE" - All players have joined and connected to each other. -
--   "ROOM_DELETED" - The room should no longer be shown on the client.
--   Returned in sync calls when a player joins a room (as a tombstone), or
--   for rooms where all joined participants have left.
rStatus :: Lens' Room (Maybe Text)

-- | The variant / mode of the application being played; can be any integer
--   value, or left blank.
rVariant :: Lens' Room (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#room.
rKind :: Lens' Room Text

-- | Auto-matching status for this room. Not set if the room is not
--   currently in the auto-matching queue.
rAutoMatchingStatus :: Lens' Room (Maybe RoomAutoMatchStatus)

-- | Details about the room creation.
rCreationDetails :: Lens' Room (Maybe RoomModification)

-- | The ID of the participant that invited the user to the room. Not set
--   if the user was not invited to the room.
rInviterId :: Lens' Room (Maybe Text)

-- | Details about the last update to the room.
rLastUpdateDetails :: Lens' Room (Maybe RoomModification)

-- | The version of the room status: an increasing counter, used by the
--   client to ignore out-of-order updates to room status.
rRoomStatusVersion :: Lens' Room (Maybe Int32)

-- | The participants involved in the room, along with their statuses.
--   Includes participants who have left or declined invitations.
rParticipants :: Lens' Room [RoomParticipant]

-- | The ID of the application being played.
rApplicationId :: Lens' Room (Maybe Text)

-- | Criteria for auto-matching players into this room.
rAutoMatchingCriteria :: Lens' Room (Maybe RoomAutoMatchingCriteria)

-- | Globally unique ID for a room.
rRoomId :: Lens' Room (Maybe Text)

-- | This short description is generated by our servers and worded relative
--   to the player requesting the room. It is intended to be displayed when
--   the room is shown in a list (that is, an invitation to a room.)
rDescription :: Lens' Room (Maybe Text)

-- | This is a JSON template for a list of quest objects.
--   
--   <i>See:</i> <a>questListResponse</a> smart constructor.
data QuestListResponse

-- | Creates a value of <a>QuestListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qlrNextPageToken</a></li>
--   <li><a>qlrKind</a></li>
--   <li><a>qlrItems</a></li>
--   </ul>
questListResponse :: QuestListResponse

-- | Token corresponding to the next page of results.
qlrNextPageToken :: Lens' QuestListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#questListResponse.
qlrKind :: Lens' QuestListResponse Text

-- | The quests.
qlrItems :: Lens' QuestListResponse [Quest]

-- | This is a JSON template for a turn-based match resource object.
--   
--   <i>See:</i> <a>turnBasedMatch</a> smart constructor.
data TurnBasedMatch

-- | Creates a value of <a>TurnBasedMatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmStatus</a></li>
--   <li><a>tbmVariant</a></li>
--   <li><a>tbmResults</a></li>
--   <li><a>tbmMatchNumber</a></li>
--   <li><a>tbmKind</a></li>
--   <li><a>tbmData</a></li>
--   <li><a>tbmWithParticipantId</a></li>
--   <li><a>tbmCreationDetails</a></li>
--   <li><a>tbmInviterId</a></li>
--   <li><a>tbmLastUpdateDetails</a></li>
--   <li><a>tbmParticipants</a></li>
--   <li><a>tbmApplicationId</a></li>
--   <li><a>tbmAutoMatchingCriteria</a></li>
--   <li><a>tbmPreviousMatchData</a></li>
--   <li><a>tbmPendingParticipantId</a></li>
--   <li><a>tbmUserMatchStatus</a></li>
--   <li><a>tbmMatchId</a></li>
--   <li><a>tbmDescription</a></li>
--   <li><a>tbmRematchId</a></li>
--   <li><a>tbmMatchVersion</a></li>
--   </ul>
turnBasedMatch :: TurnBasedMatch

-- | The status of the match. Possible values are: - "MATCH_AUTO_MATCHING"
--   - One or more slots need to be filled by auto-matching; the match
--   cannot be established until they are filled. - "MATCH_ACTIVE" - The
--   match has started. - "MATCH_COMPLETE" - The match has finished. -
--   "MATCH_CANCELED" - The match was canceled. - "MATCH_EXPIRED" - The
--   match expired due to inactivity. - "MATCH_DELETED" - The match should
--   no longer be shown on the client. Returned only for tombstones for
--   matches when sync is called.
tbmStatus :: Lens' TurnBasedMatch (Maybe Text)

-- | The variant / mode of the application being played; can be any integer
--   value, or left blank.
tbmVariant :: Lens' TurnBasedMatch (Maybe Int32)

-- | The results reported for this match.
tbmResults :: Lens' TurnBasedMatch [ParticipantResult]

-- | The number of the match in a chain of rematches. Will be set to 1 for
--   the first match and incremented by 1 for each rematch.
tbmMatchNumber :: Lens' TurnBasedMatch (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatch.
tbmKind :: Lens' TurnBasedMatch Text

-- | The data / game state for this match.
tbmData :: Lens' TurnBasedMatch (Maybe TurnBasedMatchData)

-- | The ID of another participant in the match that can be used when
--   describing the participants the user is playing with.
tbmWithParticipantId :: Lens' TurnBasedMatch (Maybe Text)

-- | Details about the match creation.
tbmCreationDetails :: Lens' TurnBasedMatch (Maybe TurnBasedMatchModification)

-- | The ID of the participant that invited the user to the match. Not set
--   if the user was not invited to the match.
tbmInviterId :: Lens' TurnBasedMatch (Maybe Text)

-- | Details about the last update to the match.
tbmLastUpdateDetails :: Lens' TurnBasedMatch (Maybe TurnBasedMatchModification)

-- | The participants involved in the match, along with their statuses.
--   Includes participants who have left or declined invitations.
tbmParticipants :: Lens' TurnBasedMatch [TurnBasedMatchParticipant]

-- | The ID of the application being played.
tbmApplicationId :: Lens' TurnBasedMatch (Maybe Text)

-- | Criteria for auto-matching players into this match.
tbmAutoMatchingCriteria :: Lens' TurnBasedMatch (Maybe TurnBasedAutoMatchingCriteria)

-- | The data / game state for the previous match; set for the first turn
--   of rematches only.
tbmPreviousMatchData :: Lens' TurnBasedMatch (Maybe TurnBasedMatchData)

-- | The ID of the participant that is taking a turn.
tbmPendingParticipantId :: Lens' TurnBasedMatch (Maybe Text)

-- | The status of the current user in the match. Derived from the match
--   type, match status, the user's participant status, and the pending
--   participant for the match. Possible values are: - "USER_INVITED" - The
--   user has been invited to join the match and has not responded yet. -
--   "USER_AWAITING_TURN" - The user is waiting for their turn. -
--   "USER_TURN" - The user has an action to take in the match. -
--   "USER_MATCH_COMPLETED" - The match has ended (it is completed,
--   canceled, or expired.)
tbmUserMatchStatus :: Lens' TurnBasedMatch (Maybe Text)

-- | Globally unique ID for a turn-based match.
tbmMatchId :: Lens' TurnBasedMatch (Maybe Text)

-- | This short description is generated by our servers based on turn state
--   and is localized and worded relative to the player requesting the
--   match. It is intended to be displayed when the match is shown in a
--   list.
tbmDescription :: Lens' TurnBasedMatch (Maybe Text)

-- | The ID of a rematch of this match. Only set for completed matches that
--   have been rematched.
tbmRematchId :: Lens' TurnBasedMatch (Maybe Text)

-- | The version of this match: an increasing counter, used to avoid
--   out-of-date updates to the match.
tbmMatchVersion :: Lens' TurnBasedMatch (Maybe Int32)

-- | This is a JSON template for a turn-based match data object.
--   
--   <i>See:</i> <a>turnBasedMatchData</a> smart constructor.
data TurnBasedMatchData

-- | Creates a value of <a>TurnBasedMatchData</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmdKind</a></li>
--   <li><a>tbmdData</a></li>
--   <li><a>tbmdDataAvailable</a></li>
--   </ul>
turnBasedMatchData :: TurnBasedMatchData

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchData.
tbmdKind :: Lens' TurnBasedMatchData Text

-- | The byte representation of the data (limited to 128 kB), as a
--   Base64-encoded string with the URL_SAFE encoding option.
tbmdData :: Lens' TurnBasedMatchData (Maybe ByteString)

-- | True if this match has data available but it wasn't returned in a list
--   response; fetching the match individually will retrieve this data.
tbmdDataAvailable :: Lens' TurnBasedMatchData (Maybe Bool)

-- | The collection of scores you're requesting.
data ScoresListCollection

-- | <tt>PUBLIC</tt> List all scores in the public leaderboard.
Public :: ScoresListCollection

-- | <tt>SOCIAL</tt> List only social scores.
Social :: ScoresListCollection

-- | <tt>SOCIAL_1P</tt> List only social scores, not respecting the fACL.
Social1P :: ScoresListCollection

-- | This is a JSON template for an event status resource.
--   
--   <i>See:</i> <a>playerEvent</a> smart constructor.
data PlayerEvent

-- | Creates a value of <a>PlayerEvent</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>peKind</a></li>
--   <li><a>peNumEvents</a></li>
--   <li><a>peFormattedNumEvents</a></li>
--   <li><a>peDefinitionId</a></li>
--   <li><a>pePlayerId</a></li>
--   </ul>
playerEvent :: PlayerEvent

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerEvent.
peKind :: Lens' PlayerEvent Text

-- | The current number of times this event has occurred.
peNumEvents :: Lens' PlayerEvent (Maybe Int64)

-- | The current number of times this event has occurred, as a string. The
--   formatting of this string depends on the configuration of your event
--   in the Play Games Developer Console.
peFormattedNumEvents :: Lens' PlayerEvent (Maybe Text)

-- | The ID of the event definition.
peDefinitionId :: Lens' PlayerEvent (Maybe Text)

-- | The ID of the player.
pePlayerId :: Lens' PlayerEvent (Maybe Text)

-- | This is a JSON template for a player leaderboard score object.
--   
--   <i>See:</i> <a>playerLeaderboardScore</a> smart constructor.
data PlayerLeaderboardScore

-- | Creates a value of <a>PlayerLeaderboardScore</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plsScoreTag</a></li>
--   <li><a>plsScoreString</a></li>
--   <li><a>plsKind</a></li>
--   <li><a>plsScoreValue</a></li>
--   <li><a>plsTimeSpan</a></li>
--   <li><a>plsPublicRank</a></li>
--   <li><a>plsSocialRank</a></li>
--   <li><a>plsLeaderboardId</a></li>
--   <li><a>plsWriteTimestamp</a></li>
--   </ul>
playerLeaderboardScore :: PlayerLeaderboardScore

-- | Additional information about the score. Values must contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
plsScoreTag :: Lens' PlayerLeaderboardScore (Maybe Text)

-- | The formatted value of this score.
plsScoreString :: Lens' PlayerLeaderboardScore (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerLeaderboardScore.
plsKind :: Lens' PlayerLeaderboardScore Text

-- | The numerical value of this score.
plsScoreValue :: Lens' PlayerLeaderboardScore (Maybe Int64)

-- | The time span of this score. Possible values are: - "ALL_TIME" - The
--   score is an all-time score. - "WEEKLY" - The score is a weekly score.
--   - "DAILY" - The score is a daily score.
plsTimeSpan :: Lens' PlayerLeaderboardScore (Maybe Text)

-- | The public rank of the score in this leaderboard. This object will not
--   be present if the user is not sharing their scores publicly.
plsPublicRank :: Lens' PlayerLeaderboardScore (Maybe LeaderboardScoreRank)

-- | The social rank of the score in this leaderboard.
plsSocialRank :: Lens' PlayerLeaderboardScore (Maybe LeaderboardScoreRank)

-- | The ID of the leaderboard this score is in.
plsLeaderboardId :: Lens' PlayerLeaderboardScore (Maybe Text)

-- | The timestamp at which this score was recorded, in milliseconds since
--   the epoch in UTC.
plsWriteTimestamp :: Lens' PlayerLeaderboardScore (Maybe Int64)

-- | This is a JSON template for the Application resource.
--   
--   <i>See:</i> <a>application</a> smart constructor.
data Application

-- | Creates a value of <a>Application</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aThemeColor</a></li>
--   <li><a>aLeaderboardCount</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aCategory</a></li>
--   <li><a>aName</a></li>
--   <li><a>aEnabledFeatures</a></li>
--   <li><a>aInstances</a></li>
--   <li><a>aAuthor</a></li>
--   <li><a>aId</a></li>
--   <li><a>aAchievementCount</a></li>
--   <li><a>aAssets</a></li>
--   <li><a>aDescription</a></li>
--   <li><a>aLastUpdatedTimestamp</a></li>
--   </ul>
application :: Application

-- | A hint to the client UI for what color to use as an app-themed color.
--   The color is given as an RGB triplet (e.g. "E0E0E0").
aThemeColor :: Lens' Application (Maybe Text)

-- | The number of leaderboards visible to the currently authenticated
--   player.
aLeaderboardCount :: Lens' Application (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#application.
aKind :: Lens' Application Text

-- | The category of the application.
aCategory :: Lens' Application (Maybe ApplicationCategory)

-- | The name of the application.
aName :: Lens' Application (Maybe Text)

-- | A list of features that have been enabled for the application.
--   Possible values are: - "SNAPSHOTS" - Snapshots has been enabled
aEnabledFeatures :: Lens' Application [Text]

-- | The instances of the application.
aInstances :: Lens' Application [Instance]

-- | The author of the application.
aAuthor :: Lens' Application (Maybe Text)

-- | The ID of the application.
aId :: Lens' Application (Maybe Text)

-- | The number of achievements visible to the currently authenticated
--   player.
aAchievementCount :: Lens' Application (Maybe Int32)

-- | The assets of the application.
aAssets :: Lens' Application [ImageAsset]

-- | The description of the application.
aDescription :: Lens' Application (Maybe Text)

-- | The last updated timestamp of the application.
aLastUpdatedTimestamp :: Lens' Application (Maybe Int64)

-- | This is a JSON template for an application category object.
--   
--   <i>See:</i> <a>applicationCategory</a> smart constructor.
data ApplicationCategory

-- | Creates a value of <a>ApplicationCategory</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acSecondary</a></li>
--   <li><a>acKind</a></li>
--   <li><a>acPrimary</a></li>
--   </ul>
applicationCategory :: ApplicationCategory

-- | The secondary category.
acSecondary :: Lens' ApplicationCategory (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#applicationCategory.
acKind :: Lens' ApplicationCategory Text

-- | The primary category.
acPrimary :: Lens' ApplicationCategory (Maybe Text)

-- | This is a JSON template for a list of score submission statuses.
--   
--   <i>See:</i> <a>playerScoreListResponse</a> smart constructor.
data PlayerScoreListResponse

-- | Creates a value of <a>PlayerScoreListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pslrSubmittedScores</a></li>
--   <li><a>pslrKind</a></li>
--   </ul>
playerScoreListResponse :: PlayerScoreListResponse

-- | The score submissions statuses.
pslrSubmittedScores :: Lens' PlayerScoreListResponse [PlayerScoreResponse]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerScoreListResponse.
pslrKind :: Lens' PlayerScoreListResponse Text

-- | This is a JSON template for network diagnostics reported for a client.
--   
--   <i>See:</i> <a>networkDiagnostics</a> smart constructor.
data NetworkDiagnostics

-- | Creates a value of <a>NetworkDiagnostics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ndAndroidNetworkType</a></li>
--   <li><a>ndKind</a></li>
--   <li><a>ndNetworkOperatorCode</a></li>
--   <li><a>ndNetworkOperatorName</a></li>
--   <li><a>ndRegistrationLatencyMillis</a></li>
--   <li><a>ndIosNetworkType</a></li>
--   <li><a>ndAndroidNetworkSubtype</a></li>
--   </ul>
networkDiagnostics :: NetworkDiagnostics

-- | The Android network type.
ndAndroidNetworkType :: Lens' NetworkDiagnostics (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#networkDiagnostics.
ndKind :: Lens' NetworkDiagnostics Text

-- | The MCC+MNC code for the client's network connection. On Android:
--   http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkOperator()
--   On iOS, see:
--   https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html
ndNetworkOperatorCode :: Lens' NetworkDiagnostics (Maybe Text)

-- | The name of the carrier of the client's network connection. On
--   Android:
--   http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkOperatorName()
--   On iOS:
--   https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html#//apple_ref/occ/instp/CTCarrier/carrierName
ndNetworkOperatorName :: Lens' NetworkDiagnostics (Maybe Text)

-- | The amount of time in milliseconds it took for the client to establish
--   a connection with the XMPP server.
ndRegistrationLatencyMillis :: Lens' NetworkDiagnostics (Maybe Int32)

-- | iOS network type as defined in Reachability.h.
ndIosNetworkType :: Lens' NetworkDiagnostics (Maybe Int32)

-- | The Android network subtype.
ndAndroidNetworkSubtype :: Lens' NetworkDiagnostics (Maybe Int32)

-- | This is a JSON template for the object representing a turn.
--   
--   <i>See:</i> <a>turnBasedMatchTurn</a> smart constructor.
data TurnBasedMatchTurn

-- | Creates a value of <a>TurnBasedMatchTurn</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmtResults</a></li>
--   <li><a>tbmtKind</a></li>
--   <li><a>tbmtData</a></li>
--   <li><a>tbmtPendingParticipantId</a></li>
--   <li><a>tbmtMatchVersion</a></li>
--   </ul>
turnBasedMatchTurn :: TurnBasedMatchTurn

-- | The match results for the participants in the match.
tbmtResults :: Lens' TurnBasedMatchTurn [ParticipantResult]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchTurn.
tbmtKind :: Lens' TurnBasedMatchTurn Text

-- | The shared game state data after the turn is over.
tbmtData :: Lens' TurnBasedMatchTurn (Maybe TurnBasedMatchDataRequest)

-- | The ID of the participant who should take their turn next. May be set
--   to the current player's participant ID to update match state without
--   changing the turn. If not set, the match will wait for other player(s)
--   to join via automatching; this is only valid if automatch criteria is
--   set on the match with remaining slots for automatched players.
tbmtPendingParticipantId :: Lens' TurnBasedMatchTurn (Maybe Text)

-- | The version of this match: an increasing counter, used to avoid
--   out-of-date updates to the match.
tbmtMatchVersion :: Lens' TurnBasedMatchTurn (Maybe Int32)

-- | This is a JSON template for a Quest Criterion resource.
--   
--   <i>See:</i> <a>questCriterion</a> smart constructor.
data QuestCriterion

-- | Creates a value of <a>QuestCriterion</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qcCurrentContribution</a></li>
--   <li><a>qcCompletionContribution</a></li>
--   <li><a>qcKind</a></li>
--   <li><a>qcInitialPlayerProgress</a></li>
--   <li><a>qcEventId</a></li>
--   </ul>
questCriterion :: QuestCriterion

-- | The number of increments the player has made toward the completion
--   count event increments required to complete the quest. This value will
--   not exceed the completion contribution. There will be no
--   currentContribution until the player has accepted the quest.
qcCurrentContribution :: Lens' QuestCriterion (Maybe QuestContribution)

-- | The total number of times the associated event must be incremented for
--   the player to complete this quest.
qcCompletionContribution :: Lens' QuestCriterion (Maybe QuestContribution)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#questCriterion.
qcKind :: Lens' QuestCriterion Text

-- | The value of the event associated with this quest at the time that the
--   quest was accepted. This value may change if event increments that
--   took place before the start of quest are uploaded after the quest
--   starts. There will be no initialPlayerProgress until the player has
--   accepted the quest.
qcInitialPlayerProgress :: Lens' QuestCriterion (Maybe QuestContribution)

-- | The ID of the event the criterion corresponds to.
qcEventId :: Lens' QuestCriterion (Maybe Text)

-- | This is a JSON template for a list of turn-based matches.
--   
--   <i>See:</i> <a>turnBasedMatchList</a> smart constructor.
data TurnBasedMatchList

-- | Creates a value of <a>TurnBasedMatchList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmlNextPageToken</a></li>
--   <li><a>tbmlKind</a></li>
--   <li><a>tbmlItems</a></li>
--   </ul>
turnBasedMatchList :: TurnBasedMatchList

-- | The pagination token for the next page of results.
tbmlNextPageToken :: Lens' TurnBasedMatchList (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchList.
tbmlKind :: Lens' TurnBasedMatchList Text

-- | The matches.
tbmlItems :: Lens' TurnBasedMatchList [TurnBasedMatch]

-- | This is a JSON template for peer channel diagnostics.
--   
--   <i>See:</i> <a>peerChannelDiagnostics</a> smart constructor.
data PeerChannelDiagnostics

-- | Creates a value of <a>PeerChannelDiagnostics</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcdNumMessagesLost</a></li>
--   <li><a>pcdBytesSent</a></li>
--   <li><a>pcdKind</a></li>
--   <li><a>pcdRoundtripLatencyMillis</a></li>
--   <li><a>pcdBytesReceived</a></li>
--   <li><a>pcdNumMessagesReceived</a></li>
--   <li><a>pcdNumSendFailures</a></li>
--   <li><a>pcdNumMessagesSent</a></li>
--   </ul>
peerChannelDiagnostics :: PeerChannelDiagnostics

-- | Number of messages lost.
pcdNumMessagesLost :: Lens' PeerChannelDiagnostics (Maybe Int32)

-- | Number of bytes sent.
pcdBytesSent :: Lens' PeerChannelDiagnostics (Maybe AggregateStats)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#peerChannelDiagnostics.
pcdKind :: Lens' PeerChannelDiagnostics Text

-- | Roundtrip latency stats in milliseconds.
pcdRoundtripLatencyMillis :: Lens' PeerChannelDiagnostics (Maybe AggregateStats)

-- | Number of bytes received.
pcdBytesReceived :: Lens' PeerChannelDiagnostics (Maybe AggregateStats)

-- | Number of messages received.
pcdNumMessagesReceived :: Lens' PeerChannelDiagnostics (Maybe Int32)

-- | Number of send failures.
pcdNumSendFailures :: Lens' PeerChannelDiagnostics (Maybe Int32)

-- | Number of messages sent.
pcdNumMessagesSent :: Lens' PeerChannelDiagnostics (Maybe Int32)

-- | This is a JSON template for a list of rooms.
--   
--   <i>See:</i> <a>roomList</a> smart constructor.
data RoomList

-- | Creates a value of <a>RoomList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlNextPageToken</a></li>
--   <li><a>rlKind</a></li>
--   <li><a>rlItems</a></li>
--   </ul>
roomList :: RoomList

-- | The pagination token for the next page of results.
rlNextPageToken :: Lens' RoomList (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomList.
rlKind :: Lens' RoomList Text

-- | The rooms.
rlItems :: Lens' RoomList [Room]

-- | This is a JSON template for a push token resource.
--   
--   <i>See:</i> <a>pushToken</a> smart constructor.
data PushToken

-- | Creates a value of <a>PushToken</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptClientRevision</a></li>
--   <li><a>ptKind</a></li>
--   <li><a>ptLanguage</a></li>
--   <li><a>ptId</a></li>
--   </ul>
pushToken :: PushToken

-- | The revision of the client SDK used by your application, in the same
--   format that's used by revisions.check. Used to send backward
--   compatible messages. Format: [PLATFORM_TYPE]:[VERSION_NUMBER].
--   Possible values of PLATFORM_TYPE are: - IOS - Push token is for iOS
ptClientRevision :: Lens' PushToken (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#pushToken.
ptKind :: Lens' PushToken Text

-- | The preferred language for notifications that are sent using this
--   token.
ptLanguage :: Lens' PushToken (Maybe Text)

-- | Unique identifier for this push token.
ptId :: Lens' PushToken (Maybe PushTokenId)

-- | This is a JSON template for an achievement update response.
--   
--   <i>See:</i> <a>achievementUpdateResponse</a> smart constructor.
data AchievementUpdateResponse

-- | Creates a value of <a>AchievementUpdateResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aurUpdateOccurred</a></li>
--   <li><a>aurAchievementId</a></li>
--   <li><a>aurKind</a></li>
--   <li><a>aurCurrentState</a></li>
--   <li><a>aurNewlyUnlocked</a></li>
--   <li><a>aurCurrentSteps</a></li>
--   </ul>
achievementUpdateResponse :: AchievementUpdateResponse

-- | Whether the requested updates actually affected the achievement.
aurUpdateOccurred :: Lens' AchievementUpdateResponse (Maybe Bool)

-- | The achievement this update is was applied to.
aurAchievementId :: Lens' AchievementUpdateResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUpdateResponse.
aurKind :: Lens' AchievementUpdateResponse Text

-- | The current state of the achievement. Possible values are: - "HIDDEN"
--   - Achievement is hidden. - "REVEALED" - Achievement is revealed. -
--   "UNLOCKED" - Achievement is unlocked.
aurCurrentState :: Lens' AchievementUpdateResponse (Maybe Text)

-- | Whether this achievement was newly unlocked (that is, whether the
--   unlock request for the achievement was the first for the player).
aurNewlyUnlocked :: Lens' AchievementUpdateResponse (Maybe Bool)

-- | The current steps recorded for this achievement if it is incremental.
aurCurrentSteps :: Lens' AchievementUpdateResponse (Maybe Int32)

-- | This is a JSON template for the Leaderboard Entry resource.
--   
--   <i>See:</i> <a>leaderboardEntry</a> smart constructor.
data LeaderboardEntry

-- | Creates a value of <a>LeaderboardEntry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>leScoreTag</a></li>
--   <li><a>leWriteTimestampMillis</a></li>
--   <li><a>leKind</a></li>
--   <li><a>leScoreValue</a></li>
--   <li><a>leFormattedScore</a></li>
--   <li><a>leTimeSpan</a></li>
--   <li><a>leFormattedScoreRank</a></li>
--   <li><a>lePlayer</a></li>
--   <li><a>leScoreRank</a></li>
--   </ul>
leaderboardEntry :: LeaderboardEntry

-- | Additional information about the score. Values must contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
leScoreTag :: Lens' LeaderboardEntry (Maybe Text)

-- | The timestamp at which this score was recorded, in milliseconds since
--   the epoch in UTC.
leWriteTimestampMillis :: Lens' LeaderboardEntry (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboardEntry.
leKind :: Lens' LeaderboardEntry Text

-- | The numerical value of this score.
leScoreValue :: Lens' LeaderboardEntry (Maybe Int64)

-- | The localized string for the numerical value of this score.
leFormattedScore :: Lens' LeaderboardEntry (Maybe Text)

-- | The time span of this high score. Possible values are: - "ALL_TIME" -
--   The score is an all-time high score. - "WEEKLY" - The score is a
--   weekly high score. - "DAILY" - The score is a daily high score.
leTimeSpan :: Lens' LeaderboardEntry (Maybe Text)

-- | The localized string for the rank of this score for this leaderboard.
leFormattedScoreRank :: Lens' LeaderboardEntry (Maybe Text)

-- | The player who holds this score.
lePlayer :: Lens' LeaderboardEntry (Maybe Player)

-- | The rank of this score for this leaderboard.
leScoreRank :: Lens' LeaderboardEntry (Maybe Int64)

-- | This is a JSON template for a list of snapshot objects.
--   
--   <i>See:</i> <a>snapshotListResponse</a> smart constructor.
data SnapshotListResponse

-- | Creates a value of <a>SnapshotListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slrNextPageToken</a></li>
--   <li><a>slrKind</a></li>
--   <li><a>slrItems</a></li>
--   </ul>
snapshotListResponse :: SnapshotListResponse

-- | Token corresponding to the next page of results. If there are no more
--   results, the token is omitted.
slrNextPageToken :: Lens' SnapshotListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#snapshotListResponse.
slrKind :: Lens' SnapshotListResponse Text

-- | The snapshots.
slrItems :: Lens' SnapshotListResponse [Snapshot]

-- | This is a JSON template for 1P/3P metadata about a user's level.
--   
--   <i>See:</i> <a>playerLevel</a> smart constructor.
data PlayerLevel

-- | Creates a value of <a>PlayerLevel</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plMaxExperiencePoints</a></li>
--   <li><a>plKind</a></li>
--   <li><a>plMinExperiencePoints</a></li>
--   <li><a>plLevel</a></li>
--   </ul>
playerLevel :: PlayerLevel

-- | The maximum experience points for this level.
plMaxExperiencePoints :: Lens' PlayerLevel (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerLevel.
plKind :: Lens' PlayerLevel Text

-- | The minimum experience points for this level.
plMinExperiencePoints :: Lens' PlayerLevel (Maybe Int64)

-- | The level for the user.
plLevel :: Lens' PlayerLevel (Maybe Int32)

-- | This is a JSON template for an achievement unlock response.
--   
--   <i>See:</i> <a>achievementUpdateMultipleResponse</a> smart
--   constructor.
data AchievementUpdateMultipleResponse

-- | Creates a value of <a>AchievementUpdateMultipleResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aumrKind</a></li>
--   <li><a>aumrUpdatedAchievements</a></li>
--   </ul>
achievementUpdateMultipleResponse :: AchievementUpdateMultipleResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUpdateListResponse.
aumrKind :: Lens' AchievementUpdateMultipleResponse Text

-- | The updated state of the achievements.
aumrUpdatedAchievements :: Lens' AchievementUpdateMultipleResponse [AchievementUpdateResponse]

-- | This is a JSON template for a participant in a room.
--   
--   <i>See:</i> <a>roomParticipant</a> smart constructor.
data RoomParticipant

-- | Creates a value of <a>RoomParticipant</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpStatus</a></li>
--   <li><a>rpConnected</a></li>
--   <li><a>rpLeaveReason</a></li>
--   <li><a>rpKind</a></li>
--   <li><a>rpClientAddress</a></li>
--   <li><a>rpId</a></li>
--   <li><a>rpAutoMatched</a></li>
--   <li><a>rpPlayer</a></li>
--   <li><a>rpCapabilities</a></li>
--   <li><a>rpAutoMatchedPlayer</a></li>
--   </ul>
roomParticipant :: RoomParticipant

-- | The status of the participant with respect to the room. Possible
--   values are: - "PARTICIPANT_INVITED" - The participant has been invited
--   to join the room, but has not yet responded. - "PARTICIPANT_JOINED" -
--   The participant has joined the room (either after creating it or
--   accepting an invitation.) - "PARTICIPANT_DECLINED" - The participant
--   declined an invitation to join the room. - "PARTICIPANT_LEFT" - The
--   participant joined the room and then left it.
rpStatus :: Lens' RoomParticipant (Maybe Text)

-- | True if this participant is in the fully connected set of peers in the
--   room.
rpConnected :: Lens' RoomParticipant (Maybe Bool)

-- | The reason the participant left the room; populated if the participant
--   status is PARTICIPANT_LEFT. Possible values are: - "PLAYER_LEFT" - The
--   player explicitly chose to leave the room. - "GAME_LEFT" - The game
--   chose to remove the player from the room. - "ABANDONED" - The player
--   switched to another application and abandoned the room. -
--   "PEER_CONNECTION_FAILURE" - The client was unable to establish or
--   maintain a connection to other peer(s) in the room. - "SERVER_ERROR" -
--   The client received an error response when it tried to communicate
--   with the server. - "TIMEOUT" - The client timed out while waiting for
--   players to join and connect. - "PRESENCE_FAILURE" - The client's XMPP
--   connection ended abruptly.
rpLeaveReason :: Lens' RoomParticipant (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomParticipant.
rpKind :: Lens' RoomParticipant Text

-- | Client address for the participant.
rpClientAddress :: Lens' RoomParticipant (Maybe RoomClientAddress)

-- | An identifier for the participant in the scope of the room. Cannot be
--   used to identify a player across rooms or in other contexts.
rpId :: Lens' RoomParticipant (Maybe Text)

-- | True if this participant was auto-matched with the requesting player.
rpAutoMatched :: Lens' RoomParticipant (Maybe Bool)

-- | Information about the player. Not populated if this player was
--   anonymously auto-matched against the requesting player. (Either player
--   or autoMatchedPlayer will be set.)
rpPlayer :: Lens' RoomParticipant (Maybe Player)

-- | The capabilities which can be used when communicating with this
--   participant.
rpCapabilities :: Lens' RoomParticipant [Text]

-- | Information about a player that has been anonymously auto-matched
--   against the requesting player. (Either player or autoMatchedPlayer
--   will be set.)
rpAutoMatchedPlayer :: Lens' RoomParticipant (Maybe AnonymousPlayer)

-- | Restrict application details returned to the specific platform.
data ApplicationsGetPlatformType

-- | <tt>ANDROID</tt> Retrieve applications that can be played on Android.
Android :: ApplicationsGetPlatformType

-- | <tt>IOS</tt> Retrieve applications that can be played on iOS.
Ios :: ApplicationsGetPlatformType

-- | <tt>WEB_APP</tt> Retrieve applications that can be played on desktop
--   web.
WebApp :: ApplicationsGetPlatformType

-- | This is a JSON template for a ListDefinitions response.
--   
--   <i>See:</i> <a>eventDefinitionListResponse</a> smart constructor.
data EventDefinitionListResponse

-- | Creates a value of <a>EventDefinitionListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edlrNextPageToken</a></li>
--   <li><a>edlrKind</a></li>
--   <li><a>edlrItems</a></li>
--   </ul>
eventDefinitionListResponse :: EventDefinitionListResponse

-- | The pagination token for the next page of results.
edlrNextPageToken :: Lens' EventDefinitionListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventDefinitionListResponse.
edlrKind :: Lens' EventDefinitionListResponse Text

-- | The event definitions.
edlrItems :: Lens' EventDefinitionListResponse [EventDefinition]

-- | This is a JSON template for data related to individual game
--   categories.
--   
--   <i>See:</i> <a>category</a> smart constructor.
data Category

-- | Creates a value of <a>Category</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cKind</a></li>
--   <li><a>cCategory</a></li>
--   <li><a>cExperiencePoints</a></li>
--   </ul>
category :: Category

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#category.
cKind :: Lens' Category Text

-- | The category name.
cCategory :: Lens' Category (Maybe Text)

-- | Experience points earned in this category.
cExperiencePoints :: Lens' Category (Maybe Int64)

-- | This is a JSON template for the Android instance details resource.
--   
--   <i>See:</i> <a>instanceAndroidDetails</a> smart constructor.
data InstanceAndroidDetails

-- | Creates a value of <a>InstanceAndroidDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iadPackageName</a></li>
--   <li><a>iadPreferred</a></li>
--   <li><a>iadKind</a></li>
--   <li><a>iadEnablePiracyCheck</a></li>
--   </ul>
instanceAndroidDetails :: InstanceAndroidDetails

-- | Android package name which maps to Google Play URL.
iadPackageName :: Lens' InstanceAndroidDetails (Maybe Text)

-- | Indicates that this instance is the default for new installations.
iadPreferred :: Lens' InstanceAndroidDetails (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#instanceAndroidDetails.
iadKind :: Lens' InstanceAndroidDetails Text

-- | Flag indicating whether the anti-piracy check is enabled.
iadEnablePiracyCheck :: Lens' InstanceAndroidDetails (Maybe Bool)

-- | This is a JSON template for a participant in a turn-based match.
--   
--   <i>See:</i> <a>turnBasedMatchParticipant</a> smart constructor.
data TurnBasedMatchParticipant

-- | Creates a value of <a>TurnBasedMatchParticipant</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmpStatus</a></li>
--   <li><a>tbmpKind</a></li>
--   <li><a>tbmpId</a></li>
--   <li><a>tbmpAutoMatched</a></li>
--   <li><a>tbmpPlayer</a></li>
--   <li><a>tbmpAutoMatchedPlayer</a></li>
--   </ul>
turnBasedMatchParticipant :: TurnBasedMatchParticipant

-- | The status of the participant with respect to the match. Possible
--   values are: - "PARTICIPANT_NOT_INVITED_YET" - The participant is
--   slated to be invited to the match, but the invitation has not been
--   sent; the invite will be sent when it becomes their turn. -
--   "PARTICIPANT_INVITED" - The participant has been invited to join the
--   match, but has not yet responded. - "PARTICIPANT_JOINED" - The
--   participant has joined the match (either after creating it or
--   accepting an invitation.) - "PARTICIPANT_DECLINED" - The participant
--   declined an invitation to join the match. - "PARTICIPANT_LEFT" - The
--   participant joined the match and then left it. -
--   "PARTICIPANT_FINISHED" - The participant finished playing in the
--   match. - "PARTICIPANT_UNRESPONSIVE" - The participant did not take
--   their turn in the allotted time.
tbmpStatus :: Lens' TurnBasedMatchParticipant (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchParticipant.
tbmpKind :: Lens' TurnBasedMatchParticipant Text

-- | An identifier for the participant in the scope of the match. Cannot be
--   used to identify a player across matches or in other contexts.
tbmpId :: Lens' TurnBasedMatchParticipant (Maybe Text)

-- | True if this participant was auto-matched with the requesting player.
tbmpAutoMatched :: Lens' TurnBasedMatchParticipant (Maybe Bool)

-- | Information about the player. Not populated if this player was
--   anonymously auto-matched against the requesting player. (Either player
--   or autoMatchedPlayer will be set.)
tbmpPlayer :: Lens' TurnBasedMatchParticipant (Maybe Player)

-- | Information about a player that has been anonymously auto-matched
--   against the requesting player. (Either player or autoMatchedPlayer
--   will be set.)
tbmpAutoMatchedPlayer :: Lens' TurnBasedMatchParticipant (Maybe AnonymousPlayer)

-- | This is a JSON template for a list of achievement definition objects.
--   
--   <i>See:</i> <a>achievementDefinitionsListResponse</a> smart
--   constructor.
data AchievementDefinitionsListResponse

-- | Creates a value of <a>AchievementDefinitionsListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adlrNextPageToken</a></li>
--   <li><a>adlrKind</a></li>
--   <li><a>adlrItems</a></li>
--   </ul>
achievementDefinitionsListResponse :: AchievementDefinitionsListResponse

-- | Token corresponding to the next page of results.
adlrNextPageToken :: Lens' AchievementDefinitionsListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementDefinitionsListResponse.
adlrKind :: Lens' AchievementDefinitionsListResponse Text

-- | The achievement definitions.
adlrItems :: Lens' AchievementDefinitionsListResponse [AchievementDefinition]

-- | This is a JSON template for a list of leaderboard entry resources.
--   
--   <i>See:</i> <a>playerScoreResponse</a> smart constructor.
data PlayerScoreResponse

-- | Creates a value of <a>PlayerScoreResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psrScoreTag</a></li>
--   <li><a>psrKind</a></li>
--   <li><a>psrFormattedScore</a></li>
--   <li><a>psrLeaderboardId</a></li>
--   <li><a>psrBeatenScoreTimeSpans</a></li>
--   <li><a>psrUnbeatenScores</a></li>
--   </ul>
playerScoreResponse :: PlayerScoreResponse

-- | Additional information about this score. Values will contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
psrScoreTag :: Lens' PlayerScoreResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerScoreResponse.
psrKind :: Lens' PlayerScoreResponse Text

-- | The formatted value of the submitted score.
psrFormattedScore :: Lens' PlayerScoreResponse (Maybe Text)

-- | The leaderboard ID that this score was submitted to.
psrLeaderboardId :: Lens' PlayerScoreResponse (Maybe Text)

-- | The time spans where the submitted score is better than the existing
--   score for that time span. Possible values are: - "ALL_TIME" - The
--   score is an all-time score. - "WEEKLY" - The score is a weekly score.
--   - "DAILY" - The score is a daily score.
psrBeatenScoreTimeSpans :: Lens' PlayerScoreResponse [Text]

-- | The scores in time spans that have not been beaten. As an example, the
--   submitted score may be better than the player's DAILY score, but not
--   better than the player's scores for the WEEKLY or ALL_TIME time spans.
psrUnbeatenScores :: Lens' PlayerScoreResponse [PlayerScore]

-- | This is a JSON template for an anonymous player
--   
--   <i>See:</i> <a>anonymousPlayer</a> smart constructor.
data AnonymousPlayer

-- | Creates a value of <a>AnonymousPlayer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apAvatarImageURL</a></li>
--   <li><a>apKind</a></li>
--   <li><a>apDisplayName</a></li>
--   </ul>
anonymousPlayer :: AnonymousPlayer

-- | The base URL for the image to display for the anonymous player.
apAvatarImageURL :: Lens' AnonymousPlayer (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#anonymousPlayer.
apKind :: Lens' AnonymousPlayer Text

-- | The name to display for the anonymous player.
apDisplayName :: Lens' AnonymousPlayer (Maybe Text)

-- | This is a JSON template for a Quest Criterion Contribution resource.
--   
--   <i>See:</i> <a>questContribution</a> smart constructor.
data QuestContribution

-- | Creates a value of <a>QuestContribution</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qKind</a></li>
--   <li><a>qValue</a></li>
--   <li><a>qFormattedValue</a></li>
--   </ul>
questContribution :: QuestContribution

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#questContribution.
qKind :: Lens' QuestContribution Text

-- | The value of the contribution.
qValue :: Lens' QuestContribution (Maybe Int64)

-- | The formatted value of the contribution as a string. Format depends on
--   the configuration for the associated event definition in the Play
--   Games Developer Console.
qFormattedValue :: Lens' QuestContribution (Maybe Text)

-- | This is a JSON template for the client address when setting up a room.
--   
--   <i>See:</i> <a>roomClientAddress</a> smart constructor.
data RoomClientAddress

-- | Creates a value of <a>RoomClientAddress</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcaKind</a></li>
--   <li><a>rcaXmppAddress</a></li>
--   </ul>
roomClientAddress :: RoomClientAddress

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomClientAddress.
rcaKind :: Lens' RoomClientAddress Text

-- | The XMPP address of the client on the Google Games XMPP network.
rcaXmppAddress :: Lens' RoomClientAddress (Maybe Text)

-- | This is a JSON template for a list of leaderboard objects.
--   
--   <i>See:</i> <a>leaderboardListResponse</a> smart constructor.
data LeaderboardListResponse

-- | Creates a value of <a>LeaderboardListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>llrNextPageToken</a></li>
--   <li><a>llrKind</a></li>
--   <li><a>llrItems</a></li>
--   </ul>
leaderboardListResponse :: LeaderboardListResponse

-- | Token corresponding to the next page of results.
llrNextPageToken :: Lens' LeaderboardListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboardListResponse.
llrKind :: Lens' LeaderboardListResponse Text

-- | The leaderboards.
llrItems :: Lens' LeaderboardListResponse [Leaderboard]

-- | This is a JSON template for a player score.
--   
--   <i>See:</i> <a>playerScore</a> smart constructor.
data PlayerScore

-- | Creates a value of <a>PlayerScore</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psScoreTag</a></li>
--   <li><a>psScore</a></li>
--   <li><a>psKind</a></li>
--   <li><a>psFormattedScore</a></li>
--   <li><a>psTimeSpan</a></li>
--   </ul>
playerScore :: PlayerScore

-- | Additional information about this score. Values will contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
psScoreTag :: Lens' PlayerScore (Maybe Text)

-- | The numerical value for this player score.
psScore :: Lens' PlayerScore (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerScore.
psKind :: Lens' PlayerScore Text

-- | The formatted score for this player score.
psFormattedScore :: Lens' PlayerScore (Maybe Text)

-- | The time span for this player score. Possible values are: - "ALL_TIME"
--   - The score is an all-time score. - "WEEKLY" - The score is a weekly
--   score. - "DAILY" - The score is a daily score.
psTimeSpan :: Lens' PlayerScore (Maybe Text)

-- | The collection of scores you're requesting.
data ScoresListWindowCollection

-- | <tt>PUBLIC</tt> List all scores in the public leaderboard.
SLWCPublic :: ScoresListWindowCollection

-- | <tt>SOCIAL</tt> List only social scores.
SLWCSocial :: ScoresListWindowCollection

-- | <tt>SOCIAL_1P</tt> List only social scores, not respecting the fACL.
SLWCSocial1P :: ScoresListWindowCollection

-- | This is a JSON template for an turn-based auto-match criteria object.
--   
--   <i>See:</i> <a>turnBasedAutoMatchingCriteria</a> smart constructor.
data TurnBasedAutoMatchingCriteria

-- | Creates a value of <a>TurnBasedAutoMatchingCriteria</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbamcKind</a></li>
--   <li><a>tbamcExclusiveBitmask</a></li>
--   <li><a>tbamcMaxAutoMatchingPlayers</a></li>
--   <li><a>tbamcMinAutoMatchingPlayers</a></li>
--   </ul>
turnBasedAutoMatchingCriteria :: TurnBasedAutoMatchingCriteria

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedAutoMatchingCriteria.
tbamcKind :: Lens' TurnBasedAutoMatchingCriteria Text

-- | A bitmask indicating when auto-matches are valid. When ANDed with
--   other exclusive bitmasks, the result must be zero. Can be used to
--   support exclusive roles within a game.
tbamcExclusiveBitmask :: Lens' TurnBasedAutoMatchingCriteria (Maybe Int64)

-- | The maximum number of players that should be added to the match by
--   auto-matching.
tbamcMaxAutoMatchingPlayers :: Lens' TurnBasedAutoMatchingCriteria (Maybe Int32)

-- | The minimum number of players that should be added to the match by
--   auto-matching.
tbamcMinAutoMatchingPlayers :: Lens' TurnBasedAutoMatchingCriteria (Maybe Int32)

-- | This is a JSON template for an image of a snapshot.
--   
--   <i>See:</i> <a>snapshotImage</a> smart constructor.
data SnapshotImage

-- | Creates a value of <a>SnapshotImage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siHeight</a></li>
--   <li><a>siKind</a></li>
--   <li><a>siURL</a></li>
--   <li><a>siMimeType</a></li>
--   <li><a>siWidth</a></li>
--   </ul>
snapshotImage :: SnapshotImage

-- | The height of the image.
siHeight :: Lens' SnapshotImage (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#snapshotImage.
siKind :: Lens' SnapshotImage Text

-- | The URL of the image. This URL may be invalidated at any time and
--   should not be cached.
siURL :: Lens' SnapshotImage (Maybe Text)

-- | The MIME type of the image.
siMimeType :: Lens' SnapshotImage (Maybe Text)

-- | The width of the image.
siWidth :: Lens' SnapshotImage (Maybe Int32)

-- | This is a JSON template for the status of a room that the player has
--   joined.
--   
--   <i>See:</i> <a>roomStatus</a> smart constructor.
data RoomStatus

-- | Creates a value of <a>RoomStatus</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsStatus</a></li>
--   <li><a>rsKind</a></li>
--   <li><a>rsAutoMatchingStatus</a></li>
--   <li><a>rsStatusVersion</a></li>
--   <li><a>rsParticipants</a></li>
--   <li><a>rsRoomId</a></li>
--   </ul>
roomStatus :: RoomStatus

-- | The status of the room. Possible values are: - "ROOM_INVITING" - One
--   or more players have been invited and not responded. -
--   "ROOM_AUTO_MATCHING" - One or more slots need to be filled by
--   auto-matching. - "ROOM_CONNECTING" - Players have joined are
--   connecting to each other (either before or after auto-matching). -
--   "ROOM_ACTIVE" - All players have joined and connected to each other. -
--   "ROOM_DELETED" - All joined players have left.
rsStatus :: Lens' RoomStatus (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomStatus.
rsKind :: Lens' RoomStatus Text

-- | Auto-matching status for this room. Not set if the room is not
--   currently in the automatching queue.
rsAutoMatchingStatus :: Lens' RoomStatus (Maybe RoomAutoMatchStatus)

-- | The version of the status for the room: an increasing counter, used by
--   the client to ignore out-of-order updates to room status.
rsStatusVersion :: Lens' RoomStatus (Maybe Int32)

-- | The participants involved in the room, along with their statuses.
--   Includes participants who have left or declined invitations.
rsParticipants :: Lens' RoomStatus [RoomParticipant]

-- | Globally unique ID for a room.
rsRoomId :: Lens' RoomStatus (Maybe Text)

-- | This is a JSON template for a list of player leaderboard scores.
--   
--   <i>See:</i> <a>playerLeaderboardScoreListResponse</a> smart
--   constructor.
data PlayerLeaderboardScoreListResponse

-- | Creates a value of <a>PlayerLeaderboardScoreListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plslrNextPageToken</a></li>
--   <li><a>plslrKind</a></li>
--   <li><a>plslrItems</a></li>
--   <li><a>plslrPlayer</a></li>
--   </ul>
playerLeaderboardScoreListResponse :: PlayerLeaderboardScoreListResponse

-- | The pagination token for the next page of results.
plslrNextPageToken :: Lens' PlayerLeaderboardScoreListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerLeaderboardScoreListResponse.
plslrKind :: Lens' PlayerLeaderboardScoreListResponse Text

-- | The leaderboard scores.
plslrItems :: Lens' PlayerLeaderboardScoreListResponse [PlayerLeaderboardScore]

-- | The Player resources for the owner of this score.
plslrPlayer :: Lens' PlayerLeaderboardScoreListResponse (Maybe Player)

-- | This is a JSON template for the iOS details resource.
--   
--   <i>See:</i> <a>instanceIosDetails</a> smart constructor.
data InstanceIosDetails

-- | Creates a value of <a>InstanceIosDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iidItunesAppId</a></li>
--   <li><a>iidPreferredForIPad</a></li>
--   <li><a>iidSupportIPhone</a></li>
--   <li><a>iidKind</a></li>
--   <li><a>iidSupportIPad</a></li>
--   <li><a>iidPreferredForIPhone</a></li>
--   <li><a>iidBundleIdentifier</a></li>
--   </ul>
instanceIosDetails :: InstanceIosDetails

-- | iTunes App ID.
iidItunesAppId :: Lens' InstanceIosDetails (Maybe Text)

-- | Indicates that this instance is the default for new installations on
--   iPad devices.
iidPreferredForIPad :: Lens' InstanceIosDetails (Maybe Bool)

-- | Flag to indicate if this instance supports iPhone.
iidSupportIPhone :: Lens' InstanceIosDetails (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#instanceIosDetails.
iidKind :: Lens' InstanceIosDetails Text

-- | Flag to indicate if this instance supports iPad.
iidSupportIPad :: Lens' InstanceIosDetails (Maybe Bool)

-- | Indicates that this instance is the default for new installations on
--   iPhone devices.
iidPreferredForIPhone :: Lens' InstanceIosDetails (Maybe Bool)

-- | Bundle identifier.
iidBundleIdentifier :: Lens' InstanceIosDetails (Maybe Text)

-- | This is a JSON template for an event period update resource.
--   
--   <i>See:</i> <a>eventUpdateResponse</a> smart constructor.
data EventUpdateResponse

-- | Creates a value of <a>EventUpdateResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eurPlayerEvents</a></li>
--   <li><a>eurBatchFailures</a></li>
--   <li><a>eurEventFailures</a></li>
--   <li><a>eurKind</a></li>
--   </ul>
eventUpdateResponse :: EventUpdateResponse

-- | The current status of any updated events
eurPlayerEvents :: Lens' EventUpdateResponse [PlayerEvent]

-- | Any batch-wide failures which occurred applying updates.
eurBatchFailures :: Lens' EventUpdateResponse [EventBatchRecordFailure]

-- | Any failures updating a particular event.
eurEventFailures :: Lens' EventUpdateResponse [EventRecordFailure]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventUpdateResponse.
eurKind :: Lens' EventUpdateResponse Text

-- | This is a JSON template for the result of checking a revision.
--   
--   <i>See:</i> <a>revisionCheckResponse</a> smart constructor.
data RevisionCheckResponse

-- | Creates a value of <a>RevisionCheckResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcrAPIVersion</a></li>
--   <li><a>rcrKind</a></li>
--   <li><a>rcrRevisionStatus</a></li>
--   </ul>
revisionCheckResponse :: RevisionCheckResponse

-- | The version of the API this client revision should use when calling
--   API methods.
rcrAPIVersion :: Lens' RevisionCheckResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#revisionCheckResponse.
rcrKind :: Lens' RevisionCheckResponse Text

-- | The result of the revision check. Possible values are: - "OK" - The
--   revision being used is current. - "DEPRECATED" - There is currently a
--   newer version available, but the revision being used still works. -
--   "INVALID" - The revision being used is not supported in any released
--   version.
rcrRevisionStatus :: Lens' RevisionCheckResponse (Maybe Text)

-- | This is a JSON template for a result for a match participant.
--   
--   <i>See:</i> <a>participantResult</a> smart constructor.
data ParticipantResult

-- | Creates a value of <a>ParticipantResult</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prParticipantId</a></li>
--   <li><a>prKind</a></li>
--   <li><a>prResult</a></li>
--   <li><a>prPlacing</a></li>
--   </ul>
participantResult :: ParticipantResult

-- | The ID of the participant.
prParticipantId :: Lens' ParticipantResult (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#participantResult.
prKind :: Lens' ParticipantResult Text

-- | The result of the participant for this match. Possible values are: -
--   "MATCH_RESULT_WIN" - The participant won the match. -
--   "MATCH_RESULT_LOSS" - The participant lost the match. -
--   "MATCH_RESULT_TIE" - The participant tied the match. -
--   "MATCH_RESULT_NONE" - There was no winner for the match (nobody wins
--   or loses this kind of game.) - "MATCH_RESULT_DISCONNECT" - The
--   participant disconnected / left during the match. -
--   "MATCH_RESULT_DISAGREED" - Different clients reported different
--   results for this participant.
prResult :: Lens' ParticipantResult (Maybe Text)

-- | The placement or ranking of the participant in the match results; a
--   number from one to the number of participants in the match. Multiple
--   participants may have the same placing value in case of a type.
prPlacing :: Lens' ParticipantResult (Maybe Int32)

-- | This is a JSON template for the Leaderboard resource.
--   
--   <i>See:</i> <a>leaderboard</a> smart constructor.
data Leaderboard

-- | Creates a value of <a>Leaderboard</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lKind</a></li>
--   <li><a>lIsIconURLDefault</a></li>
--   <li><a>lName</a></li>
--   <li><a>lId</a></li>
--   <li><a>lIconURL</a></li>
--   <li><a>lOrder</a></li>
--   </ul>
leaderboard :: Leaderboard

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboard.
lKind :: Lens' Leaderboard Text

-- | Indicates whether the icon image being returned is a default image, or
--   is game-provided.
lIsIconURLDefault :: Lens' Leaderboard (Maybe Bool)

-- | The name of the leaderboard.
lName :: Lens' Leaderboard (Maybe Text)

-- | The leaderboard ID.
lId :: Lens' Leaderboard (Maybe Text)

-- | The icon for the leaderboard.
lIconURL :: Lens' Leaderboard (Maybe Text)

-- | How scores are ordered. Possible values are: - "LARGER_IS_BETTER" -
--   Larger values are better; scores are sorted in descending order. -
--   "SMALLER_IS_BETTER" - Smaller values are better; scores are sorted in
--   ascending order.
lOrder :: Lens' Leaderboard (Maybe Text)

-- | This is a JSON template for the metagame config resource
--   
--   <i>See:</i> <a>metagameConfig</a> smart constructor.
data MetagameConfig

-- | Creates a value of <a>MetagameConfig</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcKind</a></li>
--   <li><a>mcCurrentVersion</a></li>
--   <li><a>mcPlayerLevels</a></li>
--   </ul>
metagameConfig :: MetagameConfig

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#metagameConfig.
mcKind :: Lens' MetagameConfig Text

-- | Current version of the metagame configuration data. When this data is
--   updated, the version number will be increased by one.
mcCurrentVersion :: Lens' MetagameConfig (Maybe Int32)

-- | The list of player levels.
mcPlayerLevels :: Lens' MetagameConfig [PlayerLevel]

-- | This is a JSON template for a list of category data objects.
--   
--   <i>See:</i> <a>categoryListResponse</a> smart constructor.
data CategoryListResponse

-- | Creates a value of <a>CategoryListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clrNextPageToken</a></li>
--   <li><a>clrKind</a></li>
--   <li><a>clrItems</a></li>
--   </ul>
categoryListResponse :: CategoryListResponse

-- | Token corresponding to the next page of results.
clrNextPageToken :: Lens' CategoryListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#categoryListResponse.
clrKind :: Lens' CategoryListResponse Text

-- | The list of categories with usage data.
clrItems :: Lens' CategoryListResponse [Category]

-- | This is a JSON template for an update on the status of a peer in a
--   room.
--   
--   <i>See:</i> <a>roomP2PStatus</a> smart constructor.
data RoomP2PStatus

-- | Creates a value of <a>RoomP2PStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rppsStatus</a></li>
--   <li><a>rppsParticipantId</a></li>
--   <li><a>rppsKind</a></li>
--   <li><a>rppsError</a></li>
--   <li><a>rppsErrorReason</a></li>
--   <li><a>rppsConnectionSetupLatencyMillis</a></li>
--   <li><a>rppsUnreliableRoundtripLatencyMillis</a></li>
--   </ul>
roomP2PStatus :: RoomP2PStatus

-- | The status of the peer in the room. Possible values are: -
--   "CONNECTION_ESTABLISHED" - The client established a P2P connection
--   with the peer. - "CONNECTION_FAILED" - The client failed to establish
--   directed presence with the peer.
rppsStatus :: Lens' RoomP2PStatus (Maybe Text)

-- | The ID of the participant.
rppsParticipantId :: Lens' RoomP2PStatus (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomP2PStatus.
rppsKind :: Lens' RoomP2PStatus Text

-- | The error code in event of a failure. Possible values are: -
--   "P2P_FAILED" - The client failed to establish a P2P connection with
--   the peer. - "PRESENCE_FAILED" - The client failed to register to
--   receive P2P connections. - "RELAY_SERVER_FAILED" - The client received
--   an error when trying to use the relay server to establish a P2P
--   connection with the peer.
rppsError :: Lens' RoomP2PStatus (Maybe Text)

-- | More detailed diagnostic message returned in event of a failure.
rppsErrorReason :: Lens' RoomP2PStatus (Maybe Text)

-- | The amount of time in milliseconds it took to establish connections
--   with this peer.
rppsConnectionSetupLatencyMillis :: Lens' RoomP2PStatus (Maybe Int32)

-- | The amount of time in milliseconds it took to send packets back and
--   forth on the unreliable channel with this peer.
rppsUnreliableRoundtripLatencyMillis :: Lens' RoomP2PStatus (Maybe Int32)

-- | This is a JSON template for turn-based match modification metadata.
--   
--   <i>See:</i> <a>turnBasedMatchModification</a> smart constructor.
data TurnBasedMatchModification

-- | Creates a value of <a>TurnBasedMatchModification</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmmParticipantId</a></li>
--   <li><a>tbmmKind</a></li>
--   <li><a>tbmmModifiedTimestampMillis</a></li>
--   </ul>
turnBasedMatchModification :: TurnBasedMatchModification

-- | The ID of the participant that modified the match.
tbmmParticipantId :: Lens' TurnBasedMatchModification (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchModification.
tbmmKind :: Lens' TurnBasedMatchModification Text

-- | The timestamp at which they modified the match, in milliseconds since
--   the epoch in UTC.
tbmmModifiedTimestampMillis :: Lens' TurnBasedMatchModification (Maybe Int64)

-- | This is a JSON template for an event definition resource.
--   
--   <i>See:</i> <a>eventDefinition</a> smart constructor.
data EventDefinition

-- | Creates a value of <a>EventDefinition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edIsDefaultImageURL</a></li>
--   <li><a>edKind</a></li>
--   <li><a>edVisibility</a></li>
--   <li><a>edImageURL</a></li>
--   <li><a>edDisplayName</a></li>
--   <li><a>edId</a></li>
--   <li><a>edChildEvents</a></li>
--   <li><a>edDescription</a></li>
--   </ul>
eventDefinition :: EventDefinition

-- | Indicates whether the icon image being returned is a default image, or
--   is game-provided.
edIsDefaultImageURL :: Lens' EventDefinition (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventDefinition.
edKind :: Lens' EventDefinition Text

-- | The visibility of event being tracked in this definition. Possible
--   values are: - "REVEALED": This event should be visible to all users. -
--   "HIDDEN": This event should only be shown to users that have recorded
--   this event at least once.
edVisibility :: Lens' EventDefinition (Maybe Text)

-- | The base URL for the image that represents the event.
edImageURL :: Lens' EventDefinition (Maybe Text)

-- | The name to display for the event.
edDisplayName :: Lens' EventDefinition (Maybe Text)

-- | The ID of the event.
edId :: Lens' EventDefinition (Maybe Text)

-- | A list of events that are a child of this event.
edChildEvents :: Lens' EventDefinition [EventChild]

-- | Description of what this event represents.
edDescription :: Lens' EventDefinition (Maybe Text)

-- | This is a JSON template for room modification metadata.
--   
--   <i>See:</i> <a>roomModification</a> smart constructor.
data RoomModification

-- | Creates a value of <a>RoomModification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmParticipantId</a></li>
--   <li><a>rmKind</a></li>
--   <li><a>rmModifiedTimestampMillis</a></li>
--   </ul>
roomModification :: RoomModification

-- | The ID of the participant that modified the room.
rmParticipantId :: Lens' RoomModification (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomModification.
rmKind :: Lens' RoomModification Text

-- | The timestamp at which they modified the room, in milliseconds since
--   the epoch in UTC.
rmModifiedTimestampMillis :: Lens' RoomModification (Maybe Int64)

-- | The time span for the scores and ranks you're requesting.
data ScoresListWindowTimeSpan

-- | <tt>ALL_TIME</tt> List the all-time top scores.
AllTime :: ScoresListWindowTimeSpan

-- | <tt>DAILY</tt> List the top scores for the current day.
Daily :: ScoresListWindowTimeSpan

-- | <tt>WEEKLY</tt> List the top scores for the current week.
Weekly :: ScoresListWindowTimeSpan

-- | This is a JSON template for an event period update resource.
--   
--   <i>See:</i> <a>eventUpdateRequest</a> smart constructor.
data EventUpdateRequest

-- | Creates a value of <a>EventUpdateRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eUpdateCount</a></li>
--   <li><a>eKind</a></li>
--   <li><a>eDefinitionId</a></li>
--   </ul>
eventUpdateRequest :: EventUpdateRequest

-- | The number of times this event occurred in this time period.
eUpdateCount :: Lens' EventUpdateRequest (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventUpdateRequest.
eKind :: Lens' EventUpdateRequest Text

-- | The ID of the event being modified in this update.
eDefinitionId :: Lens' EventUpdateRequest (Maybe Text)

-- | This is a JSON template for an achievement unlock response
--   
--   <i>See:</i> <a>achievementUnlockResponse</a> smart constructor.
data AchievementUnlockResponse

-- | Creates a value of <a>AchievementUnlockResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>achKind</a></li>
--   <li><a>achNewlyUnlocked</a></li>
--   </ul>
achievementUnlockResponse :: AchievementUnlockResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUnlockResponse.
achKind :: Lens' AchievementUnlockResponse Text

-- | Whether this achievement was newly unlocked (that is, whether the
--   unlock request for the achievement was the first for the player).
achNewlyUnlocked :: Lens' AchievementUnlockResponse (Maybe Bool)

-- | The time span for the scores and ranks you're requesting.
data ScoresGetTimeSpan

-- | <tt>ALL</tt> Get the high scores for all time spans. If this is used,
--   maxResults values will be ignored.
SGTSAll :: ScoresGetTimeSpan

-- | <tt>ALL_TIME</tt> Get the all time high score.
SGTSAllTime :: ScoresGetTimeSpan

-- | <tt>DAILY</tt> List the top scores for the current day.
SGTSDaily :: ScoresGetTimeSpan

-- | <tt>WEEKLY</tt> List the top scores for the current week.
SGTSWeekly :: ScoresGetTimeSpan

-- | This is a JSON template for an achievement object.
--   
--   <i>See:</i> <a>playerAchievement</a> smart constructor.
data PlayerAchievement

-- | Creates a value of <a>PlayerAchievement</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>paKind</a></li>
--   <li><a>paAchievementState</a></li>
--   <li><a>paFormattedCurrentStepsString</a></li>
--   <li><a>paExperiencePoints</a></li>
--   <li><a>paId</a></li>
--   <li><a>paCurrentSteps</a></li>
--   <li><a>paLastUpdatedTimestamp</a></li>
--   </ul>
playerAchievement :: PlayerAchievement

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerAchievement.
paKind :: Lens' PlayerAchievement Text

-- | The state of the achievement. Possible values are: - "HIDDEN" -
--   Achievement is hidden. - "REVEALED" - Achievement is revealed. -
--   "UNLOCKED" - Achievement is unlocked.
paAchievementState :: Lens' PlayerAchievement (Maybe Text)

-- | The current steps for an incremental achievement as a string.
paFormattedCurrentStepsString :: Lens' PlayerAchievement (Maybe Text)

-- | Experience points earned for the achievement. This field is absent for
--   achievements that have not yet been unlocked and 0 for achievements
--   that have been unlocked by testers but that are unpublished.
paExperiencePoints :: Lens' PlayerAchievement (Maybe Int64)

-- | The ID of the achievement.
paId :: Lens' PlayerAchievement (Maybe Text)

-- | The current steps for an incremental achievement.
paCurrentSteps :: Lens' PlayerAchievement (Maybe Int32)

-- | The timestamp of the last modification to this achievement's state.
paLastUpdatedTimestamp :: Lens' PlayerAchievement (Maybe Int64)

-- | This is a JSON template for an update on the status of peers in a
--   room.
--   
--   <i>See:</i> <a>roomP2PStatuses</a> smart constructor.
data RoomP2PStatuses

-- | Creates a value of <a>RoomP2PStatuses</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rppssKind</a></li>
--   <li><a>rppssUpdates</a></li>
--   </ul>
roomP2PStatuses :: RoomP2PStatuses

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomP2PStatuses.
rppssKind :: Lens' RoomP2PStatuses Text

-- | The updates for the peers.
rppssUpdates :: Lens' RoomP2PStatuses [RoomP2PStatus]

-- | This is a JSON template for an image asset object.
--   
--   <i>See:</i> <a>imageAsset</a> smart constructor.
data ImageAsset

-- | Creates a value of <a>ImageAsset</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iaHeight</a></li>
--   <li><a>iaKind</a></li>
--   <li><a>iaURL</a></li>
--   <li><a>iaWidth</a></li>
--   <li><a>iaName</a></li>
--   </ul>
imageAsset :: ImageAsset

-- | The height of the asset.
iaHeight :: Lens' ImageAsset (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#imageAsset.
iaKind :: Lens' ImageAsset Text

-- | The URL of the asset.
iaURL :: Lens' ImageAsset (Maybe Text)

-- | The width of the asset.
iaWidth :: Lens' ImageAsset (Maybe Int32)

-- | The name of the asset.
iaName :: Lens' ImageAsset (Maybe Text)

-- | This is a JSON template for a list of achievement update requests.
--   
--   <i>See:</i> <a>achievementUpdateMultipleRequest</a> smart constructor.
data AchievementUpdateMultipleRequest

-- | Creates a value of <a>AchievementUpdateMultipleRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aumruKind</a></li>
--   <li><a>aumruUpdates</a></li>
--   </ul>
achievementUpdateMultipleRequest :: AchievementUpdateMultipleRequest

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUpdateMultipleRequest.
aumruKind :: Lens' AchievementUpdateMultipleRequest Text

-- | The individual achievement update requests.
aumruUpdates :: Lens' AchievementUpdateMultipleRequest [AchievementUpdateRequest]

-- | This is a JSON template for status of room automatching that is in
--   progress.
--   
--   <i>See:</i> <a>roomAutoMatchStatus</a> smart constructor.
data RoomAutoMatchStatus

-- | Creates a value of <a>RoomAutoMatchStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ramsKind</a></li>
--   <li><a>ramsWaitEstimateSeconds</a></li>
--   </ul>
roomAutoMatchStatus :: RoomAutoMatchStatus

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomAutoMatchStatus.
ramsKind :: Lens' RoomAutoMatchStatus Text

-- | An estimate for the amount of time (in seconds) that auto-matching is
--   expected to take to complete.
ramsWaitEstimateSeconds :: Lens' RoomAutoMatchStatus (Maybe Int32)

-- | This is a JSON template for a request to update an achievement.
--   
--   <i>See:</i> <a>achievementUpdateRequest</a> smart constructor.
data AchievementUpdateRequest

-- | Creates a value of <a>AchievementUpdateRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>auruAchievementId</a></li>
--   <li><a>auruKind</a></li>
--   <li><a>auruUpdateType</a></li>
--   <li><a>auruSetStepsAtLeastPayload</a></li>
--   <li><a>auruIncrementPayload</a></li>
--   </ul>
achievementUpdateRequest :: AchievementUpdateRequest

-- | The achievement this update is being applied to.
auruAchievementId :: Lens' AchievementUpdateRequest (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUpdateRequest.
auruKind :: Lens' AchievementUpdateRequest Text

-- | The type of update being applied. Possible values are: - "REVEAL" -
--   Achievement is revealed. - "UNLOCK" - Achievement is unlocked. -
--   "INCREMENT" - Achievement is incremented. - "SET_STEPS_AT_LEAST" -
--   Achievement progress is set to at least the passed value.
auruUpdateType :: Lens' AchievementUpdateRequest (Maybe Text)

-- | The payload if an update of type SET_STEPS_AT_LEAST was requested for
--   the achievement.
auruSetStepsAtLeastPayload :: Lens' AchievementUpdateRequest (Maybe GamesAchievementSetStepsAtLeast)

-- | The payload if an update of type INCREMENT was requested for the
--   achievement.
auruIncrementPayload :: Lens' AchievementUpdateRequest (Maybe GamesAchievementIncrement)

-- | The types of ranks to return. If the parameter is omitted, no ranks
--   will be returned.
data ScoresGetIncludeRankType

-- | <tt>ALL</tt> Retrieve public and social ranks.
SGIRTAll :: ScoresGetIncludeRankType

-- | <tt>PUBLIC</tt> Retrieve public ranks, if the player is sharing their
--   gameplay activity publicly.
SGIRTPublic :: ScoresGetIncludeRankType

-- | <tt>SOCIAL</tt> Retrieve the social rank.
SGIRTSocial :: ScoresGetIncludeRankType

-- | This is a JSON template for a score rank in a leaderboard.
--   
--   <i>See:</i> <a>leaderboardScoreRank</a> smart constructor.
data LeaderboardScoreRank

-- | Creates a value of <a>LeaderboardScoreRank</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrNumScores</a></li>
--   <li><a>lsrKind</a></li>
--   <li><a>lsrFormattedRank</a></li>
--   <li><a>lsrFormattedNumScores</a></li>
--   <li><a>lsrRank</a></li>
--   </ul>
leaderboardScoreRank :: LeaderboardScoreRank

-- | The number of scores in the leaderboard.
lsrNumScores :: Lens' LeaderboardScoreRank (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboardScoreRank.
lsrKind :: Lens' LeaderboardScoreRank Text

-- | The rank in the leaderboard as a string.
lsrFormattedRank :: Lens' LeaderboardScoreRank (Maybe Text)

-- | The number of scores in the leaderboard as a string.
lsrFormattedNumScores :: Lens' LeaderboardScoreRank (Maybe Text)

-- | The rank in the leaderboard.
lsrRank :: Lens' LeaderboardScoreRank (Maybe Int64)

-- | This is a JSON template for a room creation request.
--   
--   <i>See:</i> <a>roomCreateRequest</a> smart constructor.
data RoomCreateRequest

-- | Creates a value of <a>RoomCreateRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rooRequestId</a></li>
--   <li><a>rooVariant</a></li>
--   <li><a>rooNetworkDiagnostics</a></li>
--   <li><a>rooKind</a></li>
--   <li><a>rooInvitedPlayerIds</a></li>
--   <li><a>rooClientAddress</a></li>
--   <li><a>rooAutoMatchingCriteria</a></li>
--   <li><a>rooCapabilities</a></li>
--   </ul>
roomCreateRequest :: RoomCreateRequest

-- | A randomly generated numeric ID. This number is used at the server to
--   ensure that the request is handled correctly across retries.
rooRequestId :: Lens' RoomCreateRequest (Maybe Int64)

-- | The variant / mode of the application to be played. This can be any
--   integer value, or left blank. You should use a small number of
--   variants to keep the auto-matching pool as large as possible.
rooVariant :: Lens' RoomCreateRequest (Maybe Int32)

-- | Network diagnostics for the client creating the room.
rooNetworkDiagnostics :: Lens' RoomCreateRequest (Maybe NetworkDiagnostics)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomCreateRequest.
rooKind :: Lens' RoomCreateRequest Text

-- | The player IDs to invite to the room.
rooInvitedPlayerIds :: Lens' RoomCreateRequest [Text]

-- | Client address for the player creating the room.
rooClientAddress :: Lens' RoomCreateRequest (Maybe RoomClientAddress)

-- | Criteria for auto-matching players into this room.
rooAutoMatchingCriteria :: Lens' RoomCreateRequest (Maybe RoomAutoMatchingCriteria)

-- | The capabilities that this client supports for realtime communication.
rooCapabilities :: Lens' RoomCreateRequest [Text]

-- | This is a JSON template for a third party player list response.
--   
--   <i>See:</i> <a>playerListResponse</a> smart constructor.
data PlayerListResponse

-- | Creates a value of <a>PlayerListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plrNextPageToken</a></li>
--   <li><a>plrKind</a></li>
--   <li><a>plrItems</a></li>
--   </ul>
playerListResponse :: PlayerListResponse

-- | Token corresponding to the next page of results.
plrNextPageToken :: Lens' PlayerListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerListResponse.
plrKind :: Lens' PlayerListResponse Text

-- | The players.
plrItems :: Lens' PlayerListResponse [Player]

-- | This is a JSON template for a ListScores response.
--   
--   <i>See:</i> <a>leaderboardScores</a> smart constructor.
data LeaderboardScores

-- | Creates a value of <a>LeaderboardScores</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsNextPageToken</a></li>
--   <li><a>lsNumScores</a></li>
--   <li><a>lsKind</a></li>
--   <li><a>lsPlayerScore</a></li>
--   <li><a>lsItems</a></li>
--   <li><a>lsPrevPageToken</a></li>
--   </ul>
leaderboardScores :: LeaderboardScores

-- | The pagination token for the next page of results.
lsNextPageToken :: Lens' LeaderboardScores (Maybe Text)

-- | The total number of scores in the leaderboard.
lsNumScores :: Lens' LeaderboardScores (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboardScores.
lsKind :: Lens' LeaderboardScores Text

-- | The score of the requesting player on the leaderboard. The player's
--   score may appear both here and in the list of scores above. If you are
--   viewing a public leaderboard and the player is not sharing their
--   gameplay information publicly, the scoreRank and formattedScoreRank
--   values will not be present.
lsPlayerScore :: Lens' LeaderboardScores (Maybe LeaderboardEntry)

-- | The scores in the leaderboard.
lsItems :: Lens' LeaderboardScores [LeaderboardEntry]

-- | The pagination token for the previous page of results.
lsPrevPageToken :: Lens' LeaderboardScores (Maybe Text)

-- | This is a JSON template for an achievement definition object.
--   
--   <i>See:</i> <a>achievementDefinition</a> smart constructor.
data AchievementDefinition

-- | Creates a value of <a>AchievementDefinition</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adAchievementType</a></li>
--   <li><a>adFormattedTotalSteps</a></li>
--   <li><a>adRevealedIconURL</a></li>
--   <li><a>adKind</a></li>
--   <li><a>adExperiencePoints</a></li>
--   <li><a>adInitialState</a></li>
--   <li><a>adName</a></li>
--   <li><a>adId</a></li>
--   <li><a>adIsUnlockedIconURLDefault</a></li>
--   <li><a>adTotalSteps</a></li>
--   <li><a>adDescription</a></li>
--   <li><a>adIsRevealedIconURLDefault</a></li>
--   <li><a>adUnlockedIconURL</a></li>
--   </ul>
achievementDefinition :: AchievementDefinition

-- | The type of the achievement. Possible values are: - "STANDARD" -
--   Achievement is either locked or unlocked. - "INCREMENTAL" -
--   Achievement is incremental.
adAchievementType :: Lens' AchievementDefinition (Maybe Text)

-- | The total steps for an incremental achievement as a string.
adFormattedTotalSteps :: Lens' AchievementDefinition (Maybe Text)

-- | The image URL for the revealed achievement icon.
adRevealedIconURL :: Lens' AchievementDefinition (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementDefinition.
adKind :: Lens' AchievementDefinition Text

-- | Experience points which will be earned when unlocking this
--   achievement.
adExperiencePoints :: Lens' AchievementDefinition (Maybe Int64)

-- | The initial state of the achievement. Possible values are: - "HIDDEN"
--   - Achievement is hidden. - "REVEALED" - Achievement is revealed. -
--   "UNLOCKED" - Achievement is unlocked.
adInitialState :: Lens' AchievementDefinition (Maybe Text)

-- | The name of the achievement.
adName :: Lens' AchievementDefinition (Maybe Text)

-- | The ID of the achievement.
adId :: Lens' AchievementDefinition (Maybe Text)

-- | Indicates whether the unlocked icon image being returned is a default
--   image, or is game-provided.
adIsUnlockedIconURLDefault :: Lens' AchievementDefinition (Maybe Bool)

-- | The total steps for an incremental achievement.
adTotalSteps :: Lens' AchievementDefinition (Maybe Int32)

-- | The description of the achievement.
adDescription :: Lens' AchievementDefinition (Maybe Text)

-- | Indicates whether the revealed icon image being returned is a default
--   image, or is provided by the game.
adIsRevealedIconURLDefault :: Lens' AchievementDefinition (Maybe Bool)

-- | The image URL for the unlocked achievement icon.
adUnlockedIconURL :: Lens' AchievementDefinition (Maybe Text)

-- | This is a JSON template for a turn-based match creation request.
--   
--   <i>See:</i> <a>turnBasedMatchCreateRequest</a> smart constructor.
data TurnBasedMatchCreateRequest

-- | Creates a value of <a>TurnBasedMatchCreateRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmcrRequestId</a></li>
--   <li><a>tbmcrVariant</a></li>
--   <li><a>tbmcrKind</a></li>
--   <li><a>tbmcrInvitedPlayerIds</a></li>
--   <li><a>tbmcrAutoMatchingCriteria</a></li>
--   </ul>
turnBasedMatchCreateRequest :: TurnBasedMatchCreateRequest

-- | A randomly generated numeric ID. This number is used at the server to
--   ensure that the request is handled correctly across retries.
tbmcrRequestId :: Lens' TurnBasedMatchCreateRequest (Maybe Int64)

-- | The variant / mode of the application to be played. This can be any
--   integer value, or left blank. You should use a small number of
--   variants to keep the auto-matching pool as large as possible.
tbmcrVariant :: Lens' TurnBasedMatchCreateRequest (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchCreateRequest.
tbmcrKind :: Lens' TurnBasedMatchCreateRequest Text

-- | The player ids to invite to the match.
tbmcrInvitedPlayerIds :: Lens' TurnBasedMatchCreateRequest [Text]

-- | Criteria for auto-matching players into this match.
tbmcrAutoMatchingCriteria :: Lens' TurnBasedMatchCreateRequest (Maybe TurnBasedAutoMatchingCriteria)

-- | This is a JSON template for a batch update failure resource.
--   
--   <i>See:</i> <a>eventBatchRecordFailure</a> smart constructor.
data EventBatchRecordFailure

-- | Creates a value of <a>EventBatchRecordFailure</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ebrfKind</a></li>
--   <li><a>ebrfRange</a></li>
--   <li><a>ebrfFailureCause</a></li>
--   </ul>
eventBatchRecordFailure :: EventBatchRecordFailure

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventBatchRecordFailure.
ebrfKind :: Lens' EventBatchRecordFailure Text

-- | The time range which was rejected; empty for a request-wide failure.
ebrfRange :: Lens' EventBatchRecordFailure (Maybe EventPeriodRange)

-- | The cause for the update failure. Possible values are: - "TOO_LARGE":
--   A batch request was issued with more events than are allowed in a
--   single batch. - "TIME_PERIOD_EXPIRED": A batch was sent with data too
--   far in the past to record. - "TIME_PERIOD_SHORT": A batch was sent
--   with a time range that was too short. - "TIME_PERIOD_LONG": A batch
--   was sent with a time range that was too long. - "ALREADY_UPDATED": An
--   attempt was made to record a batch of data which was already seen. -
--   "RECORD_RATE_HIGH": An attempt was made to record data faster than the
--   server will apply updates.
ebrfFailureCause :: Lens' EventBatchRecordFailure (Maybe Text)

-- | This is a JSON template for a turn-based match results object.
--   
--   <i>See:</i> <a>turnBasedMatchResults</a> smart constructor.
data TurnBasedMatchResults

-- | Creates a value of <a>TurnBasedMatchResults</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmrResults</a></li>
--   <li><a>tbmrKind</a></li>
--   <li><a>tbmrData</a></li>
--   <li><a>tbmrMatchVersion</a></li>
--   </ul>
turnBasedMatchResults :: TurnBasedMatchResults

-- | The match results for the participants in the match.
tbmrResults :: Lens' TurnBasedMatchResults [ParticipantResult]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchResults.
tbmrKind :: Lens' TurnBasedMatchResults Text

-- | The final match data.
tbmrData :: Lens' TurnBasedMatchResults (Maybe TurnBasedMatchDataRequest)

-- | The version of the match being updated.
tbmrMatchVersion :: Lens' TurnBasedMatchResults (Maybe Int32)

-- | A push token ID for iOS devices.
--   
--   <i>See:</i> <a>pushTokenIdIos</a> smart constructor.
data PushTokenIdIos

-- | Creates a value of <a>PushTokenIdIos</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptiiAPNSDeviceToken</a></li>
--   <li><a>ptiiAPNSEnvironment</a></li>
--   </ul>
pushTokenIdIos :: PushTokenIdIos

-- | Device token supplied by an iOS system call to register for remote
--   notifications. Encode this field as web-safe base64.
ptiiAPNSDeviceToken :: Lens' PushTokenIdIos (Maybe ByteString)

-- | Indicates whether this token should be used for the production or
--   sandbox APNS server.
ptiiAPNSEnvironment :: Lens' PushTokenIdIos (Maybe Text)

-- | This is a JSON template for a leave room request.
--   
--   <i>See:</i> <a>roomLeaveRequest</a> smart constructor.
data RoomLeaveRequest

-- | Creates a value of <a>RoomLeaveRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlrKind</a></li>
--   <li><a>rlrReason</a></li>
--   <li><a>rlrLeaveDiagnostics</a></li>
--   </ul>
roomLeaveRequest :: RoomLeaveRequest

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomLeaveRequest.
rlrKind :: Lens' RoomLeaveRequest Text

-- | Reason for leaving the match. Possible values are: - "PLAYER_LEFT" -
--   The player chose to leave the room.. - "GAME_LEFT" - The game chose to
--   remove the player from the room. - "REALTIME_ABANDONED" - The player
--   switched to another application and abandoned the room. -
--   "REALTIME_PEER_CONNECTION_FAILURE" - The client was unable to
--   establish a connection to other peer(s). -
--   "REALTIME_SERVER_CONNECTION_FAILURE" - The client was unable to
--   communicate with the server. - "REALTIME_SERVER_ERROR" - The client
--   received an error response when it tried to communicate with the
--   server. - "REALTIME_TIMEOUT" - The client timed out while waiting for
--   a room. - "REALTIME_CLIENT_DISCONNECTING" - The client disconnects
--   without first calling Leave. - "REALTIME_SIGN_OUT" - The user signed
--   out of G+ while in the room. - "REALTIME_GAME_CRASHED" - The game
--   crashed. - "REALTIME_ROOM_SERVICE_CRASHED" - RoomAndroidService
--   crashed. - "REALTIME_DIFFERENT_CLIENT_ROOM_OPERATION" - Another client
--   is trying to enter a room. - "REALTIME_SAME_CLIENT_ROOM_OPERATION" -
--   The same client is trying to enter a new room.
rlrReason :: Lens' RoomLeaveRequest (Maybe Text)

-- | Diagnostics for a player leaving the room.
rlrLeaveDiagnostics :: Lens' RoomLeaveRequest (Maybe RoomLeaveDiagnostics)

-- | This is a JSON template for metadata about a player playing a game
--   with the currently authenticated user.
--   
--   <i>See:</i> <a>played</a> smart constructor.
data Played

-- | Creates a value of <a>Played</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pKind</a></li>
--   <li><a>pAutoMatched</a></li>
--   <li><a>pTimeMillis</a></li>
--   </ul>
played :: Played

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#played.
pKind :: Lens' Played Text

-- | True if the player was auto-matched with the currently authenticated
--   user.
pAutoMatched :: Lens' Played (Maybe Bool)

-- | The last time the player played the game in milliseconds since the
--   epoch in UTC.
pTimeMillis :: Lens' Played (Maybe Int64)

-- | This is a JSON template for an achievement increment response
--   
--   <i>See:</i> <a>achievementIncrementResponse</a> smart constructor.
data AchievementIncrementResponse

-- | Creates a value of <a>AchievementIncrementResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>airKind</a></li>
--   <li><a>airNewlyUnlocked</a></li>
--   <li><a>airCurrentSteps</a></li>
--   </ul>
achievementIncrementResponse :: AchievementIncrementResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementIncrementResponse.
airKind :: Lens' AchievementIncrementResponse Text

-- | Whether the current steps for the achievement has reached the number
--   of steps required to unlock.
airNewlyUnlocked :: Lens' AchievementIncrementResponse (Maybe Bool)

-- | The current steps recorded for this incremental achievement.
airCurrentSteps :: Lens' AchievementIncrementResponse (Maybe Int32)

-- | This is a JSON template for an achievement reveal response
--   
--   <i>See:</i> <a>achievementRevealResponse</a> smart constructor.
data AchievementRevealResponse

-- | Creates a value of <a>AchievementRevealResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arrKind</a></li>
--   <li><a>arrCurrentState</a></li>
--   </ul>
achievementRevealResponse :: AchievementRevealResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementRevealResponse.
arrKind :: Lens' AchievementRevealResponse Text

-- | The current state of the achievement for which a reveal was attempted.
--   This might be UNLOCKED if the achievement was already unlocked.
--   Possible values are: - "REVEALED" - Achievement is revealed. -
--   "UNLOCKED" - Achievement is unlocked.
arrCurrentState :: Lens' AchievementRevealResponse (Maybe Text)

-- | This is a JSON template for an achievement set steps at least
--   response.
--   
--   <i>See:</i> <a>achievementSetStepsAtLeastResponse</a> smart
--   constructor.
data AchievementSetStepsAtLeastResponse

-- | Creates a value of <a>AchievementSetStepsAtLeastResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>assalrKind</a></li>
--   <li><a>assalrNewlyUnlocked</a></li>
--   <li><a>assalrCurrentSteps</a></li>
--   </ul>
achievementSetStepsAtLeastResponse :: AchievementSetStepsAtLeastResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementSetStepsAtLeastResponse.
assalrKind :: Lens' AchievementSetStepsAtLeastResponse Text

-- | Whether the the current steps for the achievement has reached the
--   number of steps required to unlock.
assalrNewlyUnlocked :: Lens' AchievementSetStepsAtLeastResponse (Maybe Bool)

-- | The current steps recorded for this incremental achievement.
assalrCurrentSteps :: Lens' AchievementSetStepsAtLeastResponse (Maybe Int32)

-- | This is a JSON template for a list of achievement objects.
--   
--   <i>See:</i> <a>playerAchievementListResponse</a> smart constructor.
data PlayerAchievementListResponse

-- | Creates a value of <a>PlayerAchievementListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>palrNextPageToken</a></li>
--   <li><a>palrKind</a></li>
--   <li><a>palrItems</a></li>
--   </ul>
playerAchievementListResponse :: PlayerAchievementListResponse

-- | Token corresponding to the next page of results.
palrNextPageToken :: Lens' PlayerAchievementListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerAchievementListResponse.
palrKind :: Lens' PlayerAchievementListResponse Text

-- | The achievements.
palrItems :: Lens' PlayerAchievementListResponse [PlayerAchievement]

-- | This is a JSON template for an event period update resource.
--   
--   <i>See:</i> <a>eventRecordRequest</a> smart constructor.
data EventRecordRequest

-- | Creates a value of <a>EventRecordRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>errRequestId</a></li>
--   <li><a>errKind</a></li>
--   <li><a>errCurrentTimeMillis</a></li>
--   <li><a>errTimePeriods</a></li>
--   </ul>
eventRecordRequest :: EventRecordRequest

-- | The request ID used to identify this attempt to record events.
errRequestId :: Lens' EventRecordRequest (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventRecordRequest.
errKind :: Lens' EventRecordRequest Text

-- | The current time when this update was sent, in milliseconds, since
--   1970 UTC (Unix Epoch).
errCurrentTimeMillis :: Lens' EventRecordRequest (Maybe Int64)

-- | A list of the time period updates being made in this request.
errTimePeriods :: Lens' EventRecordRequest [EventPeriodUpdate]

-- | This is a JSON template for a room auto-match criteria object.
--   
--   <i>See:</i> <a>roomAutoMatchingCriteria</a> smart constructor.
data RoomAutoMatchingCriteria

-- | Creates a value of <a>RoomAutoMatchingCriteria</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ramcKind</a></li>
--   <li><a>ramcExclusiveBitmask</a></li>
--   <li><a>ramcMaxAutoMatchingPlayers</a></li>
--   <li><a>ramcMinAutoMatchingPlayers</a></li>
--   </ul>
roomAutoMatchingCriteria :: RoomAutoMatchingCriteria

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomAutoMatchingCriteria.
ramcKind :: Lens' RoomAutoMatchingCriteria Text

-- | A bitmask indicating when auto-matches are valid. When ANDed with
--   other exclusive bitmasks, the result must be zero. Can be used to
--   support exclusive roles within a game.
ramcExclusiveBitmask :: Lens' RoomAutoMatchingCriteria (Maybe Int64)

-- | The maximum number of players that should be added to the room by
--   auto-matching.
ramcMaxAutoMatchingPlayers :: Lens' RoomAutoMatchingCriteria (Maybe Int32)

-- | The minimum number of players that should be added to the room by
--   auto-matching.
ramcMinAutoMatchingPlayers :: Lens' RoomAutoMatchingCriteria (Maybe Int32)

-- | The time span for the scores and ranks you're requesting.
data ScoresListTimeSpan

-- | <tt>ALL_TIME</tt> List the all-time top scores.
SLTSAllTime :: ScoresListTimeSpan

-- | <tt>DAILY</tt> List the top scores for the current day.
SLTSDaily :: ScoresListTimeSpan

-- | <tt>WEEKLY</tt> List the top scores for the current week.
SLTSWeekly :: ScoresListTimeSpan

-- | This is a JSON template for a Quest Milestone resource.
--   
--   <i>See:</i> <a>questMilestone</a> smart constructor.
data QuestMilestone

-- | Creates a value of <a>QuestMilestone</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qmState</a></li>
--   <li><a>qmKind</a></li>
--   <li><a>qmId</a></li>
--   <li><a>qmCompletionRewardData</a></li>
--   <li><a>qmCriteria</a></li>
--   </ul>
questMilestone :: QuestMilestone

-- | The current state of the milestone. Possible values are: -
--   "COMPLETED_NOT_CLAIMED" - The milestone is complete, but has not yet
--   been claimed. - "CLAIMED" - The milestone is complete and has been
--   claimed. - "NOT_COMPLETED" - The milestone has not yet been completed.
--   - "NOT_STARTED" - The milestone is for a quest that has not yet been
--   accepted.
qmState :: Lens' QuestMilestone (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#questMilestone.
qmKind :: Lens' QuestMilestone Text

-- | The milestone ID.
qmId :: Lens' QuestMilestone (Maybe Text)

-- | The completion reward data of the milestone, represented as a
--   Base64-encoded string. This is a developer-specified binary blob with
--   size between 0 and 2 KB before encoding.
qmCompletionRewardData :: Lens' QuestMilestone (Maybe ByteString)

-- | The criteria of the milestone.
qmCriteria :: Lens' QuestMilestone [QuestCriterion]

-- | This is a JSON template for peer session diagnostics.
--   
--   <i>See:</i> <a>peerSessionDiagnostics</a> smart constructor.
data PeerSessionDiagnostics

-- | Creates a value of <a>PeerSessionDiagnostics</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psdConnectedTimestampMillis</a></li>
--   <li><a>psdParticipantId</a></li>
--   <li><a>psdKind</a></li>
--   <li><a>psdUnreliableChannel</a></li>
--   <li><a>psdReliableChannel</a></li>
--   </ul>
peerSessionDiagnostics :: PeerSessionDiagnostics

-- | Connected time in milliseconds.
psdConnectedTimestampMillis :: Lens' PeerSessionDiagnostics (Maybe Int64)

-- | The participant ID of the peer.
psdParticipantId :: Lens' PeerSessionDiagnostics (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#peerSessionDiagnostics.
psdKind :: Lens' PeerSessionDiagnostics Text

-- | Unreliable channel diagnostics.
psdUnreliableChannel :: Lens' PeerSessionDiagnostics (Maybe PeerChannelDiagnostics)

-- | Reliable channel diagnostics.
psdReliableChannel :: Lens' PeerSessionDiagnostics (Maybe PeerChannelDiagnostics)

-- | This is a JSON template for a push token ID resource.
--   
--   <i>See:</i> <a>pushTokenId</a> smart constructor.
data PushTokenId

-- | Creates a value of <a>PushTokenId</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptiIos</a></li>
--   <li><a>ptiKind</a></li>
--   </ul>
pushTokenId :: PushTokenId

-- | A push token ID for iOS devices.
ptiIos :: Lens' PushTokenId (Maybe PushTokenIdIos)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#pushTokenId.
ptiKind :: Lens' PushTokenId Text

-- | This is a JSON template for an event period update resource.
--   
--   <i>See:</i> <a>eventPeriodUpdate</a> smart constructor.
data EventPeriodUpdate

-- | Creates a value of <a>EventPeriodUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>epuKind</a></li>
--   <li><a>epuTimePeriod</a></li>
--   <li><a>epuUpdates</a></li>
--   </ul>
eventPeriodUpdate :: EventPeriodUpdate

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventPeriodUpdate.
epuKind :: Lens' EventPeriodUpdate Text

-- | The time period being covered by this update.
epuTimePeriod :: Lens' EventPeriodUpdate (Maybe EventPeriodRange)

-- | The updates being made for this time period.
epuUpdates :: Lens' EventPeriodUpdate [EventUpdateRequest]

-- | This is a JSON template for a list of turn-based matches returned from
--   a sync.
--   
--   <i>See:</i> <a>turnBasedMatchSync</a> smart constructor.
data TurnBasedMatchSync

-- | Creates a value of <a>TurnBasedMatchSync</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmsMoreAvailable</a></li>
--   <li><a>tbmsNextPageToken</a></li>
--   <li><a>tbmsKind</a></li>
--   <li><a>tbmsItems</a></li>
--   </ul>
turnBasedMatchSync :: TurnBasedMatchSync

-- | True if there were more matches available to fetch at the time the
--   response was generated (which were not returned due to page size
--   limits.)
tbmsMoreAvailable :: Lens' TurnBasedMatchSync (Maybe Bool)

-- | The pagination token for the next page of results.
tbmsNextPageToken :: Lens' TurnBasedMatchSync (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchSync.
tbmsKind :: Lens' TurnBasedMatchSync Text

-- | The matches.
tbmsItems :: Lens' TurnBasedMatchSync [TurnBasedMatch]

-- | This is a JSON template for a request to submit a score to
--   leaderboards.
--   
--   <i>See:</i> <a>scoreSubmission</a> smart constructor.
data ScoreSubmission

-- | Creates a value of <a>ScoreSubmission</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scoSignature</a></li>
--   <li><a>scoScoreTag</a></li>
--   <li><a>scoScore</a></li>
--   <li><a>scoKind</a></li>
--   <li><a>scoLeaderboardId</a></li>
--   </ul>
scoreSubmission :: ScoreSubmission

-- | Signature Values will contain URI-safe characters as defined by
--   section 2.3 of RFC 3986.
scoSignature :: Lens' ScoreSubmission (Maybe Text)

-- | Additional information about this score. Values will contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
scoScoreTag :: Lens' ScoreSubmission (Maybe Text)

-- | The new score being submitted.
scoScore :: Lens' ScoreSubmission (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#scoreSubmission.
scoKind :: Lens' ScoreSubmission Text

-- | The leaderboard this score is being submitted to.
scoLeaderboardId :: Lens' ScoreSubmission (Maybe Text)

-- | This is a JSON template for room leave diagnostics.
--   
--   <i>See:</i> <a>roomLeaveDiagnostics</a> smart constructor.
data RoomLeaveDiagnostics

-- | Creates a value of <a>RoomLeaveDiagnostics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rldPeerSession</a></li>
--   <li><a>rldAndroidNetworkType</a></li>
--   <li><a>rldKind</a></li>
--   <li><a>rldNetworkOperatorCode</a></li>
--   <li><a>rldNetworkOperatorName</a></li>
--   <li><a>rldSocketsUsed</a></li>
--   <li><a>rldIosNetworkType</a></li>
--   <li><a>rldAndroidNetworkSubtype</a></li>
--   </ul>
roomLeaveDiagnostics :: RoomLeaveDiagnostics

-- | Diagnostics about all peer sessions.
rldPeerSession :: Lens' RoomLeaveDiagnostics [PeerSessionDiagnostics]

-- | Android network type.
--   http://developer.android.com/reference/android/net/NetworkInfo.html#getType()
rldAndroidNetworkType :: Lens' RoomLeaveDiagnostics (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomLeaveDiagnostics.
rldKind :: Lens' RoomLeaveDiagnostics Text

-- | The MCC+MNC code for the client's network connection. On Android:
--   http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkOperator()
--   On iOS, see:
--   https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html
rldNetworkOperatorCode :: Lens' RoomLeaveDiagnostics (Maybe Text)

-- | The name of the carrier of the client's network connection. On
--   Android:
--   http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkOperatorName()
--   On iOS:
--   https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html#//apple_ref/occ/instp/CTCarrier/carrierName
rldNetworkOperatorName :: Lens' RoomLeaveDiagnostics (Maybe Text)

-- | Whether or not sockets were used.
rldSocketsUsed :: Lens' RoomLeaveDiagnostics (Maybe Bool)

-- | iOS network type as defined in Reachability.h.
rldIosNetworkType :: Lens' RoomLeaveDiagnostics (Maybe Int32)

-- | Android network subtype.
--   http://developer.android.com/reference/android/net/NetworkInfo.html#getSubtype()
rldAndroidNetworkSubtype :: Lens' RoomLeaveDiagnostics (Maybe Int32)

-- | This is a JSON template for aggregate stats.
--   
--   <i>See:</i> <a>aggregateStats</a> smart constructor.
data AggregateStats

-- | Creates a value of <a>AggregateStats</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asMax</a></li>
--   <li><a>asKind</a></li>
--   <li><a>asCount</a></li>
--   <li><a>asMin</a></li>
--   <li><a>asSum</a></li>
--   </ul>
aggregateStats :: AggregateStats

-- | The maximum amount.
asMax :: Lens' AggregateStats (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#aggregateStats.
asKind :: Lens' AggregateStats Text

-- | The number of messages sent between a pair of peers.
asCount :: Lens' AggregateStats (Maybe Int64)

-- | The minimum amount.
asMin :: Lens' AggregateStats (Maybe Int64)

-- | The total number of bytes sent for messages between a pair of peers.
asSum :: Lens' AggregateStats (Maybe Int64)

-- | This is a JSON template for the Web details resource.
--   
--   <i>See:</i> <a>instanceWebDetails</a> smart constructor.
data InstanceWebDetails

-- | Creates a value of <a>InstanceWebDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iwdPreferred</a></li>
--   <li><a>iwdKind</a></li>
--   <li><a>iwdLaunchURL</a></li>
--   </ul>
instanceWebDetails :: InstanceWebDetails

-- | Indicates that this instance is the default for new installations.
iwdPreferred :: Lens' InstanceWebDetails (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#instanceWebDetails.
iwdKind :: Lens' InstanceWebDetails Text

-- | Launch URL for the game.
iwdLaunchURL :: Lens' InstanceWebDetails (Maybe Text)

-- | This is a JSON template for a rematch response.
--   
--   <i>See:</i> <a>turnBasedMatchRematch</a> smart constructor.
data TurnBasedMatchRematch

-- | Creates a value of <a>TurnBasedMatchRematch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tRematch</a></li>
--   <li><a>tKind</a></li>
--   <li><a>tPreviousMatch</a></li>
--   </ul>
turnBasedMatchRematch :: TurnBasedMatchRematch

-- | The newly created match; a rematch of the old match with the same
--   participants.
tRematch :: Lens' TurnBasedMatchRematch (Maybe TurnBasedMatch)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchRematch.
tKind :: Lens' TurnBasedMatchRematch Text

-- | The old match that the rematch was created from; will be updated such
--   that the rematchId field will point at the new match.
tPreviousMatch :: Lens' TurnBasedMatchRematch (Maybe TurnBasedMatch)

-- | This is a JSON template for 1P/3P metadata about the player's
--   experience.
--   
--   <i>See:</i> <a>playerExperienceInfo</a> smart constructor.
data PlayerExperienceInfo

-- | Creates a value of <a>PlayerExperienceInfo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>peiKind</a></li>
--   <li><a>peiCurrentExperiencePoints</a></li>
--   <li><a>peiCurrentLevel</a></li>
--   <li><a>peiNextLevel</a></li>
--   <li><a>peiLastLevelUpTimestampMillis</a></li>
--   </ul>
playerExperienceInfo :: PlayerExperienceInfo

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerExperienceInfo.
peiKind :: Lens' PlayerExperienceInfo Text

-- | The current number of experience points for the player.
peiCurrentExperiencePoints :: Lens' PlayerExperienceInfo (Maybe Int64)

-- | The current level of the player.
peiCurrentLevel :: Lens' PlayerExperienceInfo (Maybe PlayerLevel)

-- | The next level of the player. If the current level is the maximum
--   level, this should be same as the current level.
peiNextLevel :: Lens' PlayerExperienceInfo (Maybe PlayerLevel)

-- | The timestamp when the player was leveled up, in millis since Unix
--   epoch UTC.
peiLastLevelUpTimestampMillis :: Lens' PlayerExperienceInfo (Maybe Int64)

-- | This is a JSON template for the payload to request to increment an
--   achievement.
--   
--   <i>See:</i> <a>gamesAchievementSetStepsAtLeast</a> smart constructor.
data GamesAchievementSetStepsAtLeast

-- | Creates a value of <a>GamesAchievementSetStepsAtLeast</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gassalKind</a></li>
--   <li><a>gassalSteps</a></li>
--   </ul>
gamesAchievementSetStepsAtLeast :: GamesAchievementSetStepsAtLeast

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#GamesAchievementSetStepsAtLeast.
gassalKind :: Lens' GamesAchievementSetStepsAtLeast Text

-- | The minimum number of steps for the achievement to be set to.
gassalSteps :: Lens' GamesAchievementSetStepsAtLeast (Maybe Int32)

-- | This is a JSON template for a Player resource.
--   
--   <i>See:</i> <a>player</a> smart constructor.
data Player

-- | Creates a value of <a>Player</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plaBannerURLLandscape</a></li>
--   <li><a>plaLastPlayedWith</a></li>
--   <li><a>plaAvatarImageURL</a></li>
--   <li><a>plaKind</a></li>
--   <li><a>plaExperienceInfo</a></li>
--   <li><a>plaName</a></li>
--   <li><a>plaOriginalPlayerId</a></li>
--   <li><a>plaDisplayName</a></li>
--   <li><a>plaTitle</a></li>
--   <li><a>plaBannerURLPortrait</a></li>
--   <li><a>plaPlayerId</a></li>
--   <li><a>plaProFileSettings</a></li>
--   </ul>
player :: Player

-- | The url to the landscape mode player banner image.
plaBannerURLLandscape :: Lens' Player (Maybe Text)

-- | Details about the last time this player played a multiplayer game with
--   the currently authenticated player. Populated for PLAYED_WITH player
--   collection members.
plaLastPlayedWith :: Lens' Player (Maybe Played)

-- | The base URL for the image that represents the player.
plaAvatarImageURL :: Lens' Player (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#player.
plaKind :: Lens' Player Text

-- | An object to represent Play Game experience information for the
--   player.
plaExperienceInfo :: Lens' Player (Maybe PlayerExperienceInfo)

-- | An object representation of the individual components of the player's
--   name. For some players, these fields may not be present.
plaName :: Lens' Player (Maybe PlayerName)

-- | The player ID that was used for this player the first time they signed
--   into the game in question. This is only populated for calls to
--   player.get for the requesting player, only if the player ID has
--   subsequently changed, and only to clients that support remapping
--   player IDs.
plaOriginalPlayerId :: Lens' Player (Maybe Text)

-- | The name to display for the player.
plaDisplayName :: Lens' Player (Maybe Text)

-- | The player's title rewarded for their game activities.
plaTitle :: Lens' Player (Maybe Text)

-- | The url to the portrait mode player banner image.
plaBannerURLPortrait :: Lens' Player (Maybe Text)

-- | The ID of the player.
plaPlayerId :: Lens' Player (Maybe Text)

-- | The player's profile settings. Controls whether or not the player's
--   profile is visible to other players.
plaProFileSettings :: Lens' Player (Maybe ProFileSettings)

-- | This is a JSON template for the payload to request to increment an
--   achievement.
--   
--   <i>See:</i> <a>gamesAchievementIncrement</a> smart constructor.
data GamesAchievementIncrement

-- | Creates a value of <a>GamesAchievementIncrement</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gaiRequestId</a></li>
--   <li><a>gaiKind</a></li>
--   <li><a>gaiSteps</a></li>
--   </ul>
gamesAchievementIncrement :: GamesAchievementIncrement

-- | The requestId associated with an increment to an achievement.
gaiRequestId :: Lens' GamesAchievementIncrement (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#GamesAchievementIncrement.
gaiKind :: Lens' GamesAchievementIncrement Text

-- | The number of steps to be incremented.
gaiSteps :: Lens' GamesAchievementIncrement (Maybe Int32)

-- | This is a JSON template for a Quest resource.
--   
--   <i>See:</i> <a>quest</a> smart constructor.
data Quest

-- | Creates a value of <a>Quest</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>queLastUpdatedTimestampMillis</a></li>
--   <li><a>queBannerURL</a></li>
--   <li><a>queState</a></li>
--   <li><a>queMilestones</a></li>
--   <li><a>queKind</a></li>
--   <li><a>queApplicationId</a></li>
--   <li><a>queEndTimestampMillis</a></li>
--   <li><a>queName</a></li>
--   <li><a>queId</a></li>
--   <li><a>queIconURL</a></li>
--   <li><a>queStartTimestampMillis</a></li>
--   <li><a>queNotifyTimestampMillis</a></li>
--   <li><a>queDescription</a></li>
--   <li><a>queIsDefaultBannerURL</a></li>
--   <li><a>queIsDefaultIconURL</a></li>
--   <li><a>queAcceptedTimestampMillis</a></li>
--   </ul>
quest :: Quest

-- | The timestamp at which the quest was last updated by the user in
--   milliseconds since the epoch in UTC. Only present if the player has
--   accepted the quest.
queLastUpdatedTimestampMillis :: Lens' Quest (Maybe Int64)

-- | The banner image URL for the quest.
queBannerURL :: Lens' Quest (Maybe Text)

-- | The state of the quest. Possible values are: - "UPCOMING": The quest
--   is upcoming. The user can see the quest, but cannot accept it until it
--   is open. - "OPEN": The quest is currently open and may be accepted at
--   this time. - "ACCEPTED": The user is currently participating in this
--   quest. - "COMPLETED": The user has completed the quest. - "FAILED":
--   The quest was attempted but was not completed before the deadline
--   expired. - "EXPIRED": The quest has expired and was not accepted. -
--   "DELETED": The quest should be deleted from the local database.
queState :: Lens' Quest (Maybe Text)

-- | The quest milestones.
queMilestones :: Lens' Quest [QuestMilestone]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#quest.
queKind :: Lens' Quest Text

-- | The ID of the application this quest is part of.
queApplicationId :: Lens' Quest (Maybe Text)

-- | The timestamp at which the quest ceases to be active in milliseconds
--   since the epoch in UTC.
queEndTimestampMillis :: Lens' Quest (Maybe Int64)

-- | The name of the quest.
queName :: Lens' Quest (Maybe Text)

-- | The ID of the quest.
queId :: Lens' Quest (Maybe Text)

-- | The icon image URL for the quest.
queIconURL :: Lens' Quest (Maybe Text)

-- | The timestamp at which the quest becomes active in milliseconds since
--   the epoch in UTC.
queStartTimestampMillis :: Lens' Quest (Maybe Int64)

-- | The timestamp at which the user should be notified that the quest will
--   end soon in milliseconds since the epoch in UTC.
queNotifyTimestampMillis :: Lens' Quest (Maybe Int64)

-- | The description of the quest.
queDescription :: Lens' Quest (Maybe Text)

-- | Indicates whether the banner image being returned is a default image,
--   or is game-provided.
queIsDefaultBannerURL :: Lens' Quest (Maybe Bool)

-- | Indicates whether the icon image being returned is a default image, or
--   is game-provided.
queIsDefaultIconURL :: Lens' Quest (Maybe Bool)

-- | The timestamp at which the user accepted the quest in milliseconds
--   since the epoch in UTC. Only present if the player has accepted the
--   quest.
queAcceptedTimestampMillis :: Lens' Quest (Maybe Int64)

-- | This is a JSON template for an event child relationship resource.
--   
--   <i>See:</i> <a>eventChild</a> smart constructor.
data EventChild

-- | Creates a value of <a>EventChild</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ecKind</a></li>
--   <li><a>ecChildId</a></li>
--   </ul>
eventChild :: EventChild

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventChild.
ecKind :: Lens' EventChild Text

-- | The ID of the child event.
ecChildId :: Lens' EventChild (Maybe Text)

-- | This is a JSON template for a third party application verification
--   response resource.
--   
--   <i>See:</i> <a>applicationVerifyResponse</a> smart constructor.
data ApplicationVerifyResponse

-- | Creates a value of <a>ApplicationVerifyResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avrKind</a></li>
--   <li><a>avrAlternatePlayerId</a></li>
--   <li><a>avrPlayerId</a></li>
--   </ul>
applicationVerifyResponse :: ApplicationVerifyResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#applicationVerifyResponse.
avrKind :: Lens' ApplicationVerifyResponse Text

-- | An alternate ID that was once used for the player that was issued the
--   auth token used in this request. (This field is not normally
--   populated.)
avrAlternatePlayerId :: Lens' ApplicationVerifyResponse (Maybe Text)

-- | The ID of the player that was issued the auth token used in this
--   request.
avrPlayerId :: Lens' ApplicationVerifyResponse (Maybe Text)

-- | This is a JSON template for a ListByPlayer response.
--   
--   <i>See:</i> <a>playerEventListResponse</a> smart constructor.
data PlayerEventListResponse

-- | Creates a value of <a>PlayerEventListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pelrNextPageToken</a></li>
--   <li><a>pelrKind</a></li>
--   <li><a>pelrItems</a></li>
--   </ul>
playerEventListResponse :: PlayerEventListResponse

-- | The pagination token for the next page of results.
pelrNextPageToken :: Lens' PlayerEventListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerEventListResponse.
pelrKind :: Lens' PlayerEventListResponse Text

-- | The player events.
pelrItems :: Lens' PlayerEventListResponse [PlayerEvent]

-- | This is a JSON template for sending a turn-based match data object.
--   
--   <i>See:</i> <a>turnBasedMatchDataRequest</a> smart constructor.
data TurnBasedMatchDataRequest

-- | Creates a value of <a>TurnBasedMatchDataRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmdrKind</a></li>
--   <li><a>tbmdrData</a></li>
--   </ul>
turnBasedMatchDataRequest :: TurnBasedMatchDataRequest

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchDataRequest.
tbmdrKind :: Lens' TurnBasedMatchDataRequest Text

-- | The byte representation of the data (limited to 128 kB), as a
--   Base64-encoded string with the URL_SAFE encoding option.
tbmdrData :: Lens' TurnBasedMatchDataRequest (Maybe ByteString)

-- | This is a JSON template for profile settings
--   
--   <i>See:</i> <a>proFileSettings</a> smart constructor.
data ProFileSettings

-- | Creates a value of <a>ProFileSettings</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pfsProFileVisible</a></li>
--   <li><a>pfsKind</a></li>
--   </ul>
proFileSettings :: ProFileSettings

-- | The player's current profile visibility. This field is visible to both
--   1P and 3P APIs.
pfsProFileVisible :: Lens' ProFileSettings (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#profileSettings.
pfsKind :: Lens' ProFileSettings Text

-- | This is a JSON template for an event period time range.
--   
--   <i>See:</i> <a>eventPeriodRange</a> smart constructor.
data EventPeriodRange

-- | Creates a value of <a>EventPeriodRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eprKind</a></li>
--   <li><a>eprPeriodStartMillis</a></li>
--   <li><a>eprPeriodEndMillis</a></li>
--   </ul>
eventPeriodRange :: EventPeriodRange

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventPeriodRange.
eprKind :: Lens' EventPeriodRange Text

-- | The time when this update period begins, in millis, since 1970 UTC
--   (Unix Epoch).
eprPeriodStartMillis :: Lens' EventPeriodRange (Maybe Int64)

-- | The time when this update period ends, in millis, since 1970 UTC (Unix
--   Epoch).
eprPeriodEndMillis :: Lens' EventPeriodRange (Maybe Int64)

-- | The collection of categories for which data will be returned.
data MetagameListCategoriesByPlayerCollection

-- | <tt>all</tt> Retrieve data for all categories. This is the default.
All :: MetagameListCategoriesByPlayerCollection

-- | Tells the server to return only achievements with the specified state.
--   If this parameter isn't specified, all achievements are returned.
data AchievementsListState

-- | <tt>ALL</tt> List all achievements. This is the default.
ALSAll :: AchievementsListState

-- | <tt>HIDDEN</tt> List only hidden achievements.
ALSHidden :: AchievementsListState

-- | <tt>REVEALED</tt> List only revealed achievements.
ALSRevealed :: AchievementsListState

-- | <tt>UNLOCKED</tt> List only unlocked achievements.
ALSUnlocked :: AchievementsListState

-- | This is a JSON template for an event update failure resource.
--   
--   <i>See:</i> <a>eventRecordFailure</a> smart constructor.
data EventRecordFailure

-- | Creates a value of <a>EventRecordFailure</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>erfKind</a></li>
--   <li><a>erfFailureCause</a></li>
--   <li><a>erfEventId</a></li>
--   </ul>
eventRecordFailure :: EventRecordFailure

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventRecordFailure.
erfKind :: Lens' EventRecordFailure Text

-- | The cause for the update failure. Possible values are: - "NOT_FOUND" -
--   An attempt was made to set an event that was not defined. -
--   "INVALID_UPDATE_VALUE" - An attempt was made to increment an event by
--   a non-positive value.
erfFailureCause :: Lens' EventRecordFailure (Maybe Text)

-- | The ID of the event that was not updated.
erfEventId :: Lens' EventRecordFailure (Maybe Text)

-- | This is a JSON template for a list of score submission requests
--   
--   <i>See:</i> <a>playerScoreSubmissionList</a> smart constructor.
data PlayerScoreSubmissionList

-- | Creates a value of <a>PlayerScoreSubmissionList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psslKind</a></li>
--   <li><a>psslScores</a></li>
--   </ul>
playerScoreSubmissionList :: PlayerScoreSubmissionList

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerScoreSubmissionList.
psslKind :: Lens' PlayerScoreSubmissionList Text

-- | The score submissions.
psslScores :: Lens' PlayerScoreSubmissionList [ScoreSubmission]

-- | This is a JSON template for the Instance resource.
--   
--   <i>See:</i> <a>instance'</a> smart constructor.
data Instance

-- | Creates a value of <a>Instance</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iAndroidInstance</a></li>
--   <li><a>iKind</a></li>
--   <li><a>iWebInstance</a></li>
--   <li><a>iIosInstance</a></li>
--   <li><a>iName</a></li>
--   <li><a>iAcquisitionURI</a></li>
--   <li><a>iPlatformType</a></li>
--   <li><a>iTurnBasedPlay</a></li>
--   <li><a>iRealtimePlay</a></li>
--   </ul>
instance' :: Instance

-- | Platform dependent details for Android.
iAndroidInstance :: Lens' Instance (Maybe InstanceAndroidDetails)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#instance.
iKind :: Lens' Instance Text

-- | Platform dependent details for Web.
iWebInstance :: Lens' Instance (Maybe InstanceWebDetails)

-- | Platform dependent details for iOS.
iIosInstance :: Lens' Instance (Maybe InstanceIosDetails)

-- | Localized display name.
iName :: Lens' Instance (Maybe Text)

-- | URI which shows where a user can acquire this instance.
iAcquisitionURI :: Lens' Instance (Maybe Text)

-- | The platform type. Possible values are: - "ANDROID" - Instance is for
--   Android. - "IOS" - Instance is for iOS - "WEB_APP" - Instance is for
--   Web App.
iPlatformType :: Lens' Instance (Maybe Text)

-- | Flag to show if this game instance supports turn based play.
iTurnBasedPlay :: Lens' Instance (Maybe Bool)

-- | Flag to show if this game instance supports realtime play.
iRealtimePlay :: Lens' Instance (Maybe Bool)


-- | Lists all the achievement definitions for your application.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.achievementDefinitions.list</tt>.
module Network.Google.Resource.Games.AchievementDefinitions.List

-- | A resource alias for <tt>games.achievementDefinitions.list</tt> method
--   which the <a>AchievementDefinitionsList</a> request conforms to.
type AchievementDefinitionsListResource = "games" :> ("v1" :> ("achievements" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] AchievementDefinitionsListResponse)))))))

-- | Creates a value of <a>AchievementDefinitionsList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adlConsistencyToken</a></li>
--   <li><a>adlLanguage</a></li>
--   <li><a>adlPageToken</a></li>
--   <li><a>adlMaxResults</a></li>
--   </ul>
achievementDefinitionsList :: AchievementDefinitionsList

-- | Lists all the achievement definitions for your application.
--   
--   <i>See:</i> <a>achievementDefinitionsList</a> smart constructor.
data AchievementDefinitionsList

-- | The last-seen mutation timestamp.
adlConsistencyToken :: Lens' AchievementDefinitionsList (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
adlLanguage :: Lens' AchievementDefinitionsList (Maybe Text)

-- | The token returned by the previous request.
adlPageToken :: Lens' AchievementDefinitionsList (Maybe Text)

-- | The maximum number of achievement resources to return in the response,
--   used for paging. For any response, the actual number of achievement
--   resources returned may be less than the specified maxResults.
adlMaxResults :: Lens' AchievementDefinitionsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.AchievementDefinitions.List.AchievementDefinitionsList
instance Data.Data.Data Network.Google.Resource.Games.AchievementDefinitions.List.AchievementDefinitionsList
instance GHC.Show.Show Network.Google.Resource.Games.AchievementDefinitions.List.AchievementDefinitionsList
instance GHC.Classes.Eq Network.Google.Resource.Games.AchievementDefinitions.List.AchievementDefinitionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.AchievementDefinitions.List.AchievementDefinitionsList


-- | Increments the steps of the achievement with the given ID for the
--   currently authenticated player.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.achievements.increment</tt>.
module Network.Google.Resource.Games.Achievements.Increment

-- | A resource alias for <tt>games.achievements.increment</tt> method
--   which the <a>AchievementsIncrement</a> request conforms to.
type AchievementsIncrementResource = "games" :> ("v1" :> ("achievements" :> (Capture "achievementId" Text :> ("increment" :> (QueryParam "stepsToIncrement" (Textual Int32) :> (QueryParam "requestId" (Textual Int64) :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Post '[JSON] AchievementIncrementResponse))))))))

-- | Creates a value of <a>AchievementsIncrement</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aiRequestId</a></li>
--   <li><a>aiAchievementId</a></li>
--   <li><a>aiConsistencyToken</a></li>
--   <li><a>aiStepsToIncrement</a></li>
--   </ul>
achievementsIncrement :: Text -> Int32 -> AchievementsIncrement

-- | Increments the steps of the achievement with the given ID for the
--   currently authenticated player.
--   
--   <i>See:</i> <a>achievementsIncrement</a> smart constructor.
data AchievementsIncrement

-- | A randomly generated numeric ID for each request specified by the
--   caller. This number is used at the server to ensure that the request
--   is handled correctly across retries.
aiRequestId :: Lens' AchievementsIncrement (Maybe Int64)

-- | The ID of the achievement used by this method.
aiAchievementId :: Lens' AchievementsIncrement Text

-- | The last-seen mutation timestamp.
aiConsistencyToken :: Lens' AchievementsIncrement (Maybe Int64)

-- | The number of steps to increment.
aiStepsToIncrement :: Lens' AchievementsIncrement Int32
instance GHC.Generics.Generic Network.Google.Resource.Games.Achievements.Increment.AchievementsIncrement
instance Data.Data.Data Network.Google.Resource.Games.Achievements.Increment.AchievementsIncrement
instance GHC.Show.Show Network.Google.Resource.Games.Achievements.Increment.AchievementsIncrement
instance GHC.Classes.Eq Network.Google.Resource.Games.Achievements.Increment.AchievementsIncrement
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Achievements.Increment.AchievementsIncrement


-- | Lists the progress for all your application's achievements for the
--   currently authenticated player.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.achievements.list</tt>.
module Network.Google.Resource.Games.Achievements.List

-- | A resource alias for <tt>games.achievements.list</tt> method which the
--   <a>AchievementsList</a> request conforms to.
type AchievementsListResource = "games" :> ("v1" :> ("players" :> (Capture "playerId" Text :> ("achievements" :> (QueryParam "state" AchievementsListState :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] PlayerAchievementListResponse))))))))))

-- | Creates a value of <a>AchievementsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>alState</a></li>
--   <li><a>alConsistencyToken</a></li>
--   <li><a>alLanguage</a></li>
--   <li><a>alPageToken</a></li>
--   <li><a>alPlayerId</a></li>
--   <li><a>alMaxResults</a></li>
--   </ul>
achievementsList :: Text -> AchievementsList

-- | Lists the progress for all your application's achievements for the
--   currently authenticated player.
--   
--   <i>See:</i> <a>achievementsList</a> smart constructor.
data AchievementsList

-- | Tells the server to return only achievements with the specified state.
--   If this parameter isn't specified, all achievements are returned.
alState :: Lens' AchievementsList (Maybe AchievementsListState)

-- | The last-seen mutation timestamp.
alConsistencyToken :: Lens' AchievementsList (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
alLanguage :: Lens' AchievementsList (Maybe Text)

-- | The token returned by the previous request.
alPageToken :: Lens' AchievementsList (Maybe Text)

-- | A player ID. A value of me may be used in place of the authenticated
--   player's ID.
alPlayerId :: Lens' AchievementsList Text

-- | The maximum number of achievement resources to return in the response,
--   used for paging. For any response, the actual number of achievement
--   resources returned may be less than the specified maxResults.
alMaxResults :: Lens' AchievementsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Achievements.List.AchievementsList
instance Data.Data.Data Network.Google.Resource.Games.Achievements.List.AchievementsList
instance GHC.Show.Show Network.Google.Resource.Games.Achievements.List.AchievementsList
instance GHC.Classes.Eq Network.Google.Resource.Games.Achievements.List.AchievementsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Achievements.List.AchievementsList


-- | Sets the state of the achievement with the given ID to REVEALED for
--   the currently authenticated player.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.achievements.reveal</tt>.
module Network.Google.Resource.Games.Achievements.Reveal

-- | A resource alias for <tt>games.achievements.reveal</tt> method which
--   the <a>AchievementsReveal</a> request conforms to.
type AchievementsRevealResource = "games" :> ("v1" :> ("achievements" :> (Capture "achievementId" Text :> ("reveal" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Post '[JSON] AchievementRevealResponse))))))

-- | Creates a value of <a>AchievementsReveal</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arAchievementId</a></li>
--   <li><a>arConsistencyToken</a></li>
--   </ul>
achievementsReveal :: Text -> AchievementsReveal

-- | Sets the state of the achievement with the given ID to REVEALED for
--   the currently authenticated player.
--   
--   <i>See:</i> <a>achievementsReveal</a> smart constructor.
data AchievementsReveal

-- | The ID of the achievement used by this method.
arAchievementId :: Lens' AchievementsReveal Text

-- | The last-seen mutation timestamp.
arConsistencyToken :: Lens' AchievementsReveal (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Games.Achievements.Reveal.AchievementsReveal
instance Data.Data.Data Network.Google.Resource.Games.Achievements.Reveal.AchievementsReveal
instance GHC.Show.Show Network.Google.Resource.Games.Achievements.Reveal.AchievementsReveal
instance GHC.Classes.Eq Network.Google.Resource.Games.Achievements.Reveal.AchievementsReveal
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Achievements.Reveal.AchievementsReveal


-- | Sets the steps for the currently authenticated player towards
--   unlocking an achievement. If the steps parameter is less than the
--   current number of steps that the player already gained for the
--   achievement, the achievement is not modified.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.achievements.setStepsAtLeast</tt>.
module Network.Google.Resource.Games.Achievements.SetStepsAtLeast

-- | A resource alias for <tt>games.achievements.setStepsAtLeast</tt>
--   method which the <a>AchievementsSetStepsAtLeast</a> request conforms
--   to.
type AchievementsSetStepsAtLeastResource = "games" :> ("v1" :> ("achievements" :> (Capture "achievementId" Text :> ("setStepsAtLeast" :> (QueryParam "steps" (Textual Int32) :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Post '[JSON] AchievementSetStepsAtLeastResponse)))))))

-- | Creates a value of <a>AchievementsSetStepsAtLeast</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>assalAchievementId</a></li>
--   <li><a>assalConsistencyToken</a></li>
--   <li><a>assalSteps</a></li>
--   </ul>
achievementsSetStepsAtLeast :: Text -> Int32 -> AchievementsSetStepsAtLeast

-- | Sets the steps for the currently authenticated player towards
--   unlocking an achievement. If the steps parameter is less than the
--   current number of steps that the player already gained for the
--   achievement, the achievement is not modified.
--   
--   <i>See:</i> <a>achievementsSetStepsAtLeast</a> smart constructor.
data AchievementsSetStepsAtLeast

-- | The ID of the achievement used by this method.
assalAchievementId :: Lens' AchievementsSetStepsAtLeast Text

-- | The last-seen mutation timestamp.
assalConsistencyToken :: Lens' AchievementsSetStepsAtLeast (Maybe Int64)

-- | The minimum value to set the steps to.
assalSteps :: Lens' AchievementsSetStepsAtLeast Int32
instance GHC.Generics.Generic Network.Google.Resource.Games.Achievements.SetStepsAtLeast.AchievementsSetStepsAtLeast
instance Data.Data.Data Network.Google.Resource.Games.Achievements.SetStepsAtLeast.AchievementsSetStepsAtLeast
instance GHC.Show.Show Network.Google.Resource.Games.Achievements.SetStepsAtLeast.AchievementsSetStepsAtLeast
instance GHC.Classes.Eq Network.Google.Resource.Games.Achievements.SetStepsAtLeast.AchievementsSetStepsAtLeast
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Achievements.SetStepsAtLeast.AchievementsSetStepsAtLeast


-- | Unlocks this achievement for the currently authenticated player.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.achievements.unlock</tt>.
module Network.Google.Resource.Games.Achievements.Unlock

-- | A resource alias for <tt>games.achievements.unlock</tt> method which
--   the <a>AchievementsUnlock</a> request conforms to.
type AchievementsUnlockResource = "games" :> ("v1" :> ("achievements" :> (Capture "achievementId" Text :> ("unlock" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Post '[JSON] AchievementUnlockResponse))))))

-- | Creates a value of <a>AchievementsUnlock</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>auAchievementId</a></li>
--   <li><a>auConsistencyToken</a></li>
--   </ul>
achievementsUnlock :: Text -> AchievementsUnlock

-- | Unlocks this achievement for the currently authenticated player.
--   
--   <i>See:</i> <a>achievementsUnlock</a> smart constructor.
data AchievementsUnlock

-- | The ID of the achievement used by this method.
auAchievementId :: Lens' AchievementsUnlock Text

-- | The last-seen mutation timestamp.
auConsistencyToken :: Lens' AchievementsUnlock (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Games.Achievements.Unlock.AchievementsUnlock
instance Data.Data.Data Network.Google.Resource.Games.Achievements.Unlock.AchievementsUnlock
instance GHC.Show.Show Network.Google.Resource.Games.Achievements.Unlock.AchievementsUnlock
instance GHC.Classes.Eq Network.Google.Resource.Games.Achievements.Unlock.AchievementsUnlock
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Achievements.Unlock.AchievementsUnlock


-- | Updates multiple achievements for the currently authenticated player.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.achievements.updateMultiple</tt>.
module Network.Google.Resource.Games.Achievements.UpdateMultiple

-- | A resource alias for <tt>games.achievements.updateMultiple</tt> method
--   which the <a>AchievementsUpdateMultiple</a> request conforms to.
type AchievementsUpdateMultipleResource = "games" :> ("v1" :> ("achievements" :> ("updateMultiple" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] AchievementUpdateMultipleRequest :> Post '[JSON] AchievementUpdateMultipleResponse))))))

-- | Creates a value of <a>AchievementsUpdateMultiple</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aumConsistencyToken</a></li>
--   <li><a>aumPayload</a></li>
--   </ul>
achievementsUpdateMultiple :: AchievementUpdateMultipleRequest -> AchievementsUpdateMultiple

-- | Updates multiple achievements for the currently authenticated player.
--   
--   <i>See:</i> <a>achievementsUpdateMultiple</a> smart constructor.
data AchievementsUpdateMultiple

-- | The last-seen mutation timestamp.
aumConsistencyToken :: Lens' AchievementsUpdateMultiple (Maybe Int64)

-- | Multipart request metadata.
aumPayload :: Lens' AchievementsUpdateMultiple AchievementUpdateMultipleRequest
instance GHC.Generics.Generic Network.Google.Resource.Games.Achievements.UpdateMultiple.AchievementsUpdateMultiple
instance Data.Data.Data Network.Google.Resource.Games.Achievements.UpdateMultiple.AchievementsUpdateMultiple
instance GHC.Show.Show Network.Google.Resource.Games.Achievements.UpdateMultiple.AchievementsUpdateMultiple
instance GHC.Classes.Eq Network.Google.Resource.Games.Achievements.UpdateMultiple.AchievementsUpdateMultiple
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Achievements.UpdateMultiple.AchievementsUpdateMultiple


-- | Retrieves the metadata of the application with the given ID. If the
--   requested application is not available for the specified platformType,
--   the returned response will not include any instance data.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.applications.get</tt>.
module Network.Google.Resource.Games.Applications.Get

-- | A resource alias for <tt>games.applications.get</tt> method which the
--   <a>ApplicationsGet</a> request conforms to.
type ApplicationsGetResource = "games" :> ("v1" :> ("applications" :> (Capture "applicationId" Text :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "platformType" ApplicationsGetPlatformType :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Application)))))))

-- | Creates a value of <a>ApplicationsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>agConsistencyToken</a></li>
--   <li><a>agApplicationId</a></li>
--   <li><a>agPlatformType</a></li>
--   <li><a>agLanguage</a></li>
--   </ul>
applicationsGet :: Text -> ApplicationsGet

-- | Retrieves the metadata of the application with the given ID. If the
--   requested application is not available for the specified platformType,
--   the returned response will not include any instance data.
--   
--   <i>See:</i> <a>applicationsGet</a> smart constructor.
data ApplicationsGet

-- | The last-seen mutation timestamp.
agConsistencyToken :: Lens' ApplicationsGet (Maybe Int64)

-- | The application ID from the Google Play developer console.
agApplicationId :: Lens' ApplicationsGet Text

-- | Restrict application details returned to the specific platform.
agPlatformType :: Lens' ApplicationsGet (Maybe ApplicationsGetPlatformType)

-- | The preferred language to use for strings returned by this method.
agLanguage :: Lens' ApplicationsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Applications.Get.ApplicationsGet
instance Data.Data.Data Network.Google.Resource.Games.Applications.Get.ApplicationsGet
instance GHC.Show.Show Network.Google.Resource.Games.Applications.Get.ApplicationsGet
instance GHC.Classes.Eq Network.Google.Resource.Games.Applications.Get.ApplicationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Applications.Get.ApplicationsGet


-- | Indicate that the the currently authenticated user is playing your
--   application.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.applications.played</tt>.
module Network.Google.Resource.Games.Applications.Played

-- | A resource alias for <tt>games.applications.played</tt> method which
--   the <a>ApplicationsPlayed</a> request conforms to.
type ApplicationsPlayedResource = "games" :> ("v1" :> ("applications" :> ("played" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Post '[JSON] ())))))

-- | Creates a value of <a>ApplicationsPlayed</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apConsistencyToken</a></li>
--   </ul>
applicationsPlayed :: ApplicationsPlayed

-- | Indicate that the the currently authenticated user is playing your
--   application.
--   
--   <i>See:</i> <a>applicationsPlayed</a> smart constructor.
data ApplicationsPlayed

-- | The last-seen mutation timestamp.
apConsistencyToken :: Lens' ApplicationsPlayed (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Games.Applications.Played.ApplicationsPlayed
instance Data.Data.Data Network.Google.Resource.Games.Applications.Played.ApplicationsPlayed
instance GHC.Show.Show Network.Google.Resource.Games.Applications.Played.ApplicationsPlayed
instance GHC.Classes.Eq Network.Google.Resource.Games.Applications.Played.ApplicationsPlayed
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Applications.Played.ApplicationsPlayed


-- | Verifies the auth token provided with this request is for the
--   application with the specified ID, and returns the ID of the player it
--   was granted for.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.applications.verify</tt>.
module Network.Google.Resource.Games.Applications.Verify

-- | A resource alias for <tt>games.applications.verify</tt> method which
--   the <a>ApplicationsVerify</a> request conforms to.
type ApplicationsVerifyResource = "games" :> ("v1" :> ("applications" :> (Capture "applicationId" Text :> ("verify" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] ApplicationVerifyResponse))))))

-- | Creates a value of <a>ApplicationsVerify</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avConsistencyToken</a></li>
--   <li><a>avApplicationId</a></li>
--   </ul>
applicationsVerify :: Text -> ApplicationsVerify

-- | Verifies the auth token provided with this request is for the
--   application with the specified ID, and returns the ID of the player it
--   was granted for.
--   
--   <i>See:</i> <a>applicationsVerify</a> smart constructor.
data ApplicationsVerify

-- | The last-seen mutation timestamp.
avConsistencyToken :: Lens' ApplicationsVerify (Maybe Int64)

-- | The application ID from the Google Play developer console.
avApplicationId :: Lens' ApplicationsVerify Text
instance GHC.Generics.Generic Network.Google.Resource.Games.Applications.Verify.ApplicationsVerify
instance Data.Data.Data Network.Google.Resource.Games.Applications.Verify.ApplicationsVerify
instance GHC.Show.Show Network.Google.Resource.Games.Applications.Verify.ApplicationsVerify
instance GHC.Classes.Eq Network.Google.Resource.Games.Applications.Verify.ApplicationsVerify
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Applications.Verify.ApplicationsVerify


-- | Returns a list showing the current progress on events in this
--   application for the currently authenticated user.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.events.listByPlayer</tt>.
module Network.Google.Resource.Games.Events.ListByPlayer

-- | A resource alias for <tt>games.events.listByPlayer</tt> method which
--   the <a>EventsListByPlayer</a> request conforms to.
type EventsListByPlayerResource = "games" :> ("v1" :> ("events" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] PlayerEventListResponse)))))))

-- | Creates a value of <a>EventsListByPlayer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>elbpConsistencyToken</a></li>
--   <li><a>elbpLanguage</a></li>
--   <li><a>elbpPageToken</a></li>
--   <li><a>elbpMaxResults</a></li>
--   </ul>
eventsListByPlayer :: EventsListByPlayer

-- | Returns a list showing the current progress on events in this
--   application for the currently authenticated user.
--   
--   <i>See:</i> <a>eventsListByPlayer</a> smart constructor.
data EventsListByPlayer

-- | The last-seen mutation timestamp.
elbpConsistencyToken :: Lens' EventsListByPlayer (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
elbpLanguage :: Lens' EventsListByPlayer (Maybe Text)

-- | The token returned by the previous request.
elbpPageToken :: Lens' EventsListByPlayer (Maybe Text)

-- | The maximum number of events to return in the response, used for
--   paging. For any response, the actual number of events to return may be
--   less than the specified maxResults.
elbpMaxResults :: Lens' EventsListByPlayer (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Events.ListByPlayer.EventsListByPlayer
instance Data.Data.Data Network.Google.Resource.Games.Events.ListByPlayer.EventsListByPlayer
instance GHC.Show.Show Network.Google.Resource.Games.Events.ListByPlayer.EventsListByPlayer
instance GHC.Classes.Eq Network.Google.Resource.Games.Events.ListByPlayer.EventsListByPlayer
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Events.ListByPlayer.EventsListByPlayer


-- | Returns a list of the event definitions in this application.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.events.listDefinitions</tt>.
module Network.Google.Resource.Games.Events.ListDefinitions

-- | A resource alias for <tt>games.events.listDefinitions</tt> method
--   which the <a>EventsListDefinitions</a> request conforms to.
type EventsListDefinitionsResource = "games" :> ("v1" :> ("eventDefinitions" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] EventDefinitionListResponse)))))))

-- | Creates a value of <a>EventsListDefinitions</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eldConsistencyToken</a></li>
--   <li><a>eldLanguage</a></li>
--   <li><a>eldPageToken</a></li>
--   <li><a>eldMaxResults</a></li>
--   </ul>
eventsListDefinitions :: EventsListDefinitions

-- | Returns a list of the event definitions in this application.
--   
--   <i>See:</i> <a>eventsListDefinitions</a> smart constructor.
data EventsListDefinitions

-- | The last-seen mutation timestamp.
eldConsistencyToken :: Lens' EventsListDefinitions (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
eldLanguage :: Lens' EventsListDefinitions (Maybe Text)

-- | The token returned by the previous request.
eldPageToken :: Lens' EventsListDefinitions (Maybe Text)

-- | The maximum number of event definitions to return in the response,
--   used for paging. For any response, the actual number of event
--   definitions to return may be less than the specified maxResults.
eldMaxResults :: Lens' EventsListDefinitions (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Events.ListDefinitions.EventsListDefinitions
instance Data.Data.Data Network.Google.Resource.Games.Events.ListDefinitions.EventsListDefinitions
instance GHC.Show.Show Network.Google.Resource.Games.Events.ListDefinitions.EventsListDefinitions
instance GHC.Classes.Eq Network.Google.Resource.Games.Events.ListDefinitions.EventsListDefinitions
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Events.ListDefinitions.EventsListDefinitions


-- | Records a batch of changes to the number of times events have occurred
--   for the currently authenticated user of this application.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.events.record</tt>.
module Network.Google.Resource.Games.Events.Record

-- | A resource alias for <tt>games.events.record</tt> method which the
--   <a>EventsRecord</a> request conforms to.
type EventsRecordResource = "games" :> ("v1" :> ("events" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] EventRecordRequest :> Post '[JSON] EventUpdateResponse))))))

-- | Creates a value of <a>EventsRecord</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>erConsistencyToken</a></li>
--   <li><a>erPayload</a></li>
--   <li><a>erLanguage</a></li>
--   </ul>
eventsRecord :: EventRecordRequest -> EventsRecord

-- | Records a batch of changes to the number of times events have occurred
--   for the currently authenticated user of this application.
--   
--   <i>See:</i> <a>eventsRecord</a> smart constructor.
data EventsRecord

-- | The last-seen mutation timestamp.
erConsistencyToken :: Lens' EventsRecord (Maybe Int64)

-- | Multipart request metadata.
erPayload :: Lens' EventsRecord EventRecordRequest

-- | The preferred language to use for strings returned by this method.
erLanguage :: Lens' EventsRecord (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Events.Record.EventsRecord
instance Data.Data.Data Network.Google.Resource.Games.Events.Record.EventsRecord
instance GHC.Show.Show Network.Google.Resource.Games.Events.Record.EventsRecord
instance GHC.Classes.Eq Network.Google.Resource.Games.Events.Record.EventsRecord
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Events.Record.EventsRecord


-- | Retrieves the metadata of the leaderboard with the given ID.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.leaderboards.get</tt>.
module Network.Google.Resource.Games.Leaderboards.Get

-- | A resource alias for <tt>games.leaderboards.get</tt> method which the
--   <a>LeaderboardsGet</a> request conforms to.
type LeaderboardsGetResource = "games" :> ("v1" :> ("leaderboards" :> (Capture "leaderboardId" Text :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Leaderboard))))))

-- | Creates a value of <a>LeaderboardsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lgConsistencyToken</a></li>
--   <li><a>lgLeaderboardId</a></li>
--   <li><a>lgLanguage</a></li>
--   </ul>
leaderboardsGet :: Text -> LeaderboardsGet

-- | Retrieves the metadata of the leaderboard with the given ID.
--   
--   <i>See:</i> <a>leaderboardsGet</a> smart constructor.
data LeaderboardsGet

-- | The last-seen mutation timestamp.
lgConsistencyToken :: Lens' LeaderboardsGet (Maybe Int64)

-- | The ID of the leaderboard.
lgLeaderboardId :: Lens' LeaderboardsGet Text

-- | The preferred language to use for strings returned by this method.
lgLanguage :: Lens' LeaderboardsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Leaderboards.Get.LeaderboardsGet
instance Data.Data.Data Network.Google.Resource.Games.Leaderboards.Get.LeaderboardsGet
instance GHC.Show.Show Network.Google.Resource.Games.Leaderboards.Get.LeaderboardsGet
instance GHC.Classes.Eq Network.Google.Resource.Games.Leaderboards.Get.LeaderboardsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Leaderboards.Get.LeaderboardsGet


-- | Lists all the leaderboard metadata for your application.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.leaderboards.list</tt>.
module Network.Google.Resource.Games.Leaderboards.List

-- | A resource alias for <tt>games.leaderboards.list</tt> method which the
--   <a>LeaderboardsList</a> request conforms to.
type LeaderboardsListResource = "games" :> ("v1" :> ("leaderboards" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] LeaderboardListResponse)))))))

-- | Creates a value of <a>LeaderboardsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>llConsistencyToken</a></li>
--   <li><a>llLanguage</a></li>
--   <li><a>llPageToken</a></li>
--   <li><a>llMaxResults</a></li>
--   </ul>
leaderboardsList :: LeaderboardsList

-- | Lists all the leaderboard metadata for your application.
--   
--   <i>See:</i> <a>leaderboardsList</a> smart constructor.
data LeaderboardsList

-- | The last-seen mutation timestamp.
llConsistencyToken :: Lens' LeaderboardsList (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
llLanguage :: Lens' LeaderboardsList (Maybe Text)

-- | The token returned by the previous request.
llPageToken :: Lens' LeaderboardsList (Maybe Text)

-- | The maximum number of leaderboards to return in the response. For any
--   response, the actual number of leaderboards returned may be less than
--   the specified maxResults.
llMaxResults :: Lens' LeaderboardsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Leaderboards.List.LeaderboardsList
instance Data.Data.Data Network.Google.Resource.Games.Leaderboards.List.LeaderboardsList
instance GHC.Show.Show Network.Google.Resource.Games.Leaderboards.List.LeaderboardsList
instance GHC.Classes.Eq Network.Google.Resource.Games.Leaderboards.List.LeaderboardsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Leaderboards.List.LeaderboardsList


-- | Return the metagame configuration data for the calling application.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.metagame.getMetagameConfig</tt>.
module Network.Google.Resource.Games.Metagame.GetMetagameConfig

-- | A resource alias for <tt>games.metagame.getMetagameConfig</tt> method
--   which the <a>MetagameGetMetagameConfig</a> request conforms to.
type MetagameGetMetagameConfigResource = "games" :> ("v1" :> ("metagameConfig" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] MetagameConfig))))

-- | Creates a value of <a>MetagameGetMetagameConfig</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mgmcConsistencyToken</a></li>
--   </ul>
metagameGetMetagameConfig :: MetagameGetMetagameConfig

-- | Return the metagame configuration data for the calling application.
--   
--   <i>See:</i> <a>metagameGetMetagameConfig</a> smart constructor.
data MetagameGetMetagameConfig

-- | The last-seen mutation timestamp.
mgmcConsistencyToken :: Lens' MetagameGetMetagameConfig (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Games.Metagame.GetMetagameConfig.MetagameGetMetagameConfig
instance Data.Data.Data Network.Google.Resource.Games.Metagame.GetMetagameConfig.MetagameGetMetagameConfig
instance GHC.Show.Show Network.Google.Resource.Games.Metagame.GetMetagameConfig.MetagameGetMetagameConfig
instance GHC.Classes.Eq Network.Google.Resource.Games.Metagame.GetMetagameConfig.MetagameGetMetagameConfig
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Metagame.GetMetagameConfig.MetagameGetMetagameConfig


-- | List play data aggregated per category for the player corresponding to
--   playerId.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.metagame.listCategoriesByPlayer</tt>.
module Network.Google.Resource.Games.Metagame.ListCategoriesByPlayer

-- | A resource alias for <tt>games.metagame.listCategoriesByPlayer</tt>
--   method which the <a>MetagameListCategoriesByPlayer</a> request
--   conforms to.
type MetagameListCategoriesByPlayerResource = "games" :> ("v1" :> ("players" :> (Capture "playerId" Text :> ("categories" :> (Capture "collection" MetagameListCategoriesByPlayerCollection :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] CategoryListResponse))))))))))

-- | Creates a value of <a>MetagameListCategoriesByPlayer</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mlcbpConsistencyToken</a></li>
--   <li><a>mlcbpCollection</a></li>
--   <li><a>mlcbpLanguage</a></li>
--   <li><a>mlcbpPageToken</a></li>
--   <li><a>mlcbpPlayerId</a></li>
--   <li><a>mlcbpMaxResults</a></li>
--   </ul>
metagameListCategoriesByPlayer :: MetagameListCategoriesByPlayerCollection -> Text -> MetagameListCategoriesByPlayer

-- | List play data aggregated per category for the player corresponding to
--   playerId.
--   
--   <i>See:</i> <a>metagameListCategoriesByPlayer</a> smart constructor.
data MetagameListCategoriesByPlayer

-- | The last-seen mutation timestamp.
mlcbpConsistencyToken :: Lens' MetagameListCategoriesByPlayer (Maybe Int64)

-- | The collection of categories for which data will be returned.
mlcbpCollection :: Lens' MetagameListCategoriesByPlayer MetagameListCategoriesByPlayerCollection

-- | The preferred language to use for strings returned by this method.
mlcbpLanguage :: Lens' MetagameListCategoriesByPlayer (Maybe Text)

-- | The token returned by the previous request.
mlcbpPageToken :: Lens' MetagameListCategoriesByPlayer (Maybe Text)

-- | A player ID. A value of me may be used in place of the authenticated
--   player's ID.
mlcbpPlayerId :: Lens' MetagameListCategoriesByPlayer Text

-- | The maximum number of category resources to return in the response,
--   used for paging. For any response, the actual number of category
--   resources returned may be less than the specified maxResults.
mlcbpMaxResults :: Lens' MetagameListCategoriesByPlayer (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Metagame.ListCategoriesByPlayer.MetagameListCategoriesByPlayer
instance Data.Data.Data Network.Google.Resource.Games.Metagame.ListCategoriesByPlayer.MetagameListCategoriesByPlayer
instance GHC.Show.Show Network.Google.Resource.Games.Metagame.ListCategoriesByPlayer.MetagameListCategoriesByPlayer
instance GHC.Classes.Eq Network.Google.Resource.Games.Metagame.ListCategoriesByPlayer.MetagameListCategoriesByPlayer
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Metagame.ListCategoriesByPlayer.MetagameListCategoriesByPlayer


-- | Retrieves the Player resource with the given ID. To retrieve the
--   player for the currently authenticated user, set playerId to me.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.players.get</tt>.
module Network.Google.Resource.Games.Players.Get

-- | A resource alias for <tt>games.players.get</tt> method which the
--   <a>PlayersGet</a> request conforms to.
type PlayersGetResource = "games" :> ("v1" :> ("players" :> (Capture "playerId" Text :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Player))))))

-- | Creates a value of <a>PlayersGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pgConsistencyToken</a></li>
--   <li><a>pgLanguage</a></li>
--   <li><a>pgPlayerId</a></li>
--   </ul>
playersGet :: Text -> PlayersGet

-- | Retrieves the Player resource with the given ID. To retrieve the
--   player for the currently authenticated user, set playerId to me.
--   
--   <i>See:</i> <a>playersGet</a> smart constructor.
data PlayersGet

-- | The last-seen mutation timestamp.
pgConsistencyToken :: Lens' PlayersGet (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
pgLanguage :: Lens' PlayersGet (Maybe Text)

-- | A player ID. A value of me may be used in place of the authenticated
--   player's ID.
pgPlayerId :: Lens' PlayersGet Text
instance GHC.Generics.Generic Network.Google.Resource.Games.Players.Get.PlayersGet
instance Data.Data.Data Network.Google.Resource.Games.Players.Get.PlayersGet
instance GHC.Show.Show Network.Google.Resource.Games.Players.Get.PlayersGet
instance GHC.Classes.Eq Network.Google.Resource.Games.Players.Get.PlayersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Players.Get.PlayersGet


-- | Get the collection of players for the currently authenticated user.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.players.list</tt>.
module Network.Google.Resource.Games.Players.List

-- | A resource alias for <tt>games.players.list</tt> method which the
--   <a>PlayersList</a> request conforms to.
type PlayersListResource = "games" :> ("v1" :> ("players" :> ("me" :> ("players" :> (Capture "collection" PlayersListCollection :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] PlayerListResponse))))))))))

-- | Creates a value of <a>PlayersList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plConsistencyToken</a></li>
--   <li><a>plCollection</a></li>
--   <li><a>plLanguage</a></li>
--   <li><a>plPageToken</a></li>
--   <li><a>plMaxResults</a></li>
--   </ul>
playersList :: PlayersListCollection -> PlayersList

-- | Get the collection of players for the currently authenticated user.
--   
--   <i>See:</i> <a>playersList</a> smart constructor.
data PlayersList

-- | The last-seen mutation timestamp.
plConsistencyToken :: Lens' PlayersList (Maybe Int64)

-- | Collection of players being retrieved
plCollection :: Lens' PlayersList PlayersListCollection

-- | The preferred language to use for strings returned by this method.
plLanguage :: Lens' PlayersList (Maybe Text)

-- | The token returned by the previous request.
plPageToken :: Lens' PlayersList (Maybe Text)

-- | The maximum number of player resources to return in the response, used
--   for paging. For any response, the actual number of player resources
--   returned may be less than the specified maxResults.
plMaxResults :: Lens' PlayersList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Players.List.PlayersList
instance Data.Data.Data Network.Google.Resource.Games.Players.List.PlayersList
instance GHC.Show.Show Network.Google.Resource.Games.Players.List.PlayersList
instance GHC.Classes.Eq Network.Google.Resource.Games.Players.List.PlayersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Players.List.PlayersList


-- | Removes a push token for the current user and application. Removing a
--   non-existent push token will report success.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.pushtokens.remove</tt>.
module Network.Google.Resource.Games.Pushtokens.Remove

-- | A resource alias for <tt>games.pushtokens.remove</tt> method which the
--   <a>PushtokensRemove</a> request conforms to.
type PushtokensRemoveResource = "games" :> ("v1" :> ("pushtokens" :> ("remove" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PushTokenId :> Post '[JSON] ()))))))

-- | Creates a value of <a>PushtokensRemove</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prConsistencyToken</a></li>
--   <li><a>prPayload</a></li>
--   </ul>
pushtokensRemove :: PushTokenId -> PushtokensRemove

-- | Removes a push token for the current user and application. Removing a
--   non-existent push token will report success.
--   
--   <i>See:</i> <a>pushtokensRemove</a> smart constructor.
data PushtokensRemove

-- | The last-seen mutation timestamp.
prConsistencyToken :: Lens' PushtokensRemove (Maybe Int64)

-- | Multipart request metadata.
prPayload :: Lens' PushtokensRemove PushTokenId
instance GHC.Generics.Generic Network.Google.Resource.Games.Pushtokens.Remove.PushtokensRemove
instance Data.Data.Data Network.Google.Resource.Games.Pushtokens.Remove.PushtokensRemove
instance GHC.Show.Show Network.Google.Resource.Games.Pushtokens.Remove.PushtokensRemove
instance GHC.Classes.Eq Network.Google.Resource.Games.Pushtokens.Remove.PushtokensRemove
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Pushtokens.Remove.PushtokensRemove


-- | Registers a push token for the current user and application.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.pushtokens.update</tt>.
module Network.Google.Resource.Games.Pushtokens.Update

-- | A resource alias for <tt>games.pushtokens.update</tt> method which the
--   <a>PushtokensUpdate</a> request conforms to.
type PushtokensUpdateResource = "games" :> ("v1" :> ("pushtokens" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PushToken :> Put '[JSON] ())))))

-- | Creates a value of <a>PushtokensUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>puConsistencyToken</a></li>
--   <li><a>puPayload</a></li>
--   </ul>
pushtokensUpdate :: PushToken -> PushtokensUpdate

-- | Registers a push token for the current user and application.
--   
--   <i>See:</i> <a>pushtokensUpdate</a> smart constructor.
data PushtokensUpdate

-- | The last-seen mutation timestamp.
puConsistencyToken :: Lens' PushtokensUpdate (Maybe Int64)

-- | Multipart request metadata.
puPayload :: Lens' PushtokensUpdate PushToken
instance GHC.Generics.Generic Network.Google.Resource.Games.Pushtokens.Update.PushtokensUpdate
instance Data.Data.Data Network.Google.Resource.Games.Pushtokens.Update.PushtokensUpdate
instance GHC.Show.Show Network.Google.Resource.Games.Pushtokens.Update.PushtokensUpdate
instance GHC.Classes.Eq Network.Google.Resource.Games.Pushtokens.Update.PushtokensUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Pushtokens.Update.PushtokensUpdate


-- | Report that a reward for the milestone corresponding to milestoneId
--   for the quest corresponding to questId has been claimed by the
--   currently authorized user.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.questMilestones.claim</tt>.
module Network.Google.Resource.Games.QuestMilestones.Claim

-- | A resource alias for <tt>games.questMilestones.claim</tt> method which
--   the <a>QuestMilestonesClaim</a> request conforms to.
type QuestMilestonesClaimResource = "games" :> ("v1" :> ("quests" :> (Capture "questId" Text :> ("milestones" :> (Capture "milestoneId" Text :> ("claim" :> (QueryParam "requestId" (Textual Int64) :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Put '[JSON] ())))))))))

-- | Creates a value of <a>QuestMilestonesClaim</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qmcRequestId</a></li>
--   <li><a>qmcConsistencyToken</a></li>
--   <li><a>qmcMilestoneId</a></li>
--   <li><a>qmcQuestId</a></li>
--   </ul>
questMilestonesClaim :: Int64 -> Text -> Text -> QuestMilestonesClaim

-- | Report that a reward for the milestone corresponding to milestoneId
--   for the quest corresponding to questId has been claimed by the
--   currently authorized user.
--   
--   <i>See:</i> <a>questMilestonesClaim</a> smart constructor.
data QuestMilestonesClaim

-- | A numeric ID to ensure that the request is handled correctly across
--   retries. Your client application must generate this ID randomly.
qmcRequestId :: Lens' QuestMilestonesClaim Int64

-- | The last-seen mutation timestamp.
qmcConsistencyToken :: Lens' QuestMilestonesClaim (Maybe Int64)

-- | The ID of the milestone.
qmcMilestoneId :: Lens' QuestMilestonesClaim Text

-- | The ID of the quest.
qmcQuestId :: Lens' QuestMilestonesClaim Text
instance GHC.Generics.Generic Network.Google.Resource.Games.QuestMilestones.Claim.QuestMilestonesClaim
instance Data.Data.Data Network.Google.Resource.Games.QuestMilestones.Claim.QuestMilestonesClaim
instance GHC.Show.Show Network.Google.Resource.Games.QuestMilestones.Claim.QuestMilestonesClaim
instance GHC.Classes.Eq Network.Google.Resource.Games.QuestMilestones.Claim.QuestMilestonesClaim
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.QuestMilestones.Claim.QuestMilestonesClaim


-- | Indicates that the currently authorized user will participate in the
--   quest.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.quests.accept</tt>.
module Network.Google.Resource.Games.Quests.Accept

-- | A resource alias for <tt>games.quests.accept</tt> method which the
--   <a>QuestsAccept</a> request conforms to.
type QuestsAcceptResource = "games" :> ("v1" :> ("quests" :> (Capture "questId" Text :> ("accept" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] Quest)))))))

-- | Creates a value of <a>QuestsAccept</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qaConsistencyToken</a></li>
--   <li><a>qaLanguage</a></li>
--   <li><a>qaQuestId</a></li>
--   </ul>
questsAccept :: Text -> QuestsAccept

-- | Indicates that the currently authorized user will participate in the
--   quest.
--   
--   <i>See:</i> <a>questsAccept</a> smart constructor.
data QuestsAccept

-- | The last-seen mutation timestamp.
qaConsistencyToken :: Lens' QuestsAccept (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
qaLanguage :: Lens' QuestsAccept (Maybe Text)

-- | The ID of the quest.
qaQuestId :: Lens' QuestsAccept Text
instance GHC.Generics.Generic Network.Google.Resource.Games.Quests.Accept.QuestsAccept
instance Data.Data.Data Network.Google.Resource.Games.Quests.Accept.QuestsAccept
instance GHC.Show.Show Network.Google.Resource.Games.Quests.Accept.QuestsAccept
instance GHC.Classes.Eq Network.Google.Resource.Games.Quests.Accept.QuestsAccept
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Quests.Accept.QuestsAccept


-- | Get a list of quests for your application and the currently
--   authenticated player.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.quests.list</tt>.
module Network.Google.Resource.Games.Quests.List

-- | A resource alias for <tt>games.quests.list</tt> method which the
--   <a>QuestsList</a> request conforms to.
type QuestsListResource = "games" :> ("v1" :> ("players" :> (Capture "playerId" Text :> ("quests" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] QuestListResponse)))))))))

-- | Creates a value of <a>QuestsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qlConsistencyToken</a></li>
--   <li><a>qlLanguage</a></li>
--   <li><a>qlPageToken</a></li>
--   <li><a>qlPlayerId</a></li>
--   <li><a>qlMaxResults</a></li>
--   </ul>
questsList :: Text -> QuestsList

-- | Get a list of quests for your application and the currently
--   authenticated player.
--   
--   <i>See:</i> <a>questsList</a> smart constructor.
data QuestsList

-- | The last-seen mutation timestamp.
qlConsistencyToken :: Lens' QuestsList (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
qlLanguage :: Lens' QuestsList (Maybe Text)

-- | The token returned by the previous request.
qlPageToken :: Lens' QuestsList (Maybe Text)

-- | A player ID. A value of me may be used in place of the authenticated
--   player's ID.
qlPlayerId :: Lens' QuestsList Text

-- | The maximum number of quest resources to return in the response, used
--   for paging. For any response, the actual number of quest resources
--   returned may be less than the specified maxResults. Acceptable values
--   are 1 to 50, inclusive. (Default: 50).
qlMaxResults :: Lens' QuestsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Quests.List.QuestsList
instance Data.Data.Data Network.Google.Resource.Games.Quests.List.QuestsList
instance GHC.Show.Show Network.Google.Resource.Games.Quests.List.QuestsList
instance GHC.Classes.Eq Network.Google.Resource.Games.Quests.List.QuestsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Quests.List.QuestsList


-- | Checks whether the games client is out of date.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.revisions.check</tt>.
module Network.Google.Resource.Games.Revisions.Check

-- | A resource alias for <tt>games.revisions.check</tt> method which the
--   <a>RevisionsCheck</a> request conforms to.
type RevisionsCheckResource = "games" :> ("v1" :> ("revisions" :> ("check" :> (QueryParam "clientRevision" Text :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Get '[JSON] RevisionCheckResponse))))))

-- | Creates a value of <a>RevisionsCheck</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>revClientRevision</a></li>
--   <li><a>revConsistencyToken</a></li>
--   </ul>
revisionsCheck :: Text -> RevisionsCheck

-- | Checks whether the games client is out of date.
--   
--   <i>See:</i> <a>revisionsCheck</a> smart constructor.
data RevisionsCheck

-- | The revision of the client SDK used by your application. Format:
--   [PLATFORM_TYPE]:[VERSION_NUMBER]. Possible values of PLATFORM_TYPE
--   are: - "ANDROID" - Client is running the Android SDK. - "IOS" - Client
--   is running the iOS SDK. - "WEB_APP" - Client is running as a Web App.
revClientRevision :: Lens' RevisionsCheck Text

-- | The last-seen mutation timestamp.
revConsistencyToken :: Lens' RevisionsCheck (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Games.Revisions.Check.RevisionsCheck
instance Data.Data.Data Network.Google.Resource.Games.Revisions.Check.RevisionsCheck
instance GHC.Show.Show Network.Google.Resource.Games.Revisions.Check.RevisionsCheck
instance GHC.Classes.Eq Network.Google.Resource.Games.Revisions.Check.RevisionsCheck
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Revisions.Check.RevisionsCheck


-- | Create a room. For internal use by the Games SDK only. Calling this
--   method directly is unsupported.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.rooms.create</tt>.
module Network.Google.Resource.Games.Rooms.Create

-- | A resource alias for <tt>games.rooms.create</tt> method which the
--   <a>RoomsCreate</a> request conforms to.
type RoomsCreateResource = "games" :> ("v1" :> ("rooms" :> ("create" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RoomCreateRequest :> Post '[JSON] Room)))))))

-- | Creates a value of <a>RoomsCreate</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcConsistencyToken</a></li>
--   <li><a>rcPayload</a></li>
--   <li><a>rcLanguage</a></li>
--   </ul>
roomsCreate :: RoomCreateRequest -> RoomsCreate

-- | Create a room. For internal use by the Games SDK only. Calling this
--   method directly is unsupported.
--   
--   <i>See:</i> <a>roomsCreate</a> smart constructor.
data RoomsCreate

-- | The last-seen mutation timestamp.
rcConsistencyToken :: Lens' RoomsCreate (Maybe Int64)

-- | Multipart request metadata.
rcPayload :: Lens' RoomsCreate RoomCreateRequest

-- | The preferred language to use for strings returned by this method.
rcLanguage :: Lens' RoomsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Rooms.Create.RoomsCreate
instance Data.Data.Data Network.Google.Resource.Games.Rooms.Create.RoomsCreate
instance GHC.Show.Show Network.Google.Resource.Games.Rooms.Create.RoomsCreate
instance GHC.Classes.Eq Network.Google.Resource.Games.Rooms.Create.RoomsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Rooms.Create.RoomsCreate


-- | Decline an invitation to join a room. For internal use by the Games
--   SDK only. Calling this method directly is unsupported.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.rooms.decline</tt>.
module Network.Google.Resource.Games.Rooms.Decline

-- | A resource alias for <tt>games.rooms.decline</tt> method which the
--   <a>RoomsDecline</a> request conforms to.
type RoomsDeclineResource = "games" :> ("v1" :> ("rooms" :> (Capture "roomId" Text :> ("decline" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] Room)))))))

-- | Creates a value of <a>RoomsDecline</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rooConsistencyToken</a></li>
--   <li><a>rooRoomId</a></li>
--   <li><a>rooLanguage</a></li>
--   </ul>
roomsDecline :: Text -> RoomsDecline

-- | Decline an invitation to join a room. For internal use by the Games
--   SDK only. Calling this method directly is unsupported.
--   
--   <i>See:</i> <a>roomsDecline</a> smart constructor.
data RoomsDecline

-- | The last-seen mutation timestamp.
rooConsistencyToken :: Lens' RoomsDecline (Maybe Int64)

-- | The ID of the room.
rooRoomId :: Lens' RoomsDecline Text

-- | The preferred language to use for strings returned by this method.
rooLanguage :: Lens' RoomsDecline (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Rooms.Decline.RoomsDecline
instance Data.Data.Data Network.Google.Resource.Games.Rooms.Decline.RoomsDecline
instance GHC.Show.Show Network.Google.Resource.Games.Rooms.Decline.RoomsDecline
instance GHC.Classes.Eq Network.Google.Resource.Games.Rooms.Decline.RoomsDecline
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Rooms.Decline.RoomsDecline


-- | Dismiss an invitation to join a room. For internal use by the Games
--   SDK only. Calling this method directly is unsupported.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.rooms.dismiss</tt>.
module Network.Google.Resource.Games.Rooms.Dismiss

-- | A resource alias for <tt>games.rooms.dismiss</tt> method which the
--   <a>RoomsDismiss</a> request conforms to.
type RoomsDismissResource = "games" :> ("v1" :> ("rooms" :> (Capture "roomId" Text :> ("dismiss" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Post '[JSON] ()))))))

-- | Creates a value of <a>RoomsDismiss</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rdConsistencyToken</a></li>
--   <li><a>rdRoomId</a></li>
--   </ul>
roomsDismiss :: Text -> RoomsDismiss

-- | Dismiss an invitation to join a room. For internal use by the Games
--   SDK only. Calling this method directly is unsupported.
--   
--   <i>See:</i> <a>roomsDismiss</a> smart constructor.
data RoomsDismiss

-- | The last-seen mutation timestamp.
rdConsistencyToken :: Lens' RoomsDismiss (Maybe Int64)

-- | The ID of the room.
rdRoomId :: Lens' RoomsDismiss Text
instance GHC.Generics.Generic Network.Google.Resource.Games.Rooms.Dismiss.RoomsDismiss
instance Data.Data.Data Network.Google.Resource.Games.Rooms.Dismiss.RoomsDismiss
instance GHC.Show.Show Network.Google.Resource.Games.Rooms.Dismiss.RoomsDismiss
instance GHC.Classes.Eq Network.Google.Resource.Games.Rooms.Dismiss.RoomsDismiss
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Rooms.Dismiss.RoomsDismiss


-- | Get the data for a room.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.rooms.get</tt>.
module Network.Google.Resource.Games.Rooms.Get

-- | A resource alias for <tt>games.rooms.get</tt> method which the
--   <a>RoomsGet</a> request conforms to.
type RoomsGetResource = "games" :> ("v1" :> ("rooms" :> (Capture "roomId" Text :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Room))))))

-- | Creates a value of <a>RoomsGet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rgConsistencyToken</a></li>
--   <li><a>rgRoomId</a></li>
--   <li><a>rgLanguage</a></li>
--   </ul>
roomsGet :: Text -> RoomsGet

-- | Get the data for a room.
--   
--   <i>See:</i> <a>roomsGet</a> smart constructor.
data RoomsGet

-- | The last-seen mutation timestamp.
rgConsistencyToken :: Lens' RoomsGet (Maybe Int64)

-- | The ID of the room.
rgRoomId :: Lens' RoomsGet Text

-- | The preferred language to use for strings returned by this method.
rgLanguage :: Lens' RoomsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Rooms.Get.RoomsGet
instance Data.Data.Data Network.Google.Resource.Games.Rooms.Get.RoomsGet
instance GHC.Show.Show Network.Google.Resource.Games.Rooms.Get.RoomsGet
instance GHC.Classes.Eq Network.Google.Resource.Games.Rooms.Get.RoomsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Rooms.Get.RoomsGet


-- | Join a room. For internal use by the Games SDK only. Calling this
--   method directly is unsupported.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.rooms.join</tt>.
module Network.Google.Resource.Games.Rooms.Join

-- | A resource alias for <tt>games.rooms.join</tt> method which the
--   <a>RoomsJoin</a> request conforms to.
type RoomsJoinResource = "games" :> ("v1" :> ("rooms" :> (Capture "roomId" Text :> ("join" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RoomJoinRequest :> Post '[JSON] Room))))))))

-- | Creates a value of <a>RoomsJoin</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rjConsistencyToken</a></li>
--   <li><a>rjPayload</a></li>
--   <li><a>rjRoomId</a></li>
--   <li><a>rjLanguage</a></li>
--   </ul>
roomsJoin :: RoomJoinRequest -> Text -> RoomsJoin

-- | Join a room. For internal use by the Games SDK only. Calling this
--   method directly is unsupported.
--   
--   <i>See:</i> <a>roomsJoin</a> smart constructor.
data RoomsJoin

-- | The last-seen mutation timestamp.
rjConsistencyToken :: Lens' RoomsJoin (Maybe Int64)

-- | Multipart request metadata.
rjPayload :: Lens' RoomsJoin RoomJoinRequest

-- | The ID of the room.
rjRoomId :: Lens' RoomsJoin Text

-- | The preferred language to use for strings returned by this method.
rjLanguage :: Lens' RoomsJoin (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Rooms.Join.RoomsJoin
instance Data.Data.Data Network.Google.Resource.Games.Rooms.Join.RoomsJoin
instance GHC.Show.Show Network.Google.Resource.Games.Rooms.Join.RoomsJoin
instance GHC.Classes.Eq Network.Google.Resource.Games.Rooms.Join.RoomsJoin
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Rooms.Join.RoomsJoin


-- | Leave a room. For internal use by the Games SDK only. Calling this
--   method directly is unsupported.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.rooms.leave</tt>.
module Network.Google.Resource.Games.Rooms.Leave

-- | A resource alias for <tt>games.rooms.leave</tt> method which the
--   <a>RoomsLeave</a> request conforms to.
type RoomsLeaveResource = "games" :> ("v1" :> ("rooms" :> (Capture "roomId" Text :> ("leave" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RoomLeaveRequest :> Post '[JSON] Room))))))))

-- | Creates a value of <a>RoomsLeave</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlConsistencyToken</a></li>
--   <li><a>rlPayload</a></li>
--   <li><a>rlRoomId</a></li>
--   <li><a>rlLanguage</a></li>
--   </ul>
roomsLeave :: RoomLeaveRequest -> Text -> RoomsLeave

-- | Leave a room. For internal use by the Games SDK only. Calling this
--   method directly is unsupported.
--   
--   <i>See:</i> <a>roomsLeave</a> smart constructor.
data RoomsLeave

-- | The last-seen mutation timestamp.
rlConsistencyToken :: Lens' RoomsLeave (Maybe Int64)

-- | Multipart request metadata.
rlPayload :: Lens' RoomsLeave RoomLeaveRequest

-- | The ID of the room.
rlRoomId :: Lens' RoomsLeave Text

-- | The preferred language to use for strings returned by this method.
rlLanguage :: Lens' RoomsLeave (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Rooms.Leave.RoomsLeave
instance Data.Data.Data Network.Google.Resource.Games.Rooms.Leave.RoomsLeave
instance GHC.Show.Show Network.Google.Resource.Games.Rooms.Leave.RoomsLeave
instance GHC.Classes.Eq Network.Google.Resource.Games.Rooms.Leave.RoomsLeave
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Rooms.Leave.RoomsLeave


-- | Returns invitations to join rooms.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.rooms.list</tt>.
module Network.Google.Resource.Games.Rooms.List

-- | A resource alias for <tt>games.rooms.list</tt> method which the
--   <a>RoomsList</a> request conforms to.
type RoomsListResource = "games" :> ("v1" :> ("rooms" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] RoomList)))))))

-- | Creates a value of <a>RoomsList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rConsistencyToken</a></li>
--   <li><a>rLanguage</a></li>
--   <li><a>rPageToken</a></li>
--   <li><a>rMaxResults</a></li>
--   </ul>
roomsList :: RoomsList

-- | Returns invitations to join rooms.
--   
--   <i>See:</i> <a>roomsList</a> smart constructor.
data RoomsList

-- | The last-seen mutation timestamp.
rConsistencyToken :: Lens' RoomsList (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
rLanguage :: Lens' RoomsList (Maybe Text)

-- | The token returned by the previous request.
rPageToken :: Lens' RoomsList (Maybe Text)

-- | The maximum number of rooms to return in the response, used for
--   paging. For any response, the actual number of rooms to return may be
--   less than the specified maxResults.
rMaxResults :: Lens' RoomsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Rooms.List.RoomsList
instance Data.Data.Data Network.Google.Resource.Games.Rooms.List.RoomsList
instance GHC.Show.Show Network.Google.Resource.Games.Rooms.List.RoomsList
instance GHC.Classes.Eq Network.Google.Resource.Games.Rooms.List.RoomsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Rooms.List.RoomsList


-- | Updates sent by a client reporting the status of peers in a room. For
--   internal use by the Games SDK only. Calling this method directly is
--   unsupported.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.rooms.reportStatus</tt>.
module Network.Google.Resource.Games.Rooms.ReportStatus

-- | A resource alias for <tt>games.rooms.reportStatus</tt> method which
--   the <a>RoomsReportStatus</a> request conforms to.
type RoomsReportStatusResource = "games" :> ("v1" :> ("rooms" :> (Capture "roomId" Text :> ("reportstatus" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] RoomP2PStatuses :> Post '[JSON] RoomStatus))))))))

-- | Creates a value of <a>RoomsReportStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rrsConsistencyToken</a></li>
--   <li><a>rrsPayload</a></li>
--   <li><a>rrsRoomId</a></li>
--   <li><a>rrsLanguage</a></li>
--   </ul>
roomsReportStatus :: RoomP2PStatuses -> Text -> RoomsReportStatus

-- | Updates sent by a client reporting the status of peers in a room. For
--   internal use by the Games SDK only. Calling this method directly is
--   unsupported.
--   
--   <i>See:</i> <a>roomsReportStatus</a> smart constructor.
data RoomsReportStatus

-- | The last-seen mutation timestamp.
rrsConsistencyToken :: Lens' RoomsReportStatus (Maybe Int64)

-- | Multipart request metadata.
rrsPayload :: Lens' RoomsReportStatus RoomP2PStatuses

-- | The ID of the room.
rrsRoomId :: Lens' RoomsReportStatus Text

-- | The preferred language to use for strings returned by this method.
rrsLanguage :: Lens' RoomsReportStatus (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Rooms.ReportStatus.RoomsReportStatus
instance Data.Data.Data Network.Google.Resource.Games.Rooms.ReportStatus.RoomsReportStatus
instance GHC.Show.Show Network.Google.Resource.Games.Rooms.ReportStatus.RoomsReportStatus
instance GHC.Classes.Eq Network.Google.Resource.Games.Rooms.ReportStatus.RoomsReportStatus
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Rooms.ReportStatus.RoomsReportStatus


-- | Get high scores, and optionally ranks, in leaderboards for the
--   currently authenticated player. For a specific time span,
--   leaderboardId can be set to ALL to retrieve data for all leaderboards
--   in a given time span. NOTE: You cannot ask for 'ALL' leaderboards and
--   'ALL' timeSpans in the same request; only one parameter may be set to
--   'ALL'.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.scores.get</tt>.
module Network.Google.Resource.Games.Scores.Get

-- | A resource alias for <tt>games.scores.get</tt> method which the
--   <a>ScoresGet</a> request conforms to.
type ScoresGetResource = "games" :> ("v1" :> ("players" :> (Capture "playerId" Text :> ("leaderboards" :> (Capture "leaderboardId" Text :> ("scores" :> (Capture "timeSpan" ScoresGetTimeSpan :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "includeRankType" ScoresGetIncludeRankType :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] PlayerLeaderboardScoreListResponse)))))))))))))

-- | Creates a value of <a>ScoresGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sgConsistencyToken</a></li>
--   <li><a>sgTimeSpan</a></li>
--   <li><a>sgLeaderboardId</a></li>
--   <li><a>sgIncludeRankType</a></li>
--   <li><a>sgLanguage</a></li>
--   <li><a>sgPageToken</a></li>
--   <li><a>sgPlayerId</a></li>
--   <li><a>sgMaxResults</a></li>
--   </ul>
scoresGet :: ScoresGetTimeSpan -> Text -> Text -> ScoresGet

-- | Get high scores, and optionally ranks, in leaderboards for the
--   currently authenticated player. For a specific time span,
--   leaderboardId can be set to ALL to retrieve data for all leaderboards
--   in a given time span. NOTE: You cannot ask for 'ALL' leaderboards and
--   'ALL' timeSpans in the same request; only one parameter may be set to
--   'ALL'.
--   
--   <i>See:</i> <a>scoresGet</a> smart constructor.
data ScoresGet

-- | The last-seen mutation timestamp.
sgConsistencyToken :: Lens' ScoresGet (Maybe Int64)

-- | The time span for the scores and ranks you're requesting.
sgTimeSpan :: Lens' ScoresGet ScoresGetTimeSpan

-- | The ID of the leaderboard. Can be set to 'ALL' to retrieve data for
--   all leaderboards for this application.
sgLeaderboardId :: Lens' ScoresGet Text

-- | The types of ranks to return. If the parameter is omitted, no ranks
--   will be returned.
sgIncludeRankType :: Lens' ScoresGet (Maybe ScoresGetIncludeRankType)

-- | The preferred language to use for strings returned by this method.
sgLanguage :: Lens' ScoresGet (Maybe Text)

-- | The token returned by the previous request.
sgPageToken :: Lens' ScoresGet (Maybe Text)

-- | A player ID. A value of me may be used in place of the authenticated
--   player's ID.
sgPlayerId :: Lens' ScoresGet Text

-- | The maximum number of leaderboard scores to return in the response.
--   For any response, the actual number of leaderboard scores returned may
--   be less than the specified maxResults.
sgMaxResults :: Lens' ScoresGet (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Scores.Get.ScoresGet
instance Data.Data.Data Network.Google.Resource.Games.Scores.Get.ScoresGet
instance GHC.Show.Show Network.Google.Resource.Games.Scores.Get.ScoresGet
instance GHC.Classes.Eq Network.Google.Resource.Games.Scores.Get.ScoresGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Scores.Get.ScoresGet


-- | Lists the scores in a leaderboard, starting from the top.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.scores.list</tt>.
module Network.Google.Resource.Games.Scores.List

-- | A resource alias for <tt>games.scores.list</tt> method which the
--   <a>ScoresList</a> request conforms to.
type ScoresListResource = "games" :> ("v1" :> ("leaderboards" :> (Capture "leaderboardId" Text :> ("scores" :> (Capture "collection" ScoresListCollection :> (QueryParam "timeSpan" ScoresListTimeSpan :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] LeaderboardScores)))))))))))

-- | Creates a value of <a>ScoresList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sllConsistencyToken</a></li>
--   <li><a>sllCollection</a></li>
--   <li><a>sllTimeSpan</a></li>
--   <li><a>sllLeaderboardId</a></li>
--   <li><a>sllLanguage</a></li>
--   <li><a>sllPageToken</a></li>
--   <li><a>sllMaxResults</a></li>
--   </ul>
scoresList :: ScoresListCollection -> ScoresListTimeSpan -> Text -> ScoresList

-- | Lists the scores in a leaderboard, starting from the top.
--   
--   <i>See:</i> <a>scoresList</a> smart constructor.
data ScoresList

-- | The last-seen mutation timestamp.
sllConsistencyToken :: Lens' ScoresList (Maybe Int64)

-- | The collection of scores you're requesting.
sllCollection :: Lens' ScoresList ScoresListCollection

-- | The time span for the scores and ranks you're requesting.
sllTimeSpan :: Lens' ScoresList ScoresListTimeSpan

-- | The ID of the leaderboard.
sllLeaderboardId :: Lens' ScoresList Text

-- | The preferred language to use for strings returned by this method.
sllLanguage :: Lens' ScoresList (Maybe Text)

-- | The token returned by the previous request.
sllPageToken :: Lens' ScoresList (Maybe Text)

-- | The maximum number of leaderboard scores to return in the response.
--   For any response, the actual number of leaderboard scores returned may
--   be less than the specified maxResults.
sllMaxResults :: Lens' ScoresList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Scores.List.ScoresList
instance Data.Data.Data Network.Google.Resource.Games.Scores.List.ScoresList
instance GHC.Show.Show Network.Google.Resource.Games.Scores.List.ScoresList
instance GHC.Classes.Eq Network.Google.Resource.Games.Scores.List.ScoresList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Scores.List.ScoresList


-- | Lists the scores in a leaderboard around (and including) a player's
--   score.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.scores.listWindow</tt>.
module Network.Google.Resource.Games.Scores.ListWindow

-- | A resource alias for <tt>games.scores.listWindow</tt> method which the
--   <a>ScoresListWindow</a> request conforms to.
type ScoresListWindowResource = "games" :> ("v1" :> ("leaderboards" :> (Capture "leaderboardId" Text :> ("window" :> (Capture "collection" ScoresListWindowCollection :> (QueryParam "timeSpan" ScoresListWindowTimeSpan :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "returnTopIfAbsent" Bool :> (QueryParam "language" Text :> (QueryParam "resultsAbove" (Textual Int32) :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] LeaderboardScores)))))))))))))

-- | Creates a value of <a>ScoresListWindow</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slwConsistencyToken</a></li>
--   <li><a>slwCollection</a></li>
--   <li><a>slwTimeSpan</a></li>
--   <li><a>slwReturnTopIfAbsent</a></li>
--   <li><a>slwLeaderboardId</a></li>
--   <li><a>slwLanguage</a></li>
--   <li><a>slwResultsAbove</a></li>
--   <li><a>slwPageToken</a></li>
--   <li><a>slwMaxResults</a></li>
--   </ul>
scoresListWindow :: ScoresListWindowCollection -> ScoresListWindowTimeSpan -> Text -> ScoresListWindow

-- | Lists the scores in a leaderboard around (and including) a player's
--   score.
--   
--   <i>See:</i> <a>scoresListWindow</a> smart constructor.
data ScoresListWindow

-- | The last-seen mutation timestamp.
slwConsistencyToken :: Lens' ScoresListWindow (Maybe Int64)

-- | The collection of scores you're requesting.
slwCollection :: Lens' ScoresListWindow ScoresListWindowCollection

-- | The time span for the scores and ranks you're requesting.
slwTimeSpan :: Lens' ScoresListWindow ScoresListWindowTimeSpan

-- | True if the top scores should be returned when the player is not in
--   the leaderboard. Defaults to true.
slwReturnTopIfAbsent :: Lens' ScoresListWindow (Maybe Bool)

-- | The ID of the leaderboard.
slwLeaderboardId :: Lens' ScoresListWindow Text

-- | The preferred language to use for strings returned by this method.
slwLanguage :: Lens' ScoresListWindow (Maybe Text)

-- | The preferred number of scores to return above the player's score.
--   More scores may be returned if the player is at the bottom of the
--   leaderboard; fewer may be returned if the player is at the top. Must
--   be less than or equal to maxResults.
slwResultsAbove :: Lens' ScoresListWindow (Maybe Int32)

-- | The token returned by the previous request.
slwPageToken :: Lens' ScoresListWindow (Maybe Text)

-- | The maximum number of leaderboard scores to return in the response.
--   For any response, the actual number of leaderboard scores returned may
--   be less than the specified maxResults.
slwMaxResults :: Lens' ScoresListWindow (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Scores.ListWindow.ScoresListWindow
instance Data.Data.Data Network.Google.Resource.Games.Scores.ListWindow.ScoresListWindow
instance GHC.Show.Show Network.Google.Resource.Games.Scores.ListWindow.ScoresListWindow
instance GHC.Classes.Eq Network.Google.Resource.Games.Scores.ListWindow.ScoresListWindow
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Scores.ListWindow.ScoresListWindow


-- | Submits a score to the specified leaderboard.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.scores.submit</tt>.
module Network.Google.Resource.Games.Scores.Submit

-- | A resource alias for <tt>games.scores.submit</tt> method which the
--   <a>ScoresSubmit</a> request conforms to.
type ScoresSubmitResource = "games" :> ("v1" :> ("leaderboards" :> (Capture "leaderboardId" Text :> ("scores" :> (QueryParam "score" (Textual Int64) :> (QueryParam "scoreTag" Text :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] PlayerScoreResponse)))))))))

-- | Creates a value of <a>ScoresSubmit</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssScoreTag</a></li>
--   <li><a>ssConsistencyToken</a></li>
--   <li><a>ssScore</a></li>
--   <li><a>ssLeaderboardId</a></li>
--   <li><a>ssLanguage</a></li>
--   </ul>
scoresSubmit :: Int64 -> Text -> ScoresSubmit

-- | Submits a score to the specified leaderboard.
--   
--   <i>See:</i> <a>scoresSubmit</a> smart constructor.
data ScoresSubmit

-- | Additional information about the score you're submitting. Values must
--   contain no more than 64 URI-safe characters as defined by section 2.3
--   of RFC 3986.
ssScoreTag :: Lens' ScoresSubmit (Maybe Text)

-- | The last-seen mutation timestamp.
ssConsistencyToken :: Lens' ScoresSubmit (Maybe Int64)

-- | The score you're submitting. The submitted score is ignored if it is
--   worse than a previously submitted score, where worse depends on the
--   leaderboard sort order. The meaning of the score value depends on the
--   leaderboard format type. For fixed-point, the score represents the raw
--   value. For time, the score represents elapsed time in milliseconds.
--   For currency, the score represents a value in micro units.
ssScore :: Lens' ScoresSubmit Int64

-- | The ID of the leaderboard.
ssLeaderboardId :: Lens' ScoresSubmit Text

-- | The preferred language to use for strings returned by this method.
ssLanguage :: Lens' ScoresSubmit (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Scores.Submit.ScoresSubmit
instance Data.Data.Data Network.Google.Resource.Games.Scores.Submit.ScoresSubmit
instance GHC.Show.Show Network.Google.Resource.Games.Scores.Submit.ScoresSubmit
instance GHC.Classes.Eq Network.Google.Resource.Games.Scores.Submit.ScoresSubmit
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Scores.Submit.ScoresSubmit


-- | Submits multiple scores to leaderboards.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.scores.submitMultiple</tt>.
module Network.Google.Resource.Games.Scores.SubmitMultiple

-- | A resource alias for <tt>games.scores.submitMultiple</tt> method which
--   the <a>ScoresSubmitMultiple</a> request conforms to.
type ScoresSubmitMultipleResource = "games" :> ("v1" :> ("leaderboards" :> ("scores" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] PlayerScoreSubmissionList :> Post '[JSON] PlayerScoreListResponse)))))))

-- | Creates a value of <a>ScoresSubmitMultiple</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssmConsistencyToken</a></li>
--   <li><a>ssmPayload</a></li>
--   <li><a>ssmLanguage</a></li>
--   </ul>
scoresSubmitMultiple :: PlayerScoreSubmissionList -> ScoresSubmitMultiple

-- | Submits multiple scores to leaderboards.
--   
--   <i>See:</i> <a>scoresSubmitMultiple</a> smart constructor.
data ScoresSubmitMultiple

-- | The last-seen mutation timestamp.
ssmConsistencyToken :: Lens' ScoresSubmitMultiple (Maybe Int64)

-- | Multipart request metadata.
ssmPayload :: Lens' ScoresSubmitMultiple PlayerScoreSubmissionList

-- | The preferred language to use for strings returned by this method.
ssmLanguage :: Lens' ScoresSubmitMultiple (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.Scores.SubmitMultiple.ScoresSubmitMultiple
instance Data.Data.Data Network.Google.Resource.Games.Scores.SubmitMultiple.ScoresSubmitMultiple
instance GHC.Show.Show Network.Google.Resource.Games.Scores.SubmitMultiple.ScoresSubmitMultiple
instance GHC.Classes.Eq Network.Google.Resource.Games.Scores.SubmitMultiple.ScoresSubmitMultiple
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Scores.SubmitMultiple.ScoresSubmitMultiple


-- | Retrieves the metadata for a given snapshot ID.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.snapshots.get</tt>.
module Network.Google.Resource.Games.Snapshots.Get

-- | A resource alias for <tt>games.snapshots.get</tt> method which the
--   <a>SnapshotsGet</a> request conforms to.
type SnapshotsGetResource = "games" :> ("v1" :> ("snapshots" :> (Capture "snapshotId" Text :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Snapshot))))))

-- | Creates a value of <a>SnapshotsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sConsistencyToken</a></li>
--   <li><a>sLanguage</a></li>
--   <li><a>sSnapshotId</a></li>
--   </ul>
snapshotsGet :: Text -> SnapshotsGet

-- | Retrieves the metadata for a given snapshot ID.
--   
--   <i>See:</i> <a>snapshotsGet</a> smart constructor.
data SnapshotsGet

-- | The last-seen mutation timestamp.
sConsistencyToken :: Lens' SnapshotsGet (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
sLanguage :: Lens' SnapshotsGet (Maybe Text)

-- | The ID of the snapshot.
sSnapshotId :: Lens' SnapshotsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Games.Snapshots.Get.SnapshotsGet
instance Data.Data.Data Network.Google.Resource.Games.Snapshots.Get.SnapshotsGet
instance GHC.Show.Show Network.Google.Resource.Games.Snapshots.Get.SnapshotsGet
instance GHC.Classes.Eq Network.Google.Resource.Games.Snapshots.Get.SnapshotsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Snapshots.Get.SnapshotsGet


-- | Retrieves a list of snapshots created by your application for the
--   player corresponding to the player ID.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.snapshots.list</tt>.
module Network.Google.Resource.Games.Snapshots.List

-- | A resource alias for <tt>games.snapshots.list</tt> method which the
--   <a>SnapshotsList</a> request conforms to.
type SnapshotsListResource = "games" :> ("v1" :> ("players" :> (Capture "playerId" Text :> ("snapshots" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] SnapshotListResponse)))))))))

-- | Creates a value of <a>SnapshotsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slConsistencyToken</a></li>
--   <li><a>slLanguage</a></li>
--   <li><a>slPageToken</a></li>
--   <li><a>slPlayerId</a></li>
--   <li><a>slMaxResults</a></li>
--   </ul>
snapshotsList :: Text -> SnapshotsList

-- | Retrieves a list of snapshots created by your application for the
--   player corresponding to the player ID.
--   
--   <i>See:</i> <a>snapshotsList</a> smart constructor.
data SnapshotsList

-- | The last-seen mutation timestamp.
slConsistencyToken :: Lens' SnapshotsList (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
slLanguage :: Lens' SnapshotsList (Maybe Text)

-- | The token returned by the previous request.
slPageToken :: Lens' SnapshotsList (Maybe Text)

-- | A player ID. A value of me may be used in place of the authenticated
--   player's ID.
slPlayerId :: Lens' SnapshotsList Text

-- | The maximum number of snapshot resources to return in the response,
--   used for paging. For any response, the actual number of snapshot
--   resources returned may be less than the specified maxResults.
slMaxResults :: Lens' SnapshotsList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.Snapshots.List.SnapshotsList
instance Data.Data.Data Network.Google.Resource.Games.Snapshots.List.SnapshotsList
instance GHC.Show.Show Network.Google.Resource.Games.Snapshots.List.SnapshotsList
instance GHC.Classes.Eq Network.Google.Resource.Games.Snapshots.List.SnapshotsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.Snapshots.List.SnapshotsList


-- | Cancel a turn-based match.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.cancel</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Cancel

-- | A resource alias for <tt>games.turnBasedMatches.cancel</tt> method
--   which the <a>TurnBasedMatchesCancel</a> request conforms to.
type TurnBasedMatchesCancelResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("cancel" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Put '[JSON] ()))))))

-- | Creates a value of <a>TurnBasedMatchesCancel</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tConsistencyToken</a></li>
--   <li><a>tMatchId</a></li>
--   </ul>
turnBasedMatchesCancel :: Text -> TurnBasedMatchesCancel

-- | Cancel a turn-based match.
--   
--   <i>See:</i> <a>turnBasedMatchesCancel</a> smart constructor.
data TurnBasedMatchesCancel

-- | The last-seen mutation timestamp.
tConsistencyToken :: Lens' TurnBasedMatchesCancel (Maybe Int64)

-- | The ID of the match.
tMatchId :: Lens' TurnBasedMatchesCancel Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Cancel.TurnBasedMatchesCancel
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Cancel.TurnBasedMatchesCancel
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Cancel.TurnBasedMatchesCancel
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Cancel.TurnBasedMatchesCancel
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Cancel.TurnBasedMatchesCancel


-- | Create a turn-based match.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.create</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Create

-- | A resource alias for <tt>games.turnBasedMatches.create</tt> method
--   which the <a>TurnBasedMatchesCreate</a> request conforms to.
type TurnBasedMatchesCreateResource = "games" :> ("v1" :> ("turnbasedmatches" :> ("create" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TurnBasedMatchCreateRequest :> Post '[JSON] TurnBasedMatch)))))))

-- | Creates a value of <a>TurnBasedMatchesCreate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmcConsistencyToken</a></li>
--   <li><a>tbmcPayload</a></li>
--   <li><a>tbmcLanguage</a></li>
--   </ul>
turnBasedMatchesCreate :: TurnBasedMatchCreateRequest -> TurnBasedMatchesCreate

-- | Create a turn-based match.
--   
--   <i>See:</i> <a>turnBasedMatchesCreate</a> smart constructor.
data TurnBasedMatchesCreate

-- | The last-seen mutation timestamp.
tbmcConsistencyToken :: Lens' TurnBasedMatchesCreate (Maybe Int64)

-- | Multipart request metadata.
tbmcPayload :: Lens' TurnBasedMatchesCreate TurnBasedMatchCreateRequest

-- | The preferred language to use for strings returned by this method.
tbmcLanguage :: Lens' TurnBasedMatchesCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Create.TurnBasedMatchesCreate
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Create.TurnBasedMatchesCreate
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Create.TurnBasedMatchesCreate
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Create.TurnBasedMatchesCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Create.TurnBasedMatchesCreate


-- | Decline an invitation to play a turn-based match.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.decline</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Decline

-- | A resource alias for <tt>games.turnBasedMatches.decline</tt> method
--   which the <a>TurnBasedMatchesDecline</a> request conforms to.
type TurnBasedMatchesDeclineResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("decline" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Put '[JSON] TurnBasedMatch)))))))

-- | Creates a value of <a>TurnBasedMatchesDecline</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmdConsistencyToken</a></li>
--   <li><a>tbmdLanguage</a></li>
--   <li><a>tbmdMatchId</a></li>
--   </ul>
turnBasedMatchesDecline :: Text -> TurnBasedMatchesDecline

-- | Decline an invitation to play a turn-based match.
--   
--   <i>See:</i> <a>turnBasedMatchesDecline</a> smart constructor.
data TurnBasedMatchesDecline

-- | The last-seen mutation timestamp.
tbmdConsistencyToken :: Lens' TurnBasedMatchesDecline (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
tbmdLanguage :: Lens' TurnBasedMatchesDecline (Maybe Text)

-- | The ID of the match.
tbmdMatchId :: Lens' TurnBasedMatchesDecline Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Decline.TurnBasedMatchesDecline
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Decline.TurnBasedMatchesDecline
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Decline.TurnBasedMatchesDecline
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Decline.TurnBasedMatchesDecline
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Decline.TurnBasedMatchesDecline


-- | Dismiss a turn-based match from the match list. The match will no
--   longer show up in the list and will not generate notifications.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.dismiss</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Dismiss

-- | A resource alias for <tt>games.turnBasedMatches.dismiss</tt> method
--   which the <a>TurnBasedMatchesDismiss</a> request conforms to.
type TurnBasedMatchesDismissResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("dismiss" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "alt" AltJSON :> Put '[JSON] ()))))))

-- | Creates a value of <a>TurnBasedMatchesDismiss</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmdsConsistencyToken</a></li>
--   <li><a>tbmdsMatchId</a></li>
--   </ul>
turnBasedMatchesDismiss :: Text -> TurnBasedMatchesDismiss

-- | Dismiss a turn-based match from the match list. The match will no
--   longer show up in the list and will not generate notifications.
--   
--   <i>See:</i> <a>turnBasedMatchesDismiss</a> smart constructor.
data TurnBasedMatchesDismiss

-- | The last-seen mutation timestamp.
tbmdsConsistencyToken :: Lens' TurnBasedMatchesDismiss (Maybe Int64)

-- | The ID of the match.
tbmdsMatchId :: Lens' TurnBasedMatchesDismiss Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Dismiss.TurnBasedMatchesDismiss
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Dismiss.TurnBasedMatchesDismiss
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Dismiss.TurnBasedMatchesDismiss
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Dismiss.TurnBasedMatchesDismiss
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Dismiss.TurnBasedMatchesDismiss


-- | Finish a turn-based match. Each player should make this call once,
--   after all results are in. Only the player whose turn it is may make
--   the first call to Finish, and can pass in the final match state.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.finish</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Finish

-- | A resource alias for <tt>games.turnBasedMatches.finish</tt> method
--   which the <a>TurnBasedMatchesFinish</a> request conforms to.
type TurnBasedMatchesFinishResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("finish" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TurnBasedMatchResults :> Put '[JSON] TurnBasedMatch))))))))

-- | Creates a value of <a>TurnBasedMatchesFinish</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmfConsistencyToken</a></li>
--   <li><a>tbmfPayload</a></li>
--   <li><a>tbmfLanguage</a></li>
--   <li><a>tbmfMatchId</a></li>
--   </ul>
turnBasedMatchesFinish :: TurnBasedMatchResults -> Text -> TurnBasedMatchesFinish

-- | Finish a turn-based match. Each player should make this call once,
--   after all results are in. Only the player whose turn it is may make
--   the first call to Finish, and can pass in the final match state.
--   
--   <i>See:</i> <a>turnBasedMatchesFinish</a> smart constructor.
data TurnBasedMatchesFinish

-- | The last-seen mutation timestamp.
tbmfConsistencyToken :: Lens' TurnBasedMatchesFinish (Maybe Int64)

-- | Multipart request metadata.
tbmfPayload :: Lens' TurnBasedMatchesFinish TurnBasedMatchResults

-- | The preferred language to use for strings returned by this method.
tbmfLanguage :: Lens' TurnBasedMatchesFinish (Maybe Text)

-- | The ID of the match.
tbmfMatchId :: Lens' TurnBasedMatchesFinish Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Finish.TurnBasedMatchesFinish
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Finish.TurnBasedMatchesFinish
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Finish.TurnBasedMatchesFinish
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Finish.TurnBasedMatchesFinish
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Finish.TurnBasedMatchesFinish


-- | Get the data for a turn-based match.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.get</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Get

-- | A resource alias for <tt>games.turnBasedMatches.get</tt> method which
--   the <a>TurnBasedMatchesGet</a> request conforms to.
type TurnBasedMatchesGetResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "includeMatchData" Bool :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] TurnBasedMatch)))))))

-- | Creates a value of <a>TurnBasedMatchesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmgConsistencyToken</a></li>
--   <li><a>tbmgIncludeMatchData</a></li>
--   <li><a>tbmgLanguage</a></li>
--   <li><a>tbmgMatchId</a></li>
--   </ul>
turnBasedMatchesGet :: Text -> TurnBasedMatchesGet

-- | Get the data for a turn-based match.
--   
--   <i>See:</i> <a>turnBasedMatchesGet</a> smart constructor.
data TurnBasedMatchesGet

-- | The last-seen mutation timestamp.
tbmgConsistencyToken :: Lens' TurnBasedMatchesGet (Maybe Int64)

-- | Get match data along with metadata.
tbmgIncludeMatchData :: Lens' TurnBasedMatchesGet (Maybe Bool)

-- | The preferred language to use for strings returned by this method.
tbmgLanguage :: Lens' TurnBasedMatchesGet (Maybe Text)

-- | The ID of the match.
tbmgMatchId :: Lens' TurnBasedMatchesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Get.TurnBasedMatchesGet
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Get.TurnBasedMatchesGet
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Get.TurnBasedMatchesGet
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Get.TurnBasedMatchesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Get.TurnBasedMatchesGet


-- | Join a turn-based match.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.join</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Join

-- | A resource alias for <tt>games.turnBasedMatches.join</tt> method which
--   the <a>TurnBasedMatchesJoin</a> request conforms to.
type TurnBasedMatchesJoinResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("join" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Put '[JSON] TurnBasedMatch)))))))

-- | Creates a value of <a>TurnBasedMatchesJoin</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmjConsistencyToken</a></li>
--   <li><a>tbmjLanguage</a></li>
--   <li><a>tbmjMatchId</a></li>
--   </ul>
turnBasedMatchesJoin :: Text -> TurnBasedMatchesJoin

-- | Join a turn-based match.
--   
--   <i>See:</i> <a>turnBasedMatchesJoin</a> smart constructor.
data TurnBasedMatchesJoin

-- | The last-seen mutation timestamp.
tbmjConsistencyToken :: Lens' TurnBasedMatchesJoin (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
tbmjLanguage :: Lens' TurnBasedMatchesJoin (Maybe Text)

-- | The ID of the match.
tbmjMatchId :: Lens' TurnBasedMatchesJoin Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Join.TurnBasedMatchesJoin
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Join.TurnBasedMatchesJoin
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Join.TurnBasedMatchesJoin
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Join.TurnBasedMatchesJoin
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Join.TurnBasedMatchesJoin


-- | Leave a turn-based match when it is not the current player's turn,
--   without canceling the match.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.leave</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Leave

-- | A resource alias for <tt>games.turnBasedMatches.leave</tt> method
--   which the <a>TurnBasedMatchesLeave</a> request conforms to.
type TurnBasedMatchesLeaveResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("leave" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Put '[JSON] TurnBasedMatch)))))))

-- | Creates a value of <a>TurnBasedMatchesLeave</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmlConsistencyToken</a></li>
--   <li><a>tbmlLanguage</a></li>
--   <li><a>tbmlMatchId</a></li>
--   </ul>
turnBasedMatchesLeave :: Text -> TurnBasedMatchesLeave

-- | Leave a turn-based match when it is not the current player's turn,
--   without canceling the match.
--   
--   <i>See:</i> <a>turnBasedMatchesLeave</a> smart constructor.
data TurnBasedMatchesLeave

-- | The last-seen mutation timestamp.
tbmlConsistencyToken :: Lens' TurnBasedMatchesLeave (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
tbmlLanguage :: Lens' TurnBasedMatchesLeave (Maybe Text)

-- | The ID of the match.
tbmlMatchId :: Lens' TurnBasedMatchesLeave Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Leave.TurnBasedMatchesLeave
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Leave.TurnBasedMatchesLeave
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Leave.TurnBasedMatchesLeave
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Leave.TurnBasedMatchesLeave
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Leave.TurnBasedMatchesLeave


-- | Leave a turn-based match during the current player's turn, without
--   canceling the match.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.leaveTurn</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.LeaveTurn

-- | A resource alias for <tt>games.turnBasedMatches.leaveTurn</tt> method
--   which the <a>TurnBasedMatchesLeaveTurn</a> request conforms to.
type TurnBasedMatchesLeaveTurnResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("leaveTurn" :> (QueryParam "matchVersion" (Textual Int32) :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "pendingParticipantId" Text :> (QueryParam "alt" AltJSON :> Put '[JSON] TurnBasedMatch)))))))))

-- | Creates a value of <a>TurnBasedMatchesLeaveTurn</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmltConsistencyToken</a></li>
--   <li><a>tbmltLanguage</a></li>
--   <li><a>tbmltPendingParticipantId</a></li>
--   <li><a>tbmltMatchId</a></li>
--   <li><a>tbmltMatchVersion</a></li>
--   </ul>
turnBasedMatchesLeaveTurn :: Text -> Int32 -> TurnBasedMatchesLeaveTurn

-- | Leave a turn-based match during the current player's turn, without
--   canceling the match.
--   
--   <i>See:</i> <a>turnBasedMatchesLeaveTurn</a> smart constructor.
data TurnBasedMatchesLeaveTurn

-- | The last-seen mutation timestamp.
tbmltConsistencyToken :: Lens' TurnBasedMatchesLeaveTurn (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
tbmltLanguage :: Lens' TurnBasedMatchesLeaveTurn (Maybe Text)

-- | The ID of another participant who should take their turn next. If not
--   set, the match will wait for other player(s) to join via automatching;
--   this is only valid if automatch criteria is set on the match with
--   remaining slots for automatched players.
tbmltPendingParticipantId :: Lens' TurnBasedMatchesLeaveTurn (Maybe Text)

-- | The ID of the match.
tbmltMatchId :: Lens' TurnBasedMatchesLeaveTurn Text

-- | The version of the match being updated.
tbmltMatchVersion :: Lens' TurnBasedMatchesLeaveTurn Int32
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.LeaveTurn.TurnBasedMatchesLeaveTurn
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.LeaveTurn.TurnBasedMatchesLeaveTurn
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.LeaveTurn.TurnBasedMatchesLeaveTurn
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.LeaveTurn.TurnBasedMatchesLeaveTurn
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.LeaveTurn.TurnBasedMatchesLeaveTurn


-- | Returns turn-based matches the player is or was involved in.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.list</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.List

-- | A resource alias for <tt>games.turnBasedMatches.list</tt> method which
--   the <a>TurnBasedMatchesList</a> request conforms to.
type TurnBasedMatchesListResource = "games" :> ("v1" :> ("turnbasedmatches" :> (QueryParam "maxCompletedMatches" (Textual Int32) :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "includeMatchData" Bool :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TurnBasedMatchList)))))))))

-- | Creates a value of <a>TurnBasedMatchesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>turMaxCompletedMatches</a></li>
--   <li><a>turConsistencyToken</a></li>
--   <li><a>turIncludeMatchData</a></li>
--   <li><a>turLanguage</a></li>
--   <li><a>turPageToken</a></li>
--   <li><a>turMaxResults</a></li>
--   </ul>
turnBasedMatchesList :: TurnBasedMatchesList

-- | Returns turn-based matches the player is or was involved in.
--   
--   <i>See:</i> <a>turnBasedMatchesList</a> smart constructor.
data TurnBasedMatchesList

-- | The maximum number of completed or canceled matches to return in the
--   response. If not set, all matches returned could be completed or
--   canceled.
turMaxCompletedMatches :: Lens' TurnBasedMatchesList (Maybe Int32)

-- | The last-seen mutation timestamp.
turConsistencyToken :: Lens' TurnBasedMatchesList (Maybe Int64)

-- | True if match data should be returned in the response. Note that not
--   all data will necessarily be returned if include_match_data is true;
--   the server may decide to only return data for some of the matches to
--   limit download size for the client. The remainder of the data for
--   these matches will be retrievable on request.
turIncludeMatchData :: Lens' TurnBasedMatchesList (Maybe Bool)

-- | The preferred language to use for strings returned by this method.
turLanguage :: Lens' TurnBasedMatchesList (Maybe Text)

-- | The token returned by the previous request.
turPageToken :: Lens' TurnBasedMatchesList (Maybe Text)

-- | The maximum number of matches to return in the response, used for
--   paging. For any response, the actual number of matches to return may
--   be less than the specified maxResults.
turMaxResults :: Lens' TurnBasedMatchesList (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.List.TurnBasedMatchesList
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.List.TurnBasedMatchesList
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.List.TurnBasedMatchesList
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.List.TurnBasedMatchesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.List.TurnBasedMatchesList


-- | Create a rematch of a match that was previously completed, with the
--   same participants. This can be called by only one player on a match
--   still in their list; the player must have called Finish first. Returns
--   the newly created match; it will be the caller's turn.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.rematch</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Rematch

-- | A resource alias for <tt>games.turnBasedMatches.rematch</tt> method
--   which the <a>TurnBasedMatchesRematch</a> request conforms to.
type TurnBasedMatchesRematchResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("rematch" :> (QueryParam "requestId" (Textual Int64) :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] TurnBasedMatchRematch))))))))

-- | Creates a value of <a>TurnBasedMatchesRematch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmrRequestId</a></li>
--   <li><a>tbmrConsistencyToken</a></li>
--   <li><a>tbmrLanguage</a></li>
--   <li><a>tbmrMatchId</a></li>
--   </ul>
turnBasedMatchesRematch :: Text -> TurnBasedMatchesRematch

-- | Create a rematch of a match that was previously completed, with the
--   same participants. This can be called by only one player on a match
--   still in their list; the player must have called Finish first. Returns
--   the newly created match; it will be the caller's turn.
--   
--   <i>See:</i> <a>turnBasedMatchesRematch</a> smart constructor.
data TurnBasedMatchesRematch

-- | A randomly generated numeric ID for each request specified by the
--   caller. This number is used at the server to ensure that the request
--   is handled correctly across retries.
tbmrRequestId :: Lens' TurnBasedMatchesRematch (Maybe Int64)

-- | The last-seen mutation timestamp.
tbmrConsistencyToken :: Lens' TurnBasedMatchesRematch (Maybe Int64)

-- | The preferred language to use for strings returned by this method.
tbmrLanguage :: Lens' TurnBasedMatchesRematch (Maybe Text)

-- | The ID of the match.
tbmrMatchId :: Lens' TurnBasedMatchesRematch Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Rematch.TurnBasedMatchesRematch
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Rematch.TurnBasedMatchesRematch
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Rematch.TurnBasedMatchesRematch
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Rematch.TurnBasedMatchesRematch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Rematch.TurnBasedMatchesRematch


-- | Returns turn-based matches the player is or was involved in that
--   changed since the last sync call, with the least recent changes coming
--   first. Matches that should be removed from the local cache will have a
--   status of MATCH_DELETED.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.sync</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.Sync

-- | A resource alias for <tt>games.turnBasedMatches.sync</tt> method which
--   the <a>TurnBasedMatchesSync</a> request conforms to.
type TurnBasedMatchesSyncResource = "games" :> ("v1" :> ("turnbasedmatches" :> ("sync" :> (QueryParam "maxCompletedMatches" (Textual Int32) :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "includeMatchData" Bool :> (QueryParam "language" Text :> (QueryParam "pageToken" Text :> (QueryParam "maxResults" (Textual Int32) :> (QueryParam "alt" AltJSON :> Get '[JSON] TurnBasedMatchSync))))))))))

-- | Creates a value of <a>TurnBasedMatchesSync</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmsMaxCompletedMatches</a></li>
--   <li><a>tbmsConsistencyToken</a></li>
--   <li><a>tbmsIncludeMatchData</a></li>
--   <li><a>tbmsLanguage</a></li>
--   <li><a>tbmsPageToken</a></li>
--   <li><a>tbmsMaxResults</a></li>
--   </ul>
turnBasedMatchesSync :: TurnBasedMatchesSync

-- | Returns turn-based matches the player is or was involved in that
--   changed since the last sync call, with the least recent changes coming
--   first. Matches that should be removed from the local cache will have a
--   status of MATCH_DELETED.
--   
--   <i>See:</i> <a>turnBasedMatchesSync</a> smart constructor.
data TurnBasedMatchesSync

-- | The maximum number of completed or canceled matches to return in the
--   response. If not set, all matches returned could be completed or
--   canceled.
tbmsMaxCompletedMatches :: Lens' TurnBasedMatchesSync (Maybe Int32)

-- | The last-seen mutation timestamp.
tbmsConsistencyToken :: Lens' TurnBasedMatchesSync (Maybe Int64)

-- | True if match data should be returned in the response. Note that not
--   all data will necessarily be returned if include_match_data is true;
--   the server may decide to only return data for some of the matches to
--   limit download size for the client. The remainder of the data for
--   these matches will be retrievable on request.
tbmsIncludeMatchData :: Lens' TurnBasedMatchesSync (Maybe Bool)

-- | The preferred language to use for strings returned by this method.
tbmsLanguage :: Lens' TurnBasedMatchesSync (Maybe Text)

-- | The token returned by the previous request.
tbmsPageToken :: Lens' TurnBasedMatchesSync (Maybe Text)

-- | The maximum number of matches to return in the response, used for
--   paging. For any response, the actual number of matches to return may
--   be less than the specified maxResults.
tbmsMaxResults :: Lens' TurnBasedMatchesSync (Maybe Int32)
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.Sync.TurnBasedMatchesSync
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.Sync.TurnBasedMatchesSync
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.Sync.TurnBasedMatchesSync
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.Sync.TurnBasedMatchesSync
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.Sync.TurnBasedMatchesSync


-- | Commit the results of a player turn.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a> for
--   <tt>games.turnBasedMatches.takeTurn</tt>.
module Network.Google.Resource.Games.TurnBasedMatches.TakeTurn

-- | A resource alias for <tt>games.turnBasedMatches.takeTurn</tt> method
--   which the <a>TurnBasedMatchesTakeTurn</a> request conforms to.
type TurnBasedMatchesTakeTurnResource = "games" :> ("v1" :> ("turnbasedmatches" :> (Capture "matchId" Text :> ("turn" :> (QueryParam "consistencyToken" (Textual Int64) :> (QueryParam "language" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TurnBasedMatchTurn :> Put '[JSON] TurnBasedMatch))))))))

-- | Creates a value of <a>TurnBasedMatchesTakeTurn</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmttConsistencyToken</a></li>
--   <li><a>tbmttPayload</a></li>
--   <li><a>tbmttLanguage</a></li>
--   <li><a>tbmttMatchId</a></li>
--   </ul>
turnBasedMatchesTakeTurn :: TurnBasedMatchTurn -> Text -> TurnBasedMatchesTakeTurn

-- | Commit the results of a player turn.
--   
--   <i>See:</i> <a>turnBasedMatchesTakeTurn</a> smart constructor.
data TurnBasedMatchesTakeTurn

-- | The last-seen mutation timestamp.
tbmttConsistencyToken :: Lens' TurnBasedMatchesTakeTurn (Maybe Int64)

-- | Multipart request metadata.
tbmttPayload :: Lens' TurnBasedMatchesTakeTurn TurnBasedMatchTurn

-- | The preferred language to use for strings returned by this method.
tbmttLanguage :: Lens' TurnBasedMatchesTakeTurn (Maybe Text)

-- | The ID of the match.
tbmttMatchId :: Lens' TurnBasedMatchesTakeTurn Text
instance GHC.Generics.Generic Network.Google.Resource.Games.TurnBasedMatches.TakeTurn.TurnBasedMatchesTakeTurn
instance Data.Data.Data Network.Google.Resource.Games.TurnBasedMatches.TakeTurn.TurnBasedMatchesTakeTurn
instance GHC.Show.Show Network.Google.Resource.Games.TurnBasedMatches.TakeTurn.TurnBasedMatchesTakeTurn
instance GHC.Classes.Eq Network.Google.Resource.Games.TurnBasedMatches.TakeTurn.TurnBasedMatchesTakeTurn
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Games.TurnBasedMatches.TakeTurn.TurnBasedMatchesTakeTurn


-- | The API for Google Play Game Services.
--   
--   <i>See:</i> <a>Google Play Game Services API Reference</a>
module Network.Google.Games

-- | Default request referring to version <tt>v1</tt> of the Google Play
--   Game Services API. This contains the host and root path used as a
--   starting point for constructing service requests.
gamesService :: ServiceConfig

-- | Know the list of people in your circles, your age range, and language
plusLoginScope :: Proxy '["https://www.googleapis.com/auth/plus.login"]

-- | Share your Google+ profile information and view and manage your game
--   activity
gamesScope :: Proxy '["https://www.googleapis.com/auth/games"]

-- | View and manage its own configuration data in your Google Drive
driveAppDataScope :: Proxy '["https://www.googleapis.com/auth/drive.appdata"]

-- | Represents the entirety of the methods and resources available for the
--   Google Play Game Services API service.
type GamesAPI = RoomsListResource :<|> (RoomsJoinResource :<|> (RoomsGetResource :<|> (RoomsCreateResource :<|> (RoomsDeclineResource :<|> (RoomsDismissResource :<|> (RoomsReportStatusResource :<|> (RoomsLeaveResource :<|> (LeaderboardsListResource :<|> (LeaderboardsGetResource :<|> (MetagameListCategoriesByPlayerResource :<|> (MetagameGetMetagameConfigResource :<|> (QuestMilestonesClaimResource :<|> (AchievementDefinitionsListResource :<|> (AchievementsListResource :<|> (AchievementsUnlockResource :<|> (AchievementsRevealResource :<|> (AchievementsSetStepsAtLeastResource :<|> (AchievementsUpdateMultipleResource :<|> (AchievementsIncrementResource :<|> (SnapshotsListResource :<|> (SnapshotsGetResource :<|> (EventsListDefinitionsResource :<|> (EventsListByPlayerResource :<|> (EventsRecordResource :<|> (QuestsListResource :<|> (QuestsAcceptResource :<|> (PlayersListResource :<|> (PlayersGetResource :<|> (RevisionsCheckResource :<|> (ScoresListResource :<|> (ScoresGetResource :<|> (ScoresSubmitResource :<|> (ScoresSubmitMultipleResource :<|> (ScoresListWindowResource :<|> (PushtokensRemoveResource :<|> (PushtokensUpdateResource :<|> (TurnBasedMatchesRematchResource :<|> (TurnBasedMatchesListResource :<|> (TurnBasedMatchesJoinResource :<|> (TurnBasedMatchesFinishResource :<|> (TurnBasedMatchesTakeTurnResource :<|> (TurnBasedMatchesLeaveTurnResource :<|> (TurnBasedMatchesGetResource :<|> (TurnBasedMatchesCreateResource :<|> (TurnBasedMatchesDeclineResource :<|> (TurnBasedMatchesSyncResource :<|> (TurnBasedMatchesDismissResource :<|> (TurnBasedMatchesLeaveResource :<|> (TurnBasedMatchesCancelResource :<|> (ApplicationsVerifyResource :<|> (ApplicationsGetResource :<|> ApplicationsPlayedResource)))))))))))))))))))))))))))))))))))))))))))))))))))

-- | Collection of players being retrieved
data PlayersListCollection

-- | <tt>played_with</tt> Retrieve a list of players you have played a
--   multiplayer game (realtime or turn-based) with recently.
PlayedWith :: PlayersListCollection

-- | This is a JSON template for a join room request.
--   
--   <i>See:</i> <a>roomJoinRequest</a> smart constructor.
data RoomJoinRequest

-- | Creates a value of <a>RoomJoinRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rjrNetworkDiagnostics</a></li>
--   <li><a>rjrKind</a></li>
--   <li><a>rjrClientAddress</a></li>
--   <li><a>rjrCapabilities</a></li>
--   </ul>
roomJoinRequest :: RoomJoinRequest

-- | Network diagnostics for the client joining the room.
rjrNetworkDiagnostics :: Lens' RoomJoinRequest (Maybe NetworkDiagnostics)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomJoinRequest.
rjrKind :: Lens' RoomJoinRequest Text

-- | Client address for the player joining the room.
rjrClientAddress :: Lens' RoomJoinRequest (Maybe RoomClientAddress)

-- | The capabilities that this client supports for realtime communication.
rjrCapabilities :: Lens' RoomJoinRequest [Text]

-- | An object representation of the individual components of the player's
--   name. For some players, these fields may not be present.
--   
--   <i>See:</i> <a>playerName</a> smart constructor.
data PlayerName

-- | Creates a value of <a>PlayerName</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pnGivenName</a></li>
--   <li><a>pnFamilyName</a></li>
--   </ul>
playerName :: PlayerName

-- | The given name of this player. In some places, this is known as the
--   first name.
pnGivenName :: Lens' PlayerName (Maybe Text)

-- | The family name of this player. In some places, this is known as the
--   last name.
pnFamilyName :: Lens' PlayerName (Maybe Text)

-- | This is a JSON template for an snapshot object.
--   
--   <i>See:</i> <a>snapshot</a> smart constructor.
data Snapshot

-- | Creates a value of <a>Snapshot</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sLastModifiedMillis</a></li>
--   <li><a>sKind</a></li>
--   <li><a>sProgressValue</a></li>
--   <li><a>sUniqueName</a></li>
--   <li><a>sCoverImage</a></li>
--   <li><a>sId</a></li>
--   <li><a>sDurationMillis</a></li>
--   <li><a>sTitle</a></li>
--   <li><a>sType</a></li>
--   <li><a>sDescription</a></li>
--   <li><a>sDriveId</a></li>
--   </ul>
snapshot :: Snapshot

-- | The timestamp (in millis since Unix epoch) of the last modification to
--   this snapshot.
sLastModifiedMillis :: Lens' Snapshot (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#snapshot.
sKind :: Lens' Snapshot Text

-- | The progress value (64-bit integer set by developer) associated with
--   this snapshot.
sProgressValue :: Lens' Snapshot (Maybe Int64)

-- | The unique name provided when the snapshot was created.
sUniqueName :: Lens' Snapshot (Maybe Text)

-- | The cover image of this snapshot. May be absent if there is no image.
sCoverImage :: Lens' Snapshot (Maybe SnapshotImage)

-- | The ID of the snapshot.
sId :: Lens' Snapshot (Maybe Text)

-- | The duration associated with this snapshot, in millis.
sDurationMillis :: Lens' Snapshot (Maybe Int64)

-- | The title of this snapshot.
sTitle :: Lens' Snapshot (Maybe Text)

-- | The type of this snapshot. Possible values are: - "SAVE_GAME" - A
--   snapshot representing a save game.
sType :: Lens' Snapshot (Maybe Text)

-- | The description of this snapshot.
sDescription :: Lens' Snapshot (Maybe Text)

-- | The ID of the file underlying this snapshot in the Drive API. Only
--   present if the snapshot is a view on a Drive file and the file is
--   owned by the caller.
sDriveId :: Lens' Snapshot (Maybe Text)

-- | This is a JSON template for a room resource object.
--   
--   <i>See:</i> <a>room</a> smart constructor.
data Room

-- | Creates a value of <a>Room</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rStatus</a></li>
--   <li><a>rVariant</a></li>
--   <li><a>rKind</a></li>
--   <li><a>rAutoMatchingStatus</a></li>
--   <li><a>rCreationDetails</a></li>
--   <li><a>rInviterId</a></li>
--   <li><a>rLastUpdateDetails</a></li>
--   <li><a>rRoomStatusVersion</a></li>
--   <li><a>rParticipants</a></li>
--   <li><a>rApplicationId</a></li>
--   <li><a>rAutoMatchingCriteria</a></li>
--   <li><a>rRoomId</a></li>
--   <li><a>rDescription</a></li>
--   </ul>
room :: Room

-- | The status of the room. Possible values are: - "ROOM_INVITING" - One
--   or more players have been invited and not responded. -
--   "ROOM_AUTO_MATCHING" - One or more slots need to be filled by
--   auto-matching. - "ROOM_CONNECTING" - Players have joined and are
--   connecting to each other (either before or after auto-matching). -
--   "ROOM_ACTIVE" - All players have joined and connected to each other. -
--   "ROOM_DELETED" - The room should no longer be shown on the client.
--   Returned in sync calls when a player joins a room (as a tombstone), or
--   for rooms where all joined participants have left.
rStatus :: Lens' Room (Maybe Text)

-- | The variant / mode of the application being played; can be any integer
--   value, or left blank.
rVariant :: Lens' Room (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#room.
rKind :: Lens' Room Text

-- | Auto-matching status for this room. Not set if the room is not
--   currently in the auto-matching queue.
rAutoMatchingStatus :: Lens' Room (Maybe RoomAutoMatchStatus)

-- | Details about the room creation.
rCreationDetails :: Lens' Room (Maybe RoomModification)

-- | The ID of the participant that invited the user to the room. Not set
--   if the user was not invited to the room.
rInviterId :: Lens' Room (Maybe Text)

-- | Details about the last update to the room.
rLastUpdateDetails :: Lens' Room (Maybe RoomModification)

-- | The version of the room status: an increasing counter, used by the
--   client to ignore out-of-order updates to room status.
rRoomStatusVersion :: Lens' Room (Maybe Int32)

-- | The participants involved in the room, along with their statuses.
--   Includes participants who have left or declined invitations.
rParticipants :: Lens' Room [RoomParticipant]

-- | The ID of the application being played.
rApplicationId :: Lens' Room (Maybe Text)

-- | Criteria for auto-matching players into this room.
rAutoMatchingCriteria :: Lens' Room (Maybe RoomAutoMatchingCriteria)

-- | Globally unique ID for a room.
rRoomId :: Lens' Room (Maybe Text)

-- | This short description is generated by our servers and worded relative
--   to the player requesting the room. It is intended to be displayed when
--   the room is shown in a list (that is, an invitation to a room.)
rDescription :: Lens' Room (Maybe Text)

-- | This is a JSON template for a list of quest objects.
--   
--   <i>See:</i> <a>questListResponse</a> smart constructor.
data QuestListResponse

-- | Creates a value of <a>QuestListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qlrNextPageToken</a></li>
--   <li><a>qlrKind</a></li>
--   <li><a>qlrItems</a></li>
--   </ul>
questListResponse :: QuestListResponse

-- | Token corresponding to the next page of results.
qlrNextPageToken :: Lens' QuestListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#questListResponse.
qlrKind :: Lens' QuestListResponse Text

-- | The quests.
qlrItems :: Lens' QuestListResponse [Quest]

-- | This is a JSON template for a turn-based match resource object.
--   
--   <i>See:</i> <a>turnBasedMatch</a> smart constructor.
data TurnBasedMatch

-- | Creates a value of <a>TurnBasedMatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmStatus</a></li>
--   <li><a>tbmVariant</a></li>
--   <li><a>tbmResults</a></li>
--   <li><a>tbmMatchNumber</a></li>
--   <li><a>tbmKind</a></li>
--   <li><a>tbmData</a></li>
--   <li><a>tbmWithParticipantId</a></li>
--   <li><a>tbmCreationDetails</a></li>
--   <li><a>tbmInviterId</a></li>
--   <li><a>tbmLastUpdateDetails</a></li>
--   <li><a>tbmParticipants</a></li>
--   <li><a>tbmApplicationId</a></li>
--   <li><a>tbmAutoMatchingCriteria</a></li>
--   <li><a>tbmPreviousMatchData</a></li>
--   <li><a>tbmPendingParticipantId</a></li>
--   <li><a>tbmUserMatchStatus</a></li>
--   <li><a>tbmMatchId</a></li>
--   <li><a>tbmDescription</a></li>
--   <li><a>tbmRematchId</a></li>
--   <li><a>tbmMatchVersion</a></li>
--   </ul>
turnBasedMatch :: TurnBasedMatch

-- | The status of the match. Possible values are: - "MATCH_AUTO_MATCHING"
--   - One or more slots need to be filled by auto-matching; the match
--   cannot be established until they are filled. - "MATCH_ACTIVE" - The
--   match has started. - "MATCH_COMPLETE" - The match has finished. -
--   "MATCH_CANCELED" - The match was canceled. - "MATCH_EXPIRED" - The
--   match expired due to inactivity. - "MATCH_DELETED" - The match should
--   no longer be shown on the client. Returned only for tombstones for
--   matches when sync is called.
tbmStatus :: Lens' TurnBasedMatch (Maybe Text)

-- | The variant / mode of the application being played; can be any integer
--   value, or left blank.
tbmVariant :: Lens' TurnBasedMatch (Maybe Int32)

-- | The results reported for this match.
tbmResults :: Lens' TurnBasedMatch [ParticipantResult]

-- | The number of the match in a chain of rematches. Will be set to 1 for
--   the first match and incremented by 1 for each rematch.
tbmMatchNumber :: Lens' TurnBasedMatch (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatch.
tbmKind :: Lens' TurnBasedMatch Text

-- | The data / game state for this match.
tbmData :: Lens' TurnBasedMatch (Maybe TurnBasedMatchData)

-- | The ID of another participant in the match that can be used when
--   describing the participants the user is playing with.
tbmWithParticipantId :: Lens' TurnBasedMatch (Maybe Text)

-- | Details about the match creation.
tbmCreationDetails :: Lens' TurnBasedMatch (Maybe TurnBasedMatchModification)

-- | The ID of the participant that invited the user to the match. Not set
--   if the user was not invited to the match.
tbmInviterId :: Lens' TurnBasedMatch (Maybe Text)

-- | Details about the last update to the match.
tbmLastUpdateDetails :: Lens' TurnBasedMatch (Maybe TurnBasedMatchModification)

-- | The participants involved in the match, along with their statuses.
--   Includes participants who have left or declined invitations.
tbmParticipants :: Lens' TurnBasedMatch [TurnBasedMatchParticipant]

-- | The ID of the application being played.
tbmApplicationId :: Lens' TurnBasedMatch (Maybe Text)

-- | Criteria for auto-matching players into this match.
tbmAutoMatchingCriteria :: Lens' TurnBasedMatch (Maybe TurnBasedAutoMatchingCriteria)

-- | The data / game state for the previous match; set for the first turn
--   of rematches only.
tbmPreviousMatchData :: Lens' TurnBasedMatch (Maybe TurnBasedMatchData)

-- | The ID of the participant that is taking a turn.
tbmPendingParticipantId :: Lens' TurnBasedMatch (Maybe Text)

-- | The status of the current user in the match. Derived from the match
--   type, match status, the user's participant status, and the pending
--   participant for the match. Possible values are: - "USER_INVITED" - The
--   user has been invited to join the match and has not responded yet. -
--   "USER_AWAITING_TURN" - The user is waiting for their turn. -
--   "USER_TURN" - The user has an action to take in the match. -
--   "USER_MATCH_COMPLETED" - The match has ended (it is completed,
--   canceled, or expired.)
tbmUserMatchStatus :: Lens' TurnBasedMatch (Maybe Text)

-- | Globally unique ID for a turn-based match.
tbmMatchId :: Lens' TurnBasedMatch (Maybe Text)

-- | This short description is generated by our servers based on turn state
--   and is localized and worded relative to the player requesting the
--   match. It is intended to be displayed when the match is shown in a
--   list.
tbmDescription :: Lens' TurnBasedMatch (Maybe Text)

-- | The ID of a rematch of this match. Only set for completed matches that
--   have been rematched.
tbmRematchId :: Lens' TurnBasedMatch (Maybe Text)

-- | The version of this match: an increasing counter, used to avoid
--   out-of-date updates to the match.
tbmMatchVersion :: Lens' TurnBasedMatch (Maybe Int32)

-- | This is a JSON template for a turn-based match data object.
--   
--   <i>See:</i> <a>turnBasedMatchData</a> smart constructor.
data TurnBasedMatchData

-- | Creates a value of <a>TurnBasedMatchData</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmdKind</a></li>
--   <li><a>tbmdData</a></li>
--   <li><a>tbmdDataAvailable</a></li>
--   </ul>
turnBasedMatchData :: TurnBasedMatchData

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchData.
tbmdKind :: Lens' TurnBasedMatchData Text

-- | The byte representation of the data (limited to 128 kB), as a
--   Base64-encoded string with the URL_SAFE encoding option.
tbmdData :: Lens' TurnBasedMatchData (Maybe ByteString)

-- | True if this match has data available but it wasn't returned in a list
--   response; fetching the match individually will retrieve this data.
tbmdDataAvailable :: Lens' TurnBasedMatchData (Maybe Bool)

-- | The collection of scores you're requesting.
data ScoresListCollection

-- | <tt>PUBLIC</tt> List all scores in the public leaderboard.
Public :: ScoresListCollection

-- | <tt>SOCIAL</tt> List only social scores.
Social :: ScoresListCollection

-- | <tt>SOCIAL_1P</tt> List only social scores, not respecting the fACL.
Social1P :: ScoresListCollection

-- | This is a JSON template for an event status resource.
--   
--   <i>See:</i> <a>playerEvent</a> smart constructor.
data PlayerEvent

-- | Creates a value of <a>PlayerEvent</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>peKind</a></li>
--   <li><a>peNumEvents</a></li>
--   <li><a>peFormattedNumEvents</a></li>
--   <li><a>peDefinitionId</a></li>
--   <li><a>pePlayerId</a></li>
--   </ul>
playerEvent :: PlayerEvent

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerEvent.
peKind :: Lens' PlayerEvent Text

-- | The current number of times this event has occurred.
peNumEvents :: Lens' PlayerEvent (Maybe Int64)

-- | The current number of times this event has occurred, as a string. The
--   formatting of this string depends on the configuration of your event
--   in the Play Games Developer Console.
peFormattedNumEvents :: Lens' PlayerEvent (Maybe Text)

-- | The ID of the event definition.
peDefinitionId :: Lens' PlayerEvent (Maybe Text)

-- | The ID of the player.
pePlayerId :: Lens' PlayerEvent (Maybe Text)

-- | This is a JSON template for a player leaderboard score object.
--   
--   <i>See:</i> <a>playerLeaderboardScore</a> smart constructor.
data PlayerLeaderboardScore

-- | Creates a value of <a>PlayerLeaderboardScore</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plsScoreTag</a></li>
--   <li><a>plsScoreString</a></li>
--   <li><a>plsKind</a></li>
--   <li><a>plsScoreValue</a></li>
--   <li><a>plsTimeSpan</a></li>
--   <li><a>plsPublicRank</a></li>
--   <li><a>plsSocialRank</a></li>
--   <li><a>plsLeaderboardId</a></li>
--   <li><a>plsWriteTimestamp</a></li>
--   </ul>
playerLeaderboardScore :: PlayerLeaderboardScore

-- | Additional information about the score. Values must contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
plsScoreTag :: Lens' PlayerLeaderboardScore (Maybe Text)

-- | The formatted value of this score.
plsScoreString :: Lens' PlayerLeaderboardScore (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerLeaderboardScore.
plsKind :: Lens' PlayerLeaderboardScore Text

-- | The numerical value of this score.
plsScoreValue :: Lens' PlayerLeaderboardScore (Maybe Int64)

-- | The time span of this score. Possible values are: - "ALL_TIME" - The
--   score is an all-time score. - "WEEKLY" - The score is a weekly score.
--   - "DAILY" - The score is a daily score.
plsTimeSpan :: Lens' PlayerLeaderboardScore (Maybe Text)

-- | The public rank of the score in this leaderboard. This object will not
--   be present if the user is not sharing their scores publicly.
plsPublicRank :: Lens' PlayerLeaderboardScore (Maybe LeaderboardScoreRank)

-- | The social rank of the score in this leaderboard.
plsSocialRank :: Lens' PlayerLeaderboardScore (Maybe LeaderboardScoreRank)

-- | The ID of the leaderboard this score is in.
plsLeaderboardId :: Lens' PlayerLeaderboardScore (Maybe Text)

-- | The timestamp at which this score was recorded, in milliseconds since
--   the epoch in UTC.
plsWriteTimestamp :: Lens' PlayerLeaderboardScore (Maybe Int64)

-- | This is a JSON template for the Application resource.
--   
--   <i>See:</i> <a>application</a> smart constructor.
data Application

-- | Creates a value of <a>Application</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aThemeColor</a></li>
--   <li><a>aLeaderboardCount</a></li>
--   <li><a>aKind</a></li>
--   <li><a>aCategory</a></li>
--   <li><a>aName</a></li>
--   <li><a>aEnabledFeatures</a></li>
--   <li><a>aInstances</a></li>
--   <li><a>aAuthor</a></li>
--   <li><a>aId</a></li>
--   <li><a>aAchievementCount</a></li>
--   <li><a>aAssets</a></li>
--   <li><a>aDescription</a></li>
--   <li><a>aLastUpdatedTimestamp</a></li>
--   </ul>
application :: Application

-- | A hint to the client UI for what color to use as an app-themed color.
--   The color is given as an RGB triplet (e.g. "E0E0E0").
aThemeColor :: Lens' Application (Maybe Text)

-- | The number of leaderboards visible to the currently authenticated
--   player.
aLeaderboardCount :: Lens' Application (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#application.
aKind :: Lens' Application Text

-- | The category of the application.
aCategory :: Lens' Application (Maybe ApplicationCategory)

-- | The name of the application.
aName :: Lens' Application (Maybe Text)

-- | A list of features that have been enabled for the application.
--   Possible values are: - "SNAPSHOTS" - Snapshots has been enabled
aEnabledFeatures :: Lens' Application [Text]

-- | The instances of the application.
aInstances :: Lens' Application [Instance]

-- | The author of the application.
aAuthor :: Lens' Application (Maybe Text)

-- | The ID of the application.
aId :: Lens' Application (Maybe Text)

-- | The number of achievements visible to the currently authenticated
--   player.
aAchievementCount :: Lens' Application (Maybe Int32)

-- | The assets of the application.
aAssets :: Lens' Application [ImageAsset]

-- | The description of the application.
aDescription :: Lens' Application (Maybe Text)

-- | The last updated timestamp of the application.
aLastUpdatedTimestamp :: Lens' Application (Maybe Int64)

-- | This is a JSON template for an application category object.
--   
--   <i>See:</i> <a>applicationCategory</a> smart constructor.
data ApplicationCategory

-- | Creates a value of <a>ApplicationCategory</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>acSecondary</a></li>
--   <li><a>acKind</a></li>
--   <li><a>acPrimary</a></li>
--   </ul>
applicationCategory :: ApplicationCategory

-- | The secondary category.
acSecondary :: Lens' ApplicationCategory (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#applicationCategory.
acKind :: Lens' ApplicationCategory Text

-- | The primary category.
acPrimary :: Lens' ApplicationCategory (Maybe Text)

-- | This is a JSON template for a list of score submission statuses.
--   
--   <i>See:</i> <a>playerScoreListResponse</a> smart constructor.
data PlayerScoreListResponse

-- | Creates a value of <a>PlayerScoreListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pslrSubmittedScores</a></li>
--   <li><a>pslrKind</a></li>
--   </ul>
playerScoreListResponse :: PlayerScoreListResponse

-- | The score submissions statuses.
pslrSubmittedScores :: Lens' PlayerScoreListResponse [PlayerScoreResponse]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerScoreListResponse.
pslrKind :: Lens' PlayerScoreListResponse Text

-- | This is a JSON template for network diagnostics reported for a client.
--   
--   <i>See:</i> <a>networkDiagnostics</a> smart constructor.
data NetworkDiagnostics

-- | Creates a value of <a>NetworkDiagnostics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ndAndroidNetworkType</a></li>
--   <li><a>ndKind</a></li>
--   <li><a>ndNetworkOperatorCode</a></li>
--   <li><a>ndNetworkOperatorName</a></li>
--   <li><a>ndRegistrationLatencyMillis</a></li>
--   <li><a>ndIosNetworkType</a></li>
--   <li><a>ndAndroidNetworkSubtype</a></li>
--   </ul>
networkDiagnostics :: NetworkDiagnostics

-- | The Android network type.
ndAndroidNetworkType :: Lens' NetworkDiagnostics (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#networkDiagnostics.
ndKind :: Lens' NetworkDiagnostics Text

-- | The MCC+MNC code for the client's network connection. On Android:
--   http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkOperator()
--   On iOS, see:
--   https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html
ndNetworkOperatorCode :: Lens' NetworkDiagnostics (Maybe Text)

-- | The name of the carrier of the client's network connection. On
--   Android:
--   http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkOperatorName()
--   On iOS:
--   https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html#//apple_ref/occ/instp/CTCarrier/carrierName
ndNetworkOperatorName :: Lens' NetworkDiagnostics (Maybe Text)

-- | The amount of time in milliseconds it took for the client to establish
--   a connection with the XMPP server.
ndRegistrationLatencyMillis :: Lens' NetworkDiagnostics (Maybe Int32)

-- | iOS network type as defined in Reachability.h.
ndIosNetworkType :: Lens' NetworkDiagnostics (Maybe Int32)

-- | The Android network subtype.
ndAndroidNetworkSubtype :: Lens' NetworkDiagnostics (Maybe Int32)

-- | This is a JSON template for the object representing a turn.
--   
--   <i>See:</i> <a>turnBasedMatchTurn</a> smart constructor.
data TurnBasedMatchTurn

-- | Creates a value of <a>TurnBasedMatchTurn</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmtResults</a></li>
--   <li><a>tbmtKind</a></li>
--   <li><a>tbmtData</a></li>
--   <li><a>tbmtPendingParticipantId</a></li>
--   <li><a>tbmtMatchVersion</a></li>
--   </ul>
turnBasedMatchTurn :: TurnBasedMatchTurn

-- | The match results for the participants in the match.
tbmtResults :: Lens' TurnBasedMatchTurn [ParticipantResult]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchTurn.
tbmtKind :: Lens' TurnBasedMatchTurn Text

-- | The shared game state data after the turn is over.
tbmtData :: Lens' TurnBasedMatchTurn (Maybe TurnBasedMatchDataRequest)

-- | The ID of the participant who should take their turn next. May be set
--   to the current player's participant ID to update match state without
--   changing the turn. If not set, the match will wait for other player(s)
--   to join via automatching; this is only valid if automatch criteria is
--   set on the match with remaining slots for automatched players.
tbmtPendingParticipantId :: Lens' TurnBasedMatchTurn (Maybe Text)

-- | The version of this match: an increasing counter, used to avoid
--   out-of-date updates to the match.
tbmtMatchVersion :: Lens' TurnBasedMatchTurn (Maybe Int32)

-- | This is a JSON template for a Quest Criterion resource.
--   
--   <i>See:</i> <a>questCriterion</a> smart constructor.
data QuestCriterion

-- | Creates a value of <a>QuestCriterion</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qcCurrentContribution</a></li>
--   <li><a>qcCompletionContribution</a></li>
--   <li><a>qcKind</a></li>
--   <li><a>qcInitialPlayerProgress</a></li>
--   <li><a>qcEventId</a></li>
--   </ul>
questCriterion :: QuestCriterion

-- | The number of increments the player has made toward the completion
--   count event increments required to complete the quest. This value will
--   not exceed the completion contribution. There will be no
--   currentContribution until the player has accepted the quest.
qcCurrentContribution :: Lens' QuestCriterion (Maybe QuestContribution)

-- | The total number of times the associated event must be incremented for
--   the player to complete this quest.
qcCompletionContribution :: Lens' QuestCriterion (Maybe QuestContribution)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#questCriterion.
qcKind :: Lens' QuestCriterion Text

-- | The value of the event associated with this quest at the time that the
--   quest was accepted. This value may change if event increments that
--   took place before the start of quest are uploaded after the quest
--   starts. There will be no initialPlayerProgress until the player has
--   accepted the quest.
qcInitialPlayerProgress :: Lens' QuestCriterion (Maybe QuestContribution)

-- | The ID of the event the criterion corresponds to.
qcEventId :: Lens' QuestCriterion (Maybe Text)

-- | This is a JSON template for a list of turn-based matches.
--   
--   <i>See:</i> <a>turnBasedMatchList</a> smart constructor.
data TurnBasedMatchList

-- | Creates a value of <a>TurnBasedMatchList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmlNextPageToken</a></li>
--   <li><a>tbmlKind</a></li>
--   <li><a>tbmlItems</a></li>
--   </ul>
turnBasedMatchList :: TurnBasedMatchList

-- | The pagination token for the next page of results.
tbmlNextPageToken :: Lens' TurnBasedMatchList (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchList.
tbmlKind :: Lens' TurnBasedMatchList Text

-- | The matches.
tbmlItems :: Lens' TurnBasedMatchList [TurnBasedMatch]

-- | This is a JSON template for peer channel diagnostics.
--   
--   <i>See:</i> <a>peerChannelDiagnostics</a> smart constructor.
data PeerChannelDiagnostics

-- | Creates a value of <a>PeerChannelDiagnostics</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pcdNumMessagesLost</a></li>
--   <li><a>pcdBytesSent</a></li>
--   <li><a>pcdKind</a></li>
--   <li><a>pcdRoundtripLatencyMillis</a></li>
--   <li><a>pcdBytesReceived</a></li>
--   <li><a>pcdNumMessagesReceived</a></li>
--   <li><a>pcdNumSendFailures</a></li>
--   <li><a>pcdNumMessagesSent</a></li>
--   </ul>
peerChannelDiagnostics :: PeerChannelDiagnostics

-- | Number of messages lost.
pcdNumMessagesLost :: Lens' PeerChannelDiagnostics (Maybe Int32)

-- | Number of bytes sent.
pcdBytesSent :: Lens' PeerChannelDiagnostics (Maybe AggregateStats)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#peerChannelDiagnostics.
pcdKind :: Lens' PeerChannelDiagnostics Text

-- | Roundtrip latency stats in milliseconds.
pcdRoundtripLatencyMillis :: Lens' PeerChannelDiagnostics (Maybe AggregateStats)

-- | Number of bytes received.
pcdBytesReceived :: Lens' PeerChannelDiagnostics (Maybe AggregateStats)

-- | Number of messages received.
pcdNumMessagesReceived :: Lens' PeerChannelDiagnostics (Maybe Int32)

-- | Number of send failures.
pcdNumSendFailures :: Lens' PeerChannelDiagnostics (Maybe Int32)

-- | Number of messages sent.
pcdNumMessagesSent :: Lens' PeerChannelDiagnostics (Maybe Int32)

-- | This is a JSON template for a list of rooms.
--   
--   <i>See:</i> <a>roomList</a> smart constructor.
data RoomList

-- | Creates a value of <a>RoomList</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlNextPageToken</a></li>
--   <li><a>rlKind</a></li>
--   <li><a>rlItems</a></li>
--   </ul>
roomList :: RoomList

-- | The pagination token for the next page of results.
rlNextPageToken :: Lens' RoomList (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomList.
rlKind :: Lens' RoomList Text

-- | The rooms.
rlItems :: Lens' RoomList [Room]

-- | This is a JSON template for a push token resource.
--   
--   <i>See:</i> <a>pushToken</a> smart constructor.
data PushToken

-- | Creates a value of <a>PushToken</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptClientRevision</a></li>
--   <li><a>ptKind</a></li>
--   <li><a>ptLanguage</a></li>
--   <li><a>ptId</a></li>
--   </ul>
pushToken :: PushToken

-- | The revision of the client SDK used by your application, in the same
--   format that's used by revisions.check. Used to send backward
--   compatible messages. Format: [PLATFORM_TYPE]:[VERSION_NUMBER].
--   Possible values of PLATFORM_TYPE are: - IOS - Push token is for iOS
ptClientRevision :: Lens' PushToken (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#pushToken.
ptKind :: Lens' PushToken Text

-- | The preferred language for notifications that are sent using this
--   token.
ptLanguage :: Lens' PushToken (Maybe Text)

-- | Unique identifier for this push token.
ptId :: Lens' PushToken (Maybe PushTokenId)

-- | This is a JSON template for an achievement update response.
--   
--   <i>See:</i> <a>achievementUpdateResponse</a> smart constructor.
data AchievementUpdateResponse

-- | Creates a value of <a>AchievementUpdateResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aurUpdateOccurred</a></li>
--   <li><a>aurAchievementId</a></li>
--   <li><a>aurKind</a></li>
--   <li><a>aurCurrentState</a></li>
--   <li><a>aurNewlyUnlocked</a></li>
--   <li><a>aurCurrentSteps</a></li>
--   </ul>
achievementUpdateResponse :: AchievementUpdateResponse

-- | Whether the requested updates actually affected the achievement.
aurUpdateOccurred :: Lens' AchievementUpdateResponse (Maybe Bool)

-- | The achievement this update is was applied to.
aurAchievementId :: Lens' AchievementUpdateResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUpdateResponse.
aurKind :: Lens' AchievementUpdateResponse Text

-- | The current state of the achievement. Possible values are: - "HIDDEN"
--   - Achievement is hidden. - "REVEALED" - Achievement is revealed. -
--   "UNLOCKED" - Achievement is unlocked.
aurCurrentState :: Lens' AchievementUpdateResponse (Maybe Text)

-- | Whether this achievement was newly unlocked (that is, whether the
--   unlock request for the achievement was the first for the player).
aurNewlyUnlocked :: Lens' AchievementUpdateResponse (Maybe Bool)

-- | The current steps recorded for this achievement if it is incremental.
aurCurrentSteps :: Lens' AchievementUpdateResponse (Maybe Int32)

-- | This is a JSON template for the Leaderboard Entry resource.
--   
--   <i>See:</i> <a>leaderboardEntry</a> smart constructor.
data LeaderboardEntry

-- | Creates a value of <a>LeaderboardEntry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>leScoreTag</a></li>
--   <li><a>leWriteTimestampMillis</a></li>
--   <li><a>leKind</a></li>
--   <li><a>leScoreValue</a></li>
--   <li><a>leFormattedScore</a></li>
--   <li><a>leTimeSpan</a></li>
--   <li><a>leFormattedScoreRank</a></li>
--   <li><a>lePlayer</a></li>
--   <li><a>leScoreRank</a></li>
--   </ul>
leaderboardEntry :: LeaderboardEntry

-- | Additional information about the score. Values must contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
leScoreTag :: Lens' LeaderboardEntry (Maybe Text)

-- | The timestamp at which this score was recorded, in milliseconds since
--   the epoch in UTC.
leWriteTimestampMillis :: Lens' LeaderboardEntry (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboardEntry.
leKind :: Lens' LeaderboardEntry Text

-- | The numerical value of this score.
leScoreValue :: Lens' LeaderboardEntry (Maybe Int64)

-- | The localized string for the numerical value of this score.
leFormattedScore :: Lens' LeaderboardEntry (Maybe Text)

-- | The time span of this high score. Possible values are: - "ALL_TIME" -
--   The score is an all-time high score. - "WEEKLY" - The score is a
--   weekly high score. - "DAILY" - The score is a daily high score.
leTimeSpan :: Lens' LeaderboardEntry (Maybe Text)

-- | The localized string for the rank of this score for this leaderboard.
leFormattedScoreRank :: Lens' LeaderboardEntry (Maybe Text)

-- | The player who holds this score.
lePlayer :: Lens' LeaderboardEntry (Maybe Player)

-- | The rank of this score for this leaderboard.
leScoreRank :: Lens' LeaderboardEntry (Maybe Int64)

-- | This is a JSON template for a list of snapshot objects.
--   
--   <i>See:</i> <a>snapshotListResponse</a> smart constructor.
data SnapshotListResponse

-- | Creates a value of <a>SnapshotListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>slrNextPageToken</a></li>
--   <li><a>slrKind</a></li>
--   <li><a>slrItems</a></li>
--   </ul>
snapshotListResponse :: SnapshotListResponse

-- | Token corresponding to the next page of results. If there are no more
--   results, the token is omitted.
slrNextPageToken :: Lens' SnapshotListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#snapshotListResponse.
slrKind :: Lens' SnapshotListResponse Text

-- | The snapshots.
slrItems :: Lens' SnapshotListResponse [Snapshot]

-- | This is a JSON template for 1P/3P metadata about a user's level.
--   
--   <i>See:</i> <a>playerLevel</a> smart constructor.
data PlayerLevel

-- | Creates a value of <a>PlayerLevel</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plMaxExperiencePoints</a></li>
--   <li><a>plKind</a></li>
--   <li><a>plMinExperiencePoints</a></li>
--   <li><a>plLevel</a></li>
--   </ul>
playerLevel :: PlayerLevel

-- | The maximum experience points for this level.
plMaxExperiencePoints :: Lens' PlayerLevel (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerLevel.
plKind :: Lens' PlayerLevel Text

-- | The minimum experience points for this level.
plMinExperiencePoints :: Lens' PlayerLevel (Maybe Int64)

-- | The level for the user.
plLevel :: Lens' PlayerLevel (Maybe Int32)

-- | This is a JSON template for an achievement unlock response.
--   
--   <i>See:</i> <a>achievementUpdateMultipleResponse</a> smart
--   constructor.
data AchievementUpdateMultipleResponse

-- | Creates a value of <a>AchievementUpdateMultipleResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aumrKind</a></li>
--   <li><a>aumrUpdatedAchievements</a></li>
--   </ul>
achievementUpdateMultipleResponse :: AchievementUpdateMultipleResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUpdateListResponse.
aumrKind :: Lens' AchievementUpdateMultipleResponse Text

-- | The updated state of the achievements.
aumrUpdatedAchievements :: Lens' AchievementUpdateMultipleResponse [AchievementUpdateResponse]

-- | This is a JSON template for a participant in a room.
--   
--   <i>See:</i> <a>roomParticipant</a> smart constructor.
data RoomParticipant

-- | Creates a value of <a>RoomParticipant</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rpStatus</a></li>
--   <li><a>rpConnected</a></li>
--   <li><a>rpLeaveReason</a></li>
--   <li><a>rpKind</a></li>
--   <li><a>rpClientAddress</a></li>
--   <li><a>rpId</a></li>
--   <li><a>rpAutoMatched</a></li>
--   <li><a>rpPlayer</a></li>
--   <li><a>rpCapabilities</a></li>
--   <li><a>rpAutoMatchedPlayer</a></li>
--   </ul>
roomParticipant :: RoomParticipant

-- | The status of the participant with respect to the room. Possible
--   values are: - "PARTICIPANT_INVITED" - The participant has been invited
--   to join the room, but has not yet responded. - "PARTICIPANT_JOINED" -
--   The participant has joined the room (either after creating it or
--   accepting an invitation.) - "PARTICIPANT_DECLINED" - The participant
--   declined an invitation to join the room. - "PARTICIPANT_LEFT" - The
--   participant joined the room and then left it.
rpStatus :: Lens' RoomParticipant (Maybe Text)

-- | True if this participant is in the fully connected set of peers in the
--   room.
rpConnected :: Lens' RoomParticipant (Maybe Bool)

-- | The reason the participant left the room; populated if the participant
--   status is PARTICIPANT_LEFT. Possible values are: - "PLAYER_LEFT" - The
--   player explicitly chose to leave the room. - "GAME_LEFT" - The game
--   chose to remove the player from the room. - "ABANDONED" - The player
--   switched to another application and abandoned the room. -
--   "PEER_CONNECTION_FAILURE" - The client was unable to establish or
--   maintain a connection to other peer(s) in the room. - "SERVER_ERROR" -
--   The client received an error response when it tried to communicate
--   with the server. - "TIMEOUT" - The client timed out while waiting for
--   players to join and connect. - "PRESENCE_FAILURE" - The client's XMPP
--   connection ended abruptly.
rpLeaveReason :: Lens' RoomParticipant (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomParticipant.
rpKind :: Lens' RoomParticipant Text

-- | Client address for the participant.
rpClientAddress :: Lens' RoomParticipant (Maybe RoomClientAddress)

-- | An identifier for the participant in the scope of the room. Cannot be
--   used to identify a player across rooms or in other contexts.
rpId :: Lens' RoomParticipant (Maybe Text)

-- | True if this participant was auto-matched with the requesting player.
rpAutoMatched :: Lens' RoomParticipant (Maybe Bool)

-- | Information about the player. Not populated if this player was
--   anonymously auto-matched against the requesting player. (Either player
--   or autoMatchedPlayer will be set.)
rpPlayer :: Lens' RoomParticipant (Maybe Player)

-- | The capabilities which can be used when communicating with this
--   participant.
rpCapabilities :: Lens' RoomParticipant [Text]

-- | Information about a player that has been anonymously auto-matched
--   against the requesting player. (Either player or autoMatchedPlayer
--   will be set.)
rpAutoMatchedPlayer :: Lens' RoomParticipant (Maybe AnonymousPlayer)

-- | Restrict application details returned to the specific platform.
data ApplicationsGetPlatformType

-- | <tt>ANDROID</tt> Retrieve applications that can be played on Android.
Android :: ApplicationsGetPlatformType

-- | <tt>IOS</tt> Retrieve applications that can be played on iOS.
Ios :: ApplicationsGetPlatformType

-- | <tt>WEB_APP</tt> Retrieve applications that can be played on desktop
--   web.
WebApp :: ApplicationsGetPlatformType

-- | This is a JSON template for a ListDefinitions response.
--   
--   <i>See:</i> <a>eventDefinitionListResponse</a> smart constructor.
data EventDefinitionListResponse

-- | Creates a value of <a>EventDefinitionListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edlrNextPageToken</a></li>
--   <li><a>edlrKind</a></li>
--   <li><a>edlrItems</a></li>
--   </ul>
eventDefinitionListResponse :: EventDefinitionListResponse

-- | The pagination token for the next page of results.
edlrNextPageToken :: Lens' EventDefinitionListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventDefinitionListResponse.
edlrKind :: Lens' EventDefinitionListResponse Text

-- | The event definitions.
edlrItems :: Lens' EventDefinitionListResponse [EventDefinition]

-- | This is a JSON template for data related to individual game
--   categories.
--   
--   <i>See:</i> <a>category</a> smart constructor.
data Category

-- | Creates a value of <a>Category</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cKind</a></li>
--   <li><a>cCategory</a></li>
--   <li><a>cExperiencePoints</a></li>
--   </ul>
category :: Category

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#category.
cKind :: Lens' Category Text

-- | The category name.
cCategory :: Lens' Category (Maybe Text)

-- | Experience points earned in this category.
cExperiencePoints :: Lens' Category (Maybe Int64)

-- | This is a JSON template for the Android instance details resource.
--   
--   <i>See:</i> <a>instanceAndroidDetails</a> smart constructor.
data InstanceAndroidDetails

-- | Creates a value of <a>InstanceAndroidDetails</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iadPackageName</a></li>
--   <li><a>iadPreferred</a></li>
--   <li><a>iadKind</a></li>
--   <li><a>iadEnablePiracyCheck</a></li>
--   </ul>
instanceAndroidDetails :: InstanceAndroidDetails

-- | Android package name which maps to Google Play URL.
iadPackageName :: Lens' InstanceAndroidDetails (Maybe Text)

-- | Indicates that this instance is the default for new installations.
iadPreferred :: Lens' InstanceAndroidDetails (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#instanceAndroidDetails.
iadKind :: Lens' InstanceAndroidDetails Text

-- | Flag indicating whether the anti-piracy check is enabled.
iadEnablePiracyCheck :: Lens' InstanceAndroidDetails (Maybe Bool)

-- | This is a JSON template for a participant in a turn-based match.
--   
--   <i>See:</i> <a>turnBasedMatchParticipant</a> smart constructor.
data TurnBasedMatchParticipant

-- | Creates a value of <a>TurnBasedMatchParticipant</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmpStatus</a></li>
--   <li><a>tbmpKind</a></li>
--   <li><a>tbmpId</a></li>
--   <li><a>tbmpAutoMatched</a></li>
--   <li><a>tbmpPlayer</a></li>
--   <li><a>tbmpAutoMatchedPlayer</a></li>
--   </ul>
turnBasedMatchParticipant :: TurnBasedMatchParticipant

-- | The status of the participant with respect to the match. Possible
--   values are: - "PARTICIPANT_NOT_INVITED_YET" - The participant is
--   slated to be invited to the match, but the invitation has not been
--   sent; the invite will be sent when it becomes their turn. -
--   "PARTICIPANT_INVITED" - The participant has been invited to join the
--   match, but has not yet responded. - "PARTICIPANT_JOINED" - The
--   participant has joined the match (either after creating it or
--   accepting an invitation.) - "PARTICIPANT_DECLINED" - The participant
--   declined an invitation to join the match. - "PARTICIPANT_LEFT" - The
--   participant joined the match and then left it. -
--   "PARTICIPANT_FINISHED" - The participant finished playing in the
--   match. - "PARTICIPANT_UNRESPONSIVE" - The participant did not take
--   their turn in the allotted time.
tbmpStatus :: Lens' TurnBasedMatchParticipant (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchParticipant.
tbmpKind :: Lens' TurnBasedMatchParticipant Text

-- | An identifier for the participant in the scope of the match. Cannot be
--   used to identify a player across matches or in other contexts.
tbmpId :: Lens' TurnBasedMatchParticipant (Maybe Text)

-- | True if this participant was auto-matched with the requesting player.
tbmpAutoMatched :: Lens' TurnBasedMatchParticipant (Maybe Bool)

-- | Information about the player. Not populated if this player was
--   anonymously auto-matched against the requesting player. (Either player
--   or autoMatchedPlayer will be set.)
tbmpPlayer :: Lens' TurnBasedMatchParticipant (Maybe Player)

-- | Information about a player that has been anonymously auto-matched
--   against the requesting player. (Either player or autoMatchedPlayer
--   will be set.)
tbmpAutoMatchedPlayer :: Lens' TurnBasedMatchParticipant (Maybe AnonymousPlayer)

-- | This is a JSON template for a list of achievement definition objects.
--   
--   <i>See:</i> <a>achievementDefinitionsListResponse</a> smart
--   constructor.
data AchievementDefinitionsListResponse

-- | Creates a value of <a>AchievementDefinitionsListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adlrNextPageToken</a></li>
--   <li><a>adlrKind</a></li>
--   <li><a>adlrItems</a></li>
--   </ul>
achievementDefinitionsListResponse :: AchievementDefinitionsListResponse

-- | Token corresponding to the next page of results.
adlrNextPageToken :: Lens' AchievementDefinitionsListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementDefinitionsListResponse.
adlrKind :: Lens' AchievementDefinitionsListResponse Text

-- | The achievement definitions.
adlrItems :: Lens' AchievementDefinitionsListResponse [AchievementDefinition]

-- | This is a JSON template for a list of leaderboard entry resources.
--   
--   <i>See:</i> <a>playerScoreResponse</a> smart constructor.
data PlayerScoreResponse

-- | Creates a value of <a>PlayerScoreResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psrScoreTag</a></li>
--   <li><a>psrKind</a></li>
--   <li><a>psrFormattedScore</a></li>
--   <li><a>psrLeaderboardId</a></li>
--   <li><a>psrBeatenScoreTimeSpans</a></li>
--   <li><a>psrUnbeatenScores</a></li>
--   </ul>
playerScoreResponse :: PlayerScoreResponse

-- | Additional information about this score. Values will contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
psrScoreTag :: Lens' PlayerScoreResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerScoreResponse.
psrKind :: Lens' PlayerScoreResponse Text

-- | The formatted value of the submitted score.
psrFormattedScore :: Lens' PlayerScoreResponse (Maybe Text)

-- | The leaderboard ID that this score was submitted to.
psrLeaderboardId :: Lens' PlayerScoreResponse (Maybe Text)

-- | The time spans where the submitted score is better than the existing
--   score for that time span. Possible values are: - "ALL_TIME" - The
--   score is an all-time score. - "WEEKLY" - The score is a weekly score.
--   - "DAILY" - The score is a daily score.
psrBeatenScoreTimeSpans :: Lens' PlayerScoreResponse [Text]

-- | The scores in time spans that have not been beaten. As an example, the
--   submitted score may be better than the player's DAILY score, but not
--   better than the player's scores for the WEEKLY or ALL_TIME time spans.
psrUnbeatenScores :: Lens' PlayerScoreResponse [PlayerScore]

-- | This is a JSON template for an anonymous player
--   
--   <i>See:</i> <a>anonymousPlayer</a> smart constructor.
data AnonymousPlayer

-- | Creates a value of <a>AnonymousPlayer</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>apAvatarImageURL</a></li>
--   <li><a>apKind</a></li>
--   <li><a>apDisplayName</a></li>
--   </ul>
anonymousPlayer :: AnonymousPlayer

-- | The base URL for the image to display for the anonymous player.
apAvatarImageURL :: Lens' AnonymousPlayer (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#anonymousPlayer.
apKind :: Lens' AnonymousPlayer Text

-- | The name to display for the anonymous player.
apDisplayName :: Lens' AnonymousPlayer (Maybe Text)

-- | This is a JSON template for a Quest Criterion Contribution resource.
--   
--   <i>See:</i> <a>questContribution</a> smart constructor.
data QuestContribution

-- | Creates a value of <a>QuestContribution</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qKind</a></li>
--   <li><a>qValue</a></li>
--   <li><a>qFormattedValue</a></li>
--   </ul>
questContribution :: QuestContribution

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#questContribution.
qKind :: Lens' QuestContribution Text

-- | The value of the contribution.
qValue :: Lens' QuestContribution (Maybe Int64)

-- | The formatted value of the contribution as a string. Format depends on
--   the configuration for the associated event definition in the Play
--   Games Developer Console.
qFormattedValue :: Lens' QuestContribution (Maybe Text)

-- | This is a JSON template for the client address when setting up a room.
--   
--   <i>See:</i> <a>roomClientAddress</a> smart constructor.
data RoomClientAddress

-- | Creates a value of <a>RoomClientAddress</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcaKind</a></li>
--   <li><a>rcaXmppAddress</a></li>
--   </ul>
roomClientAddress :: RoomClientAddress

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomClientAddress.
rcaKind :: Lens' RoomClientAddress Text

-- | The XMPP address of the client on the Google Games XMPP network.
rcaXmppAddress :: Lens' RoomClientAddress (Maybe Text)

-- | This is a JSON template for a list of leaderboard objects.
--   
--   <i>See:</i> <a>leaderboardListResponse</a> smart constructor.
data LeaderboardListResponse

-- | Creates a value of <a>LeaderboardListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>llrNextPageToken</a></li>
--   <li><a>llrKind</a></li>
--   <li><a>llrItems</a></li>
--   </ul>
leaderboardListResponse :: LeaderboardListResponse

-- | Token corresponding to the next page of results.
llrNextPageToken :: Lens' LeaderboardListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboardListResponse.
llrKind :: Lens' LeaderboardListResponse Text

-- | The leaderboards.
llrItems :: Lens' LeaderboardListResponse [Leaderboard]

-- | This is a JSON template for a player score.
--   
--   <i>See:</i> <a>playerScore</a> smart constructor.
data PlayerScore

-- | Creates a value of <a>PlayerScore</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psScoreTag</a></li>
--   <li><a>psScore</a></li>
--   <li><a>psKind</a></li>
--   <li><a>psFormattedScore</a></li>
--   <li><a>psTimeSpan</a></li>
--   </ul>
playerScore :: PlayerScore

-- | Additional information about this score. Values will contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
psScoreTag :: Lens' PlayerScore (Maybe Text)

-- | The numerical value for this player score.
psScore :: Lens' PlayerScore (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerScore.
psKind :: Lens' PlayerScore Text

-- | The formatted score for this player score.
psFormattedScore :: Lens' PlayerScore (Maybe Text)

-- | The time span for this player score. Possible values are: - "ALL_TIME"
--   - The score is an all-time score. - "WEEKLY" - The score is a weekly
--   score. - "DAILY" - The score is a daily score.
psTimeSpan :: Lens' PlayerScore (Maybe Text)

-- | The collection of scores you're requesting.
data ScoresListWindowCollection

-- | <tt>PUBLIC</tt> List all scores in the public leaderboard.
SLWCPublic :: ScoresListWindowCollection

-- | <tt>SOCIAL</tt> List only social scores.
SLWCSocial :: ScoresListWindowCollection

-- | <tt>SOCIAL_1P</tt> List only social scores, not respecting the fACL.
SLWCSocial1P :: ScoresListWindowCollection

-- | This is a JSON template for an turn-based auto-match criteria object.
--   
--   <i>See:</i> <a>turnBasedAutoMatchingCriteria</a> smart constructor.
data TurnBasedAutoMatchingCriteria

-- | Creates a value of <a>TurnBasedAutoMatchingCriteria</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbamcKind</a></li>
--   <li><a>tbamcExclusiveBitmask</a></li>
--   <li><a>tbamcMaxAutoMatchingPlayers</a></li>
--   <li><a>tbamcMinAutoMatchingPlayers</a></li>
--   </ul>
turnBasedAutoMatchingCriteria :: TurnBasedAutoMatchingCriteria

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedAutoMatchingCriteria.
tbamcKind :: Lens' TurnBasedAutoMatchingCriteria Text

-- | A bitmask indicating when auto-matches are valid. When ANDed with
--   other exclusive bitmasks, the result must be zero. Can be used to
--   support exclusive roles within a game.
tbamcExclusiveBitmask :: Lens' TurnBasedAutoMatchingCriteria (Maybe Int64)

-- | The maximum number of players that should be added to the match by
--   auto-matching.
tbamcMaxAutoMatchingPlayers :: Lens' TurnBasedAutoMatchingCriteria (Maybe Int32)

-- | The minimum number of players that should be added to the match by
--   auto-matching.
tbamcMinAutoMatchingPlayers :: Lens' TurnBasedAutoMatchingCriteria (Maybe Int32)

-- | This is a JSON template for an image of a snapshot.
--   
--   <i>See:</i> <a>snapshotImage</a> smart constructor.
data SnapshotImage

-- | Creates a value of <a>SnapshotImage</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>siHeight</a></li>
--   <li><a>siKind</a></li>
--   <li><a>siURL</a></li>
--   <li><a>siMimeType</a></li>
--   <li><a>siWidth</a></li>
--   </ul>
snapshotImage :: SnapshotImage

-- | The height of the image.
siHeight :: Lens' SnapshotImage (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#snapshotImage.
siKind :: Lens' SnapshotImage Text

-- | The URL of the image. This URL may be invalidated at any time and
--   should not be cached.
siURL :: Lens' SnapshotImage (Maybe Text)

-- | The MIME type of the image.
siMimeType :: Lens' SnapshotImage (Maybe Text)

-- | The width of the image.
siWidth :: Lens' SnapshotImage (Maybe Int32)

-- | This is a JSON template for the status of a room that the player has
--   joined.
--   
--   <i>See:</i> <a>roomStatus</a> smart constructor.
data RoomStatus

-- | Creates a value of <a>RoomStatus</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rsStatus</a></li>
--   <li><a>rsKind</a></li>
--   <li><a>rsAutoMatchingStatus</a></li>
--   <li><a>rsStatusVersion</a></li>
--   <li><a>rsParticipants</a></li>
--   <li><a>rsRoomId</a></li>
--   </ul>
roomStatus :: RoomStatus

-- | The status of the room. Possible values are: - "ROOM_INVITING" - One
--   or more players have been invited and not responded. -
--   "ROOM_AUTO_MATCHING" - One or more slots need to be filled by
--   auto-matching. - "ROOM_CONNECTING" - Players have joined are
--   connecting to each other (either before or after auto-matching). -
--   "ROOM_ACTIVE" - All players have joined and connected to each other. -
--   "ROOM_DELETED" - All joined players have left.
rsStatus :: Lens' RoomStatus (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomStatus.
rsKind :: Lens' RoomStatus Text

-- | Auto-matching status for this room. Not set if the room is not
--   currently in the automatching queue.
rsAutoMatchingStatus :: Lens' RoomStatus (Maybe RoomAutoMatchStatus)

-- | The version of the status for the room: an increasing counter, used by
--   the client to ignore out-of-order updates to room status.
rsStatusVersion :: Lens' RoomStatus (Maybe Int32)

-- | The participants involved in the room, along with their statuses.
--   Includes participants who have left or declined invitations.
rsParticipants :: Lens' RoomStatus [RoomParticipant]

-- | Globally unique ID for a room.
rsRoomId :: Lens' RoomStatus (Maybe Text)

-- | This is a JSON template for a list of player leaderboard scores.
--   
--   <i>See:</i> <a>playerLeaderboardScoreListResponse</a> smart
--   constructor.
data PlayerLeaderboardScoreListResponse

-- | Creates a value of <a>PlayerLeaderboardScoreListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plslrNextPageToken</a></li>
--   <li><a>plslrKind</a></li>
--   <li><a>plslrItems</a></li>
--   <li><a>plslrPlayer</a></li>
--   </ul>
playerLeaderboardScoreListResponse :: PlayerLeaderboardScoreListResponse

-- | The pagination token for the next page of results.
plslrNextPageToken :: Lens' PlayerLeaderboardScoreListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerLeaderboardScoreListResponse.
plslrKind :: Lens' PlayerLeaderboardScoreListResponse Text

-- | The leaderboard scores.
plslrItems :: Lens' PlayerLeaderboardScoreListResponse [PlayerLeaderboardScore]

-- | The Player resources for the owner of this score.
plslrPlayer :: Lens' PlayerLeaderboardScoreListResponse (Maybe Player)

-- | This is a JSON template for the iOS details resource.
--   
--   <i>See:</i> <a>instanceIosDetails</a> smart constructor.
data InstanceIosDetails

-- | Creates a value of <a>InstanceIosDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iidItunesAppId</a></li>
--   <li><a>iidPreferredForIPad</a></li>
--   <li><a>iidSupportIPhone</a></li>
--   <li><a>iidKind</a></li>
--   <li><a>iidSupportIPad</a></li>
--   <li><a>iidPreferredForIPhone</a></li>
--   <li><a>iidBundleIdentifier</a></li>
--   </ul>
instanceIosDetails :: InstanceIosDetails

-- | iTunes App ID.
iidItunesAppId :: Lens' InstanceIosDetails (Maybe Text)

-- | Indicates that this instance is the default for new installations on
--   iPad devices.
iidPreferredForIPad :: Lens' InstanceIosDetails (Maybe Bool)

-- | Flag to indicate if this instance supports iPhone.
iidSupportIPhone :: Lens' InstanceIosDetails (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#instanceIosDetails.
iidKind :: Lens' InstanceIosDetails Text

-- | Flag to indicate if this instance supports iPad.
iidSupportIPad :: Lens' InstanceIosDetails (Maybe Bool)

-- | Indicates that this instance is the default for new installations on
--   iPhone devices.
iidPreferredForIPhone :: Lens' InstanceIosDetails (Maybe Bool)

-- | Bundle identifier.
iidBundleIdentifier :: Lens' InstanceIosDetails (Maybe Text)

-- | This is a JSON template for an event period update resource.
--   
--   <i>See:</i> <a>eventUpdateResponse</a> smart constructor.
data EventUpdateResponse

-- | Creates a value of <a>EventUpdateResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eurPlayerEvents</a></li>
--   <li><a>eurBatchFailures</a></li>
--   <li><a>eurEventFailures</a></li>
--   <li><a>eurKind</a></li>
--   </ul>
eventUpdateResponse :: EventUpdateResponse

-- | The current status of any updated events
eurPlayerEvents :: Lens' EventUpdateResponse [PlayerEvent]

-- | Any batch-wide failures which occurred applying updates.
eurBatchFailures :: Lens' EventUpdateResponse [EventBatchRecordFailure]

-- | Any failures updating a particular event.
eurEventFailures :: Lens' EventUpdateResponse [EventRecordFailure]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventUpdateResponse.
eurKind :: Lens' EventUpdateResponse Text

-- | This is a JSON template for the result of checking a revision.
--   
--   <i>See:</i> <a>revisionCheckResponse</a> smart constructor.
data RevisionCheckResponse

-- | Creates a value of <a>RevisionCheckResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rcrAPIVersion</a></li>
--   <li><a>rcrKind</a></li>
--   <li><a>rcrRevisionStatus</a></li>
--   </ul>
revisionCheckResponse :: RevisionCheckResponse

-- | The version of the API this client revision should use when calling
--   API methods.
rcrAPIVersion :: Lens' RevisionCheckResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#revisionCheckResponse.
rcrKind :: Lens' RevisionCheckResponse Text

-- | The result of the revision check. Possible values are: - "OK" - The
--   revision being used is current. - "DEPRECATED" - There is currently a
--   newer version available, but the revision being used still works. -
--   "INVALID" - The revision being used is not supported in any released
--   version.
rcrRevisionStatus :: Lens' RevisionCheckResponse (Maybe Text)

-- | This is a JSON template for a result for a match participant.
--   
--   <i>See:</i> <a>participantResult</a> smart constructor.
data ParticipantResult

-- | Creates a value of <a>ParticipantResult</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>prParticipantId</a></li>
--   <li><a>prKind</a></li>
--   <li><a>prResult</a></li>
--   <li><a>prPlacing</a></li>
--   </ul>
participantResult :: ParticipantResult

-- | The ID of the participant.
prParticipantId :: Lens' ParticipantResult (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#participantResult.
prKind :: Lens' ParticipantResult Text

-- | The result of the participant for this match. Possible values are: -
--   "MATCH_RESULT_WIN" - The participant won the match. -
--   "MATCH_RESULT_LOSS" - The participant lost the match. -
--   "MATCH_RESULT_TIE" - The participant tied the match. -
--   "MATCH_RESULT_NONE" - There was no winner for the match (nobody wins
--   or loses this kind of game.) - "MATCH_RESULT_DISCONNECT" - The
--   participant disconnected / left during the match. -
--   "MATCH_RESULT_DISAGREED" - Different clients reported different
--   results for this participant.
prResult :: Lens' ParticipantResult (Maybe Text)

-- | The placement or ranking of the participant in the match results; a
--   number from one to the number of participants in the match. Multiple
--   participants may have the same placing value in case of a type.
prPlacing :: Lens' ParticipantResult (Maybe Int32)

-- | This is a JSON template for the Leaderboard resource.
--   
--   <i>See:</i> <a>leaderboard</a> smart constructor.
data Leaderboard

-- | Creates a value of <a>Leaderboard</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lKind</a></li>
--   <li><a>lIsIconURLDefault</a></li>
--   <li><a>lName</a></li>
--   <li><a>lId</a></li>
--   <li><a>lIconURL</a></li>
--   <li><a>lOrder</a></li>
--   </ul>
leaderboard :: Leaderboard

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboard.
lKind :: Lens' Leaderboard Text

-- | Indicates whether the icon image being returned is a default image, or
--   is game-provided.
lIsIconURLDefault :: Lens' Leaderboard (Maybe Bool)

-- | The name of the leaderboard.
lName :: Lens' Leaderboard (Maybe Text)

-- | The leaderboard ID.
lId :: Lens' Leaderboard (Maybe Text)

-- | The icon for the leaderboard.
lIconURL :: Lens' Leaderboard (Maybe Text)

-- | How scores are ordered. Possible values are: - "LARGER_IS_BETTER" -
--   Larger values are better; scores are sorted in descending order. -
--   "SMALLER_IS_BETTER" - Smaller values are better; scores are sorted in
--   ascending order.
lOrder :: Lens' Leaderboard (Maybe Text)

-- | This is a JSON template for the metagame config resource
--   
--   <i>See:</i> <a>metagameConfig</a> smart constructor.
data MetagameConfig

-- | Creates a value of <a>MetagameConfig</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcKind</a></li>
--   <li><a>mcCurrentVersion</a></li>
--   <li><a>mcPlayerLevels</a></li>
--   </ul>
metagameConfig :: MetagameConfig

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#metagameConfig.
mcKind :: Lens' MetagameConfig Text

-- | Current version of the metagame configuration data. When this data is
--   updated, the version number will be increased by one.
mcCurrentVersion :: Lens' MetagameConfig (Maybe Int32)

-- | The list of player levels.
mcPlayerLevels :: Lens' MetagameConfig [PlayerLevel]

-- | This is a JSON template for a list of category data objects.
--   
--   <i>See:</i> <a>categoryListResponse</a> smart constructor.
data CategoryListResponse

-- | Creates a value of <a>CategoryListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clrNextPageToken</a></li>
--   <li><a>clrKind</a></li>
--   <li><a>clrItems</a></li>
--   </ul>
categoryListResponse :: CategoryListResponse

-- | Token corresponding to the next page of results.
clrNextPageToken :: Lens' CategoryListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#categoryListResponse.
clrKind :: Lens' CategoryListResponse Text

-- | The list of categories with usage data.
clrItems :: Lens' CategoryListResponse [Category]

-- | This is a JSON template for an update on the status of a peer in a
--   room.
--   
--   <i>See:</i> <a>roomP2PStatus</a> smart constructor.
data RoomP2PStatus

-- | Creates a value of <a>RoomP2PStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rppsStatus</a></li>
--   <li><a>rppsParticipantId</a></li>
--   <li><a>rppsKind</a></li>
--   <li><a>rppsError</a></li>
--   <li><a>rppsErrorReason</a></li>
--   <li><a>rppsConnectionSetupLatencyMillis</a></li>
--   <li><a>rppsUnreliableRoundtripLatencyMillis</a></li>
--   </ul>
roomP2PStatus :: RoomP2PStatus

-- | The status of the peer in the room. Possible values are: -
--   "CONNECTION_ESTABLISHED" - The client established a P2P connection
--   with the peer. - "CONNECTION_FAILED" - The client failed to establish
--   directed presence with the peer.
rppsStatus :: Lens' RoomP2PStatus (Maybe Text)

-- | The ID of the participant.
rppsParticipantId :: Lens' RoomP2PStatus (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomP2PStatus.
rppsKind :: Lens' RoomP2PStatus Text

-- | The error code in event of a failure. Possible values are: -
--   "P2P_FAILED" - The client failed to establish a P2P connection with
--   the peer. - "PRESENCE_FAILED" - The client failed to register to
--   receive P2P connections. - "RELAY_SERVER_FAILED" - The client received
--   an error when trying to use the relay server to establish a P2P
--   connection with the peer.
rppsError :: Lens' RoomP2PStatus (Maybe Text)

-- | More detailed diagnostic message returned in event of a failure.
rppsErrorReason :: Lens' RoomP2PStatus (Maybe Text)

-- | The amount of time in milliseconds it took to establish connections
--   with this peer.
rppsConnectionSetupLatencyMillis :: Lens' RoomP2PStatus (Maybe Int32)

-- | The amount of time in milliseconds it took to send packets back and
--   forth on the unreliable channel with this peer.
rppsUnreliableRoundtripLatencyMillis :: Lens' RoomP2PStatus (Maybe Int32)

-- | This is a JSON template for turn-based match modification metadata.
--   
--   <i>See:</i> <a>turnBasedMatchModification</a> smart constructor.
data TurnBasedMatchModification

-- | Creates a value of <a>TurnBasedMatchModification</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmmParticipantId</a></li>
--   <li><a>tbmmKind</a></li>
--   <li><a>tbmmModifiedTimestampMillis</a></li>
--   </ul>
turnBasedMatchModification :: TurnBasedMatchModification

-- | The ID of the participant that modified the match.
tbmmParticipantId :: Lens' TurnBasedMatchModification (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchModification.
tbmmKind :: Lens' TurnBasedMatchModification Text

-- | The timestamp at which they modified the match, in milliseconds since
--   the epoch in UTC.
tbmmModifiedTimestampMillis :: Lens' TurnBasedMatchModification (Maybe Int64)

-- | This is a JSON template for an event definition resource.
--   
--   <i>See:</i> <a>eventDefinition</a> smart constructor.
data EventDefinition

-- | Creates a value of <a>EventDefinition</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>edIsDefaultImageURL</a></li>
--   <li><a>edKind</a></li>
--   <li><a>edVisibility</a></li>
--   <li><a>edImageURL</a></li>
--   <li><a>edDisplayName</a></li>
--   <li><a>edId</a></li>
--   <li><a>edChildEvents</a></li>
--   <li><a>edDescription</a></li>
--   </ul>
eventDefinition :: EventDefinition

-- | Indicates whether the icon image being returned is a default image, or
--   is game-provided.
edIsDefaultImageURL :: Lens' EventDefinition (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventDefinition.
edKind :: Lens' EventDefinition Text

-- | The visibility of event being tracked in this definition. Possible
--   values are: - "REVEALED": This event should be visible to all users. -
--   "HIDDEN": This event should only be shown to users that have recorded
--   this event at least once.
edVisibility :: Lens' EventDefinition (Maybe Text)

-- | The base URL for the image that represents the event.
edImageURL :: Lens' EventDefinition (Maybe Text)

-- | The name to display for the event.
edDisplayName :: Lens' EventDefinition (Maybe Text)

-- | The ID of the event.
edId :: Lens' EventDefinition (Maybe Text)

-- | A list of events that are a child of this event.
edChildEvents :: Lens' EventDefinition [EventChild]

-- | Description of what this event represents.
edDescription :: Lens' EventDefinition (Maybe Text)

-- | This is a JSON template for room modification metadata.
--   
--   <i>See:</i> <a>roomModification</a> smart constructor.
data RoomModification

-- | Creates a value of <a>RoomModification</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rmParticipantId</a></li>
--   <li><a>rmKind</a></li>
--   <li><a>rmModifiedTimestampMillis</a></li>
--   </ul>
roomModification :: RoomModification

-- | The ID of the participant that modified the room.
rmParticipantId :: Lens' RoomModification (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomModification.
rmKind :: Lens' RoomModification Text

-- | The timestamp at which they modified the room, in milliseconds since
--   the epoch in UTC.
rmModifiedTimestampMillis :: Lens' RoomModification (Maybe Int64)

-- | The time span for the scores and ranks you're requesting.
data ScoresListWindowTimeSpan

-- | <tt>ALL_TIME</tt> List the all-time top scores.
AllTime :: ScoresListWindowTimeSpan

-- | <tt>DAILY</tt> List the top scores for the current day.
Daily :: ScoresListWindowTimeSpan

-- | <tt>WEEKLY</tt> List the top scores for the current week.
Weekly :: ScoresListWindowTimeSpan

-- | This is a JSON template for an event period update resource.
--   
--   <i>See:</i> <a>eventUpdateRequest</a> smart constructor.
data EventUpdateRequest

-- | Creates a value of <a>EventUpdateRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eUpdateCount</a></li>
--   <li><a>eKind</a></li>
--   <li><a>eDefinitionId</a></li>
--   </ul>
eventUpdateRequest :: EventUpdateRequest

-- | The number of times this event occurred in this time period.
eUpdateCount :: Lens' EventUpdateRequest (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventUpdateRequest.
eKind :: Lens' EventUpdateRequest Text

-- | The ID of the event being modified in this update.
eDefinitionId :: Lens' EventUpdateRequest (Maybe Text)

-- | This is a JSON template for an achievement unlock response
--   
--   <i>See:</i> <a>achievementUnlockResponse</a> smart constructor.
data AchievementUnlockResponse

-- | Creates a value of <a>AchievementUnlockResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>achKind</a></li>
--   <li><a>achNewlyUnlocked</a></li>
--   </ul>
achievementUnlockResponse :: AchievementUnlockResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUnlockResponse.
achKind :: Lens' AchievementUnlockResponse Text

-- | Whether this achievement was newly unlocked (that is, whether the
--   unlock request for the achievement was the first for the player).
achNewlyUnlocked :: Lens' AchievementUnlockResponse (Maybe Bool)

-- | The time span for the scores and ranks you're requesting.
data ScoresGetTimeSpan

-- | <tt>ALL</tt> Get the high scores for all time spans. If this is used,
--   maxResults values will be ignored.
SGTSAll :: ScoresGetTimeSpan

-- | <tt>ALL_TIME</tt> Get the all time high score.
SGTSAllTime :: ScoresGetTimeSpan

-- | <tt>DAILY</tt> List the top scores for the current day.
SGTSDaily :: ScoresGetTimeSpan

-- | <tt>WEEKLY</tt> List the top scores for the current week.
SGTSWeekly :: ScoresGetTimeSpan

-- | This is a JSON template for an achievement object.
--   
--   <i>See:</i> <a>playerAchievement</a> smart constructor.
data PlayerAchievement

-- | Creates a value of <a>PlayerAchievement</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>paKind</a></li>
--   <li><a>paAchievementState</a></li>
--   <li><a>paFormattedCurrentStepsString</a></li>
--   <li><a>paExperiencePoints</a></li>
--   <li><a>paId</a></li>
--   <li><a>paCurrentSteps</a></li>
--   <li><a>paLastUpdatedTimestamp</a></li>
--   </ul>
playerAchievement :: PlayerAchievement

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerAchievement.
paKind :: Lens' PlayerAchievement Text

-- | The state of the achievement. Possible values are: - "HIDDEN" -
--   Achievement is hidden. - "REVEALED" - Achievement is revealed. -
--   "UNLOCKED" - Achievement is unlocked.
paAchievementState :: Lens' PlayerAchievement (Maybe Text)

-- | The current steps for an incremental achievement as a string.
paFormattedCurrentStepsString :: Lens' PlayerAchievement (Maybe Text)

-- | Experience points earned for the achievement. This field is absent for
--   achievements that have not yet been unlocked and 0 for achievements
--   that have been unlocked by testers but that are unpublished.
paExperiencePoints :: Lens' PlayerAchievement (Maybe Int64)

-- | The ID of the achievement.
paId :: Lens' PlayerAchievement (Maybe Text)

-- | The current steps for an incremental achievement.
paCurrentSteps :: Lens' PlayerAchievement (Maybe Int32)

-- | The timestamp of the last modification to this achievement's state.
paLastUpdatedTimestamp :: Lens' PlayerAchievement (Maybe Int64)

-- | This is a JSON template for an update on the status of peers in a
--   room.
--   
--   <i>See:</i> <a>roomP2PStatuses</a> smart constructor.
data RoomP2PStatuses

-- | Creates a value of <a>RoomP2PStatuses</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rppssKind</a></li>
--   <li><a>rppssUpdates</a></li>
--   </ul>
roomP2PStatuses :: RoomP2PStatuses

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomP2PStatuses.
rppssKind :: Lens' RoomP2PStatuses Text

-- | The updates for the peers.
rppssUpdates :: Lens' RoomP2PStatuses [RoomP2PStatus]

-- | This is a JSON template for an image asset object.
--   
--   <i>See:</i> <a>imageAsset</a> smart constructor.
data ImageAsset

-- | Creates a value of <a>ImageAsset</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iaHeight</a></li>
--   <li><a>iaKind</a></li>
--   <li><a>iaURL</a></li>
--   <li><a>iaWidth</a></li>
--   <li><a>iaName</a></li>
--   </ul>
imageAsset :: ImageAsset

-- | The height of the asset.
iaHeight :: Lens' ImageAsset (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#imageAsset.
iaKind :: Lens' ImageAsset Text

-- | The URL of the asset.
iaURL :: Lens' ImageAsset (Maybe Text)

-- | The width of the asset.
iaWidth :: Lens' ImageAsset (Maybe Int32)

-- | The name of the asset.
iaName :: Lens' ImageAsset (Maybe Text)

-- | This is a JSON template for a list of achievement update requests.
--   
--   <i>See:</i> <a>achievementUpdateMultipleRequest</a> smart constructor.
data AchievementUpdateMultipleRequest

-- | Creates a value of <a>AchievementUpdateMultipleRequest</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aumruKind</a></li>
--   <li><a>aumruUpdates</a></li>
--   </ul>
achievementUpdateMultipleRequest :: AchievementUpdateMultipleRequest

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUpdateMultipleRequest.
aumruKind :: Lens' AchievementUpdateMultipleRequest Text

-- | The individual achievement update requests.
aumruUpdates :: Lens' AchievementUpdateMultipleRequest [AchievementUpdateRequest]

-- | This is a JSON template for status of room automatching that is in
--   progress.
--   
--   <i>See:</i> <a>roomAutoMatchStatus</a> smart constructor.
data RoomAutoMatchStatus

-- | Creates a value of <a>RoomAutoMatchStatus</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ramsKind</a></li>
--   <li><a>ramsWaitEstimateSeconds</a></li>
--   </ul>
roomAutoMatchStatus :: RoomAutoMatchStatus

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomAutoMatchStatus.
ramsKind :: Lens' RoomAutoMatchStatus Text

-- | An estimate for the amount of time (in seconds) that auto-matching is
--   expected to take to complete.
ramsWaitEstimateSeconds :: Lens' RoomAutoMatchStatus (Maybe Int32)

-- | This is a JSON template for a request to update an achievement.
--   
--   <i>See:</i> <a>achievementUpdateRequest</a> smart constructor.
data AchievementUpdateRequest

-- | Creates a value of <a>AchievementUpdateRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>auruAchievementId</a></li>
--   <li><a>auruKind</a></li>
--   <li><a>auruUpdateType</a></li>
--   <li><a>auruSetStepsAtLeastPayload</a></li>
--   <li><a>auruIncrementPayload</a></li>
--   </ul>
achievementUpdateRequest :: AchievementUpdateRequest

-- | The achievement this update is being applied to.
auruAchievementId :: Lens' AchievementUpdateRequest (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementUpdateRequest.
auruKind :: Lens' AchievementUpdateRequest Text

-- | The type of update being applied. Possible values are: - "REVEAL" -
--   Achievement is revealed. - "UNLOCK" - Achievement is unlocked. -
--   "INCREMENT" - Achievement is incremented. - "SET_STEPS_AT_LEAST" -
--   Achievement progress is set to at least the passed value.
auruUpdateType :: Lens' AchievementUpdateRequest (Maybe Text)

-- | The payload if an update of type SET_STEPS_AT_LEAST was requested for
--   the achievement.
auruSetStepsAtLeastPayload :: Lens' AchievementUpdateRequest (Maybe GamesAchievementSetStepsAtLeast)

-- | The payload if an update of type INCREMENT was requested for the
--   achievement.
auruIncrementPayload :: Lens' AchievementUpdateRequest (Maybe GamesAchievementIncrement)

-- | The types of ranks to return. If the parameter is omitted, no ranks
--   will be returned.
data ScoresGetIncludeRankType

-- | <tt>ALL</tt> Retrieve public and social ranks.
SGIRTAll :: ScoresGetIncludeRankType

-- | <tt>PUBLIC</tt> Retrieve public ranks, if the player is sharing their
--   gameplay activity publicly.
SGIRTPublic :: ScoresGetIncludeRankType

-- | <tt>SOCIAL</tt> Retrieve the social rank.
SGIRTSocial :: ScoresGetIncludeRankType

-- | This is a JSON template for a score rank in a leaderboard.
--   
--   <i>See:</i> <a>leaderboardScoreRank</a> smart constructor.
data LeaderboardScoreRank

-- | Creates a value of <a>LeaderboardScoreRank</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrNumScores</a></li>
--   <li><a>lsrKind</a></li>
--   <li><a>lsrFormattedRank</a></li>
--   <li><a>lsrFormattedNumScores</a></li>
--   <li><a>lsrRank</a></li>
--   </ul>
leaderboardScoreRank :: LeaderboardScoreRank

-- | The number of scores in the leaderboard.
lsrNumScores :: Lens' LeaderboardScoreRank (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboardScoreRank.
lsrKind :: Lens' LeaderboardScoreRank Text

-- | The rank in the leaderboard as a string.
lsrFormattedRank :: Lens' LeaderboardScoreRank (Maybe Text)

-- | The number of scores in the leaderboard as a string.
lsrFormattedNumScores :: Lens' LeaderboardScoreRank (Maybe Text)

-- | The rank in the leaderboard.
lsrRank :: Lens' LeaderboardScoreRank (Maybe Int64)

-- | This is a JSON template for a room creation request.
--   
--   <i>See:</i> <a>roomCreateRequest</a> smart constructor.
data RoomCreateRequest

-- | Creates a value of <a>RoomCreateRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rooRequestId</a></li>
--   <li><a>rooVariant</a></li>
--   <li><a>rooNetworkDiagnostics</a></li>
--   <li><a>rooKind</a></li>
--   <li><a>rooInvitedPlayerIds</a></li>
--   <li><a>rooClientAddress</a></li>
--   <li><a>rooAutoMatchingCriteria</a></li>
--   <li><a>rooCapabilities</a></li>
--   </ul>
roomCreateRequest :: RoomCreateRequest

-- | A randomly generated numeric ID. This number is used at the server to
--   ensure that the request is handled correctly across retries.
rooRequestId :: Lens' RoomCreateRequest (Maybe Int64)

-- | The variant / mode of the application to be played. This can be any
--   integer value, or left blank. You should use a small number of
--   variants to keep the auto-matching pool as large as possible.
rooVariant :: Lens' RoomCreateRequest (Maybe Int32)

-- | Network diagnostics for the client creating the room.
rooNetworkDiagnostics :: Lens' RoomCreateRequest (Maybe NetworkDiagnostics)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomCreateRequest.
rooKind :: Lens' RoomCreateRequest Text

-- | The player IDs to invite to the room.
rooInvitedPlayerIds :: Lens' RoomCreateRequest [Text]

-- | Client address for the player creating the room.
rooClientAddress :: Lens' RoomCreateRequest (Maybe RoomClientAddress)

-- | Criteria for auto-matching players into this room.
rooAutoMatchingCriteria :: Lens' RoomCreateRequest (Maybe RoomAutoMatchingCriteria)

-- | The capabilities that this client supports for realtime communication.
rooCapabilities :: Lens' RoomCreateRequest [Text]

-- | This is a JSON template for a third party player list response.
--   
--   <i>See:</i> <a>playerListResponse</a> smart constructor.
data PlayerListResponse

-- | Creates a value of <a>PlayerListResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plrNextPageToken</a></li>
--   <li><a>plrKind</a></li>
--   <li><a>plrItems</a></li>
--   </ul>
playerListResponse :: PlayerListResponse

-- | Token corresponding to the next page of results.
plrNextPageToken :: Lens' PlayerListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerListResponse.
plrKind :: Lens' PlayerListResponse Text

-- | The players.
plrItems :: Lens' PlayerListResponse [Player]

-- | This is a JSON template for a ListScores response.
--   
--   <i>See:</i> <a>leaderboardScores</a> smart constructor.
data LeaderboardScores

-- | Creates a value of <a>LeaderboardScores</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsNextPageToken</a></li>
--   <li><a>lsNumScores</a></li>
--   <li><a>lsKind</a></li>
--   <li><a>lsPlayerScore</a></li>
--   <li><a>lsItems</a></li>
--   <li><a>lsPrevPageToken</a></li>
--   </ul>
leaderboardScores :: LeaderboardScores

-- | The pagination token for the next page of results.
lsNextPageToken :: Lens' LeaderboardScores (Maybe Text)

-- | The total number of scores in the leaderboard.
lsNumScores :: Lens' LeaderboardScores (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#leaderboardScores.
lsKind :: Lens' LeaderboardScores Text

-- | The score of the requesting player on the leaderboard. The player's
--   score may appear both here and in the list of scores above. If you are
--   viewing a public leaderboard and the player is not sharing their
--   gameplay information publicly, the scoreRank and formattedScoreRank
--   values will not be present.
lsPlayerScore :: Lens' LeaderboardScores (Maybe LeaderboardEntry)

-- | The scores in the leaderboard.
lsItems :: Lens' LeaderboardScores [LeaderboardEntry]

-- | The pagination token for the previous page of results.
lsPrevPageToken :: Lens' LeaderboardScores (Maybe Text)

-- | This is a JSON template for an achievement definition object.
--   
--   <i>See:</i> <a>achievementDefinition</a> smart constructor.
data AchievementDefinition

-- | Creates a value of <a>AchievementDefinition</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>adAchievementType</a></li>
--   <li><a>adFormattedTotalSteps</a></li>
--   <li><a>adRevealedIconURL</a></li>
--   <li><a>adKind</a></li>
--   <li><a>adExperiencePoints</a></li>
--   <li><a>adInitialState</a></li>
--   <li><a>adName</a></li>
--   <li><a>adId</a></li>
--   <li><a>adIsUnlockedIconURLDefault</a></li>
--   <li><a>adTotalSteps</a></li>
--   <li><a>adDescription</a></li>
--   <li><a>adIsRevealedIconURLDefault</a></li>
--   <li><a>adUnlockedIconURL</a></li>
--   </ul>
achievementDefinition :: AchievementDefinition

-- | The type of the achievement. Possible values are: - "STANDARD" -
--   Achievement is either locked or unlocked. - "INCREMENTAL" -
--   Achievement is incremental.
adAchievementType :: Lens' AchievementDefinition (Maybe Text)

-- | The total steps for an incremental achievement as a string.
adFormattedTotalSteps :: Lens' AchievementDefinition (Maybe Text)

-- | The image URL for the revealed achievement icon.
adRevealedIconURL :: Lens' AchievementDefinition (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementDefinition.
adKind :: Lens' AchievementDefinition Text

-- | Experience points which will be earned when unlocking this
--   achievement.
adExperiencePoints :: Lens' AchievementDefinition (Maybe Int64)

-- | The initial state of the achievement. Possible values are: - "HIDDEN"
--   - Achievement is hidden. - "REVEALED" - Achievement is revealed. -
--   "UNLOCKED" - Achievement is unlocked.
adInitialState :: Lens' AchievementDefinition (Maybe Text)

-- | The name of the achievement.
adName :: Lens' AchievementDefinition (Maybe Text)

-- | The ID of the achievement.
adId :: Lens' AchievementDefinition (Maybe Text)

-- | Indicates whether the unlocked icon image being returned is a default
--   image, or is game-provided.
adIsUnlockedIconURLDefault :: Lens' AchievementDefinition (Maybe Bool)

-- | The total steps for an incremental achievement.
adTotalSteps :: Lens' AchievementDefinition (Maybe Int32)

-- | The description of the achievement.
adDescription :: Lens' AchievementDefinition (Maybe Text)

-- | Indicates whether the revealed icon image being returned is a default
--   image, or is provided by the game.
adIsRevealedIconURLDefault :: Lens' AchievementDefinition (Maybe Bool)

-- | The image URL for the unlocked achievement icon.
adUnlockedIconURL :: Lens' AchievementDefinition (Maybe Text)

-- | This is a JSON template for a turn-based match creation request.
--   
--   <i>See:</i> <a>turnBasedMatchCreateRequest</a> smart constructor.
data TurnBasedMatchCreateRequest

-- | Creates a value of <a>TurnBasedMatchCreateRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmcrRequestId</a></li>
--   <li><a>tbmcrVariant</a></li>
--   <li><a>tbmcrKind</a></li>
--   <li><a>tbmcrInvitedPlayerIds</a></li>
--   <li><a>tbmcrAutoMatchingCriteria</a></li>
--   </ul>
turnBasedMatchCreateRequest :: TurnBasedMatchCreateRequest

-- | A randomly generated numeric ID. This number is used at the server to
--   ensure that the request is handled correctly across retries.
tbmcrRequestId :: Lens' TurnBasedMatchCreateRequest (Maybe Int64)

-- | The variant / mode of the application to be played. This can be any
--   integer value, or left blank. You should use a small number of
--   variants to keep the auto-matching pool as large as possible.
tbmcrVariant :: Lens' TurnBasedMatchCreateRequest (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchCreateRequest.
tbmcrKind :: Lens' TurnBasedMatchCreateRequest Text

-- | The player ids to invite to the match.
tbmcrInvitedPlayerIds :: Lens' TurnBasedMatchCreateRequest [Text]

-- | Criteria for auto-matching players into this match.
tbmcrAutoMatchingCriteria :: Lens' TurnBasedMatchCreateRequest (Maybe TurnBasedAutoMatchingCriteria)

-- | This is a JSON template for a batch update failure resource.
--   
--   <i>See:</i> <a>eventBatchRecordFailure</a> smart constructor.
data EventBatchRecordFailure

-- | Creates a value of <a>EventBatchRecordFailure</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ebrfKind</a></li>
--   <li><a>ebrfRange</a></li>
--   <li><a>ebrfFailureCause</a></li>
--   </ul>
eventBatchRecordFailure :: EventBatchRecordFailure

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventBatchRecordFailure.
ebrfKind :: Lens' EventBatchRecordFailure Text

-- | The time range which was rejected; empty for a request-wide failure.
ebrfRange :: Lens' EventBatchRecordFailure (Maybe EventPeriodRange)

-- | The cause for the update failure. Possible values are: - "TOO_LARGE":
--   A batch request was issued with more events than are allowed in a
--   single batch. - "TIME_PERIOD_EXPIRED": A batch was sent with data too
--   far in the past to record. - "TIME_PERIOD_SHORT": A batch was sent
--   with a time range that was too short. - "TIME_PERIOD_LONG": A batch
--   was sent with a time range that was too long. - "ALREADY_UPDATED": An
--   attempt was made to record a batch of data which was already seen. -
--   "RECORD_RATE_HIGH": An attempt was made to record data faster than the
--   server will apply updates.
ebrfFailureCause :: Lens' EventBatchRecordFailure (Maybe Text)

-- | This is a JSON template for a turn-based match results object.
--   
--   <i>See:</i> <a>turnBasedMatchResults</a> smart constructor.
data TurnBasedMatchResults

-- | Creates a value of <a>TurnBasedMatchResults</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmrResults</a></li>
--   <li><a>tbmrKind</a></li>
--   <li><a>tbmrData</a></li>
--   <li><a>tbmrMatchVersion</a></li>
--   </ul>
turnBasedMatchResults :: TurnBasedMatchResults

-- | The match results for the participants in the match.
tbmrResults :: Lens' TurnBasedMatchResults [ParticipantResult]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchResults.
tbmrKind :: Lens' TurnBasedMatchResults Text

-- | The final match data.
tbmrData :: Lens' TurnBasedMatchResults (Maybe TurnBasedMatchDataRequest)

-- | The version of the match being updated.
tbmrMatchVersion :: Lens' TurnBasedMatchResults (Maybe Int32)

-- | A push token ID for iOS devices.
--   
--   <i>See:</i> <a>pushTokenIdIos</a> smart constructor.
data PushTokenIdIos

-- | Creates a value of <a>PushTokenIdIos</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptiiAPNSDeviceToken</a></li>
--   <li><a>ptiiAPNSEnvironment</a></li>
--   </ul>
pushTokenIdIos :: PushTokenIdIos

-- | Device token supplied by an iOS system call to register for remote
--   notifications. Encode this field as web-safe base64.
ptiiAPNSDeviceToken :: Lens' PushTokenIdIos (Maybe ByteString)

-- | Indicates whether this token should be used for the production or
--   sandbox APNS server.
ptiiAPNSEnvironment :: Lens' PushTokenIdIos (Maybe Text)

-- | This is a JSON template for a leave room request.
--   
--   <i>See:</i> <a>roomLeaveRequest</a> smart constructor.
data RoomLeaveRequest

-- | Creates a value of <a>RoomLeaveRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rlrKind</a></li>
--   <li><a>rlrReason</a></li>
--   <li><a>rlrLeaveDiagnostics</a></li>
--   </ul>
roomLeaveRequest :: RoomLeaveRequest

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomLeaveRequest.
rlrKind :: Lens' RoomLeaveRequest Text

-- | Reason for leaving the match. Possible values are: - "PLAYER_LEFT" -
--   The player chose to leave the room.. - "GAME_LEFT" - The game chose to
--   remove the player from the room. - "REALTIME_ABANDONED" - The player
--   switched to another application and abandoned the room. -
--   "REALTIME_PEER_CONNECTION_FAILURE" - The client was unable to
--   establish a connection to other peer(s). -
--   "REALTIME_SERVER_CONNECTION_FAILURE" - The client was unable to
--   communicate with the server. - "REALTIME_SERVER_ERROR" - The client
--   received an error response when it tried to communicate with the
--   server. - "REALTIME_TIMEOUT" - The client timed out while waiting for
--   a room. - "REALTIME_CLIENT_DISCONNECTING" - The client disconnects
--   without first calling Leave. - "REALTIME_SIGN_OUT" - The user signed
--   out of G+ while in the room. - "REALTIME_GAME_CRASHED" - The game
--   crashed. - "REALTIME_ROOM_SERVICE_CRASHED" - RoomAndroidService
--   crashed. - "REALTIME_DIFFERENT_CLIENT_ROOM_OPERATION" - Another client
--   is trying to enter a room. - "REALTIME_SAME_CLIENT_ROOM_OPERATION" -
--   The same client is trying to enter a new room.
rlrReason :: Lens' RoomLeaveRequest (Maybe Text)

-- | Diagnostics for a player leaving the room.
rlrLeaveDiagnostics :: Lens' RoomLeaveRequest (Maybe RoomLeaveDiagnostics)

-- | This is a JSON template for metadata about a player playing a game
--   with the currently authenticated user.
--   
--   <i>See:</i> <a>played</a> smart constructor.
data Played

-- | Creates a value of <a>Played</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pKind</a></li>
--   <li><a>pAutoMatched</a></li>
--   <li><a>pTimeMillis</a></li>
--   </ul>
played :: Played

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#played.
pKind :: Lens' Played Text

-- | True if the player was auto-matched with the currently authenticated
--   user.
pAutoMatched :: Lens' Played (Maybe Bool)

-- | The last time the player played the game in milliseconds since the
--   epoch in UTC.
pTimeMillis :: Lens' Played (Maybe Int64)

-- | This is a JSON template for an achievement increment response
--   
--   <i>See:</i> <a>achievementIncrementResponse</a> smart constructor.
data AchievementIncrementResponse

-- | Creates a value of <a>AchievementIncrementResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>airKind</a></li>
--   <li><a>airNewlyUnlocked</a></li>
--   <li><a>airCurrentSteps</a></li>
--   </ul>
achievementIncrementResponse :: AchievementIncrementResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementIncrementResponse.
airKind :: Lens' AchievementIncrementResponse Text

-- | Whether the current steps for the achievement has reached the number
--   of steps required to unlock.
airNewlyUnlocked :: Lens' AchievementIncrementResponse (Maybe Bool)

-- | The current steps recorded for this incremental achievement.
airCurrentSteps :: Lens' AchievementIncrementResponse (Maybe Int32)

-- | This is a JSON template for an achievement reveal response
--   
--   <i>See:</i> <a>achievementRevealResponse</a> smart constructor.
data AchievementRevealResponse

-- | Creates a value of <a>AchievementRevealResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arrKind</a></li>
--   <li><a>arrCurrentState</a></li>
--   </ul>
achievementRevealResponse :: AchievementRevealResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementRevealResponse.
arrKind :: Lens' AchievementRevealResponse Text

-- | The current state of the achievement for which a reveal was attempted.
--   This might be UNLOCKED if the achievement was already unlocked.
--   Possible values are: - "REVEALED" - Achievement is revealed. -
--   "UNLOCKED" - Achievement is unlocked.
arrCurrentState :: Lens' AchievementRevealResponse (Maybe Text)

-- | This is a JSON template for an achievement set steps at least
--   response.
--   
--   <i>See:</i> <a>achievementSetStepsAtLeastResponse</a> smart
--   constructor.
data AchievementSetStepsAtLeastResponse

-- | Creates a value of <a>AchievementSetStepsAtLeastResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>assalrKind</a></li>
--   <li><a>assalrNewlyUnlocked</a></li>
--   <li><a>assalrCurrentSteps</a></li>
--   </ul>
achievementSetStepsAtLeastResponse :: AchievementSetStepsAtLeastResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#achievementSetStepsAtLeastResponse.
assalrKind :: Lens' AchievementSetStepsAtLeastResponse Text

-- | Whether the the current steps for the achievement has reached the
--   number of steps required to unlock.
assalrNewlyUnlocked :: Lens' AchievementSetStepsAtLeastResponse (Maybe Bool)

-- | The current steps recorded for this incremental achievement.
assalrCurrentSteps :: Lens' AchievementSetStepsAtLeastResponse (Maybe Int32)

-- | This is a JSON template for a list of achievement objects.
--   
--   <i>See:</i> <a>playerAchievementListResponse</a> smart constructor.
data PlayerAchievementListResponse

-- | Creates a value of <a>PlayerAchievementListResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>palrNextPageToken</a></li>
--   <li><a>palrKind</a></li>
--   <li><a>palrItems</a></li>
--   </ul>
playerAchievementListResponse :: PlayerAchievementListResponse

-- | Token corresponding to the next page of results.
palrNextPageToken :: Lens' PlayerAchievementListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerAchievementListResponse.
palrKind :: Lens' PlayerAchievementListResponse Text

-- | The achievements.
palrItems :: Lens' PlayerAchievementListResponse [PlayerAchievement]

-- | This is a JSON template for an event period update resource.
--   
--   <i>See:</i> <a>eventRecordRequest</a> smart constructor.
data EventRecordRequest

-- | Creates a value of <a>EventRecordRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>errRequestId</a></li>
--   <li><a>errKind</a></li>
--   <li><a>errCurrentTimeMillis</a></li>
--   <li><a>errTimePeriods</a></li>
--   </ul>
eventRecordRequest :: EventRecordRequest

-- | The request ID used to identify this attempt to record events.
errRequestId :: Lens' EventRecordRequest (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventRecordRequest.
errKind :: Lens' EventRecordRequest Text

-- | The current time when this update was sent, in milliseconds, since
--   1970 UTC (Unix Epoch).
errCurrentTimeMillis :: Lens' EventRecordRequest (Maybe Int64)

-- | A list of the time period updates being made in this request.
errTimePeriods :: Lens' EventRecordRequest [EventPeriodUpdate]

-- | This is a JSON template for a room auto-match criteria object.
--   
--   <i>See:</i> <a>roomAutoMatchingCriteria</a> smart constructor.
data RoomAutoMatchingCriteria

-- | Creates a value of <a>RoomAutoMatchingCriteria</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ramcKind</a></li>
--   <li><a>ramcExclusiveBitmask</a></li>
--   <li><a>ramcMaxAutoMatchingPlayers</a></li>
--   <li><a>ramcMinAutoMatchingPlayers</a></li>
--   </ul>
roomAutoMatchingCriteria :: RoomAutoMatchingCriteria

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomAutoMatchingCriteria.
ramcKind :: Lens' RoomAutoMatchingCriteria Text

-- | A bitmask indicating when auto-matches are valid. When ANDed with
--   other exclusive bitmasks, the result must be zero. Can be used to
--   support exclusive roles within a game.
ramcExclusiveBitmask :: Lens' RoomAutoMatchingCriteria (Maybe Int64)

-- | The maximum number of players that should be added to the room by
--   auto-matching.
ramcMaxAutoMatchingPlayers :: Lens' RoomAutoMatchingCriteria (Maybe Int32)

-- | The minimum number of players that should be added to the room by
--   auto-matching.
ramcMinAutoMatchingPlayers :: Lens' RoomAutoMatchingCriteria (Maybe Int32)

-- | The time span for the scores and ranks you're requesting.
data ScoresListTimeSpan

-- | <tt>ALL_TIME</tt> List the all-time top scores.
SLTSAllTime :: ScoresListTimeSpan

-- | <tt>DAILY</tt> List the top scores for the current day.
SLTSDaily :: ScoresListTimeSpan

-- | <tt>WEEKLY</tt> List the top scores for the current week.
SLTSWeekly :: ScoresListTimeSpan

-- | This is a JSON template for a Quest Milestone resource.
--   
--   <i>See:</i> <a>questMilestone</a> smart constructor.
data QuestMilestone

-- | Creates a value of <a>QuestMilestone</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>qmState</a></li>
--   <li><a>qmKind</a></li>
--   <li><a>qmId</a></li>
--   <li><a>qmCompletionRewardData</a></li>
--   <li><a>qmCriteria</a></li>
--   </ul>
questMilestone :: QuestMilestone

-- | The current state of the milestone. Possible values are: -
--   "COMPLETED_NOT_CLAIMED" - The milestone is complete, but has not yet
--   been claimed. - "CLAIMED" - The milestone is complete and has been
--   claimed. - "NOT_COMPLETED" - The milestone has not yet been completed.
--   - "NOT_STARTED" - The milestone is for a quest that has not yet been
--   accepted.
qmState :: Lens' QuestMilestone (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#questMilestone.
qmKind :: Lens' QuestMilestone Text

-- | The milestone ID.
qmId :: Lens' QuestMilestone (Maybe Text)

-- | The completion reward data of the milestone, represented as a
--   Base64-encoded string. This is a developer-specified binary blob with
--   size between 0 and 2 KB before encoding.
qmCompletionRewardData :: Lens' QuestMilestone (Maybe ByteString)

-- | The criteria of the milestone.
qmCriteria :: Lens' QuestMilestone [QuestCriterion]

-- | This is a JSON template for peer session diagnostics.
--   
--   <i>See:</i> <a>peerSessionDiagnostics</a> smart constructor.
data PeerSessionDiagnostics

-- | Creates a value of <a>PeerSessionDiagnostics</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psdConnectedTimestampMillis</a></li>
--   <li><a>psdParticipantId</a></li>
--   <li><a>psdKind</a></li>
--   <li><a>psdUnreliableChannel</a></li>
--   <li><a>psdReliableChannel</a></li>
--   </ul>
peerSessionDiagnostics :: PeerSessionDiagnostics

-- | Connected time in milliseconds.
psdConnectedTimestampMillis :: Lens' PeerSessionDiagnostics (Maybe Int64)

-- | The participant ID of the peer.
psdParticipantId :: Lens' PeerSessionDiagnostics (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#peerSessionDiagnostics.
psdKind :: Lens' PeerSessionDiagnostics Text

-- | Unreliable channel diagnostics.
psdUnreliableChannel :: Lens' PeerSessionDiagnostics (Maybe PeerChannelDiagnostics)

-- | Reliable channel diagnostics.
psdReliableChannel :: Lens' PeerSessionDiagnostics (Maybe PeerChannelDiagnostics)

-- | This is a JSON template for a push token ID resource.
--   
--   <i>See:</i> <a>pushTokenId</a> smart constructor.
data PushTokenId

-- | Creates a value of <a>PushTokenId</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ptiIos</a></li>
--   <li><a>ptiKind</a></li>
--   </ul>
pushTokenId :: PushTokenId

-- | A push token ID for iOS devices.
ptiIos :: Lens' PushTokenId (Maybe PushTokenIdIos)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#pushTokenId.
ptiKind :: Lens' PushTokenId Text

-- | This is a JSON template for an event period update resource.
--   
--   <i>See:</i> <a>eventPeriodUpdate</a> smart constructor.
data EventPeriodUpdate

-- | Creates a value of <a>EventPeriodUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>epuKind</a></li>
--   <li><a>epuTimePeriod</a></li>
--   <li><a>epuUpdates</a></li>
--   </ul>
eventPeriodUpdate :: EventPeriodUpdate

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventPeriodUpdate.
epuKind :: Lens' EventPeriodUpdate Text

-- | The time period being covered by this update.
epuTimePeriod :: Lens' EventPeriodUpdate (Maybe EventPeriodRange)

-- | The updates being made for this time period.
epuUpdates :: Lens' EventPeriodUpdate [EventUpdateRequest]

-- | This is a JSON template for a list of turn-based matches returned from
--   a sync.
--   
--   <i>See:</i> <a>turnBasedMatchSync</a> smart constructor.
data TurnBasedMatchSync

-- | Creates a value of <a>TurnBasedMatchSync</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmsMoreAvailable</a></li>
--   <li><a>tbmsNextPageToken</a></li>
--   <li><a>tbmsKind</a></li>
--   <li><a>tbmsItems</a></li>
--   </ul>
turnBasedMatchSync :: TurnBasedMatchSync

-- | True if there were more matches available to fetch at the time the
--   response was generated (which were not returned due to page size
--   limits.)
tbmsMoreAvailable :: Lens' TurnBasedMatchSync (Maybe Bool)

-- | The pagination token for the next page of results.
tbmsNextPageToken :: Lens' TurnBasedMatchSync (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchSync.
tbmsKind :: Lens' TurnBasedMatchSync Text

-- | The matches.
tbmsItems :: Lens' TurnBasedMatchSync [TurnBasedMatch]

-- | This is a JSON template for a request to submit a score to
--   leaderboards.
--   
--   <i>See:</i> <a>scoreSubmission</a> smart constructor.
data ScoreSubmission

-- | Creates a value of <a>ScoreSubmission</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>scoSignature</a></li>
--   <li><a>scoScoreTag</a></li>
--   <li><a>scoScore</a></li>
--   <li><a>scoKind</a></li>
--   <li><a>scoLeaderboardId</a></li>
--   </ul>
scoreSubmission :: ScoreSubmission

-- | Signature Values will contain URI-safe characters as defined by
--   section 2.3 of RFC 3986.
scoSignature :: Lens' ScoreSubmission (Maybe Text)

-- | Additional information about this score. Values will contain no more
--   than 64 URI-safe characters as defined by section 2.3 of RFC 3986.
scoScoreTag :: Lens' ScoreSubmission (Maybe Text)

-- | The new score being submitted.
scoScore :: Lens' ScoreSubmission (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#scoreSubmission.
scoKind :: Lens' ScoreSubmission Text

-- | The leaderboard this score is being submitted to.
scoLeaderboardId :: Lens' ScoreSubmission (Maybe Text)

-- | This is a JSON template for room leave diagnostics.
--   
--   <i>See:</i> <a>roomLeaveDiagnostics</a> smart constructor.
data RoomLeaveDiagnostics

-- | Creates a value of <a>RoomLeaveDiagnostics</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>rldPeerSession</a></li>
--   <li><a>rldAndroidNetworkType</a></li>
--   <li><a>rldKind</a></li>
--   <li><a>rldNetworkOperatorCode</a></li>
--   <li><a>rldNetworkOperatorName</a></li>
--   <li><a>rldSocketsUsed</a></li>
--   <li><a>rldIosNetworkType</a></li>
--   <li><a>rldAndroidNetworkSubtype</a></li>
--   </ul>
roomLeaveDiagnostics :: RoomLeaveDiagnostics

-- | Diagnostics about all peer sessions.
rldPeerSession :: Lens' RoomLeaveDiagnostics [PeerSessionDiagnostics]

-- | Android network type.
--   http://developer.android.com/reference/android/net/NetworkInfo.html#getType()
rldAndroidNetworkType :: Lens' RoomLeaveDiagnostics (Maybe Int32)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#roomLeaveDiagnostics.
rldKind :: Lens' RoomLeaveDiagnostics Text

-- | The MCC+MNC code for the client's network connection. On Android:
--   http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkOperator()
--   On iOS, see:
--   https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html
rldNetworkOperatorCode :: Lens' RoomLeaveDiagnostics (Maybe Text)

-- | The name of the carrier of the client's network connection. On
--   Android:
--   http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkOperatorName()
--   On iOS:
--   https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CTCarrier/Reference/Reference.html#//apple_ref/occ/instp/CTCarrier/carrierName
rldNetworkOperatorName :: Lens' RoomLeaveDiagnostics (Maybe Text)

-- | Whether or not sockets were used.
rldSocketsUsed :: Lens' RoomLeaveDiagnostics (Maybe Bool)

-- | iOS network type as defined in Reachability.h.
rldIosNetworkType :: Lens' RoomLeaveDiagnostics (Maybe Int32)

-- | Android network subtype.
--   http://developer.android.com/reference/android/net/NetworkInfo.html#getSubtype()
rldAndroidNetworkSubtype :: Lens' RoomLeaveDiagnostics (Maybe Int32)

-- | This is a JSON template for aggregate stats.
--   
--   <i>See:</i> <a>aggregateStats</a> smart constructor.
data AggregateStats

-- | Creates a value of <a>AggregateStats</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asMax</a></li>
--   <li><a>asKind</a></li>
--   <li><a>asCount</a></li>
--   <li><a>asMin</a></li>
--   <li><a>asSum</a></li>
--   </ul>
aggregateStats :: AggregateStats

-- | The maximum amount.
asMax :: Lens' AggregateStats (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#aggregateStats.
asKind :: Lens' AggregateStats Text

-- | The number of messages sent between a pair of peers.
asCount :: Lens' AggregateStats (Maybe Int64)

-- | The minimum amount.
asMin :: Lens' AggregateStats (Maybe Int64)

-- | The total number of bytes sent for messages between a pair of peers.
asSum :: Lens' AggregateStats (Maybe Int64)

-- | This is a JSON template for the Web details resource.
--   
--   <i>See:</i> <a>instanceWebDetails</a> smart constructor.
data InstanceWebDetails

-- | Creates a value of <a>InstanceWebDetails</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iwdPreferred</a></li>
--   <li><a>iwdKind</a></li>
--   <li><a>iwdLaunchURL</a></li>
--   </ul>
instanceWebDetails :: InstanceWebDetails

-- | Indicates that this instance is the default for new installations.
iwdPreferred :: Lens' InstanceWebDetails (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#instanceWebDetails.
iwdKind :: Lens' InstanceWebDetails Text

-- | Launch URL for the game.
iwdLaunchURL :: Lens' InstanceWebDetails (Maybe Text)

-- | This is a JSON template for a rematch response.
--   
--   <i>See:</i> <a>turnBasedMatchRematch</a> smart constructor.
data TurnBasedMatchRematch

-- | Creates a value of <a>TurnBasedMatchRematch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tRematch</a></li>
--   <li><a>tKind</a></li>
--   <li><a>tPreviousMatch</a></li>
--   </ul>
turnBasedMatchRematch :: TurnBasedMatchRematch

-- | The newly created match; a rematch of the old match with the same
--   participants.
tRematch :: Lens' TurnBasedMatchRematch (Maybe TurnBasedMatch)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchRematch.
tKind :: Lens' TurnBasedMatchRematch Text

-- | The old match that the rematch was created from; will be updated such
--   that the rematchId field will point at the new match.
tPreviousMatch :: Lens' TurnBasedMatchRematch (Maybe TurnBasedMatch)

-- | This is a JSON template for 1P/3P metadata about the player's
--   experience.
--   
--   <i>See:</i> <a>playerExperienceInfo</a> smart constructor.
data PlayerExperienceInfo

-- | Creates a value of <a>PlayerExperienceInfo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>peiKind</a></li>
--   <li><a>peiCurrentExperiencePoints</a></li>
--   <li><a>peiCurrentLevel</a></li>
--   <li><a>peiNextLevel</a></li>
--   <li><a>peiLastLevelUpTimestampMillis</a></li>
--   </ul>
playerExperienceInfo :: PlayerExperienceInfo

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerExperienceInfo.
peiKind :: Lens' PlayerExperienceInfo Text

-- | The current number of experience points for the player.
peiCurrentExperiencePoints :: Lens' PlayerExperienceInfo (Maybe Int64)

-- | The current level of the player.
peiCurrentLevel :: Lens' PlayerExperienceInfo (Maybe PlayerLevel)

-- | The next level of the player. If the current level is the maximum
--   level, this should be same as the current level.
peiNextLevel :: Lens' PlayerExperienceInfo (Maybe PlayerLevel)

-- | The timestamp when the player was leveled up, in millis since Unix
--   epoch UTC.
peiLastLevelUpTimestampMillis :: Lens' PlayerExperienceInfo (Maybe Int64)

-- | This is a JSON template for the payload to request to increment an
--   achievement.
--   
--   <i>See:</i> <a>gamesAchievementSetStepsAtLeast</a> smart constructor.
data GamesAchievementSetStepsAtLeast

-- | Creates a value of <a>GamesAchievementSetStepsAtLeast</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gassalKind</a></li>
--   <li><a>gassalSteps</a></li>
--   </ul>
gamesAchievementSetStepsAtLeast :: GamesAchievementSetStepsAtLeast

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#GamesAchievementSetStepsAtLeast.
gassalKind :: Lens' GamesAchievementSetStepsAtLeast Text

-- | The minimum number of steps for the achievement to be set to.
gassalSteps :: Lens' GamesAchievementSetStepsAtLeast (Maybe Int32)

-- | This is a JSON template for a Player resource.
--   
--   <i>See:</i> <a>player</a> smart constructor.
data Player

-- | Creates a value of <a>Player</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>plaBannerURLLandscape</a></li>
--   <li><a>plaLastPlayedWith</a></li>
--   <li><a>plaAvatarImageURL</a></li>
--   <li><a>plaKind</a></li>
--   <li><a>plaExperienceInfo</a></li>
--   <li><a>plaName</a></li>
--   <li><a>plaOriginalPlayerId</a></li>
--   <li><a>plaDisplayName</a></li>
--   <li><a>plaTitle</a></li>
--   <li><a>plaBannerURLPortrait</a></li>
--   <li><a>plaPlayerId</a></li>
--   <li><a>plaProFileSettings</a></li>
--   </ul>
player :: Player

-- | The url to the landscape mode player banner image.
plaBannerURLLandscape :: Lens' Player (Maybe Text)

-- | Details about the last time this player played a multiplayer game with
--   the currently authenticated player. Populated for PLAYED_WITH player
--   collection members.
plaLastPlayedWith :: Lens' Player (Maybe Played)

-- | The base URL for the image that represents the player.
plaAvatarImageURL :: Lens' Player (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#player.
plaKind :: Lens' Player Text

-- | An object to represent Play Game experience information for the
--   player.
plaExperienceInfo :: Lens' Player (Maybe PlayerExperienceInfo)

-- | An object representation of the individual components of the player's
--   name. For some players, these fields may not be present.
plaName :: Lens' Player (Maybe PlayerName)

-- | The player ID that was used for this player the first time they signed
--   into the game in question. This is only populated for calls to
--   player.get for the requesting player, only if the player ID has
--   subsequently changed, and only to clients that support remapping
--   player IDs.
plaOriginalPlayerId :: Lens' Player (Maybe Text)

-- | The name to display for the player.
plaDisplayName :: Lens' Player (Maybe Text)

-- | The player's title rewarded for their game activities.
plaTitle :: Lens' Player (Maybe Text)

-- | The url to the portrait mode player banner image.
plaBannerURLPortrait :: Lens' Player (Maybe Text)

-- | The ID of the player.
plaPlayerId :: Lens' Player (Maybe Text)

-- | The player's profile settings. Controls whether or not the player's
--   profile is visible to other players.
plaProFileSettings :: Lens' Player (Maybe ProFileSettings)

-- | This is a JSON template for the payload to request to increment an
--   achievement.
--   
--   <i>See:</i> <a>gamesAchievementIncrement</a> smart constructor.
data GamesAchievementIncrement

-- | Creates a value of <a>GamesAchievementIncrement</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gaiRequestId</a></li>
--   <li><a>gaiKind</a></li>
--   <li><a>gaiSteps</a></li>
--   </ul>
gamesAchievementIncrement :: GamesAchievementIncrement

-- | The requestId associated with an increment to an achievement.
gaiRequestId :: Lens' GamesAchievementIncrement (Maybe Int64)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#GamesAchievementIncrement.
gaiKind :: Lens' GamesAchievementIncrement Text

-- | The number of steps to be incremented.
gaiSteps :: Lens' GamesAchievementIncrement (Maybe Int32)

-- | This is a JSON template for a Quest resource.
--   
--   <i>See:</i> <a>quest</a> smart constructor.
data Quest

-- | Creates a value of <a>Quest</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>queLastUpdatedTimestampMillis</a></li>
--   <li><a>queBannerURL</a></li>
--   <li><a>queState</a></li>
--   <li><a>queMilestones</a></li>
--   <li><a>queKind</a></li>
--   <li><a>queApplicationId</a></li>
--   <li><a>queEndTimestampMillis</a></li>
--   <li><a>queName</a></li>
--   <li><a>queId</a></li>
--   <li><a>queIconURL</a></li>
--   <li><a>queStartTimestampMillis</a></li>
--   <li><a>queNotifyTimestampMillis</a></li>
--   <li><a>queDescription</a></li>
--   <li><a>queIsDefaultBannerURL</a></li>
--   <li><a>queIsDefaultIconURL</a></li>
--   <li><a>queAcceptedTimestampMillis</a></li>
--   </ul>
quest :: Quest

-- | The timestamp at which the quest was last updated by the user in
--   milliseconds since the epoch in UTC. Only present if the player has
--   accepted the quest.
queLastUpdatedTimestampMillis :: Lens' Quest (Maybe Int64)

-- | The banner image URL for the quest.
queBannerURL :: Lens' Quest (Maybe Text)

-- | The state of the quest. Possible values are: - "UPCOMING": The quest
--   is upcoming. The user can see the quest, but cannot accept it until it
--   is open. - "OPEN": The quest is currently open and may be accepted at
--   this time. - "ACCEPTED": The user is currently participating in this
--   quest. - "COMPLETED": The user has completed the quest. - "FAILED":
--   The quest was attempted but was not completed before the deadline
--   expired. - "EXPIRED": The quest has expired and was not accepted. -
--   "DELETED": The quest should be deleted from the local database.
queState :: Lens' Quest (Maybe Text)

-- | The quest milestones.
queMilestones :: Lens' Quest [QuestMilestone]

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#quest.
queKind :: Lens' Quest Text

-- | The ID of the application this quest is part of.
queApplicationId :: Lens' Quest (Maybe Text)

-- | The timestamp at which the quest ceases to be active in milliseconds
--   since the epoch in UTC.
queEndTimestampMillis :: Lens' Quest (Maybe Int64)

-- | The name of the quest.
queName :: Lens' Quest (Maybe Text)

-- | The ID of the quest.
queId :: Lens' Quest (Maybe Text)

-- | The icon image URL for the quest.
queIconURL :: Lens' Quest (Maybe Text)

-- | The timestamp at which the quest becomes active in milliseconds since
--   the epoch in UTC.
queStartTimestampMillis :: Lens' Quest (Maybe Int64)

-- | The timestamp at which the user should be notified that the quest will
--   end soon in milliseconds since the epoch in UTC.
queNotifyTimestampMillis :: Lens' Quest (Maybe Int64)

-- | The description of the quest.
queDescription :: Lens' Quest (Maybe Text)

-- | Indicates whether the banner image being returned is a default image,
--   or is game-provided.
queIsDefaultBannerURL :: Lens' Quest (Maybe Bool)

-- | Indicates whether the icon image being returned is a default image, or
--   is game-provided.
queIsDefaultIconURL :: Lens' Quest (Maybe Bool)

-- | The timestamp at which the user accepted the quest in milliseconds
--   since the epoch in UTC. Only present if the player has accepted the
--   quest.
queAcceptedTimestampMillis :: Lens' Quest (Maybe Int64)

-- | This is a JSON template for an event child relationship resource.
--   
--   <i>See:</i> <a>eventChild</a> smart constructor.
data EventChild

-- | Creates a value of <a>EventChild</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ecKind</a></li>
--   <li><a>ecChildId</a></li>
--   </ul>
eventChild :: EventChild

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventChild.
ecKind :: Lens' EventChild Text

-- | The ID of the child event.
ecChildId :: Lens' EventChild (Maybe Text)

-- | This is a JSON template for a third party application verification
--   response resource.
--   
--   <i>See:</i> <a>applicationVerifyResponse</a> smart constructor.
data ApplicationVerifyResponse

-- | Creates a value of <a>ApplicationVerifyResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>avrKind</a></li>
--   <li><a>avrAlternatePlayerId</a></li>
--   <li><a>avrPlayerId</a></li>
--   </ul>
applicationVerifyResponse :: ApplicationVerifyResponse

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#applicationVerifyResponse.
avrKind :: Lens' ApplicationVerifyResponse Text

-- | An alternate ID that was once used for the player that was issued the
--   auth token used in this request. (This field is not normally
--   populated.)
avrAlternatePlayerId :: Lens' ApplicationVerifyResponse (Maybe Text)

-- | The ID of the player that was issued the auth token used in this
--   request.
avrPlayerId :: Lens' ApplicationVerifyResponse (Maybe Text)

-- | This is a JSON template for a ListByPlayer response.
--   
--   <i>See:</i> <a>playerEventListResponse</a> smart constructor.
data PlayerEventListResponse

-- | Creates a value of <a>PlayerEventListResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pelrNextPageToken</a></li>
--   <li><a>pelrKind</a></li>
--   <li><a>pelrItems</a></li>
--   </ul>
playerEventListResponse :: PlayerEventListResponse

-- | The pagination token for the next page of results.
pelrNextPageToken :: Lens' PlayerEventListResponse (Maybe Text)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerEventListResponse.
pelrKind :: Lens' PlayerEventListResponse Text

-- | The player events.
pelrItems :: Lens' PlayerEventListResponse [PlayerEvent]

-- | This is a JSON template for sending a turn-based match data object.
--   
--   <i>See:</i> <a>turnBasedMatchDataRequest</a> smart constructor.
data TurnBasedMatchDataRequest

-- | Creates a value of <a>TurnBasedMatchDataRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tbmdrKind</a></li>
--   <li><a>tbmdrData</a></li>
--   </ul>
turnBasedMatchDataRequest :: TurnBasedMatchDataRequest

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#turnBasedMatchDataRequest.
tbmdrKind :: Lens' TurnBasedMatchDataRequest Text

-- | The byte representation of the data (limited to 128 kB), as a
--   Base64-encoded string with the URL_SAFE encoding option.
tbmdrData :: Lens' TurnBasedMatchDataRequest (Maybe ByteString)

-- | This is a JSON template for profile settings
--   
--   <i>See:</i> <a>proFileSettings</a> smart constructor.
data ProFileSettings

-- | Creates a value of <a>ProFileSettings</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>pfsProFileVisible</a></li>
--   <li><a>pfsKind</a></li>
--   </ul>
proFileSettings :: ProFileSettings

-- | The player's current profile visibility. This field is visible to both
--   1P and 3P APIs.
pfsProFileVisible :: Lens' ProFileSettings (Maybe Bool)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#profileSettings.
pfsKind :: Lens' ProFileSettings Text

-- | This is a JSON template for an event period time range.
--   
--   <i>See:</i> <a>eventPeriodRange</a> smart constructor.
data EventPeriodRange

-- | Creates a value of <a>EventPeriodRange</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>eprKind</a></li>
--   <li><a>eprPeriodStartMillis</a></li>
--   <li><a>eprPeriodEndMillis</a></li>
--   </ul>
eventPeriodRange :: EventPeriodRange

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventPeriodRange.
eprKind :: Lens' EventPeriodRange Text

-- | The time when this update period begins, in millis, since 1970 UTC
--   (Unix Epoch).
eprPeriodStartMillis :: Lens' EventPeriodRange (Maybe Int64)

-- | The time when this update period ends, in millis, since 1970 UTC (Unix
--   Epoch).
eprPeriodEndMillis :: Lens' EventPeriodRange (Maybe Int64)

-- | The collection of categories for which data will be returned.
data MetagameListCategoriesByPlayerCollection

-- | <tt>all</tt> Retrieve data for all categories. This is the default.
All :: MetagameListCategoriesByPlayerCollection

-- | Tells the server to return only achievements with the specified state.
--   If this parameter isn't specified, all achievements are returned.
data AchievementsListState

-- | <tt>ALL</tt> List all achievements. This is the default.
ALSAll :: AchievementsListState

-- | <tt>HIDDEN</tt> List only hidden achievements.
ALSHidden :: AchievementsListState

-- | <tt>REVEALED</tt> List only revealed achievements.
ALSRevealed :: AchievementsListState

-- | <tt>UNLOCKED</tt> List only unlocked achievements.
ALSUnlocked :: AchievementsListState

-- | This is a JSON template for an event update failure resource.
--   
--   <i>See:</i> <a>eventRecordFailure</a> smart constructor.
data EventRecordFailure

-- | Creates a value of <a>EventRecordFailure</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>erfKind</a></li>
--   <li><a>erfFailureCause</a></li>
--   <li><a>erfEventId</a></li>
--   </ul>
eventRecordFailure :: EventRecordFailure

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#eventRecordFailure.
erfKind :: Lens' EventRecordFailure Text

-- | The cause for the update failure. Possible values are: - "NOT_FOUND" -
--   An attempt was made to set an event that was not defined. -
--   "INVALID_UPDATE_VALUE" - An attempt was made to increment an event by
--   a non-positive value.
erfFailureCause :: Lens' EventRecordFailure (Maybe Text)

-- | The ID of the event that was not updated.
erfEventId :: Lens' EventRecordFailure (Maybe Text)

-- | This is a JSON template for a list of score submission requests
--   
--   <i>See:</i> <a>playerScoreSubmissionList</a> smart constructor.
data PlayerScoreSubmissionList

-- | Creates a value of <a>PlayerScoreSubmissionList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>psslKind</a></li>
--   <li><a>psslScores</a></li>
--   </ul>
playerScoreSubmissionList :: PlayerScoreSubmissionList

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#playerScoreSubmissionList.
psslKind :: Lens' PlayerScoreSubmissionList Text

-- | The score submissions.
psslScores :: Lens' PlayerScoreSubmissionList [ScoreSubmission]

-- | This is a JSON template for the Instance resource.
--   
--   <i>See:</i> <a>instance'</a> smart constructor.
data Instance

-- | Creates a value of <a>Instance</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iAndroidInstance</a></li>
--   <li><a>iKind</a></li>
--   <li><a>iWebInstance</a></li>
--   <li><a>iIosInstance</a></li>
--   <li><a>iName</a></li>
--   <li><a>iAcquisitionURI</a></li>
--   <li><a>iPlatformType</a></li>
--   <li><a>iTurnBasedPlay</a></li>
--   <li><a>iRealtimePlay</a></li>
--   </ul>
instance' :: Instance

-- | Platform dependent details for Android.
iAndroidInstance :: Lens' Instance (Maybe InstanceAndroidDetails)

-- | Uniquely identifies the type of this resource. Value is always the
--   fixed string games#instance.
iKind :: Lens' Instance Text

-- | Platform dependent details for Web.
iWebInstance :: Lens' Instance (Maybe InstanceWebDetails)

-- | Platform dependent details for iOS.
iIosInstance :: Lens' Instance (Maybe InstanceIosDetails)

-- | Localized display name.
iName :: Lens' Instance (Maybe Text)

-- | URI which shows where a user can acquire this instance.
iAcquisitionURI :: Lens' Instance (Maybe Text)

-- | The platform type. Possible values are: - "ANDROID" - Instance is for
--   Android. - "IOS" - Instance is for iOS - "WEB_APP" - Instance is for
--   Web App.
iPlatformType :: Lens' Instance (Maybe Text)

-- | Flag to show if this game instance supports turn based play.
iTurnBasedPlay :: Lens' Instance (Maybe Bool)

-- | Flag to show if this game instance supports realtime play.
iRealtimePlay :: Lens' Instance (Maybe Bool)
