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


-- | Core Rollbar data types and APIs.
--   
--   Core Rollbar data types and APIs.
@package rollbar-hs
@version 0.2.0.0


module Rollbar.AccessToken

-- | Should have the scope "post_server_item".
newtype AccessToken
AccessToken :: Text -> AccessToken
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.AccessToken.AccessToken
instance GHC.Show.Show Rollbar.AccessToken.AccessToken
instance Data.String.IsString Rollbar.AccessToken.AccessToken
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.AccessToken.AccessToken
instance GHC.Classes.Eq Rollbar.AccessToken.AccessToken


-- | Use this for providing the majority of your specific data to Rollbar.
module Rollbar.Item.Body

-- | This is the actual data that you want to give to Rollbar. Most of the
--   rest of Rollbar is metadata.
data Body arbitrary

-- | No stack trace, just a message and some arbitrary data.
Message :: MessageBody -> arbitrary -> Body arbitrary

-- | The primary message text.
[messageBody] :: Body arbitrary -> MessageBody

-- | Any arbitrary data you want to send with this message.
[messageData] :: Body arbitrary -> arbitrary

-- | The primary message text to send to Rollbar.
newtype MessageBody
MessageBody :: Text -> MessageBody
instance GHC.Show.Show arbitrary => GHC.Show.Show (Rollbar.Item.Body.Body arbitrary)
instance GHC.Generics.Generic (Rollbar.Item.Body.Body arbitrary)
instance GHC.Classes.Eq arbitrary => GHC.Classes.Eq (Rollbar.Item.Body.Body arbitrary)
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Body.MessageBody
instance GHC.Show.Show Rollbar.Item.Body.MessageBody
instance Data.String.IsString Rollbar.Item.Body.MessageBody
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Body.MessageBody
instance GHC.Classes.Eq Rollbar.Item.Body.MessageBody
instance Data.Aeson.Types.FromJSON.FromJSON arbitrary => Data.Aeson.Types.FromJSON.FromJSON (Rollbar.Item.Body.Body arbitrary)
instance Data.Aeson.Types.ToJSON.ToJSON arbitrary => Data.Aeson.Types.ToJSON.ToJSON (Rollbar.Item.Body.Body arbitrary)


module Rollbar.Item.CodeVersion

-- | Rollbar supports different ways to say what version the code is.
data CodeVersion

-- | Good ole SemVer. It's <a>Text</a> because who knows if you actually
--   got it right...
SemVer :: Text -> CodeVersion

-- | Plain integers.
Number :: Int -> CodeVersion

-- | Should be a Git SHA.
SHA :: Text -> CodeVersion
instance GHC.Show.Show Rollbar.Item.CodeVersion.CodeVersion
instance GHC.Generics.Generic Rollbar.Item.CodeVersion.CodeVersion
instance GHC.Classes.Eq Rollbar.Item.CodeVersion.CodeVersion
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.CodeVersion.CodeVersion
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.CodeVersion.CodeVersion


module Rollbar.Item.Environment

-- | Should be something meaningful to your program. E.g. "development",
--   "production", "staging"
newtype Environment
Environment :: Text -> Environment
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Environment.Environment
instance GHC.Show.Show Rollbar.Item.Environment.Environment
instance Data.String.IsString Rollbar.Item.Environment.Environment
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Environment.Environment
instance GHC.Classes.Eq Rollbar.Item.Environment.Environment


-- | Probably this could live outside the package...
module Rollbar.Item.Hardcoded

-- | This is basically <a>Proxy</a> with the variable restricted to
--   <a>Symbol</a>. It's mostly useful so a value can be insert into a JSON
--   blob easily.
data Hardcoded (symbol :: Symbol)
Hardcoded :: Hardcoded
instance GHC.Show.Show (Rollbar.Item.Hardcoded.Hardcoded symbol)
instance GHC.Generics.Generic (Rollbar.Item.Hardcoded.Hardcoded symbol)
instance GHC.Classes.Eq (Rollbar.Item.Hardcoded.Hardcoded symbol)
instance GHC.TypeLits.KnownSymbol symbol => Data.Aeson.Types.ToJSON.ToJSON (Rollbar.Item.Hardcoded.Hardcoded symbol)
instance GHC.TypeLits.KnownSymbol symbol => Data.Aeson.Types.FromJSON.FromJSON (Rollbar.Item.Hardcoded.Hardcoded symbol)


-- | Mostly, you shouldn't have to worry about this.
module Rollbar.Item.Internal.Notifier

-- | Metadata describing this package.
data Notifier
Notifier :: Hardcoded "rollbar-hs" -> Version -> Notifier

-- | The name of this package
[name] :: Notifier -> Hardcoded "rollbar-hs"

-- | The version of this package
[version] :: Notifier -> Version
instance GHC.Show.Show Rollbar.Item.Internal.Notifier.Notifier
instance GHC.Generics.Generic Rollbar.Item.Internal.Notifier.Notifier
instance GHC.Classes.Eq Rollbar.Item.Internal.Notifier.Notifier
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Internal.Notifier.Notifier
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Internal.Notifier.Notifier


-- | Mostly, you shouldn't have to worry about this.
module Rollbar.Item.Internal.Platform

-- | Should be something meaningful to rollbar, like "linux".
newtype Platform
Platform :: Text -> Platform
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Internal.Platform.Platform
instance GHC.Show.Show Rollbar.Item.Internal.Platform.Platform
instance Data.String.IsString Rollbar.Item.Internal.Platform.Platform
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Internal.Platform.Platform
instance GHC.Classes.Eq Rollbar.Item.Internal.Platform.Platform


module Rollbar.Item.Level

-- | Corresponds to the levels Rollbar allows in order of severity.
data Level
Debug :: Level
Info :: Level
Warning :: Level
Error :: Level
Critical :: Level
instance GHC.Show.Show Rollbar.Item.Level.Level
instance GHC.Classes.Ord Rollbar.Item.Level.Level
instance GHC.Generics.Generic Rollbar.Item.Level.Level
instance GHC.Classes.Eq Rollbar.Item.Level.Level
instance GHC.Enum.Enum Rollbar.Item.Level.Level
instance GHC.Enum.Bounded Rollbar.Item.Level.Level
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Level.Level
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Level.Level


module Rollbar.Item.MissingHeaders

-- | The request headers with some missing
--   
--   This is useful for removing sensitive information like the
--   <tt>Authorization</tt> header.
newtype MissingHeaders (headers :: [Symbol])
MissingHeaders :: RequestHeaders -> MissingHeaders

-- | Remove the headers given from the underlying request headers.
class RemoveHeaders (headers :: [Symbol])
instance GHC.Show.Show (Rollbar.Item.MissingHeaders.MissingHeaders headers)
instance GHC.Classes.Eq (Rollbar.Item.MissingHeaders.MissingHeaders headers)
instance Rollbar.Item.MissingHeaders.RemoveHeaders '[]
instance (GHC.TypeLits.KnownSymbol header, Rollbar.Item.MissingHeaders.RemoveHeaders headers) => Rollbar.Item.MissingHeaders.RemoveHeaders (header : headers)
instance Rollbar.Item.MissingHeaders.RemoveHeaders headers => Data.Aeson.Types.ToJSON.ToJSON (Rollbar.Item.MissingHeaders.MissingHeaders headers)
instance Data.Aeson.Types.FromJSON.FromJSON (Rollbar.Item.MissingHeaders.MissingHeaders headers)


module Rollbar.Item.Person

-- | The affected user.
--   
--   The <a>Email</a> and <a>Username</a> associated with the latest
--   <a>Id</a> will overwrite any previous.
data Person
Person :: Id -> Maybe Username -> Maybe Email -> Person
[id] :: Person -> Id
[username] :: Person -> Maybe Username
[email] :: Person -> Maybe Email

-- | The user's identifier. This uniquely identifies a <a>Person</a> to
--   Rollbar.
newtype Id
Id :: Text -> Id

-- | The user's name.
newtype Username
Username :: Text -> Username

-- | The user's email.
newtype Email
Email :: Text -> Email
instance GHC.Show.Show Rollbar.Item.Person.Person
instance GHC.Generics.Generic Rollbar.Item.Person.Person
instance GHC.Classes.Eq Rollbar.Item.Person.Person
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Person.Email
instance GHC.Show.Show Rollbar.Item.Person.Email
instance Data.String.IsString Rollbar.Item.Person.Email
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Person.Email
instance GHC.Classes.Eq Rollbar.Item.Person.Email
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Person.Username
instance GHC.Show.Show Rollbar.Item.Person.Username
instance Data.String.IsString Rollbar.Item.Person.Username
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Person.Username
instance GHC.Classes.Eq Rollbar.Item.Person.Username
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Person.Id
instance GHC.Show.Show Rollbar.Item.Person.Id
instance Data.String.IsString Rollbar.Item.Person.Id
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Person.Id
instance GHC.Classes.Eq Rollbar.Item.Person.Id
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Person.Person
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Person.Person


module Rollbar.Item.Request

-- | Data sent to the server
data Request headers
Request :: RawBody -> Get -> MissingHeaders headers -> Method -> QueryString -> URL -> IP -> Request headers
[rawBody] :: Request headers -> RawBody

-- | Query parameters
[get] :: Request headers -> Get
[headers] :: Request headers -> MissingHeaders headers
[method] :: Request headers -> Method

-- | The entire query string
[queryString] :: Request headers -> QueryString
[url] :: Request headers -> URL

-- | The client's IP address
[userIP] :: Request headers -> IP

-- | The query string parameters as a more useful data structure.
newtype Get
Get :: Query -> Get

-- | The IP address of the client.
newtype IP
IP :: SockAddr -> IP

-- | The HTTP Verb
newtype Method
Method :: ByteString -> Method

-- | The request headers with some missing
--   
--   This is useful for removing sensitive information like the
--   <tt>Authorization</tt> header.
newtype MissingHeaders (headers :: [Symbol])
MissingHeaders :: RequestHeaders -> MissingHeaders

-- | The raw querystring.
newtype QueryString
QueryString :: ByteString -> QueryString

-- | The raw request body as a <a>ByteString</a>.
newtype RawBody
RawBody :: ByteString -> RawBody

-- | The URL as a slightly more useful structure.
newtype URL
URL :: (Maybe ByteString, [Text]) -> URL

-- | Remove the headers given from the underlying request headers.
class RemoveHeaders (headers :: [Symbol])
instance GHC.Show.Show (Rollbar.Item.Request.Request headers)
instance GHC.Generics.Generic (Rollbar.Item.Request.Request headers)
instance GHC.Classes.Eq (Rollbar.Item.Request.Request headers)
instance GHC.Show.Show Rollbar.Item.Request.URL
instance GHC.Generics.Generic Rollbar.Item.Request.URL
instance GHC.Classes.Eq Rollbar.Item.Request.URL
instance GHC.Show.Show Rollbar.Item.Request.IP
instance GHC.Generics.Generic Rollbar.Item.Request.IP
instance GHC.Classes.Eq Rollbar.Item.Request.IP
instance GHC.Show.Show Rollbar.Item.Request.QueryString
instance GHC.Generics.Generic Rollbar.Item.Request.QueryString
instance GHC.Classes.Eq Rollbar.Item.Request.QueryString
instance GHC.Show.Show Rollbar.Item.Request.Method
instance GHC.Generics.Generic Rollbar.Item.Request.Method
instance GHC.Classes.Eq Rollbar.Item.Request.Method
instance GHC.Show.Show Rollbar.Item.Request.Get
instance GHC.Generics.Generic Rollbar.Item.Request.Get
instance GHC.Classes.Eq Rollbar.Item.Request.Get
instance GHC.Show.Show Rollbar.Item.Request.RawBody
instance Data.String.IsString Rollbar.Item.Request.RawBody
instance GHC.Generics.Generic Rollbar.Item.Request.RawBody
instance GHC.Classes.Eq Rollbar.Item.Request.RawBody
instance Data.Aeson.Types.FromJSON.FromJSON (Rollbar.Item.Request.Request headers)
instance Rollbar.Item.MissingHeaders.RemoveHeaders headers => Data.Aeson.Types.ToJSON.ToJSON (Rollbar.Item.Request.Request headers)
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Request.URL
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Request.URL
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Request.IP
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Request.IP
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Request.QueryString
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Request.QueryString
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Request.Method
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Request.Method
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Request.Get
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Request.Get
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Request.RawBody
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Request.RawBody


module Rollbar.Item.Server

-- | Information about the server using this package.
data Server
Server :: Maybe HostName -> Maybe Root -> Maybe Branch -> Maybe CodeVersion -> Server

-- | The hostname of the server.
[host] :: Server -> Maybe HostName

-- | The root directory the server is running in.
[root] :: Server -> Maybe Root

-- | The checked out branch the server is running on.
[branch] :: Server -> Maybe Branch

-- | The version of the server.
[serverCodeVersion] :: Server -> Maybe CodeVersion

-- | The root directory.
newtype Root
Root :: Text -> Root

-- | The git branch the server is running on.
newtype Branch
Branch :: Text -> Branch
instance GHC.Show.Show Rollbar.Item.Server.Server
instance GHC.Generics.Generic Rollbar.Item.Server.Server
instance GHC.Classes.Eq Rollbar.Item.Server.Server
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Server.Branch
instance GHC.Show.Show Rollbar.Item.Server.Branch
instance Data.String.IsString Rollbar.Item.Server.Branch
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Server.Branch
instance GHC.Classes.Eq Rollbar.Item.Server.Branch
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Server.Root
instance GHC.Show.Show Rollbar.Item.Server.Root
instance Data.String.IsString Rollbar.Item.Server.Root
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Server.Root
instance GHC.Classes.Eq Rollbar.Item.Server.Root
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Server.Server
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Server.Server


-- | The majority of this module is metadata that is reported for each
--   item.
module Rollbar.Item.Data

-- | The main payload of an item. Most of this is metadata.
--   
--   N.B. While it's entirely possible for you to create one of these
--   yourself, it's usually easier to use helpers like <tt>info</tt> and
--   <a>error</a>.
data Data body headers
Data :: Body body -> Maybe CodeVersion -> Maybe Context -> Maybe (HashMap Text Value) -> Environment -> Maybe Fingerprint -> Maybe Framework -> Hardcoded "haskell" -> Level -> Notifier -> Maybe Person -> Platform -> Maybe (Request headers) -> Maybe Server -> Maybe UTCTime -> Maybe Title -> Maybe UUID4 -> Data body headers
[body] :: Data body headers -> Body body
[codeVersion] :: Data body headers -> Maybe CodeVersion
[context] :: Data body headers -> Maybe Context
[custom] :: Data body headers -> Maybe (HashMap Text Value)
[environment] :: Data body headers -> Environment
[fingerprint] :: Data body headers -> Maybe Fingerprint
[framework] :: Data body headers -> Maybe Framework
[language] :: Data body headers -> Hardcoded "haskell"
[level] :: Data body headers -> Level

-- | Metadata about this package. You probably shouldn't create this
--   yourself.
[notifier] :: Data body headers -> Notifier
[person] :: Data body headers -> Maybe Person

-- | Metadata about this package. You probably shouldn't create this
--   yourself.
[platform] :: Data body headers -> Platform
[request] :: Data body headers -> Maybe (Request headers)
[server] :: Data body headers -> Maybe Server
[timestamp] :: Data body headers -> Maybe UTCTime
[title] :: Data body headers -> Maybe Title
[uuid] :: Data body headers -> Maybe UUID4

-- | The place in the code where this item came from.
newtype Context
Context :: Text -> Context

-- | How to group the item.
newtype Fingerprint
Fingerprint :: Text -> Fingerprint

-- | The framework that is using this package. E.g. "scotty", "servant",
--   "yesod"
newtype Framework
Framework :: Text -> Framework

-- | The title of the item.
newtype Title
Title :: Text -> Title

-- | A unique identifier for each item.
newtype UUID4
UUID4 :: UUID -> UUID4

-- | Remove the headers given from the underlying request headers.
class RemoveHeaders (headers :: [Symbol])
instance GHC.Show.Show body => GHC.Show.Show (Rollbar.Item.Data.Data body headers)
instance GHC.Generics.Generic (Rollbar.Item.Data.Data body headers)
instance GHC.Classes.Eq body => GHC.Classes.Eq (Rollbar.Item.Data.Data body headers)
instance GHC.Show.Show Rollbar.Item.Data.UUID4
instance GHC.Generics.Generic Rollbar.Item.Data.UUID4
instance GHC.Classes.Eq Rollbar.Item.Data.UUID4
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Data.Title
instance GHC.Show.Show Rollbar.Item.Data.Title
instance Data.String.IsString Rollbar.Item.Data.Title
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Data.Title
instance GHC.Classes.Eq Rollbar.Item.Data.Title
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Data.Fingerprint
instance GHC.Show.Show Rollbar.Item.Data.Fingerprint
instance Data.String.IsString Rollbar.Item.Data.Fingerprint
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Data.Fingerprint
instance GHC.Classes.Eq Rollbar.Item.Data.Fingerprint
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Data.Context
instance GHC.Show.Show Rollbar.Item.Data.Context
instance Data.String.IsString Rollbar.Item.Data.Context
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Data.Context
instance GHC.Classes.Eq Rollbar.Item.Data.Context
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Data.Framework
instance GHC.Show.Show Rollbar.Item.Data.Framework
instance Data.String.IsString Rollbar.Item.Data.Framework
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Data.Framework
instance GHC.Classes.Eq Rollbar.Item.Data.Framework
instance Data.Aeson.Types.FromJSON.FromJSON body => Data.Aeson.Types.FromJSON.FromJSON (Rollbar.Item.Data.Data body headers)
instance (Rollbar.Item.MissingHeaders.RemoveHeaders headers, Data.Aeson.Types.ToJSON.ToJSON body) => Data.Aeson.Types.ToJSON.ToJSON (Rollbar.Item.Data.Data body headers)
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.Item.Data.UUID4
instance Data.Aeson.Types.ToJSON.ToJSON Rollbar.Item.Data.UUID4


-- | Provides a data type that subsumes most of what Rollbar expects for
--   "item"s.
--   
--   See Rollbar's <a>Data Format</a> for more details.
module Rollbar.Item

-- | Creates <a>Data</a> with the level set to <a>Debug</a>.
debug :: Environment -> Maybe MessageBody -> payload -> Data payload ("Authorization" : headers)

-- | Creates <a>Data</a> with the level set to <a>Info</a>.
info :: Environment -> Maybe MessageBody -> payload -> Data payload ("Authorization" : headers)

-- | Creates <a>Data</a> with the level set to <a>Warning</a>.
warning :: Environment -> Maybe MessageBody -> payload -> Data payload ("Authorization" : headers)

-- | Creates <a>Data</a> with the level set to <a>Error</a>.
error :: Environment -> Maybe MessageBody -> payload -> Data payload ("Authorization" : headers)

-- | Creates <a>Data</a> with the level set to <a>Critical</a>.
critical :: Environment -> Maybe MessageBody -> payload -> Data payload ("Authorization" : headers)

-- | The thing we actually give to Rollbar.
data Item a headers
Item :: AccessToken -> Data a headers -> Item a headers

-- | Should have a scope "post_server_item".
[accessToken] :: Item a headers -> AccessToken
[itemData] :: Item a headers -> Data a headers

-- | Should have the scope "post_server_item".
newtype AccessToken
AccessToken :: Text -> AccessToken

-- | The main payload of an item. Most of this is metadata.
--   
--   N.B. While it's entirely possible for you to create one of these
--   yourself, it's usually easier to use helpers like <tt>info</tt> and
--   <a>error</a>.
data Data body headers
Data :: Body body -> Maybe CodeVersion -> Maybe Context -> Maybe (HashMap Text Value) -> Environment -> Maybe Fingerprint -> Maybe Framework -> Hardcoded "haskell" -> Level -> Notifier -> Maybe Person -> Platform -> Maybe (Request headers) -> Maybe Server -> Maybe UTCTime -> Maybe Title -> Maybe UUID4 -> Data body headers
[body] :: Data body headers -> Body body
[codeVersion] :: Data body headers -> Maybe CodeVersion
[context] :: Data body headers -> Maybe Context
[custom] :: Data body headers -> Maybe (HashMap Text Value)
[environment] :: Data body headers -> Environment
[fingerprint] :: Data body headers -> Maybe Fingerprint
[framework] :: Data body headers -> Maybe Framework
[language] :: Data body headers -> Hardcoded "haskell"
[level] :: Data body headers -> Level

-- | Metadata about this package. You probably shouldn't create this
--   yourself.
[notifier] :: Data body headers -> Notifier
[person] :: Data body headers -> Maybe Person

-- | Metadata about this package. You probably shouldn't create this
--   yourself.
[platform] :: Data body headers -> Platform
[request] :: Data body headers -> Maybe (Request headers)
[server] :: Data body headers -> Maybe Server
[timestamp] :: Data body headers -> Maybe UTCTime
[title] :: Data body headers -> Maybe Title
[uuid] :: Data body headers -> Maybe UUID4

-- | The place in the code where this item came from.
newtype Context
Context :: Text -> Context

-- | How to group the item.
newtype Fingerprint
Fingerprint :: Text -> Fingerprint

-- | The framework that is using this package. E.g. "scotty", "servant",
--   "yesod"
newtype Framework
Framework :: Text -> Framework

-- | The title of the item.
newtype Title
Title :: Text -> Title

-- | A unique identifier for each item.
newtype UUID4
UUID4 :: UUID -> UUID4

-- | This is the actual data that you want to give to Rollbar. Most of the
--   rest of Rollbar is metadata.
data Body arbitrary

-- | No stack trace, just a message and some arbitrary data.
Message :: MessageBody -> arbitrary -> Body arbitrary

-- | The primary message text.
[messageBody] :: Body arbitrary -> MessageBody

-- | Any arbitrary data you want to send with this message.
[messageData] :: Body arbitrary -> arbitrary

-- | The primary message text to send to Rollbar.
newtype MessageBody
MessageBody :: Text -> MessageBody

-- | Should be something meaningful to your program. E.g. "development",
--   "production", "staging"
newtype Environment
Environment :: Text -> Environment

-- | Corresponds to the levels Rollbar allows in order of severity.
data Level
Debug :: Level
Info :: Level
Warning :: Level
Error :: Level
Critical :: Level

-- | Rollbar supports different ways to say what version the code is.
data CodeVersion

-- | Good ole SemVer. It's <a>Text</a> because who knows if you actually
--   got it right...
SemVer :: Text -> CodeVersion

-- | Plain integers.
Number :: Int -> CodeVersion

-- | Should be a Git SHA.
SHA :: Text -> CodeVersion

-- | This is basically <a>Proxy</a> with the variable restricted to
--   <a>Symbol</a>. It's mostly useful so a value can be insert into a JSON
--   blob easily.
data Hardcoded (symbol :: Symbol)
Hardcoded :: Hardcoded

-- | The request headers with some missing
--   
--   This is useful for removing sensitive information like the
--   <tt>Authorization</tt> header.
newtype MissingHeaders (headers :: [Symbol])
MissingHeaders :: RequestHeaders -> MissingHeaders

-- | The affected user.
--   
--   The <a>Email</a> and <a>Username</a> associated with the latest
--   <a>Id</a> will overwrite any previous.
data Person
Person :: Id -> Maybe Username -> Maybe Email -> Person
[id] :: Person -> Id
[username] :: Person -> Maybe Username
[email] :: Person -> Maybe Email

-- | The user's email.
newtype Email
Email :: Text -> Email

-- | The user's identifier. This uniquely identifies a <a>Person</a> to
--   Rollbar.
newtype Id
Id :: Text -> Id

-- | The user's name.
newtype Username
Username :: Text -> Username

-- | The query string parameters as a more useful data structure.
newtype Get
Get :: Query -> Get

-- | The IP address of the client.
newtype IP
IP :: SockAddr -> IP

-- | The HTTP Verb
newtype Method
Method :: ByteString -> Method

-- | The request headers with some missing
--   
--   This is useful for removing sensitive information like the
--   <tt>Authorization</tt> header.
newtype MissingHeaders (headers :: [Symbol])
MissingHeaders :: RequestHeaders -> MissingHeaders

-- | The raw querystring.
newtype QueryString
QueryString :: ByteString -> QueryString

-- | The raw request body as a <a>ByteString</a>.
newtype RawBody
RawBody :: ByteString -> RawBody

-- | The URL as a slightly more useful structure.
newtype URL
URL :: (Maybe ByteString, [Text]) -> URL

-- | Information about the server using this package.
data Server
Server :: Maybe HostName -> Maybe Root -> Maybe Branch -> Maybe CodeVersion -> Server

-- | The hostname of the server.
[host] :: Server -> Maybe HostName

-- | The root directory the server is running in.
[root] :: Server -> Maybe Root

-- | The checked out branch the server is running on.
[branch] :: Server -> Maybe Branch

-- | The version of the server.
[serverCodeVersion] :: Server -> Maybe CodeVersion

-- | The git branch the server is running on.
newtype Branch
Branch :: Text -> Branch

-- | The root directory.
newtype Root
Root :: Text -> Root
instance GHC.Show.Show a => GHC.Show.Show (Rollbar.Item.Item a headers)
instance GHC.Generics.Generic (Rollbar.Item.Item a headers)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Rollbar.Item.Item a headers)
instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Rollbar.Item.Item a headers)
instance (Rollbar.Item.MissingHeaders.RemoveHeaders headers, Data.Aeson.Types.ToJSON.ToJSON a) => Data.Aeson.Types.ToJSON.ToJSON (Rollbar.Item.Item a headers)


-- | Provides functions for communicating with Rollbar through the public
--   API.
--   
--   See Rollbar's <a>API</a> for more details.
module Rollbar.API

-- | Sends an <a>Item</a> off to Rollbar.
--   
--   Creates a new <a>Manager</a> to send off the request.
itemsPOST :: (MonadIO f, RemoveHeaders b, ToJSON a) => Item a b -> f (Response (Either JSONException ItemsPOSTResponse))

-- | Sends an <a>Item</a> off to Rollbar.
itemsPOST' :: (MonadIO f, RemoveHeaders b, ToJSON a) => Manager -> Item a b -> f (Response (Either JSONException ItemsPOSTResponse))

-- | Sends an <a>Item</a> off to Rollbar.
--   
--   Creates a new <a>Manager</a> to send off the request. Makes no claims
--   about what you get back.
itemsPOSTRaw :: (FromJSON c, MonadIO f, RemoveHeaders b, ToJSON a) => Item a b -> f (Response (Either JSONException c))

-- | Sends an <a>Item</a> off to Rollbar.
--   
--   Makes no claims about what you get back.
itemsPOSTRaw' :: (FromJSON c, MonadIO f, RemoveHeaders b, ToJSON a) => Manager -> Item a b -> f (Response (Either JSONException c))

-- | Converts an item into a request ready to send to Rollbar.
--   
--   If you need a different scheme for sending items, you'll probably want
--   to use this along with a function like <a>httpLbs</a> or
--   <a>httpLbs</a>.
--   
--   If you want the JSON back and already have a <a>Manager</a>, you can
--   use this function with <a>setRequestManager</a>. Then send off the
--   request with something like <a>httpJSONEither</a>.
makeRequest :: (RemoveHeaders headers, ToJSON a) => Item a headers -> Request

-- | The response received from sending an <a>Item</a> to Rollbar.
data ItemsPOSTResponse
ItemsPOSTSuccess :: Int -> ItemsPOSTSuccessResult -> ItemsPOSTResponse

-- | This <tt>err</tt> field is always 0.
[err_ItemsPOSTSuccess] :: ItemsPOSTResponse -> Int

-- | The part you probably care about.
[result_ItemsPOSTSuccess] :: ItemsPOSTResponse -> ItemsPOSTSuccessResult
ItemsPOSTError :: Int -> Text -> ItemsPOSTResponse

-- | This <tt>err</tt> field is always 1.
[err_ItemsPOSTError] :: ItemsPOSTResponse -> Int

-- | A human-readable message describing the error.
[message_ItemsPOSTError] :: ItemsPOSTResponse -> Text

-- | The human readable error message from sending an <a>Item</a> to
--   Rollbar.
newtype ItemsPOSTErrorMessage
ItemsPOSTErrorMessage :: Text -> ItemsPOSTErrorMessage

-- | The successful response from sending an <a>Item</a> to Rollbar.
newtype ItemsPOSTSuccessResult
ItemsPOSTSuccessResult :: UUID4 -> ItemsPOSTSuccessResult

-- | <a>UUID4</a> of the item. Matches sent <a>UUID4</a> or generated by
--   Rollbar if missing.
[uuid] :: ItemsPOSTSuccessResult -> UUID4

-- | Sends an <a>Item</a> off to Rollbar.
--   
--   Creates a new <a>Manager</a> to send off the request. Makes no claims
--   about what you get back. Throws a <a>JSONException</a> if it cannot
--   parse the response.
--   
--   Yes, this name is annoying, so are exceptions.
itemsPOSTWithException :: (FromJSON c, MonadIO f, RemoveHeaders b, ToJSON a) => Item a b -> f (Response c)
instance GHC.Show.Show Rollbar.API.ItemsPOSTErrorMessage
instance GHC.Generics.Generic Rollbar.API.ItemsPOSTErrorMessage
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.API.ItemsPOSTErrorMessage
instance GHC.Classes.Eq Rollbar.API.ItemsPOSTErrorMessage
instance GHC.Show.Show Rollbar.API.ItemsPOSTResponse
instance GHC.Generics.Generic Rollbar.API.ItemsPOSTResponse
instance GHC.Classes.Eq Rollbar.API.ItemsPOSTResponse
instance GHC.Show.Show Rollbar.API.ItemsPOSTSuccessResult
instance GHC.Generics.Generic Rollbar.API.ItemsPOSTSuccessResult
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.API.ItemsPOSTSuccessResult
instance GHC.Classes.Eq Rollbar.API.ItemsPOSTSuccessResult
instance Data.Aeson.Types.FromJSON.FromJSON Rollbar.API.ItemsPOSTResponse
