/// <summary>
        /// <para>Update a device's session information</para>
        /// <para>This method should be called when a device opens your app after they are already registered. This method will automatically increment the player's session_count, and should also be used to update any fields that may have changed (such as language or timezone).</para>
        /// <para>If a player record is not found, a new one will be created if and only if the request includes a device_type.</para>
        /// </summary>
        /// <param name="playerId">Player id to add a new session to</param>
        /// <param name="options">Parameters for creating a new session</param>
        /// <returns>Status of new session request</returns>
        public GenericResponse NewSession(string playerId, NewSessionOptions options)
        {
            var response = Post <GenericResponse>($"players/{playerId}/on_session", options);

            response.Id = playerId;
            return(response);
        }
        /// <summary>
        /// <para>Update a device's session information</para>
        /// <para>This method should be called when a device opens your app after they are already registered. This method will automatically increment the player's session_count, and should also be used to update any fields that may have changed (such as language or timezone).</para>
        /// <para>If a player record is not found, a new one will be created if and only if the request includes a device_type.</para>
        /// </summary>
        /// <param name="playerId">Player id to add a new session to</param>
        /// <param name="options">Parameters for creating a new session</param>
        /// <returns>Status of new session request</returns>
        public async Task <GenericResponse> NewSessionAsync(string playerId, NewSessionOptions options)
        {
            var response = await PostAsync <GenericResponse>($"players/{playerId}/on_session", options);

            response.Id = playerId;
            return(response);
        }