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


-- | Twitter API package with conduit interface and Streaming API support.
--   
--   This package provides bindings to Twitter's APIs (see
--   <a>https://dev.twitter.com/</a>).
--   
--   This package uses the http-conduit package for accessing the Twitter
--   API (see <a>http://hackage.haskell.org/package/http-conduit</a>). This
--   package also depends on the twitter-types package (see
--   <a>http://hackage.haskell.org/package/twitter-types</a>).
--   
--   You can find basic examples in the
--   <a>https://github.com/himura/twitter-conduit/tree/master/sample</a>
--   directory.
--   
--   This package is under development. If you find something that has not
--   been implemented yet, please send a pull request or open an issue on
--   GitHub.
@package twitter-conduit
@version 0.2.1

module Web.Twitter.Conduit.Types
data TWToken
TWToken :: OAuth -> Credential -> TWToken
[twOAuth] :: TWToken -> OAuth
[twCredential] :: TWToken -> Credential
data TWInfo
TWInfo :: TWToken -> Maybe Proxy -> TWInfo
[twToken] :: TWInfo -> TWToken
[twProxy] :: TWInfo -> Maybe Proxy
twitterOAuth :: OAuth

-- | set OAuth keys and Credentials to TWInfo.
--   
--   <pre>
--   &gt;&gt;&gt; let proxy = Proxy "localhost" 8080
--   
--   &gt;&gt;&gt; let twinfo = def { twProxy = Just proxy }
--   
--   &gt;&gt;&gt; let oauth = twitterOAuth { oauthConsumerKey = "consumer_key", oauthConsumerSecret = "consumer_secret" }
--   
--   &gt;&gt;&gt; let credential = Credential [("oauth_token","...")]
--   
--   &gt;&gt;&gt; let twinfo2 = setCredential oauth credential twinfo
--   
--   &gt;&gt;&gt; oauthConsumerKey . twOAuth . twToken $ twinfo2
--   "consumer_key"
--   
--   &gt;&gt;&gt; twProxy twinfo2 == Just proxy
--   True
--   </pre>
setCredential :: OAuth -> Credential -> TWInfo -> TWInfo
instance GHC.Classes.Eq Web.Twitter.Conduit.Types.TWInfo
instance GHC.Read.Read Web.Twitter.Conduit.Types.TWInfo
instance GHC.Show.Show Web.Twitter.Conduit.Types.TWInfo
instance GHC.Classes.Eq Web.Twitter.Conduit.Types.TWToken
instance GHC.Read.Read Web.Twitter.Conduit.Types.TWToken
instance GHC.Show.Show Web.Twitter.Conduit.Types.TWToken
instance Data.Default.Class.Default Web.Twitter.Conduit.Types.TWToken
instance Data.Default.Class.Default Web.Twitter.Conduit.Types.TWInfo

module Web.Twitter.Conduit.Response
data Response responseType
Response :: Status -> ResponseHeaders -> responseType -> Response responseType
[responseStatus] :: Response responseType -> Status
[responseHeaders] :: Response responseType -> ResponseHeaders
[responseBody] :: Response responseType -> responseType
data TwitterError
FromJSONError :: String -> TwitterError
TwitterErrorResponse :: Status -> ResponseHeaders -> [TwitterErrorMessage] -> TwitterError
TwitterUnknownErrorResponse :: Status -> ResponseHeaders -> Value -> TwitterError
TwitterStatusError :: Status -> ResponseHeaders -> Value -> TwitterError

-- | Twitter Error Messages
--   
--   see detail: <a>https://dev.twitter.com/docs/error-codes-responses</a>
data TwitterErrorMessage
TwitterErrorMessage :: Int -> Text -> TwitterErrorMessage
[twitterErrorCode] :: TwitterErrorMessage -> Int
[twitterErrorMessage] :: TwitterErrorMessage -> Text
instance GHC.Classes.Eq Web.Twitter.Conduit.Response.TwitterError
instance GHC.Show.Show Web.Twitter.Conduit.Response.TwitterError
instance Data.Data.Data Web.Twitter.Conduit.Response.TwitterErrorMessage
instance GHC.Show.Show Web.Twitter.Conduit.Response.TwitterErrorMessage
instance Data.Traversable.Traversable Web.Twitter.Conduit.Response.Response
instance Data.Foldable.Foldable Web.Twitter.Conduit.Response.Response
instance GHC.Base.Functor Web.Twitter.Conduit.Response.Response
instance GHC.Classes.Eq responseType => GHC.Classes.Eq (Web.Twitter.Conduit.Response.Response responseType)
instance GHC.Show.Show responseType => GHC.Show.Show (Web.Twitter.Conduit.Response.Response responseType)
instance GHC.Exception.Exception Web.Twitter.Conduit.Response.TwitterError
instance GHC.Classes.Eq Web.Twitter.Conduit.Response.TwitterErrorMessage
instance GHC.Classes.Ord Web.Twitter.Conduit.Response.TwitterErrorMessage
instance GHC.Enum.Enum Web.Twitter.Conduit.Response.TwitterErrorMessage
instance Data.Aeson.Types.Class.FromJSON Web.Twitter.Conduit.Response.TwitterErrorMessage

module Web.Twitter.Conduit.Request
class Parameters a
params :: Parameters a => Lens' a APIQuery

-- | API request. You should use specific builder functions instead of
--   building this directly.
--   
--   For example, if there were a <tt>SampleApi</tt> type and a builder
--   function which named <tt>sampleApiRequest</tt>. In addition,
--   <tt><a>APIRequest</a> SampleApi [SampleId]</tt> is a instance of both
--   of <tt>HasCountParam</tt> and <tt>HasMaxIdParam</tt>.
--   
--   <pre>
--   data <tt>SampleApi</tt>
--   type <tt>SampleId</tt> = <a>Integer</a>
--   instance <tt>HasCountParam</tt> (<a>APIRequest</a> <tt>SampleApi</tt> [<tt>SampleId</tt>])
--   instance <tt>HasMaxIdParam</tt> (<a>APIRequest</a> <tt>SampleApi</tt> [<tt>SampleId</tt>])
--   <tt>sampleApiRequest</tt> :: <a>APIRequest</a> <tt>SampleApi</tt> [<tt>SampleId</tt>]
--   <tt>sampleApiRequest</tt> = <a>APIRequestGet</a> "https://api.twitter.com/sample/api.json" <tt>def</tt>
--   </pre>
--   
--   We can obtain request params from <tt><a>APIRequest</a> SampleApi
--   [SampleId]</tt> :
--   
--   <pre>
--   &gt;&gt;&gt; sampleApiRequest ^. params
--   []
--   </pre>
--   
--   And update request parameters.
--   
--   <pre>
--   &gt;&gt;&gt; (sampleApiRequest &amp; count ?~ 100 &amp; maxId ?~ 1234567890) ^. params
--   [("max_id",PVInteger {unPVInteger = 1234567890}),("count",PVInteger {unPVInteger = 100})]
--   
--   &gt;&gt;&gt; (sampleApiRequest &amp; count ?~ 100 &amp; maxId ?~ 1234567890 &amp; count .~ Nothing) ^. params
--   [("max_id",PVInteger {unPVInteger = 1234567890})]
--   </pre>
data APIRequest apiName responseType
APIRequestGet :: String -> APIQuery -> APIRequest apiName responseType
[_url] :: APIRequest apiName responseType -> String
[_params] :: APIRequest apiName responseType -> APIQuery
APIRequestPost :: String -> APIQuery -> APIRequest apiName responseType
[_url] :: APIRequest apiName responseType -> String
[_params] :: APIRequest apiName responseType -> APIQuery
APIRequestPostMultipart :: String -> APIQuery -> [Part] -> APIRequest apiName responseType
[_url] :: APIRequest apiName responseType -> String
[_params] :: APIRequest apiName responseType -> APIQuery
[_part] :: APIRequest apiName responseType -> [Part]
type APIQuery = [APIQueryItem]
type APIQueryItem = (ByteString, PV)
data PV
PVInteger :: Integer -> PV
[unPVInteger] :: PV -> Integer
PVBool :: Bool -> PV
[unPVBool] :: PV -> Bool
PVString :: Text -> PV
[unPVString] :: PV -> Text
PVIntegerArray :: [Integer] -> PV
[unPVIntegerArray] :: PV -> [Integer]
PVStringArray :: [Text] -> PV
[unPVStringArray] :: PV -> [Text]
PVDay :: Day -> PV
[unPVDay] :: PV -> Day
makeSimpleQuery :: APIQuery -> SimpleQuery
paramValueBS :: PV -> ByteString
instance GHC.Classes.Eq Web.Twitter.Conduit.Request.PV
instance GHC.Show.Show Web.Twitter.Conduit.Request.PV
instance Web.Twitter.Conduit.Request.Parameters (Web.Twitter.Conduit.Request.APIRequest apiName responseType)
instance GHC.Show.Show (Web.Twitter.Conduit.Request.APIRequest apiName responseType)

module Web.Twitter.Conduit.Parameters.TH
snakeToLowerCamel :: String -> String
snakeToUpperCamel :: String -> String
paramNameToClassName :: String -> String
wrappedParam :: Parameters p => ByteString -> (a -> PV) -> (PV -> a) -> Lens' p (Maybe a)
defineHasParamClass :: Name -> Name -> TypeQ -> String -> Q [Dec]
defineHasParamClass' :: String -> String -> Name -> Name -> TypeQ -> String -> Q [Dec]
deriveHasParamInstances :: Name -> [String] -> Q [Dec]
defineHasParamClassInteger :: String -> Q [Dec]
defineHasParamClassBool :: String -> Q [Dec]
defineHasParamClassString :: String -> Q [Dec]
defineHasParamClassURI :: String -> Q [Dec]
defineHasParamClassIntegerArray :: String -> Q [Dec]
defineHasParamClassStringArray :: String -> Q [Dec]
defineHasParamClassDay :: String -> Q [Dec]

module Web.Twitter.Conduit.Parameters
class Parameters a
params :: Parameters a => Lens' a APIQuery
data PV
PVInteger :: Integer -> PV
[unPVInteger] :: PV -> Integer
PVBool :: Bool -> PV
[unPVBool] :: PV -> Bool
PVString :: Text -> PV
[unPVString] :: PV -> Text
PVIntegerArray :: [Integer] -> PV
[unPVIntegerArray] :: PV -> [Integer]
PVStringArray :: [Text] -> PV
[unPVStringArray] :: PV -> [Text]
PVDay :: Day -> PV
[unPVDay] :: PV -> Day
type APIQuery = [APIQueryItem]
type APIQueryItem = (ByteString, PV)
makeSimpleQuery :: APIQuery -> SimpleQuery
class Parameters a_aSFG => HasSinceIdParam a_aSFG where sinceId = wrappedParam "since_id" PVInteger unPVInteger
sinceId :: HasSinceIdParam a_aSFG => Lens' a_aSFG (Maybe Integer)
class Parameters a_aSEY => HasCountParam a_aSEY where count = wrappedParam "count" PVInteger unPVInteger
count :: HasCountParam a_aSEY => Lens' a_aSEY (Maybe Integer)
class Parameters a_aSGo => HasMaxIdParam a_aSGo where maxId = wrappedParam "max_id" PVInteger unPVInteger
maxId :: HasMaxIdParam a_aSGo => Lens' a_aSGo (Maybe Integer)
class Parameters a_aSH6 => HasPageParam a_aSH6 where page = wrappedParam "page" PVInteger unPVInteger
page :: HasPageParam a_aSH6 => Lens' a_aSH6 (Maybe Integer)
class Parameters a_aSHO => HasCursorParam a_aSHO where cursor = wrappedParam "cursor" PVInteger unPVInteger
cursor :: HasCursorParam a_aSHO => Lens' a_aSHO (Maybe Integer)
class Parameters a_aSIw => HasTrimUserParam a_aSIw where trimUser = wrappedParam "trim_user" PVBool unPVBool
trimUser :: HasTrimUserParam a_aSIw => Lens' a_aSIw (Maybe Bool)
class Parameters a_aSJe => HasExcludeRepliesParam a_aSJe where excludeReplies = wrappedParam "exclude_replies" PVBool unPVBool
excludeReplies :: HasExcludeRepliesParam a_aSJe => Lens' a_aSJe (Maybe Bool)
class Parameters a_aSJW => HasContributorDetailsParam a_aSJW where contributorDetails = wrappedParam "contributor_details" PVBool unPVBool
contributorDetails :: HasContributorDetailsParam a_aSJW => Lens' a_aSJW (Maybe Bool)
class Parameters a_aSKE => HasIncludeEntitiesParam a_aSKE where includeEntities = wrappedParam "include_entities" PVBool unPVBool
includeEntities :: HasIncludeEntitiesParam a_aSKE => Lens' a_aSKE (Maybe Bool)
class Parameters a_aSLm => HasIncludeUserEntitiesParam a_aSLm where includeUserEntities = wrappedParam "include_user_entities" PVBool unPVBool
includeUserEntities :: HasIncludeUserEntitiesParam a_aSLm => Lens' a_aSLm (Maybe Bool)
class Parameters a_aSM4 => HasIncludeRtsParam a_aSM4 where includeRts = wrappedParam "include_rts" PVBool unPVBool
includeRts :: HasIncludeRtsParam a_aSM4 => Lens' a_aSM4 (Maybe Bool)
class Parameters a_aSMM => HasIncludeMyRetweetParam a_aSMM where includeMyRetweet = wrappedParam "include_my_retweet" PVBool unPVBool
includeMyRetweet :: HasIncludeMyRetweetParam a_aSMM => Lens' a_aSMM (Maybe Bool)
class Parameters a_aSNu => HasInReplyToStatusIdParam a_aSNu where inReplyToStatusId = wrappedParam "in_reply_to_status_id" PVInteger unPVInteger
inReplyToStatusId :: HasInReplyToStatusIdParam a_aSNu => Lens' a_aSNu (Maybe Integer)
class Parameters a_aSOc => HasDisplayCoordinatesParam a_aSOc where displayCoordinates = wrappedParam "display_coordinates" PVBool unPVBool
displayCoordinates :: HasDisplayCoordinatesParam a_aSOc => Lens' a_aSOc (Maybe Bool)
class Parameters a_aSOU => HasPossiblySensitiveParam a_aSOU where possiblySensitive = wrappedParam "possibly_sensitive" PVBool unPVBool
possiblySensitive :: HasPossiblySensitiveParam a_aSOU => Lens' a_aSOU (Maybe Bool)
class Parameters a_aSPC => HasLangParam a_aSPC where lang = wrappedParam "lang" PVString unPVString
lang :: HasLangParam a_aSPC => Lens' a_aSPC (Maybe Text)
class Parameters a_aSQk => HasLanguageParam a_aSQk where language = wrappedParam "language" PVString unPVString
language :: HasLanguageParam a_aSQk => Lens' a_aSQk (Maybe Text)
class Parameters a_aSR2 => HasLocaleParam a_aSR2 where locale = wrappedParam "locale" PVString unPVString
locale :: HasLocaleParam a_aSR2 => Lens' a_aSR2 (Maybe Text)
class Parameters a_aSRK => HasFilterLevelParam a_aSRK where filterLevel = wrappedParam "filter_level" PVString unPVString
filterLevel :: HasFilterLevelParam a_aSRK => Lens' a_aSRK (Maybe Text)
class Parameters a_aSSs => HasStallWarningsParam a_aSSs where stallWarnings = wrappedParam "stall_warnings" PVBool unPVBool
stallWarnings :: HasStallWarningsParam a_aSSs => Lens' a_aSSs (Maybe Bool)
class Parameters a_aSTa => HasRepliesParam a_aSTa where replies = wrappedParam "replies" PVString unPVString
replies :: HasRepliesParam a_aSTa => Lens' a_aSTa (Maybe Text)
class Parameters a_aSTS => HasUntilParam a_aSTS where until = wrappedParam "until" PVDay unPVDay
until :: HasUntilParam a_aSTS => Lens' a_aSTS (Maybe Day)
class Parameters a_aSUA => HasSkipStatusParam a_aSUA where skipStatus = wrappedParam "skip_status" PVBool unPVBool
skipStatus :: HasSkipStatusParam a_aSUA => Lens' a_aSUA (Maybe Bool)
class Parameters a_aSVi => HasFollowParam a_aSVi where follow = wrappedParam "follow" PVBool unPVBool
follow :: HasFollowParam a_aSVi => Lens' a_aSVi (Maybe Bool)
class Parameters a_aSW0 => HasMapParam a_aSW0 where map = wrappedParam "map" PVBool unPVBool
map :: HasMapParam a_aSW0 => Lens' a_aSW0 (Maybe Bool)
class Parameters a_aSWI => HasMediaIdsParam a_aSWI where mediaIds = wrappedParam "media_ids" PVIntegerArray unPVIntegerArray
mediaIds :: HasMediaIdsParam a_aSWI => Lens' a_aSWI (Maybe [Integer])
class Parameters a_aSXq => HasDescriptionParam a_aSXq where description = wrappedParam "description" PVString unPVString
description :: HasDescriptionParam a_aSXq => Lens' a_aSXq (Maybe Text)
class Parameters a_aSY8 => HasNameParam a_aSY8 where name = wrappedParam "name" PVString unPVString
name :: HasNameParam a_aSY8 => Lens' a_aSY8 (Maybe Text)
class Parameters a_aSYQ => HasProfileLinkColorParam a_aSYQ where profileLinkColor = wrappedParam "profile_link_color" PVString unPVString
profileLinkColor :: HasProfileLinkColorParam a_aSYQ => Lens' a_aSYQ (Maybe Text)
class Parameters a_aSZy => HasLocationParam a_aSZy where location = wrappedParam "location" PVString unPVString
location :: HasLocationParam a_aSZy => Lens' a_aSZy (Maybe Text)
class Parameters a_aT0g => HasUrlParam a_aT0g where url = wrappedParam "url" PVString unPVString
url :: HasUrlParam a_aT0g => Lens' a_aT0g (Maybe URIString)
class Parameters a_aT0Z => HasFullTextParam a_aT0Z where fullText = wrappedParam "full_text" PVBool unPVBool
fullText :: HasFullTextParam a_aT0Z => Lens' a_aT0Z (Maybe Bool)
data UserParam
UserIdParam :: UserId -> UserParam
ScreenNameParam :: String -> UserParam
data UserListParam
UserIdListParam :: [UserId] -> UserListParam
ScreenNameListParam :: [String] -> UserListParam
data ListParam
ListIdParam :: Integer -> ListParam
ListNameParam :: String -> ListParam
data MediaData
MediaFromFile :: FilePath -> MediaData
MediaRequestBody :: FilePath -> RequestBody -> MediaData

-- | converts <a>UserParam</a> to <a>SimpleQuery</a>.
--   
--   <pre>
--   &gt;&gt;&gt; makeSimpleQuery . mkUserParam $ UserIdParam 123456
--   [("user_id","123456")]
--   
--   &gt;&gt;&gt; makeSimpleQuery . mkUserParam $ ScreenNameParam "thimura"
--   [("screen_name","thimura")]
--   </pre>
mkUserParam :: UserParam -> APIQuery

-- | converts <a>UserListParam</a> to <a>SimpleQuery</a>.
--   
--   <pre>
--   &gt;&gt;&gt; makeSimpleQuery . mkUserListParam $ UserIdListParam [123456]
--   [("user_id","123456")]
--   
--   &gt;&gt;&gt; makeSimpleQuery . mkUserListParam $ UserIdListParam [123456, 654321]
--   [("user_id","123456,654321")]
--   
--   &gt;&gt;&gt; makeSimpleQuery . mkUserListParam $ ScreenNameListParam ["thimura", "NikaidouShinku"]
--   [("screen_name","thimura,NikaidouShinku")]
--   </pre>
mkUserListParam :: UserListParam -> APIQuery

-- | converts <a>ListParam</a> to <a>SimpleQuery</a>.
--   
--   <pre>
--   &gt;&gt;&gt; makeSimpleQuery . mkListParam $ ListIdParam 123123
--   [("list_id","123123")]
--   
--   &gt;&gt;&gt; makeSimpleQuery . mkListParam $ ListNameParam "thimura/haskell"
--   [("slug","haskell"),("owner_screen_name","thimura")]
--   </pre>
mkListParam :: ListParam -> APIQuery
instance GHC.Classes.Eq Web.Twitter.Conduit.Parameters.ListParam
instance GHC.Show.Show Web.Twitter.Conduit.Parameters.ListParam
instance GHC.Classes.Eq Web.Twitter.Conduit.Parameters.UserListParam
instance GHC.Show.Show Web.Twitter.Conduit.Parameters.UserListParam
instance GHC.Classes.Eq Web.Twitter.Conduit.Parameters.UserParam
instance GHC.Show.Show Web.Twitter.Conduit.Parameters.UserParam

module Web.Twitter.Conduit.Cursor
class CursorKey a
cursorKey :: CursorKey a => a -> Text

-- | Phantom type to specify the key which point out the content in the
--   response.
data IdsCursorKey

-- | Phantom type to specify the key which point out the content in the
--   response.
data UsersCursorKey

-- | Phantom type to specify the key which point out the content in the
--   response.
data ListsCursorKey

-- | A wrapper for API responses which have "next_cursor" field.
--   
--   The first type parameter of <a>WithCursor</a> specifies the field name
--   of contents.
--   
--   <pre>
--   &gt;&gt;&gt; let Just res = decode "{\"previous_cursor\": 0, \"next_cursor\": 1234567890, \"ids\": [1111111111]}" :: Maybe (WithCursor IdsCursorKey UserId)
--   
--   &gt;&gt;&gt; nextCursor res
--   1234567890
--   
--   &gt;&gt;&gt; contents res
--   [1111111111]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; let Just res = decode "{\"previous_cursor\": 0, \"next_cursor\": 0, \"users\": [1000]}" :: Maybe (WithCursor UsersCursorKey UserId)
--   
--   &gt;&gt;&gt; nextCursor res
--   0
--   
--   &gt;&gt;&gt; contents res
--   [1000]
--   </pre>
data WithCursor cursorKey wrapped
WithCursor :: Integer -> Integer -> [wrapped] -> WithCursor cursorKey wrapped
[previousCursor] :: WithCursor cursorKey wrapped -> Integer
[nextCursor] :: WithCursor cursorKey wrapped -> Integer
[contents] :: WithCursor cursorKey wrapped -> [wrapped]
instance GHC.Show.Show wrapped => GHC.Show.Show (Web.Twitter.Conduit.Cursor.WithCursor cursorKey wrapped)
instance Web.Twitter.Conduit.Cursor.CursorKey Web.Twitter.Conduit.Cursor.IdsCursorKey
instance Web.Twitter.Conduit.Cursor.CursorKey Web.Twitter.Conduit.Cursor.UsersCursorKey
instance Web.Twitter.Conduit.Cursor.CursorKey Web.Twitter.Conduit.Cursor.ListsCursorKey
instance (Data.Aeson.Types.Class.FromJSON wrapped, Web.Twitter.Conduit.Cursor.CursorKey c) => Data.Aeson.Types.Class.FromJSON (Web.Twitter.Conduit.Cursor.WithCursor c wrapped)

module Web.Twitter.Conduit.Base
getResponse :: MonadResource m => TWInfo -> Manager -> Request -> m (Response (ResumableSource m ByteString))

-- | Perform an <a>APIRequest</a> and then provide the response which is
--   mapped to a suitable type of <a>twitter-types</a>.
--   
--   Example:
--   
--   <pre>
--   user &lt;- <a>call</a> twInfo mgr $ <tt>accountVerifyCredentials</tt>
--   print user
--   </pre>
--   
--   If you need raw JSON value which is parsed by <a>aeson</a>, use
--   <a>call'</a> to obtain it.
call :: FromJSON responseType => TWInfo -> Manager -> APIRequest apiName responseType -> IO responseType

-- | Perform an <a>APIRequest</a> and then provide the response. The
--   response of this function is not restrict to <tt>responseType</tt>, so
--   you can choose an arbitrarily type of FromJSON instances.
call' :: FromJSON value => TWInfo -> Manager -> APIRequest apiName responseType -> IO value

-- | Perform an <a>APIRequest</a> and then provide the <a>Response</a>.
--   
--   Example:
--   
--   <pre>
--   res &lt;- <a>callWithResponse</a> twInfo mgr $ <tt>accountVerifyCredentials</tt>
--   <a>print</a> $ <a>responseStatus</a> res
--   <a>print</a> $ <a>responseHeaders</a> res
--   <a>print</a> $ <a>responseBody</a> res
--   </pre>
callWithResponse :: FromJSON responseType => TWInfo -> Manager -> APIRequest apiName responseType -> IO (Response responseType)

-- | Perform an <a>APIRequest</a> and then provide the <a>Response</a>. The
--   response of this function is not restrict to <tt>responseType</tt>, so
--   you can choose an arbitrarily type of FromJSON instances.
--   
--   Example:
--   
--   <pre>
--   res &lt;- <a>callWithResponse'</a> twInfo mgr $ <tt>accountVerifyCredentials</tt>
--   <a>print</a> $ <a>responseStatus</a> res
--   <a>print</a> $ <a>responseHeaders</a> res
--   <a>print</a> $ <a>responseBody</a> (res :: Value)
--   </pre>
callWithResponse' :: FromJSON value => TWInfo -> Manager -> APIRequest apiName responseType -> IO (Response value)
checkResponse :: Response Value -> Either TwitterError Value

-- | A wrapper function to perform multiple API request with changing
--   <tt>max_id</tt> parameter.
--   
--   This function cooperate with instances of <a>HasMaxIdParam</a>.
sourceWithMaxId :: (MonadBase IO m, FromJSON responseType, AsStatus responseType, HasMaxIdParam (APIRequest apiName [responseType])) => TWInfo -> Manager -> APIRequest apiName [responseType] -> Source m responseType

-- | A wrapper function to perform multiple API request with changing
--   <tt>max_id</tt> parameter. The response of this function is not
--   restrict to <tt>responseType</tt>, so you can choose an arbitrarily
--   type of FromJSON instances.
--   
--   This function cooperate with instances of <a>HasMaxIdParam</a>.
sourceWithMaxId' :: (MonadBase IO m, HasMaxIdParam (APIRequest apiName [responseType])) => TWInfo -> Manager -> APIRequest apiName [responseType] -> Source m Value

-- | A wrapper function to perform multiple API request with changing
--   <tt>cursor</tt> parameter.
--   
--   This function cooperate with instances of <a>HasCursorParam</a>.
sourceWithCursor :: (MonadBase IO m, FromJSON responseType, CursorKey ck, HasCursorParam (APIRequest apiName (WithCursor ck responseType))) => TWInfo -> Manager -> APIRequest apiName (WithCursor ck responseType) -> Source m responseType

-- | A wrapper function to perform multiple API request with changing
--   <tt>cursor</tt> parameter. The response of this function is not
--   restrict to <tt>responseType</tt>, so you can choose an arbitrarily
--   type of FromJSON instances.
--   
--   This function cooperate with instances of <a>HasCursorParam</a>.
sourceWithCursor' :: (MonadBase IO m, FromJSON responseType, CursorKey ck, HasCursorParam (APIRequest apiName (WithCursor ck responseType))) => TWInfo -> Manager -> APIRequest apiName (WithCursor ck responseType) -> Source m Value

-- | A wrapper function to perform multiple API request with
--   <tt>SearchResult</tt>.
sourceWithSearchResult :: (MonadBase IO m, FromJSON responseType, HasMaxIdParam (APIRequest apiName (SearchResult [responseType]))) => TWInfo -> Manager -> APIRequest apiName (SearchResult [responseType]) -> m (SearchResult (Source m responseType))

-- | A wrapper function to perform multiple API request with
--   <tt>SearchResult</tt>.
sourceWithSearchResult' :: (MonadBase IO m, HasMaxIdParam (APIRequest apiName (SearchResult [responseType]))) => TWInfo -> Manager -> APIRequest apiName (SearchResult [responseType]) -> m (SearchResult (Source m Value))
endpoint :: String
makeRequest :: APIRequest apiName responseType -> IO Request
sinkJSON :: (MonadThrow m) => Consumer ByteString m Value
sinkFromJSON :: (FromJSON a, MonadThrow m) => Consumer ByteString m a

module Web.Twitter.Conduit.Status
data StatusesMentionsTimeline

-- | Returns query data asks the most recent mentions for the
--   authenticating user.
--   
--   You can perform a query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> <a>mentionsTimeline</a>
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; mentionsTimeline
--   APIRequestGet "https://api.twitter.com/1.1/statuses/mentions_timeline.json" []
--   </pre>
mentionsTimeline :: APIRequest StatusesMentionsTimeline [Status]
data StatusesUserTimeline

-- | Returns query data asks a collection of the most recent Tweets posted
--   by the user indicated by the screen_name or user_id parameters.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> $ <a>userTimeline</a> (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; userTimeline (ScreenNameParam "thimura")
--   APIRequestGet "https://api.twitter.com/1.1/statuses/user_timeline.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; userTimeline (ScreenNameParam "thimura") &amp; includeRts ?~ True &amp; count ?~ 200
--   APIRequestGet "https://api.twitter.com/1.1/statuses/user_timeline.json" [("count","200"),("include_rts","true"),("screen_name","thimura")]
--   </pre>
userTimeline :: UserParam -> APIRequest StatusesUserTimeline [Status]
data StatusesHomeTimeline

-- | Returns query data asks a collection of the most recentTweets and
--   retweets posted by the authenticating user and the users they follow.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> <a>homeTimeline</a>
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; homeTimeline
--   APIRequestGet "https://api.twitter.com/1.1/statuses/home_timeline.json" []
--   
--   &gt;&gt;&gt; homeTimeline &amp; count ?~ 200
--   APIRequestGet "https://api.twitter.com/1.1/statuses/home_timeline.json" [("count","200")]
--   </pre>
homeTimeline :: APIRequest StatusesHomeTimeline [Status]
data StatusesRetweetsOfMe

-- | Returns query data asks the most recent tweets authored by the
--   authenticating user that have been retweeted by others.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> <a>retweetsOfMe</a>
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; retweetsOfMe
--   APIRequestGet "https://api.twitter.com/1.1/statuses/retweets_of_me.json" []
--   
--   &gt;&gt;&gt; retweetsOfMe &amp; count ?~ 100
--   APIRequestGet "https://api.twitter.com/1.1/statuses/retweets_of_me.json" [("count","100")]
--   </pre>
retweetsOfMe :: APIRequest StatusesRetweetsOfMe [Status]
data StatusesRetweetsId

-- | Returns query data that asks for the most recent retweets of the
--   specified tweet
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>retweetsId</a> 1234567890
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; retweetsId 1234567890
--   APIRequestGet "https://api.twitter.com/1.1/statuses/retweets/1234567890.json" []
--   
--   &gt;&gt;&gt; retweetsId 1234567890 &amp; count ?~ 100
--   APIRequestGet "https://api.twitter.com/1.1/statuses/retweets/1234567890.json" [("count","100")]
--   </pre>
retweetsId :: StatusId -> APIRequest StatusesRetweetsId [RetweetedStatus]
data StatusesShowId

-- | Returns query data asks a single Tweet, specified by the id parameter.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>showId</a> 1234567890
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; showId 1234567890
--   APIRequestGet "https://api.twitter.com/1.1/statuses/show/1234567890.json" []
--   
--   &gt;&gt;&gt; showId 1234567890 &amp; includeMyRetweet ?~ True
--   APIRequestGet "https://api.twitter.com/1.1/statuses/show/1234567890.json" [("include_my_retweet","true")]
--   </pre>
showId :: StatusId -> APIRequest StatusesShowId Status
data StatusesDestroyId

-- | Returns post data which destroys the status specified by the require
--   ID parameter.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>destroyId</a> 1234567890
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; destroyId 1234567890
--   APIRequestPost "https://api.twitter.com/1.1/statuses/destroy/1234567890.json" []
--   </pre>
destroyId :: StatusId -> APIRequest StatusesDestroyId Status
data StatusesUpdate

-- | Returns post data which updates the authenticating user's current
--   status. To upload an image to accompany the tweet, use
--   <a>updateWithMedia</a>.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>update</a> "Hello World"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; update "Hello World"
--   APIRequestPost "https://api.twitter.com/1.1/statuses/update.json" [("status","Hello World")]
--   
--   &gt;&gt;&gt; update "Hello World" &amp; inReplyToStatusId ?~ 1234567890
--   APIRequestPost "https://api.twitter.com/1.1/statuses/update.json" [("in_reply_to_status_id","1234567890"),("status","Hello World")]
--   </pre>
update :: Text -> APIRequest StatusesUpdate Status
data StatusesRetweetId

-- | Returns post data which retweets a tweet, specified by ID.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>retweetId</a> 1234567890
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; retweetId 1234567890
--   APIRequestPost "https://api.twitter.com/1.1/statuses/retweet/1234567890.json" []
--   </pre>
retweetId :: StatusId -> APIRequest StatusesRetweetId RetweetedStatus
data MediaData
MediaFromFile :: FilePath -> MediaData
MediaRequestBody :: FilePath -> RequestBody -> MediaData
data StatusesUpdateWithMedia

-- | Returns post data which updates the authenticating user's current
--   status and attaches media for upload.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>updateWithMedia</a> "Hello World" (<a>MediaFromFile</a> "<i>home</i>thimura/test.jpeg")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; updateWithMedia "Hello World" (MediaFromFile "/home/fuga/test.jpeg")
--   APIRequestPostMultipart "https://api.twitter.com/1.1/statuses/update_with_media.json" [("status","Hello World")]
--   </pre>
updateWithMedia :: Text -> MediaData -> APIRequest StatusesUpdateWithMedia Status
data StatusesLookup

-- | Returns fully-hydrated tweet objects for up to 100 tweets per request,
--   as specified by comma-separated values passed to the id parameter.
--   
--   You can perform a request using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>lookup</a> [20, 432656548536401920]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; lookup [10]
--   APIRequestGet "https://api.twitter.com/1.1/statuses/lookup.json" [("id","10")]
--   
--   &gt;&gt;&gt; lookup [10, 432656548536401920]
--   APIRequestGet "https://api.twitter.com/1.1/statuses/lookup.json" [("id","10,432656548536401920")]
--   
--   &gt;&gt;&gt; lookup [10, 432656548536401920] &amp; includeEntities ?~ True
--   APIRequestGet "https://api.twitter.com/1.1/statuses/lookup.json" [("include_entities","true"),("id","10,432656548536401920")]
--   </pre>
lookup :: [StatusId] -> APIRequest StatusesLookup [Status]
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesLookup a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesLookup a0)
instance Web.Twitter.Conduit.Parameters.HasMapParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesLookup a0)
instance Web.Twitter.Conduit.Parameters.HasPossiblySensitiveParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdateWithMedia a0)
instance Web.Twitter.Conduit.Parameters.HasInReplyToStatusIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdateWithMedia a0)
instance Web.Twitter.Conduit.Parameters.HasDisplayCoordinatesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdateWithMedia a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetId a0)
instance Web.Twitter.Conduit.Parameters.HasInReplyToStatusIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdate a0)
instance Web.Twitter.Conduit.Parameters.HasDisplayCoordinatesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdate a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdate a0)
instance Web.Twitter.Conduit.Parameters.HasMediaIdsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdate a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesDestroyId a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesShowId a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeMyRetweetParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesShowId a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesShowId a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsId a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsId a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeUserEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasExcludeRepliesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasContributorDetailsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasExcludeRepliesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasContributorDetailsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeRtsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasContributorDetailsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a0)

module Web.Twitter.Conduit.Stream
data Userstream
userstream :: APIRequest Userstream StreamingAPI
data StatusesFilter
data FilterParameter
Follow :: [UserId] -> FilterParameter
Track :: [Text] -> FilterParameter

-- | Returns statuses/filter.json API query data.
--   
--   <pre>
--   &gt;&gt;&gt; statusesFilter [Follow [1,2,3]]
--   APIRequestPost "https://stream.twitter.com/1.1/statuses/filter.json" [("follow","1,2,3")]
--   
--   &gt;&gt;&gt; statusesFilter [Track ["haskell","functional"]]
--   APIRequestPost "https://stream.twitter.com/1.1/statuses/filter.json" [("track","haskell,functional")]
--   
--   &gt;&gt;&gt; statusesFilter [Follow [1,2,3],Track ["haskell","functional"]]
--   APIRequestPost "https://stream.twitter.com/1.1/statuses/filter.json" [("follow","1,2,3"),("track","haskell,functional")]
--   </pre>
statusesFilter :: [FilterParameter] -> APIRequest StatusesFilter StreamingAPI

-- | Returns statuses/filter.json API query data.
--   
--   <pre>
--   &gt;&gt;&gt; statusesFilterByFollow [1,2,3]
--   APIRequestPost "https://stream.twitter.com/1.1/statuses/filter.json" [("follow","1,2,3")]
--   </pre>
statusesFilterByFollow :: [UserId] -> APIRequest StatusesFilter StreamingAPI

-- | Returns statuses/filter.json API query data.
--   
--   <pre>
--   &gt;&gt;&gt; statusesFilterByTrack "haskell"
--   APIRequestPost "https://stream.twitter.com/1.1/statuses/filter.json" [("track","haskell")]
--   </pre>
statusesFilterByTrack :: Text -> APIRequest StatusesFilter StreamingAPI
stream :: (MonadResource m, FromJSON responseType) => TWInfo -> Manager -> APIRequest apiName responseType -> m (ResumableSource m responseType)
stream' :: (MonadResource m, FromJSON value) => TWInfo -> Manager -> APIRequest apiName responseType -> m (ResumableSource m value)
instance Web.Twitter.Conduit.Parameters.HasLanguageParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.StatusesFilter a0)
instance Web.Twitter.Conduit.Parameters.HasFilterLevelParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.StatusesFilter a0)
instance Web.Twitter.Conduit.Parameters.HasStallWarningsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.StatusesFilter a0)
instance Web.Twitter.Conduit.Parameters.HasLanguageParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.Userstream a0)
instance Web.Twitter.Conduit.Parameters.HasFilterLevelParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.Userstream a0)
instance Web.Twitter.Conduit.Parameters.HasStallWarningsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.Userstream a0)
instance Web.Twitter.Conduit.Parameters.HasRepliesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.Userstream a0)

module Web.Twitter.Conduit.Lens
data Response responseType
responseStatus :: forall responseType. Lens' (Response responseType) Status
responseBody :: forall a b. Lens (Response a) (Response b) a b
responseHeaders :: forall responseType. Lens' (Response responseType) ResponseHeaders

-- | Twitter Error Messages
--   
--   see detail: <a>https://dev.twitter.com/docs/error-codes-responses</a>
data TwitterErrorMessage
twitterErrorMessage :: Lens' TwitterErrorMessage Text
twitterErrorCode :: Lens' TwitterErrorMessage Int

-- | A wrapper for API responses which have "next_cursor" field.
--   
--   The first type parameter of <a>WithCursor</a> specifies the field name
--   of contents.
--   
--   <pre>
--   &gt;&gt;&gt; let Just res = decode "{\"previous_cursor\": 0, \"next_cursor\": 1234567890, \"ids\": [1111111111]}" :: Maybe (WithCursor IdsCursorKey UserId)
--   
--   &gt;&gt;&gt; nextCursor res
--   1234567890
--   
--   &gt;&gt;&gt; contents res
--   [1111111111]
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; let Just res = decode "{\"previous_cursor\": 0, \"next_cursor\": 0, \"users\": [1000]}" :: Maybe (WithCursor UsersCursorKey UserId)
--   
--   &gt;&gt;&gt; nextCursor res
--   0
--   
--   &gt;&gt;&gt; contents res
--   [1000]
--   </pre>
data WithCursor cursorKey wrapped
previousCursor :: forall cursorKey wrapped. Lens' (WithCursor cursorKey wrapped) Integer
nextCursor :: forall cursorKey wrapped. Lens' (WithCursor cursorKey wrapped) Integer
contents :: forall cursorKey a b. Lens (WithCursor cursorKey a) (WithCursor cursorKey b) [a] [b]
data TwitterError
FromJSONError :: String -> TwitterError
TwitterErrorResponse :: Status -> ResponseHeaders -> [TwitterErrorMessage] -> TwitterError
TwitterUnknownErrorResponse :: Status -> ResponseHeaders -> Value -> TwitterError
TwitterStatusError :: Status -> ResponseHeaders -> Value -> TwitterError
class CursorKey a
cursorKey :: CursorKey a => a -> Text

-- | Phantom type to specify the key which point out the content in the
--   response.
data IdsCursorKey

-- | Phantom type to specify the key which point out the content in the
--   response.
data UsersCursorKey

-- | Phantom type to specify the key which point out the content in the
--   response.
data ListsCursorKey

module Web.Twitter.Conduit.Api
data SearchTweets

-- | Returns search query.
--   
--   You can perform a search query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> (<a>searchTweets</a> "search text")
--   <a>print</a> $ res ^. <a>searchResultStatuses</a>
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; searchTweets "search text"
--   APIRequestGet "https://api.twitter.com/1.1/search/tweets.json" [("q","search text")]
--   
--   &gt;&gt;&gt; searchTweets "search text" &amp; lang ?~ "ja" &amp; count ?~ 100
--   APIRequestGet "https://api.twitter.com/1.1/search/tweets.json" [("count","100"),("lang","ja"),("q","search text")]
--   </pre>
searchTweets :: Text -> APIRequest SearchTweets (SearchResult [Status])

-- | Alias of <a>searchTweets</a>, for backward compatibility
search :: Text -> APIRequest SearchTweets (SearchResult [Status])
data DirectMessages

-- | Returns query data which asks recent direct messages sent to the
--   authenticating user.
--   
--   You can perform a query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>directMessages</a> <tt>&amp;</tt> <a>count</a> <tt>?~</tt> 100
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; directMessages
--   APIRequestGet "https://api.twitter.com/1.1/direct_messages.json" []
--   
--   &gt;&gt;&gt; directMessages &amp; count ?~ 100
--   APIRequestGet "https://api.twitter.com/1.1/direct_messages.json" [("count","100")]
--   </pre>
directMessages :: APIRequest DirectMessages [DirectMessage]
data DirectMessagesSent

-- | Returns query data which asks recent direct messages sent by the
--   authenticating user.
--   
--   You can perform a query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>directMessagesSent</a> <tt>&amp;</tt> <a>count</a> <tt>?~</tt> 100
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; directMessagesSent
--   APIRequestGet "https://api.twitter.com/1.1/direct_messages/sent.json" []
--   
--   &gt;&gt;&gt; directMessagesSent &amp; count ?~ 100
--   APIRequestGet "https://api.twitter.com/1.1/direct_messages/sent.json" [("count","100")]
--   </pre>
directMessagesSent :: APIRequest DirectMessagesSent [DirectMessage]
data DirectMessagesShow

-- | Returns query data which asks a single direct message, specified by an
--   id parameter.
--   
--   You can perform a query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>directMessagesShow</a> 1234567890
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; directMessagesShow 1234567890
--   APIRequestGet "https://api.twitter.com/1.1/direct_messages/show.json" [("id","1234567890")]
--   </pre>
directMessagesShow :: StatusId -> APIRequest DirectMessagesShow DirectMessage
data DirectMessagesDestroy

-- | Returns post data which destroys the direct message specified in the
--   required ID parameter.
--   
--   You can perform a query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>directMessagesDestroy</a> 1234567890
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; directMessagesDestroy 1234567890
--   APIRequestPost "https://api.twitter.com/1.1/direct_messages/destroy.json" [("id","1234567890")]
--   </pre>
directMessagesDestroy :: StatusId -> APIRequest DirectMessagesDestroy DirectMessage
data DirectMessagesNew

-- | Returns post data which sends a new direct message to the specified
--   user from the authenticating user.
--   
--   You can perform a post using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>directMessagesNew</a> (ScreenNameParam "thimura") "Hello DM"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; directMessagesNew (ScreenNameParam "thimura") "Hello DM"
--   APIRequestPost "https://api.twitter.com/1.1/direct_messages/new.json" [("text","Hello DM"),("screen_name","thimura")]
--   
--   &gt;&gt;&gt; directMessagesNew (UserIdParam 69179963) "Hello thimura! by UserId"
--   APIRequestPost "https://api.twitter.com/1.1/direct_messages/new.json" [("text","Hello thimura! by UserId"),("user_id","69179963")]
--   </pre>
directMessagesNew :: UserParam -> Text -> APIRequest DirectMessagesNew DirectMessage
data FriendshipsNoRetweetsIds

-- | Returns a collection of user_ids that the currently authenticated user
--   does not want to receive retweets from.
--   
--   You can perform a request using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>friendshipsNoRetweetsIds</a>
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; friendshipsNoRetweetsIds
--   APIRequestGet "https://api.twitter.com/1.1/friendships/no_retweets/ids.json" []
--   </pre>
friendshipsNoRetweetsIds :: APIRequest FriendshipsNoRetweetsIds [UserId]
data FriendsIds

-- | Returns query data which asks a collection of user IDs for every user
--   the specified user is following.
--   
--   You can perform a query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>friendsIds</a> (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   Or, you can iterate with <a>sourceWithCursor</a>:
--   
--   <pre>
--   <a>sourceWithCursor</a> (<a>friendsIds</a> (<a>ScreenNameParam</a> "thimura")) $$ CL.consume
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; friendsIds (ScreenNameParam "thimura")
--   APIRequestGet "https://api.twitter.com/1.1/friends/ids.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; friendsIds (ScreenNameParam "thimura") &amp; count ?~ 5000
--   APIRequestGet "https://api.twitter.com/1.1/friends/ids.json" [("count","5000"),("screen_name","thimura")]
--   </pre>
friendsIds :: UserParam -> APIRequest FriendsIds (WithCursor IdsCursorKey UserId)
data FollowersIds

-- | Returns query data which asks a collection of user IDs for every user
--   following the specified user.
--   
--   You can perform a query using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>followersIds</a> (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   Or, you can iterate with <a>sourceWithCursor</a>:
--   
--   <pre>
--   <a>sourceWithCursor</a> (<a>followersIds</a> (<a>ScreenNameParam</a> "thimura")) $$ CL.consume
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; followersIds (ScreenNameParam "thimura")
--   APIRequestGet "https://api.twitter.com/1.1/followers/ids.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; followersIds (ScreenNameParam "thimura") &amp; count ?~ 5000
--   APIRequestGet "https://api.twitter.com/1.1/followers/ids.json" [("count","5000"),("screen_name","thimura")]
--   </pre>
followersIds :: UserParam -> APIRequest FollowersIds (WithCursor IdsCursorKey UserId)
data FriendshipsIncoming

-- | Returns a collection of numeric IDs for every user who has a pending
--   request to follow the authenticating user.
--   
--   You can perform a request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>friendshipsIncoming</a>
--   </pre>
--   
--   Or, you can iterate with <a>sourceWithCursor</a>:
--   
--   <pre>
--   <a>sourceWithCursor</a> <a>friendshipsIncoming</a> $$ CL.consume
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; friendshipsIncoming
--   APIRequestGet "https://api.twitter.com/1.1/friendships/incoming.json" []
--   </pre>
friendshipsIncoming :: APIRequest FriendshipsIncoming (WithCursor IdsCursorKey UserId)
data FriendshipsOutgoing

-- | Returns a collection of numeric IDs for every protected user for whom
--   the authenticating user has a pending follow request.
--   
--   You can perform a request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>friendshipsOutgoing</a>
--   </pre>
--   
--   Or, you can iterate with <a>sourceWithCursor</a>:
--   
--   <pre>
--   <a>sourceWithCursor</a> <a>friendshipsOutgoing</a> $$ CL.consume
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; friendshipsOutgoing
--   APIRequestGet "https://api.twitter.com/1.1/friendships/outgoing.json" []
--   </pre>
friendshipsOutgoing :: APIRequest FriendshipsOutgoing (WithCursor IdsCursorKey UserId)
data FriendshipsCreate

-- | Returns post data which follows the user specified in the ID
--   parameter.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>friendshipsCreate</a> (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; friendshipsCreate (ScreenNameParam "thimura")
--   APIRequestPost "https://api.twitter.com/1.1/friendships/create.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; friendshipsCreate (UserIdParam 69179963)
--   APIRequestPost "https://api.twitter.com/1.1/friendships/create.json" [("user_id","69179963")]
--   </pre>
friendshipsCreate :: UserParam -> APIRequest FriendshipsCreate User
data FriendshipsDestroy

-- | Returns post data which unfollows the user specified in the ID
--   parameter.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>friendshipsDestroy</a> (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; friendshipsDestroy (ScreenNameParam "thimura")
--   APIRequestPost "https://api.twitter.com/1.1/friendships/destroy.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; friendshipsDestroy (UserIdParam 69179963)
--   APIRequestPost "https://api.twitter.com/1.1/friendships/destroy.json" [("user_id","69179963")]
--   </pre>
friendshipsDestroy :: UserParam -> APIRequest FriendshipsDestroy User
data FriendsList

-- | Returns query data which asks a cursored collection of user objects
--   for every user the specified users is following.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>friendsList</a> (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   Or, you can iterate with <a>sourceWithCursor</a>:
--   
--   <pre>
--   <a>sourceWithCursor</a> (<a>friendsList</a> (<a>ScreenNameParam</a> "thimura")) $$ CL.consume
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; friendsList (ScreenNameParam "thimura")
--   APIRequestGet "https://api.twitter.com/1.1/friends/list.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; friendsList (UserIdParam 69179963)
--   APIRequestGet "https://api.twitter.com/1.1/friends/list.json" [("user_id","69179963")]
--   </pre>
friendsList :: UserParam -> APIRequest FriendsList (WithCursor UsersCursorKey User)
data FollowersList

-- | Returns query data which asks a cursored collection of user objects
--   for users following the specified user.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>followersList</a> (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   Or, you can iterate with <a>sourceWithCursor</a>:
--   
--   <pre>
--   <a>sourceWithCursor</a> (<a>followersList</a> (<a>ScreenNameParam</a> "thimura")) $$ CL.consume
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; followersList (ScreenNameParam "thimura")
--   APIRequestGet "https://api.twitter.com/1.1/followers/list.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; followersList (UserIdParam 69179963)
--   APIRequestGet "https://api.twitter.com/1.1/followers/list.json" [("user_id","69179963")]
--   </pre>
followersList :: UserParam -> APIRequest FollowersList (WithCursor UsersCursorKey User)
data AccountVerifyCredentials

-- | Returns query data asks that the credential is valid.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>accountVerifyCredentials</a>
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; accountVerifyCredentials
--   APIRequestGet "https://api.twitter.com/1.1/account/verify_credentials.json" []
--   </pre>
accountVerifyCredentials :: APIRequest AccountVerifyCredentials User
data AccountUpdateProfile

-- | Returns user object with updated fields. Note that while no specific
--   parameter is required, you need to provide at least one parameter
--   before executing the query.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>accountUpdateProfile</a> &amp; <a>url</a> ?~ "http://www.example.com"
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; accountUpdateProfile &amp; url ?~ "http://www.example.com"
--   APIRequestPost "https://api.twitter.com/1.1/account/update_profile.json" [("url","http://www.example.com")]
--   </pre>
accountUpdateProfile :: APIRequest AccountUpdateProfile User
data UsersLookup

-- | Returns query data asks user objects.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>usersLookup</a> (<a>ScreenNameListParam</a> ["thimura", "twitterapi"])
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; usersLookup (ScreenNameListParam ["thimura", "twitterapi"])
--   APIRequestGet "https://api.twitter.com/1.1/users/lookup.json" [("screen_name","thimura,twitterapi")]
--   </pre>
usersLookup :: UserListParam -> APIRequest UsersLookup [User]
data UsersShow

-- | Returns query data asks the user specified by user id or screen name
--   parameter.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>usersShow</a> (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; usersShow (ScreenNameParam "thimura")
--   APIRequestGet "https://api.twitter.com/1.1/users/show.json" [("screen_name","thimura")]
--   </pre>
usersShow :: UserParam -> APIRequest UsersShow User
data FavoritesList

-- | Returns the 20 most recent Tweets favorited by the specified user.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>favoritesList</a> (ScreenNameParam "thimura")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; favoritesList Nothing
--   APIRequestGet "https://api.twitter.com/1.1/favorites/list.json" []
--   
--   &gt;&gt;&gt; favoritesList (Just (ScreenNameParam "thimura"))
--   APIRequestGet "https://api.twitter.com/1.1/favorites/list.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; favoritesList (Just (UserIdParam 69179963))
--   APIRequestGet "https://api.twitter.com/1.1/favorites/list.json" [("user_id","69179963")]
--   </pre>
favoritesList :: Maybe UserParam -> APIRequest FavoritesList [Status]
data FavoritesDestroy

-- | Returns post data unfavorites the status specified in the ID paramter
--   as the authenticating user.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>favoritesDestroy</a> 1234567890
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; favoritesDestroy 1234567890
--   APIRequestPost "https://api.twitter.com/1.1/favorites/destroy.json" [("id","1234567890")]
--   </pre>
favoritesDestroy :: StatusId -> APIRequest FavoritesDestroy Status
data FavoritesCreate

-- | Returns post data which favorites the status specified in the ID
--   parameter as the authenticating user.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>favoritesCreate</a> 1234567890
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; favoritesCreate 1234567890
--   APIRequestPost "https://api.twitter.com/1.1/favorites/create.json" [("id","1234567890")]
--   </pre>
favoritesCreate :: StatusId -> APIRequest FavoritesCreate Status
data ListsStatuses

-- | Returns the query parameter which fetches a timeline of tweets
--   authored by members of the specified list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsStatuses</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   If you need more statuses, you can obtain those by using
--   <a>sourceWithMaxId</a>: <tt> res &lt;- sourceWithMaxId
--   (<a>listsStatuses</a> (<a>ListNameParam</a> "thimura/haskell") &amp;
--   count ?~ 200) $$ CL.take 1000 </tt>
--   
--   <pre>
--   &gt;&gt;&gt; listsStatuses (ListNameParam "thimura/haskell")
--   APIRequestGet "https://api.twitter.com/1.1/lists/statuses.json" [("slug","haskell"),("owner_screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsStatuses (ListIdParam 20849097)
--   APIRequestGet "https://api.twitter.com/1.1/lists/statuses.json" [("list_id","20849097")]
--   </pre>
listsStatuses :: ListParam -> APIRequest ListsStatuses [Status]
data ListsMembersDestroy

-- | Returns the post parameter which removes the specified member from the
--   list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsMembersDestroy</a> (<a>ListNameParam</a> "thimura/haskell") (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsMembersDestroy (ListNameParam "thimura/haskell") (ScreenNameParam "thimura")
--   APIRequestPost "https://api.twitter.com/1.1/lists/members/destroy.json" [("slug","haskell"),("owner_screen_name","thimura"),("screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsMembersDestroy (ListIdParam 20849097) (UserIdParam 69179963)
--   APIRequestPost "https://api.twitter.com/1.1/lists/members/destroy.json" [("list_id","20849097"),("user_id","69179963")]
--   </pre>
listsMembersDestroy :: ListParam -> UserParam -> APIRequest ListsMembersDestroy List
data ListsMemberships

-- | Returns the request parameters which asks the lists the specified user
--   has been added to. If <a>UserParam</a> are not provided, the
--   memberships for the authenticating user are returned.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsMemberships</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsMemberships Nothing
--   APIRequestGet "https://api.twitter.com/1.1/lists/memberships.json" []
--   
--   &gt;&gt;&gt; listsMemberships (Just (ScreenNameParam "thimura"))
--   APIRequestGet "https://api.twitter.com/1.1/lists/memberships.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsMemberships (Just (UserIdParam 69179963))
--   APIRequestGet "https://api.twitter.com/1.1/lists/memberships.json" [("user_id","69179963")]
--   </pre>
listsMemberships :: Maybe UserParam -> APIRequest ListsMemberships (WithCursor ListsCursorKey List)
data ListsSubscribers

-- | Returns the request parameter which asks the subscribers of the
--   specified list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsSubscribers</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsSubscribers (ListNameParam "thimura/haskell")
--   APIRequestGet "https://api.twitter.com/1.1/lists/subscribers.json" [("slug","haskell"),("owner_screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsSubscribers (ListIdParam 20849097)
--   APIRequestGet "https://api.twitter.com/1.1/lists/subscribers.json" [("list_id","20849097")]
--   </pre>
listsSubscribers :: ListParam -> APIRequest ListsSubscribers (WithCursor UsersCursorKey User)
data ListsMembersCreateAll

-- | Adds multiple members to a list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsMembersCreateAll</a> (<a>ListNameParam</a> "thimura/haskell") (<a>ScreenNameListParam</a> ["thimura", "twitterapi"])
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsMembersCreateAll (ListNameParam "thimura/haskell") (ScreenNameListParam ["thimura", "twitterapi"])
--   APIRequestPost "https://api.twitter.com/1.1/lists/members/create_all.json" [("slug","haskell"),("owner_screen_name","thimura"),("screen_name","thimura,twitterapi")]
--   
--   &gt;&gt;&gt; listsMembersCreateAll (ListIdParam 20849097) (UserIdListParam [69179963, 6253282])
--   APIRequestPost "https://api.twitter.com/1.1/lists/members/create_all.json" [("list_id","20849097"),("user_id","69179963,6253282")]
--   </pre>
listsMembersCreateAll :: ListParam -> UserListParam -> APIRequest ListsMembersCreateAll List
data ListsMembers

-- | Returns query data asks the members of the specified list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsMembers</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsMembers (ListNameParam "thimura/haskell")
--   APIRequestGet "https://api.twitter.com/1.1/lists/members.json" [("slug","haskell"),("owner_screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsMembers (ListIdParam 20849097)
--   APIRequestGet "https://api.twitter.com/1.1/lists/members.json" [("list_id","20849097")]
--   </pre>
listsMembers :: ListParam -> APIRequest ListsMembers (WithCursor UsersCursorKey User)
data ListsMembersCreate

-- | Returns the post parameter which adds a member to a list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsMembersCreate</a> (<a>ListNameParam</a> "thimura/haskell") (<a>ScreenNameParam</a> "thimura")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsMembersCreate (ListNameParam "thimura/haskell") (ScreenNameParam "thimura")
--   APIRequestPost "https://api.twitter.com/1.1/lists/members/create.json" [("slug","haskell"),("owner_screen_name","thimura"),("screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsMembersCreate (ListIdParam 20849097) (UserIdParam 69179963)
--   APIRequestPost "https://api.twitter.com/1.1/lists/members/create.json" [("list_id","20849097"),("user_id","69179963")]
--   </pre>
listsMembersCreate :: ListParam -> UserParam -> APIRequest ListsMembersCreate List
data ListsDestroy

-- | Returns the post parameter which deletes the specified list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsDestroy</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsDestroy (ListNameParam "thimura/haskell")
--   APIRequestPost "https://api.twitter.com/1.1/lists/destroy.json" [("slug","haskell"),("owner_screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsDestroy (ListIdParam 20849097)
--   APIRequestPost "https://api.twitter.com/1.1/lists/destroy.json" [("list_id","20849097")]
--   </pre>
listsDestroy :: ListParam -> APIRequest ListsDestroy List
data ListsUpdate

-- | Returns the post parameter which updates the specified list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsUpdate</a> (<a>ListNameParam</a> "thimura/haskell") True (Just <a>Haskellers</a>)
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsUpdate (ListNameParam "thimura/haskell") True (Just "Haskellers")
--   APIRequestPost "https://api.twitter.com/1.1/lists/update.json" [("slug","haskell"),("owner_screen_name","thimura"),("description","Haskellers"),("mode","public")]
--   </pre>
listsUpdate :: ListParam -> Bool -> Maybe Text -> APIRequest ListsUpdate List
data ListsCreate

-- | Returns the post parameter which creates a new list for the
--   authenticated user.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsCreate</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsCreate "haskell" True Nothing
--   APIRequestPost "https://api.twitter.com/1.1/lists/create.json" [("name","haskell"),("mode","public")]
--   
--   &gt;&gt;&gt; listsCreate "haskell" False Nothing
--   APIRequestPost "https://api.twitter.com/1.1/lists/create.json" [("name","haskell"),("mode","private")]
--   
--   &gt;&gt;&gt; listsCreate "haskell" True (Just "Haskellers")
--   APIRequestPost "https://api.twitter.com/1.1/lists/create.json" [("description","Haskellers"),("name","haskell"),("mode","public")]
--   </pre>
listsCreate :: Text -> Bool -> Maybe Text -> APIRequest ListsCreate List
data ListsShow

-- | Returns the request parameter which asks the specified list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsShow</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsShow (ListNameParam "thimura/haskell")
--   APIRequestGet "https://api.twitter.com/1.1/lists/show.json" [("slug","haskell"),("owner_screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsShow (ListIdParam 20849097)
--   APIRequestGet "https://api.twitter.com/1.1/lists/show.json" [("list_id","20849097")]
--   </pre>
listsShow :: ListParam -> APIRequest ListsShow List
data ListsSubscriptions

-- | Returns the request parameter which obtains a collection of the lists
--   the specified user is subscribed to.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsSubscriptions</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsSubscriptions Nothing
--   APIRequestGet "https://api.twitter.com/1.1/lists/subscriptions.json" []
--   
--   &gt;&gt;&gt; listsSubscriptions (Just (ScreenNameParam "thimura"))
--   APIRequestGet "https://api.twitter.com/1.1/lists/subscriptions.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsSubscriptions (Just (UserIdParam 69179963))
--   APIRequestGet "https://api.twitter.com/1.1/lists/subscriptions.json" [("user_id","69179963")]
--   </pre>
listsSubscriptions :: Maybe UserParam -> APIRequest ListsSubscriptions (WithCursor ListsCursorKey List)
data ListsMembersDestroyAll

-- | Adds multiple members to a list.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsMembersDestroyAll</a> (<a>ListNameParam</a> "thimura/haskell") (<a>ScreenNameListParam</a> ["thimura", "twitterapi"])
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsMembersDestroyAll (ListNameParam "thimura/haskell") (ScreenNameListParam ["thimura", "twitterapi"])
--   APIRequestPost "https://api.twitter.com/1.1/lists/members/destroy_all.json" [("slug","haskell"),("owner_screen_name","thimura"),("screen_name","thimura,twitterapi")]
--   
--   &gt;&gt;&gt; listsMembersDestroyAll (ListIdParam 20849097) (UserIdListParam [69179963, 6253282])
--   APIRequestPost "https://api.twitter.com/1.1/lists/members/destroy_all.json" [("list_id","20849097"),("user_id","69179963,6253282")]
--   </pre>
listsMembersDestroyAll :: ListParam -> UserListParam -> APIRequest ListsMembersDestroyAll List
data ListsOwnerships

-- | Returns the request parameter which asks the lists owned by the
--   specified Twitter user.
--   
--   You can perform request by using <a>call</a>:
--   
--   <pre>
--   res &lt;- <a>call</a> twInfo mgr <a>$</a> <a>listsOwnerships</a> (<a>ListNameParam</a> "thimura/haskell")
--   </pre>
--   
--   <pre>
--   &gt;&gt;&gt; listsOwnerships Nothing
--   APIRequestGet "https://api.twitter.com/1.1/lists/ownerships.json" []
--   
--   &gt;&gt;&gt; listsOwnerships (Just (ScreenNameParam "thimura"))
--   APIRequestGet "https://api.twitter.com/1.1/lists/ownerships.json" [("screen_name","thimura")]
--   
--   &gt;&gt;&gt; listsOwnerships (Just (UserIdParam 69179963))
--   APIRequestGet "https://api.twitter.com/1.1/lists/ownerships.json" [("user_id","69179963")]
--   </pre>
listsOwnerships :: Maybe UserParam -> APIRequest ListsOwnerships (WithCursor ListsCursorKey List)
data MediaUpload

-- | Upload media and returns the media data.
--   
--   You can update your status with multiple media by calling
--   <a>mediaUpload</a> and <tt>update</tt> successively.
--   
--   First, you should upload media with <a>mediaUpload</a>:
--   
--   <pre>
--   res1 &lt;- <a>call</a> twInfo mgr <a>$</a> <a>mediaUpload</a> (<a>MediaFromFile</a> "/path/to/upload/file1.png")
--   res2 &lt;- <a>call</a> twInfo mgr <a>$</a> <a>mediaUpload</a> (<a>MediaRequestBody</a> "file2.png" "[.. file body ..]")
--   </pre>
--   
--   and then collect the resulting media IDs and update your status by
--   calling <tt>update</tt>:
--   
--   <pre>
--   <a>call</a> twInfo mgr <a>$</a> <tt>update</tt> "Hello World" <tt>&amp;</tt> <a>mediaIds</a> <tt>?~</tt> [<tt>mediaId</tt> res1, <tt>mediaId</tt> res2]
--   </pre>
--   
--   See:
--   <a>https://dev.twitter.com/docs/api/multiple-media-extended-entities</a>
--   
--   <pre>
--   &gt;&gt;&gt; mediaUpload (MediaFromFile "/home/test/test.png")
--   APIRequestPostMultipart "https://upload.twitter.com/1.1/media/upload.json" []
--   </pre>
mediaUpload :: MediaData -> APIRequest MediaUpload UploadedMedia
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMembers a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMembers a0)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMembers a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsOwnerships a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsOwnerships a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscriptions a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscriptions a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscribers a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscribers a0)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscribers a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMemberships a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMemberships a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeRtsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesDestroy a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesCreate a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesList a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesList a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesList a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesList a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.UsersShow a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.UsersLookup a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a0)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a0)
instance Web.Twitter.Conduit.Parameters.HasNameParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a0)
instance Web.Twitter.Conduit.Parameters.HasUrlParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a0)
instance Web.Twitter.Conduit.Parameters.HasLocationParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a0)
instance Web.Twitter.Conduit.Parameters.HasDescriptionParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a0)
instance Web.Twitter.Conduit.Parameters.HasProfileLinkColorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountVerifyCredentials a0)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountVerifyCredentials a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersList a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersList a0)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersList a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeUserEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersList a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsList a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsList a0)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsList a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeUserEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsList a0)
instance Web.Twitter.Conduit.Parameters.HasFollowParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendshipsCreate a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendshipsOutgoing a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendshipsIncoming a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersIds a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersIds a0)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsIds a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsIds a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesDestroy a0)
instance Web.Twitter.Conduit.Parameters.HasFullTextParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesShow a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a0)
instance Web.Twitter.Conduit.Parameters.HasPageParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a0)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a0)
instance Web.Twitter.Conduit.Parameters.HasFullTextParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a0)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a0)
instance Web.Twitter.Conduit.Parameters.HasFullTextParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a0)
instance Web.Twitter.Conduit.Parameters.HasLangParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a0)
instance Web.Twitter.Conduit.Parameters.HasLocaleParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a0)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a0)
instance Web.Twitter.Conduit.Parameters.HasUntilParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a0)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a0)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a0)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a0)


-- | A client library for Twitter APIs (see
--   <a>https://dev.twitter.com/</a>).
module Web.Twitter.Conduit

-- | Perform an <a>APIRequest</a> and then provide the response which is
--   mapped to a suitable type of <a>twitter-types</a>.
--   
--   Example:
--   
--   <pre>
--   user &lt;- <a>call</a> twInfo mgr $ <tt>accountVerifyCredentials</tt>
--   print user
--   </pre>
--   
--   If you need raw JSON value which is parsed by <a>aeson</a>, use
--   <a>call'</a> to obtain it.
call :: FromJSON responseType => TWInfo -> Manager -> APIRequest apiName responseType -> IO responseType

-- | Perform an <a>APIRequest</a> and then provide the response. The
--   response of this function is not restrict to <tt>responseType</tt>, so
--   you can choose an arbitrarily type of FromJSON instances.
call' :: FromJSON value => TWInfo -> Manager -> APIRequest apiName responseType -> IO value

-- | Perform an <a>APIRequest</a> and then provide the <a>Response</a>.
--   
--   Example:
--   
--   <pre>
--   res &lt;- <a>callWithResponse</a> twInfo mgr $ <tt>accountVerifyCredentials</tt>
--   <a>print</a> $ <a>responseStatus</a> res
--   <a>print</a> $ <a>responseHeaders</a> res
--   <a>print</a> $ <a>responseBody</a> res
--   </pre>
callWithResponse :: FromJSON responseType => TWInfo -> Manager -> APIRequest apiName responseType -> IO (Response responseType)

-- | Perform an <a>APIRequest</a> and then provide the <a>Response</a>. The
--   response of this function is not restrict to <tt>responseType</tt>, so
--   you can choose an arbitrarily type of FromJSON instances.
--   
--   Example:
--   
--   <pre>
--   res &lt;- <a>callWithResponse'</a> twInfo mgr $ <tt>accountVerifyCredentials</tt>
--   <a>print</a> $ <a>responseStatus</a> res
--   <a>print</a> $ <a>responseHeaders</a> res
--   <a>print</a> $ <a>responseBody</a> (res :: Value)
--   </pre>
callWithResponse' :: FromJSON value => TWInfo -> Manager -> APIRequest apiName responseType -> IO (Response value)

-- | A wrapper function to perform multiple API request with changing
--   <tt>max_id</tt> parameter.
--   
--   This function cooperate with instances of <a>HasMaxIdParam</a>.
sourceWithMaxId :: (MonadBase IO m, FromJSON responseType, AsStatus responseType, HasMaxIdParam (APIRequest apiName [responseType])) => TWInfo -> Manager -> APIRequest apiName [responseType] -> Source m responseType

-- | A wrapper function to perform multiple API request with changing
--   <tt>max_id</tt> parameter. The response of this function is not
--   restrict to <tt>responseType</tt>, so you can choose an arbitrarily
--   type of FromJSON instances.
--   
--   This function cooperate with instances of <a>HasMaxIdParam</a>.
sourceWithMaxId' :: (MonadBase IO m, HasMaxIdParam (APIRequest apiName [responseType])) => TWInfo -> Manager -> APIRequest apiName [responseType] -> Source m Value

-- | A wrapper function to perform multiple API request with changing
--   <tt>cursor</tt> parameter.
--   
--   This function cooperate with instances of <a>HasCursorParam</a>.
sourceWithCursor :: (MonadBase IO m, FromJSON responseType, CursorKey ck, HasCursorParam (APIRequest apiName (WithCursor ck responseType))) => TWInfo -> Manager -> APIRequest apiName (WithCursor ck responseType) -> Source m responseType

-- | A wrapper function to perform multiple API request with changing
--   <tt>cursor</tt> parameter. The response of this function is not
--   restrict to <tt>responseType</tt>, so you can choose an arbitrarily
--   type of FromJSON instances.
--   
--   This function cooperate with instances of <a>HasCursorParam</a>.
sourceWithCursor' :: (MonadBase IO m, FromJSON responseType, CursorKey ck, HasCursorParam (APIRequest apiName (WithCursor ck responseType))) => TWInfo -> Manager -> APIRequest apiName (WithCursor ck responseType) -> Source m Value

-- | A wrapper function to perform multiple API request with
--   <tt>SearchResult</tt>.
sourceWithSearchResult :: (MonadBase IO m, FromJSON responseType, HasMaxIdParam (APIRequest apiName (SearchResult [responseType]))) => TWInfo -> Manager -> APIRequest apiName (SearchResult [responseType]) -> m (SearchResult (Source m responseType))

-- | A wrapper function to perform multiple API request with
--   <tt>SearchResult</tt>.
sourceWithSearchResult' :: (MonadBase IO m, HasMaxIdParam (APIRequest apiName (SearchResult [responseType]))) => TWInfo -> Manager -> APIRequest apiName (SearchResult [responseType]) -> m (SearchResult (Source m Value))
data ListParam
ListIdParam :: Integer -> ListParam
ListNameParam :: String -> ListParam
data MediaData
MediaFromFile :: FilePath -> MediaData
MediaRequestBody :: FilePath -> RequestBody -> MediaData
data UserListParam
UserIdListParam :: [UserId] -> UserListParam
ScreenNameListParam :: [String] -> UserListParam
data UserParam
UserIdParam :: UserId -> UserParam
ScreenNameParam :: String -> UserParam

-- | Data type for OAuth client (consumer).
--   
--   The constructor for this data type is not exposed. Instead, you should
--   use the <a>def</a> method or <a>newOAuth</a> function to retrieve a
--   default instance, and then use the records below to make
--   modifications. This approach allows us to add configuration options
--   without breaking backwards compatibility.
data OAuth :: *

-- | Data type for redential.
data Credential :: *
Credential :: [(ByteString, ByteString)] -> Credential
[unCredential] :: Credential -> [(ByteString, ByteString)]
def :: Default a => a

-- | Keeps track of open connections for keep-alive.
--   
--   If possible, you should share a single <a>Manager</a> between multiple
--   threads and requests.
--   
--   Since 0.1.0
data Manager :: *

-- | Create a <a>Manager</a>. The <tt>Manager</tt> will be shut down
--   automatically via garbage collection.
--   
--   Creating a new <a>Manager</a> is a relatively expensive operation, you
--   are advised to share a single <a>Manager</a> between requests instead.
--   
--   The first argument to this function is often
--   <a>defaultManagerSettings</a>, though add-on libraries may provide a
--   recommended replacement.
--   
--   Since 0.1.0
newManager :: ManagerSettings -> IO Manager
tlsManagerSettings :: ManagerSettings

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.contributorDetails</i>
contributorDetails :: HasContributorDetailsParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.count</i>
count :: HasCountParam a => Lens' a (Maybe Integer)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.cursor</i>
cursor :: HasCursorParam a => Lens' a (Maybe Integer)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.displayCoordinates</i>
displayCoordinates :: HasDisplayCoordinatesParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.excludeReplies</i>
excludeReplies :: HasExcludeRepliesParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.filterLevel</i>
filterLevel :: HasFilterLevelParam a => Lens' a (Maybe Text)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.follow</i>
follow :: HasFollowParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.inReplyToStatusId</i>
inReplyToStatusId :: HasInReplyToStatusIdParam a => Lens' a (Maybe Integer)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.includeEntities</i>
includeEntities :: HasIncludeEntitiesParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.includeMyRetweet</i>
includeMyRetweet :: HasIncludeMyRetweetParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.includeRts</i>
includeRts :: HasIncludeRtsParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.includeUserEntities</i>
includeUserEntities :: HasIncludeUserEntitiesParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.lang</i>
lang :: HasLangParam a => Lens' a (Maybe Text)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.language</i>
language :: HasLanguageParam a => Lens' a (Maybe Text)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.locale</i>
locale :: HasLocaleParam a => Lens' a (Maybe Text)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.map</i>
map :: HasMapParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.maxId</i>
maxId :: HasMaxIdParam a => Lens' a (Maybe Integer)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.mediaIds</i>
mediaIds :: HasMediaIdsParam a => Lens' a (Maybe [Integer])

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.page</i>
page :: HasPageParam a => Lens' a (Maybe Integer)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.possiblySensitive</i>
possiblySensitive :: HasPossiblySensitiveParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.replies</i>
replies :: HasRepliesParam a => Lens' a (Maybe Text)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.sinceId</i>
sinceId :: HasSinceIdParam a => Lens' a (Maybe Integer)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.skipStatus</i>
skipStatus :: HasSkipStatusParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use
--   Web.Twitter.Conduit.Parameters.stallWarnings</i>
stallWarnings :: HasStallWarningsParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.trimUser</i>
trimUser :: HasTrimUserParam a => Lens' a (Maybe Bool)

-- | <i>Deprecated: Please use Web.Twitter.Conduit.Parameters.until</i>
until :: HasUntilParam a => Lens' a (Maybe Day)
