-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Bindings to Instagram's API.
--
@package ig
@version 0.2.2
-- | the public API for Instagram access
module Instagram
-- | the instagram monad transformer this encapsulates the data necessary
-- to pass the app credentials, etc
data InstagramT m a
-- | Run a computation in the InstagramT monad transformer with your
-- credentials.
runInstagramT :: Credentials -> Manager -> InstagramT m a -> m a
-- | Run a ResourceT inside a InstagramT.
runResourceInIs :: (MonadResource m, MonadBaseControl IO m) => InstagramT (ResourceT m) a -> InstagramT m a
-- | an exception that a call to instagram may throw
data IGException
-- | the URI to redirect the user after she accepts/refuses to authorize
-- the app
type RedirectUri = Text
-- | get the authorize url to redirect your user to
getUserAccessTokenURL1 :: Monad m => RedirectUri -> [Scope] -> InstagramT m Text
-- | second step of authorization: get the access token once the user has
-- been redirected with a code
getUserAccessTokenURL2 :: (MonadBaseControl IO m, MonadResource m) => RedirectUri -> Text -> InstagramT m OAuthToken
-- | the app credentials
data Credentials
Credentials :: Text -> Text -> Credentials
-- | client id
cClientID :: Credentials -> Text
-- | client secret
cClientSecret :: Credentials -> Text
-- | the oauth token returned after authentication
data OAuthToken
OAuthToken :: AccessToken -> User -> OAuthToken
-- | the access token
oaAccessToken :: OAuthToken -> AccessToken
-- | the user structure returned
oaUser :: OAuthToken -> User
-- | the access token is simply a Text
newtype AccessToken
AccessToken :: Text -> AccessToken
-- | the User partial profile returned by the authentication
data User
User :: UserID -> Text -> Text -> Maybe Text -> Maybe Text -> User
uID :: User -> UserID
uUsername :: User -> Text
uFullName :: User -> Text
uProfilePicture :: User -> Maybe Text
uWebsite :: User -> Maybe Text
-- | the scopes of the authentication
data Scope
Basic :: Scope
Comments :: Scope
Relationships :: Scope
Likes :: Scope
-- | envelope for Instagram OK response
data Envelope d
Envelope :: IGError -> d -> Maybe Pagination -> Envelope d
-- | this should only say 200, no error, but put here for completeness
eMeta :: Envelope d -> IGError
-- | data, garanteed to be present (otherwise we get an ErrEnvelope)
eData :: Envelope d -> d
ePagination :: Envelope d -> Maybe Pagination
-- | pagination info for responses that can return a lot of data
data Pagination
Pagination :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Pagination
pNextUrl :: Pagination -> Maybe Text
pNextMaxID :: Pagination -> Maybe Text
pNextMinID :: Pagination -> Maybe Text
pNextMaxTagID :: Pagination -> Maybe Text
pMinTagID :: Pagination -> Maybe Text
-- | instagram media object
data Media
Media :: MediaID -> Maybe Comment -> Text -> User -> POSIXTime -> Images -> Text -> [UserPosition] -> Maybe Text -> [Text] -> Maybe Location -> Collection Comment -> Collection User -> Bool -> Maybe Object -> Media
mID :: Media -> MediaID
mCaption :: Media -> Maybe Comment
mLink :: Media -> Text
mUser :: Media -> User
mCreated :: Media -> POSIXTime
mImages :: Media -> Images
mType :: Media -> Text
mUsersInPhoto :: Media -> [UserPosition]
mFilter :: Media -> Maybe Text
mTags :: Media -> [Text]
mLocation :: Media -> Maybe Location
mComments :: Media -> Collection Comment
mLikes :: Media -> Collection User
mUserHasLiked :: Media -> Bool
-- | seems to be open format
-- https://groups.google.com/forum/?fromgroups#!topic/instagram-api-developers/KvGH1cnjljQ
mAttribution :: Media -> Maybe Object
-- | position in picture
data Position
Position :: Double -> Double -> Position
pX :: Position -> Double
pY :: Position -> Double
-- | position of a user
data UserPosition
UserPosition :: Position -> User -> UserPosition
upPosition :: UserPosition -> Position
upUser :: UserPosition -> User
-- | geographical location info
data Location
Location :: Maybe LocationID -> Maybe Double -> Maybe Double -> Maybe Text -> Maybe Text -> Location
lID :: Location -> Maybe LocationID
lLatitude :: Location -> Maybe Double
lLongitude :: Location -> Maybe Double
lStreetAddress :: Location -> Maybe Text
lName :: Location -> Maybe Text
-- | data for a single image
data ImageData
ImageData :: Text -> Integer -> Integer -> ImageData
idURL :: ImageData -> Text
idWidth :: ImageData -> Integer
idHeight :: ImageData -> Integer
-- | different images for the same media
data Images
Images :: ImageData -> ImageData -> ImageData -> Images
iLowRes :: Images -> ImageData
iThumbnail :: Images -> ImageData
iStandardRes :: Images -> ImageData
-- | Commenton on a medium
data Comment
Comment :: CommentID -> POSIXTime -> Text -> User -> Comment
cID :: Comment -> CommentID
cCreated :: Comment -> POSIXTime
cText :: Comment -> Text
cFrom :: Comment -> User
-- | a collection of items (count + data) data can only be a subset
data Collection a
Collection :: Integer -> [a] -> Collection a
cCount :: Collection a -> Integer
cData :: Collection a -> [a]
-- | Instagram returns data:null for nothing, but Aeson considers that ()
-- maps to an empty array... so we model the fact that we expect null via
-- NoResult
data NoResult
-- | User ID
type UserID = Text
-- | Get basic information about a user.
getUser :: (MonadBaseControl IO m, MonadResource m) => UserID -> Maybe OAuthToken -> InstagramT m (Envelope (Maybe User))
-- | Parameters for call to self feed
data SelfFeedParams
SelfFeedParams :: Maybe Integer -> Maybe Text -> Maybe Text -> SelfFeedParams
sfpCount :: SelfFeedParams -> Maybe Integer
sfpMaxID :: SelfFeedParams -> Maybe Text
sfpMinId :: SelfFeedParams -> Maybe Text
-- | See the authenticated user's feed.
getSelfFeed :: (MonadBaseControl IO m, MonadResource m) => OAuthToken -> SelfFeedParams -> InstagramT m (Envelope [Media])
-- | Parameters for call to recent media
data RecentParams
RecentParams :: Maybe Integer -> Maybe POSIXTime -> Maybe POSIXTime -> Maybe Text -> Maybe Text -> RecentParams
rpCount :: RecentParams -> Maybe Integer
rpMaxTimestamp :: RecentParams -> Maybe POSIXTime
rpMinTimestamp :: RecentParams -> Maybe POSIXTime
rpMaxID :: RecentParams -> Maybe Text
rpMinId :: RecentParams -> Maybe Text
-- | Get the most recent media published by a user.
getRecent :: (MonadBaseControl IO m, MonadResource m) => UserID -> OAuthToken -> RecentParams -> InstagramT m (Envelope [Media])
-- | parameters for self liked call
data SelfLikedParams
SelfLikedParams :: Maybe Integer -> Maybe Text -> SelfLikedParams
slpCount :: SelfLikedParams -> Maybe Integer
slpMaxLikeID :: SelfLikedParams -> Maybe Text
-- | See the authenticated user's list of media they've liked.
getSelfLiked :: (MonadBaseControl IO m, MonadResource m) => OAuthToken -> SelfLikedParams -> InstagramT m (Envelope [Media])
-- | parameters for self liked call
data UserSearchParams
UserSearchParams :: Text -> Maybe Integer -> UserSearchParams
uspQuery :: UserSearchParams -> Text
uspCount :: UserSearchParams -> Maybe Integer
-- | Search for a user by name.
searchUsers :: (MonadBaseControl IO m, MonadResource m) => Maybe OAuthToken -> UserSearchParams -> InstagramT m (Envelope [User])
-- | notification aspect
data Aspect
-- | the media Aspect, the only one supported for now
media :: Aspect
-- | the URL to receive notifications to
type CallbackUrl = Text
-- | a subscription to a real time notification
data Subscription
Subscription :: Text -> Text -> Text -> Maybe Text -> Aspect -> CallbackUrl -> Maybe Double -> Maybe Double -> Maybe Integer -> Subscription
sID :: Subscription -> Text
sType :: Subscription -> Text
sObject :: Subscription -> Text
sObjectID :: Subscription -> Maybe Text
sAspect :: Subscription -> Aspect
sCallbackUrl :: Subscription -> CallbackUrl
sLatitude :: Subscription -> Maybe Double
sLongitude :: Subscription -> Maybe Double
sRadius :: Subscription -> Maybe Integer
-- | create a subscription
createSubscription :: (MonadBaseControl IO m, MonadResource m) => SubscriptionParams -> InstagramT m (Envelope Subscription)
-- | list all subscriptions for the application
listSubscriptions :: (MonadBaseControl IO m, MonadResource m) => InstagramT m (Envelope [Subscription])
-- | delete subscriptions based on criteria
deleteSubscriptions :: (MonadBaseControl IO m, MonadResource m) => DeletionParams -> InstagramT m (Envelope Value)
-- | details of subscription request
data SubscriptionRequest
-- | when a user uploads a picture
UserRequest :: SubscriptionRequest
-- | when a picture is tagged with the given tag
TagRequest :: Text -> SubscriptionRequest
trTag :: SubscriptionRequest -> Text
-- | when a picture is tagged with a specific location
LocationRequest :: Text -> SubscriptionRequest
lrID :: SubscriptionRequest -> Text
-- | when a picture is tagged with a location inside the given region
GeographyRequest :: Double -> Double -> Integer -> SubscriptionRequest
grLatitude :: SubscriptionRequest -> Double
grLongitude :: SubscriptionRequest -> Double
grRadius :: SubscriptionRequest -> Integer
-- | parameters for the subscription creation
data SubscriptionParams
SubscriptionParams :: SubscriptionRequest -> CallbackUrl -> Aspect -> Maybe Text -> SubscriptionParams
-- | the actual subscription request
spRequest :: SubscriptionParams -> SubscriptionRequest
-- | the url Instagram will post notifications to
spCallback :: SubscriptionParams -> CallbackUrl
-- | the subscription aspect
spAspect :: SubscriptionParams -> Aspect
-- | the verification token
spVerifyToken :: SubscriptionParams -> Maybe Text
-- | deletion parameters
data DeletionParams
-- | delete all subscriptions
DeleteAll :: DeletionParams
-- | delete one subscription, given its ID
DeleteOne :: Text -> DeletionParams
doID :: DeletionParams -> Text
-- | delete all user subscriptions
DeleteUsers :: DeletionParams
-- | delete all tag subscriptions
DeleteTags :: DeletionParams
-- | delete all location subscriptions
DeleteLocations :: DeletionParams
-- | delete all geography subscriptions
DeleteGeographies :: DeletionParams
-- | an update from a subscription
data Update
Update :: Integer -> Text -> Text -> Aspect -> POSIXTime -> Update
uSubscriptionID :: Update -> Integer
uObject :: Update -> Text
uObjectID :: Update -> Text
uChangedAspect :: Update -> Aspect
uTime :: Update -> POSIXTime
-- | verify the signature with the content, using the secret as the key
verifySignature :: Monad m => ByteString -> ByteString -> InstagramT m Bool
-- | a Tag
data Tag
Tag :: TagName -> Integer -> Tag
tName :: Tag -> TagName
tMediaCount :: Tag -> Integer
-- | Tag Name
type TagName = Text
-- | Get information about a tag object.
getTag :: (MonadBaseControl IO m, MonadResource m) => TagName -> Maybe OAuthToken -> InstagramT m (Envelope (Maybe Tag))
-- | parameters for recent tag pagination
data RecentTagParams
RecentTagParams :: Maybe Text -> Maybe Text -> RecentTagParams
rtpMaxID :: RecentTagParams -> Maybe Text
rtpMinID :: RecentTagParams -> Maybe Text
-- | Get a list of recently tagged media.
getRecentTagged :: (MonadBaseControl IO m, MonadResource m) => TagName -> Maybe OAuthToken -> RecentTagParams -> InstagramT m (Envelope [Media])
-- | Search for tags by name.
searchTags :: (MonadBaseControl IO m, MonadResource m) => TagName -> Maybe OAuthToken -> InstagramT m (Envelope [Tag])
-- | outgoing relationship status
data OutgoingStatus
Follows :: OutgoingStatus
Requested :: OutgoingStatus
OutNone :: OutgoingStatus
-- | incoming relationship status
data IncomingStatus
FollowedBy :: IncomingStatus
RequestedBy :: IncomingStatus
BlockedByYou :: IncomingStatus
InNone :: IncomingStatus
-- | a relationship between two users
data Relationship
Relationship :: OutgoingStatus -> IncomingStatus -> Bool -> Relationship
rOutgoing :: Relationship -> OutgoingStatus
rIncoming :: Relationship -> IncomingStatus
-- | not present in doc
rTargetUserPrivate :: Relationship -> Bool
-- | Get the list of users this user follows.
getFollows :: (MonadBaseControl IO m, MonadResource m) => UserID -> Maybe OAuthToken -> InstagramT m (Envelope [User])
-- | Get the list of users this user is followed by.
getFollowedBy :: (MonadBaseControl IO m, MonadResource m) => UserID -> Maybe OAuthToken -> InstagramT m (Envelope [User])
-- | List the users who have requested this user's permission to follow.
getRequestedBy :: (MonadBaseControl IO m, MonadResource m) => OAuthToken -> InstagramT m (Envelope [User])
-- | Get information about a relationship to another user.
getRelationship :: (MonadBaseControl IO m, MonadResource m) => UserID -> OAuthToken -> InstagramT m (Envelope Relationship)
-- | Modify the relationship between the current user and the target user.
setRelationShip :: (MonadBaseControl IO m, MonadResource m) => UserID -> OAuthToken -> RelationShipAction -> InstagramT m (Envelope Relationship)
-- | relationship action
data RelationShipAction
Follow :: RelationShipAction
Unfollow :: RelationShipAction
Block :: RelationShipAction
Unblock :: RelationShipAction
Approve :: RelationShipAction
Deny :: RelationShipAction
-- | Media ID
type MediaID = Text
-- | Get information about a media object.
getMedia :: (MonadBaseControl IO m, MonadResource m) => MediaID -> Maybe OAuthToken -> InstagramT m (Envelope (Maybe Media))
-- | Get a list of what media is most popular at the moment.
getPopularMedia :: (MonadBaseControl IO m, MonadResource m) => Maybe OAuthToken -> InstagramT m (Envelope [Media])
-- | Parameters for call to media search
data MediaSearchParams
MediaSearchParams :: Maybe Double -> Maybe Double -> Maybe Integer -> Maybe POSIXTime -> Maybe POSIXTime -> MediaSearchParams
mspLatitude :: MediaSearchParams -> Maybe Double
mspLongitude :: MediaSearchParams -> Maybe Double
mspDistance :: MediaSearchParams -> Maybe Integer
mspMaxTimestamp :: MediaSearchParams -> Maybe POSIXTime
mspMinTimestamp :: MediaSearchParams -> Maybe POSIXTime
-- | Search for media in a given area.
searchMedia :: (MonadBaseControl IO m, MonadResource m) => Maybe OAuthToken -> MediaSearchParams -> InstagramT m (Envelope [Media])
-- | comment id
type CommentID = Text
-- | Get a full list of comments on a media.
getComments :: (MonadBaseControl IO m, MonadResource m) => MediaID -> Maybe OAuthToken -> InstagramT m (Envelope [Comment])
-- | Create a comment on a media.
postComment :: (MonadBaseControl IO m, MonadResource m) => MediaID -> OAuthToken -> Text -> InstagramT m (Envelope NoResult)
-- | Remove a comment either on the authenticated user's media or authored
-- by the authenticated user.
deleteComment :: (MonadBaseControl IO m, MonadResource m) => MediaID -> CommentID -> OAuthToken -> InstagramT m (Envelope NoResult)
-- | Get a list of users who have liked this media.
getLikes :: (MonadBaseControl IO m, MonadResource m) => MediaID -> Maybe OAuthToken -> InstagramT m (Envelope [User])
-- | Set a like on this media by the currently authenticated user.
like :: (MonadBaseControl IO m, MonadResource m) => MediaID -> OAuthToken -> InstagramT m (Envelope NoResult)
-- | Remove a like on this media by the currently authenticated user.
unlike :: (MonadBaseControl IO m, MonadResource m) => MediaID -> OAuthToken -> InstagramT m (Envelope NoResult)
-- | location ID
type LocationID = Text
-- | Get information about a location.
getLocation :: (MonadBaseControl IO m, MonadResource m) => LocationID -> Maybe OAuthToken -> InstagramT m (Envelope (Maybe Location))
-- | Parameters for call to recent media in location search
data LocationMediaParams
LocationMediaParams :: Maybe POSIXTime -> Maybe POSIXTime -> Maybe Text -> Maybe Text -> LocationMediaParams
lmspMaxTimestamp :: LocationMediaParams -> Maybe POSIXTime
lmspMinTimestamp :: LocationMediaParams -> Maybe POSIXTime
lmspMaxID :: LocationMediaParams -> Maybe Text
lmspMinId :: LocationMediaParams -> Maybe Text
-- | Get a list of recent media objects from a given location.
getLocationRecentMedia :: (MonadBaseControl IO m, MonadResource m) => LocationID -> Maybe OAuthToken -> LocationMediaParams -> InstagramT m (Envelope [Media])
-- | Parameters for call to media search
data LocationSearchParams
LocationSearchParams :: Maybe Double -> Maybe Double -> Maybe Integer -> Maybe Text -> Maybe Text -> LocationSearchParams
lspLatitude :: LocationSearchParams -> Maybe Double
lspLongitude :: LocationSearchParams -> Maybe Double
lspDistance :: LocationSearchParams -> Maybe Integer
lspFoursquareIDv2 :: LocationSearchParams -> Maybe Text
lspFoursquareID :: LocationSearchParams -> Maybe Text
-- | Search for a location by geographic coordinate.
searchLocations :: (MonadBaseControl IO m, MonadResource m) => Maybe OAuthToken -> LocationSearchParams -> InstagramT m (Envelope [Location])
-- | geography ID
type GeographyID = Text
-- | Parameters for call to recent media in geography search
data GeographyMediaParams
GeographyMediaParams :: Maybe Integer -> Maybe Text -> GeographyMediaParams
gmpCount :: GeographyMediaParams -> Maybe Integer
gmpMinId :: GeographyMediaParams -> Maybe Text
-- | Get very recent media from a geography subscription that you created
getGeographyRecentMedia :: (MonadBaseControl IO m, MonadResource m) => GeographyID -> GeographyMediaParams -> InstagramT m (Envelope [Media])