content: {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE DeriveGeneric #-}
  {-# LANGUAGE TypeApplications #-}
  {-# LANGUAGE TypeOperators #-}
  module Telegram.Bot.API.Methods.GetUserProfilePhotos where
  
  import Data.Aeson (FromJSON (..), ToJSON (..))
  import Data.Proxy
  import GHC.Generics (Generic)
  import Servant.API
  import Servant.Client hiding (Response)
  
  import Telegram.Bot.API.Internal.Utils
  import Telegram.Bot.API.MakingRequests
  import Telegram.Bot.API.Types
  import Telegram.Bot.API.Internal.TH
  
  -- ** 'getUserProfilePhotos'
  
  -- | Request parameters for 'getUserProfilePhotos'.
  data GetUserProfilePhotosRequest = GetUserProfilePhotosRequest
    { getUserProfilePhotosUserId :: UserId -- ^ Unique identifier of the target user
    , getUserProfilePhotosOffset :: Maybe Int -- ^ Sequential number of the first photo to be returned. By default, all photos are returned.
    , getUserProfilePhotosLimit :: Maybe Int -- ^ Limits the number of photos to be retrieved. Values between 1-100 are accepted. Defaults to 100.
    }
    deriving Generic
  
  instance ToJSON   GetUserProfilePhotosRequest where toJSON = gtoJSON
  instance FromJSON GetUserProfilePhotosRequest where parseJSON = gparseJSON
  
  type GetUserProfilePhotos = "getUserProfilePhotos"
    :> ReqBody '[JSON] GetUserProfilePhotosRequest
    :> Post '[JSON] (Response UserProfilePhotos)
  
  -- | Use this method to get a list of profile pictures for a user.
  --   Returns a UserProfilePhotos object.
  getUserProfilePhotos :: GetUserProfilePhotosRequest ->  ClientM (Response UserProfilePhotos)
  getUserProfilePhotos = client (Proxy @GetUserProfilePhotos)
  
  makeDefault ''GetUserProfilePhotosRequest
  