-- 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.3.0

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 (Data.Aeson.Types.FromJSON.FromJSON wrapped, Web.Twitter.Conduit.Cursor.CursorKey c) => Data.Aeson.Types.FromJSON.FromJSON (Web.Twitter.Conduit.Cursor.WithCursor c wrapped)
instance Web.Twitter.Conduit.Cursor.CursorKey Web.Twitter.Conduit.Cursor.ListsCursorKey
instance Web.Twitter.Conduit.Cursor.CursorKey Web.Twitter.Conduit.Cursor.UsersCursorKey
instance Web.Twitter.Conduit.Cursor.CursorKey Web.Twitter.Conduit.Cursor.IdsCursorKey

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
defineHasParamClass :: Name -> Name -> TypeQ -> String -> Q [Dec]
defineHasParamClass' :: String -> String -> Name -> Name -> TypeQ -> String -> Q [Dec]
defineHasParamClassBool :: String -> Q [Dec]
defineHasParamClassDay :: String -> Q [Dec]
defineHasParamClassInteger :: String -> Q [Dec]
defineHasParamClassIntegerArray :: String -> Q [Dec]
defineHasParamClassString :: String -> Q [Dec]
defineHasParamClassStringArray :: String -> Q [Dec]
defineHasParamClassURI :: String -> Q [Dec]
deriveHasParamInstances :: Name -> [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_ayKM => HasSinceIdParam a_ayKM
sinceId :: HasSinceIdParam a_ayKM => Lens' a_ayKM (Maybe Integer)
class Parameters a_ayJY => HasCountParam a_ayJY
count :: HasCountParam a_ayJY => Lens' a_ayJY (Maybe Integer)
class Parameters a_ayLA => HasMaxIdParam a_ayLA
maxId :: HasMaxIdParam a_ayLA => Lens' a_ayLA (Maybe Integer)
class Parameters a_ayMo => HasPageParam a_ayMo
page :: HasPageParam a_ayMo => Lens' a_ayMo (Maybe Integer)
class Parameters a_ayNc => HasCursorParam a_ayNc
cursor :: HasCursorParam a_ayNc => Lens' a_ayNc (Maybe Integer)
class Parameters a_ayO0 => HasTrimUserParam a_ayO0
trimUser :: HasTrimUserParam a_ayO0 => Lens' a_ayO0 (Maybe Bool)
class Parameters a_ayOO => HasExcludeRepliesParam a_ayOO
excludeReplies :: HasExcludeRepliesParam a_ayOO => Lens' a_ayOO (Maybe Bool)
class Parameters a_ayPC => HasContributorDetailsParam a_ayPC
contributorDetails :: HasContributorDetailsParam a_ayPC => Lens' a_ayPC (Maybe Bool)
class Parameters a_ayQq => HasIncludeEntitiesParam a_ayQq
includeEntities :: HasIncludeEntitiesParam a_ayQq => Lens' a_ayQq (Maybe Bool)
class Parameters a_ayRe => HasIncludeEmailParam a_ayRe
includeEmail :: HasIncludeEmailParam a_ayRe => Lens' a_ayRe (Maybe Bool)
class Parameters a_ayUs => HasIncludeExtAltTextParam a_ayUs
includeExtAltText :: HasIncludeExtAltTextParam a_ayUs => Lens' a_ayUs (Maybe Bool)
class Parameters a_ayS2 => HasIncludeUserEntitiesParam a_ayS2
includeUserEntities :: HasIncludeUserEntitiesParam a_ayS2 => Lens' a_ayS2 (Maybe Bool)
class Parameters a_aySQ => HasIncludeRtsParam a_aySQ
includeRts :: HasIncludeRtsParam a_aySQ => Lens' a_aySQ (Maybe Bool)
class Parameters a_ayTE => HasIncludeMyRetweetParam a_ayTE
includeMyRetweet :: HasIncludeMyRetweetParam a_ayTE => Lens' a_ayTE (Maybe Bool)
class Parameters a_ayVg => HasInReplyToStatusIdParam a_ayVg
inReplyToStatusId :: HasInReplyToStatusIdParam a_ayVg => Lens' a_ayVg (Maybe Integer)
class Parameters a_ayW4 => HasDisplayCoordinatesParam a_ayW4
displayCoordinates :: HasDisplayCoordinatesParam a_ayW4 => Lens' a_ayW4 (Maybe Bool)
class Parameters a_ayWS => HasPossiblySensitiveParam a_ayWS
possiblySensitive :: HasPossiblySensitiveParam a_ayWS => Lens' a_ayWS (Maybe Bool)
class Parameters a_ayXG => HasLangParam a_ayXG
lang :: HasLangParam a_ayXG => Lens' a_ayXG (Maybe Text)
class Parameters a_ayYu => HasLanguageParam a_ayYu
language :: HasLanguageParam a_ayYu => Lens' a_ayYu (Maybe Text)
class Parameters a_ayZi => HasLocaleParam a_ayZi
locale :: HasLocaleParam a_ayZi => Lens' a_ayZi (Maybe Text)
class Parameters a_az06 => HasFilterLevelParam a_az06
filterLevel :: HasFilterLevelParam a_az06 => Lens' a_az06 (Maybe Text)
class Parameters a_az0U => HasStallWarningsParam a_az0U
stallWarnings :: HasStallWarningsParam a_az0U => Lens' a_az0U (Maybe Bool)
class Parameters a_az1I => HasRepliesParam a_az1I
replies :: HasRepliesParam a_az1I => Lens' a_az1I (Maybe Text)
class Parameters a_az2w => HasUntilParam a_az2w
until :: HasUntilParam a_az2w => Lens' a_az2w (Maybe Day)
class Parameters a_az3k => HasSkipStatusParam a_az3k
skipStatus :: HasSkipStatusParam a_az3k => Lens' a_az3k (Maybe Bool)
class Parameters a_az48 => HasFollowParam a_az48
follow :: HasFollowParam a_az48 => Lens' a_az48 (Maybe Bool)
class Parameters a_az4W => HasMapParam a_az4W
map :: HasMapParam a_az4W => Lens' a_az4W (Maybe Bool)
class Parameters a_az5K => HasMediaIdsParam a_az5K
mediaIds :: HasMediaIdsParam a_az5K => Lens' a_az5K (Maybe [Integer])
class Parameters a_az6y => HasDescriptionParam a_az6y
description :: HasDescriptionParam a_az6y => Lens' a_az6y (Maybe Text)
class Parameters a_az7m => HasNameParam a_az7m
name :: HasNameParam a_az7m => Lens' a_az7m (Maybe Text)
class Parameters a_az8a => HasProfileLinkColorParam a_az8a
profileLinkColor :: HasProfileLinkColorParam a_az8a => Lens' a_az8a (Maybe Text)
class Parameters a_az8Y => HasLocationParam a_az8Y
location :: HasLocationParam a_az8Y => Lens' a_az8Y (Maybe Text)
class Parameters a_az9M => HasUrlParam a_az9M
url :: HasUrlParam a_az9M => Lens' a_az9M (Maybe URIString)
class Parameters a_azaB => HasFullTextParam a_azaB
fullText :: HasFullTextParam a_azaB => Lens' a_azaB (Maybe Bool)
class Parameters a_azbp => HasWithParam a_azbp
with :: HasWithParam a_azbp => Lens' a_azbp (Maybe Text)
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.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.FromJSON.FromJSON Web.Twitter.Conduit.Response.TwitterErrorMessage

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.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.TWInfo
instance Data.Default.Class.Default Web.Twitter.Conduit.Types.TWToken

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

-- | 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 :: (MonadIO 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' :: (MonadIO 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 :: (MonadIO 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' :: (MonadIO m, 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 :: (MonadIO m, FromJSON 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' :: (MonadIO m) => 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.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, MonadThrow m) => TWInfo -> Manager -> APIRequest apiName responseType -> m (ConduitM () responseType m ())
stream' :: (MonadResource m, FromJSON value, MonadThrow m) => TWInfo -> Manager -> APIRequest apiName responseType -> m (ConduitM () value m ())
instance Web.Twitter.Conduit.Parameters.HasLanguageParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.StatusesFilter a)
instance Web.Twitter.Conduit.Parameters.HasFilterLevelParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.StatusesFilter a)
instance Web.Twitter.Conduit.Parameters.HasStallWarningsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.StatusesFilter a)
instance Web.Twitter.Conduit.Parameters.HasLanguageParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.Userstream a)
instance Web.Twitter.Conduit.Parameters.HasFilterLevelParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.Userstream a)
instance Web.Twitter.Conduit.Parameters.HasStallWarningsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.Userstream a)
instance Web.Twitter.Conduit.Parameters.HasRepliesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Stream.Userstream 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 a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesLookup a)
instance Web.Twitter.Conduit.Parameters.HasMapParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesLookup a)
instance Web.Twitter.Conduit.Parameters.HasPossiblySensitiveParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdateWithMedia a)
instance Web.Twitter.Conduit.Parameters.HasInReplyToStatusIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdateWithMedia a)
instance Web.Twitter.Conduit.Parameters.HasDisplayCoordinatesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdateWithMedia a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetId a)
instance Web.Twitter.Conduit.Parameters.HasInReplyToStatusIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdate a)
instance Web.Twitter.Conduit.Parameters.HasDisplayCoordinatesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdate a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdate a)
instance Web.Twitter.Conduit.Parameters.HasMediaIdsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUpdate a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesDestroyId a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesShowId a)
instance Web.Twitter.Conduit.Parameters.HasIncludeMyRetweetParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesShowId a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesShowId a)
instance Web.Twitter.Conduit.Parameters.HasIncludeExtAltTextParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesShowId a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsId a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsId a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a)
instance Web.Twitter.Conduit.Parameters.HasIncludeUserEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesRetweetsOfMe a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a)
instance Web.Twitter.Conduit.Parameters.HasExcludeRepliesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a)
instance Web.Twitter.Conduit.Parameters.HasContributorDetailsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesHomeTimeline a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a)
instance Web.Twitter.Conduit.Parameters.HasExcludeRepliesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a)
instance Web.Twitter.Conduit.Parameters.HasContributorDetailsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a)
instance Web.Twitter.Conduit.Parameters.HasIncludeRtsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesUserTimeline a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a)
instance Web.Twitter.Conduit.Parameters.HasTrimUserParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a)
instance Web.Twitter.Conduit.Parameters.HasContributorDetailsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Status.StatusesMentionsTimeline a)

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 a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMembers a)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMembers a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsOwnerships a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsOwnerships a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscriptions a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscriptions a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscribers a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscribers a)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsSubscribers a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMemberships a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsMemberships a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a)
instance Web.Twitter.Conduit.Parameters.HasIncludeRtsParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.ListsStatuses a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesDestroy a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesCreate a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesList a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesList a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesList a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FavoritesList a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.UsersShow a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.UsersLookup a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a)
instance Web.Twitter.Conduit.Parameters.HasNameParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a)
instance Web.Twitter.Conduit.Parameters.HasUrlParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a)
instance Web.Twitter.Conduit.Parameters.HasLocationParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a)
instance Web.Twitter.Conduit.Parameters.HasDescriptionParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a)
instance Web.Twitter.Conduit.Parameters.HasProfileLinkColorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountUpdateProfile a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountVerifyCredentials a)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountVerifyCredentials a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEmailParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.AccountVerifyCredentials a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersList a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersList a)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersList a)
instance Web.Twitter.Conduit.Parameters.HasIncludeUserEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersList a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsList a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsList a)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsList a)
instance Web.Twitter.Conduit.Parameters.HasIncludeUserEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsList a)
instance Web.Twitter.Conduit.Parameters.HasFollowParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendshipsCreate a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendshipsOutgoing a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendshipsIncoming a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersIds a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FollowersIds a)
instance Web.Twitter.Conduit.Parameters.HasCursorParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsIds a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.FriendsIds a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesDestroy a)
instance Web.Twitter.Conduit.Parameters.HasFullTextParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesShow a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a)
instance Web.Twitter.Conduit.Parameters.HasPageParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a)
instance Web.Twitter.Conduit.Parameters.HasFullTextParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessagesSent a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a)
instance Web.Twitter.Conduit.Parameters.HasSkipStatusParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a)
instance Web.Twitter.Conduit.Parameters.HasFullTextParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.DirectMessages a)
instance Web.Twitter.Conduit.Parameters.HasLangParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a)
instance Web.Twitter.Conduit.Parameters.HasLocaleParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a)
instance Web.Twitter.Conduit.Parameters.HasCountParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a)
instance Web.Twitter.Conduit.Parameters.HasUntilParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a)
instance Web.Twitter.Conduit.Parameters.HasSinceIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a)
instance Web.Twitter.Conduit.Parameters.HasMaxIdParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a)
instance Web.Twitter.Conduit.Parameters.HasIncludeEntitiesParam (Web.Twitter.Conduit.Request.APIRequest Web.Twitter.Conduit.Api.SearchTweets a)


-- | 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 :: (MonadIO 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' :: (MonadIO 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 :: (MonadIO 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' :: (MonadIO m, 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 :: (MonadIO m, FromJSON 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' :: (MonadIO m) => 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.
newtype 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)
