-- 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_az1L => HasSinceIdParam a_az1L
sinceId :: HasSinceIdParam a_az1L => Lens' a_az1L (Maybe Integer)
class Parameters a_az0X => HasCountParam a_az0X
count :: HasCountParam a_az0X => Lens' a_az0X (Maybe Integer)
class Parameters a_az2z => HasMaxIdParam a_az2z
maxId :: HasMaxIdParam a_az2z => Lens' a_az2z (Maybe Integer)
class Parameters a_az3n => HasPageParam a_az3n
page :: HasPageParam a_az3n => Lens' a_az3n (Maybe Integer)
class Parameters a_az4b => HasCursorParam a_az4b
cursor :: HasCursorParam a_az4b => Lens' a_az4b (Maybe Integer)
class Parameters a_az4Z => HasTrimUserParam a_az4Z
trimUser :: HasTrimUserParam a_az4Z => Lens' a_az4Z (Maybe Bool)
class Parameters a_az5N => HasExcludeRepliesParam a_az5N
excludeReplies :: HasExcludeRepliesParam a_az5N => Lens' a_az5N (Maybe Bool)
class Parameters a_az6B => HasContributorDetailsParam a_az6B
contributorDetails :: HasContributorDetailsParam a_az6B => Lens' a_az6B (Maybe Bool)
class Parameters a_az7p => HasIncludeEntitiesParam a_az7p
includeEntities :: HasIncludeEntitiesParam a_az7p => Lens' a_az7p (Maybe Bool)
class Parameters a_az8d => HasIncludeEmailParam a_az8d
includeEmail :: HasIncludeEmailParam a_az8d => Lens' a_az8d (Maybe Bool)
class Parameters a_azbr => HasIncludeExtAltTextParam a_azbr
includeExtAltText :: HasIncludeExtAltTextParam a_azbr => Lens' a_azbr (Maybe Bool)
class Parameters a_az91 => HasIncludeUserEntitiesParam a_az91
includeUserEntities :: HasIncludeUserEntitiesParam a_az91 => Lens' a_az91 (Maybe Bool)
class Parameters a_az9P => HasIncludeRtsParam a_az9P
includeRts :: HasIncludeRtsParam a_az9P => Lens' a_az9P (Maybe Bool)
class Parameters a_azaD => HasIncludeMyRetweetParam a_azaD
includeMyRetweet :: HasIncludeMyRetweetParam a_azaD => Lens' a_azaD (Maybe Bool)
class Parameters a_azcf => HasInReplyToStatusIdParam a_azcf
inReplyToStatusId :: HasInReplyToStatusIdParam a_azcf => Lens' a_azcf (Maybe Integer)
class Parameters a_azd3 => HasDisplayCoordinatesParam a_azd3
displayCoordinates :: HasDisplayCoordinatesParam a_azd3 => Lens' a_azd3 (Maybe Bool)
class Parameters a_azdR => HasPossiblySensitiveParam a_azdR
possiblySensitive :: HasPossiblySensitiveParam a_azdR => Lens' a_azdR (Maybe Bool)
class Parameters a_azeF => HasLangParam a_azeF
lang :: HasLangParam a_azeF => Lens' a_azeF (Maybe Text)
class Parameters a_azft => HasLanguageParam a_azft
language :: HasLanguageParam a_azft => Lens' a_azft (Maybe Text)
class Parameters a_azgh => HasLocaleParam a_azgh
locale :: HasLocaleParam a_azgh => Lens' a_azgh (Maybe Text)
class Parameters a_azh5 => HasFilterLevelParam a_azh5
filterLevel :: HasFilterLevelParam a_azh5 => Lens' a_azh5 (Maybe Text)
class Parameters a_azhT => HasStallWarningsParam a_azhT
stallWarnings :: HasStallWarningsParam a_azhT => Lens' a_azhT (Maybe Bool)
class Parameters a_aziH => HasRepliesParam a_aziH
replies :: HasRepliesParam a_aziH => Lens' a_aziH (Maybe Text)
class Parameters a_azjv => HasUntilParam a_azjv
until :: HasUntilParam a_azjv => Lens' a_azjv (Maybe Day)
class Parameters a_azkj => HasSkipStatusParam a_azkj
skipStatus :: HasSkipStatusParam a_azkj => Lens' a_azkj (Maybe Bool)
class Parameters a_azl7 => HasFollowParam a_azl7
follow :: HasFollowParam a_azl7 => Lens' a_azl7 (Maybe Bool)
class Parameters a_azlV => HasMapParam a_azlV
map :: HasMapParam a_azlV => Lens' a_azlV (Maybe Bool)
class Parameters a_azmJ => HasMediaIdsParam a_azmJ
mediaIds :: HasMediaIdsParam a_azmJ => Lens' a_azmJ (Maybe [Integer])
class Parameters a_aznx => HasDescriptionParam a_aznx
description :: HasDescriptionParam a_aznx => Lens' a_aznx (Maybe Text)
class Parameters a_azol => HasNameParam a_azol
name :: HasNameParam a_azol => Lens' a_azol (Maybe Text)
class Parameters a_azp9 => HasProfileLinkColorParam a_azp9
profileLinkColor :: HasProfileLinkColorParam a_azp9 => Lens' a_azp9 (Maybe Text)
class Parameters a_azpX => HasLocationParam a_azpX
location :: HasLocationParam a_azpX => Lens' a_azpX (Maybe Text)
class Parameters a_azqL => HasUrlParam a_azqL
url :: HasUrlParam a_azqL => Lens' a_azqL (Maybe URIString)
class Parameters a_azrA => HasFullTextParam a_azrA
fullText :: HasFullTextParam a_azrA => Lens' a_azrA (Maybe Bool)
class Parameters a_azso => HasWithParam a_azso
with :: HasWithParam a_azso => Lens' a_azso (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)
