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


-- | Core data types and functionality for Gogol libraries.
--   
--   Core data types, functionality and serialisation primitives for Gogol
--   related Google Services SDKs.
--   
--   The external interface of this library is stable with respect to the
--   downstream Gogol libraries, only, and as such is not suitable for use
--   in non-Gogol projects.
@package gogol-core
@version 0.3.0


module Network.Google.Types
data AltJSON
AltJSON :: AltJSON
data AltMedia
AltMedia :: AltMedia
data Multipart
Multipart :: Multipart

-- | An OAuth2 scope.
newtype OAuthScope
OAuthScope :: Text -> OAuthScope

-- | An OAuth2 access token.
newtype AccessToken
AccessToken :: Text -> AccessToken

-- | An OAuth2 refresh token.
newtype RefreshToken
RefreshToken :: Text -> RefreshToken

-- | A client identifier.
newtype ClientId
ClientId :: Text -> ClientId

-- | A service identifier.
newtype ServiceId
ServiceId :: Text -> ServiceId

-- | An opaque client secret.
newtype Secret
Secret :: Text -> Secret
newtype MediaDownload a
MediaDownload :: a -> MediaDownload a
data MediaUpload a
MediaUpload :: a -> Body -> MediaUpload a
_Coerce :: (Coercible a b, Coercible b a) => Iso' a b

-- | Invalid Iso, exists for ease of composition with the current 'Lens .
--   Iso' chaining to hide internal types from the user.
_Default :: Monoid a => Iso' (Maybe a) a
type Stream = ResumableSource (ResourceT IO) ByteString
data Error
TransportError :: HttpException -> Error
SerializeError :: SerializeError -> Error
ServiceError :: ServiceError -> Error
data SerializeError
SerializeError' :: !ServiceId -> [Header] -> !Status -> !String -> !(Maybe ByteString) -> SerializeError
[_serializeId] :: SerializeError -> !ServiceId
[_serializeHeaders] :: SerializeError -> [Header]
[_serializeStatus] :: SerializeError -> !Status
[_serializeMessage] :: SerializeError -> !String
[_serializeBody] :: SerializeError -> !(Maybe ByteString)
data ServiceError
ServiceError' :: !ServiceId -> !Status -> ![Header] -> !(Maybe ByteString) -> ServiceError
[_serviceId] :: ServiceError -> !ServiceId
[_serviceStatus] :: ServiceError -> !Status
[_serviceHeaders] :: ServiceError -> ![Header]
[_serviceBody] :: ServiceError -> !(Maybe ByteString)
class AsError a where _TransportError = _Error . _TransportError _SerializeError = _Error . _SerializeError _ServiceError = _Error . _ServiceError

-- | A general Amazonka error.
_Error :: AsError a => Prism' a Error

-- | An error occured while communicating over HTTP with a remote service.
_TransportError :: AsError a => Prism' a HttpException

-- | A serialisation error occured when attempting to deserialise a
--   response.
_SerializeError :: AsError a => Prism' a SerializeError

-- | A service specific error returned by the remote service.
_ServiceError :: AsError a => Prism' a ServiceError
data ServiceConfig
ServiceConfig :: !ServiceId -> !ByteString -> !Builder -> !Int -> !Bool -> !(Maybe Seconds) -> ServiceConfig
[_svcId] :: ServiceConfig -> !ServiceId
[_svcHost] :: ServiceConfig -> !ByteString
[_svcPath] :: ServiceConfig -> !Builder
[_svcPort] :: ServiceConfig -> !Int
[_svcSecure] :: ServiceConfig -> !Bool
[_svcTimeout] :: ServiceConfig -> !(Maybe Seconds)
defaultService :: ServiceId -> ByteString -> ServiceConfig

-- | The remote host name, used for both the IP address to connect to and
--   the host request header.
serviceHost :: Lens' ServiceConfig ByteString

-- | The remote port to connect to.
--   
--   Defaults to <tt>443</tt>.
servicePort :: Lens' ServiceConfig Int

-- | A path prefix that is prepended to any sent HTTP request.
--   
--   Defaults to <tt>mempty</tt>.
servicePath :: Lens' ServiceConfig Builder

-- | Whether to use HTTPS/SSL.
--   
--   Defaults to <tt>True</tt>.
serviceSecure :: Lens' ServiceConfig Bool

-- | Number of seconds to wait for a response.
serviceTimeout :: Lens' ServiceConfig (Maybe Seconds)

-- | A single part of a (potentially multipart) request body.
--   
--   <i>Note:</i> The <a>IsString</a> instance defaults to a
--   <tt>text/plain</tt> MIME type.
data Body
Body :: !MediaType -> !RequestBody -> Body

-- | A lens into the <a>MediaType</a> of a request <a>Body</a>.
bodyContentType :: Lens' Body MediaType

-- | An intermediary request builder.
data Request
Request :: !Builder -> !(DList (ByteString, Maybe ByteString)) -> !(DList (HeaderName, ByteString)) -> ![Body] -> Request
[_rqPath] :: Request -> !Builder
[_rqQuery] :: Request -> !(DList (ByteString, Maybe ByteString))
[_rqHeaders] :: Request -> !(DList (HeaderName, ByteString))
[_rqBody] :: Request -> ![Body]
appendPath :: Request -> Builder -> Request
appendPaths :: ToHttpApiData a => Request -> [a] -> Request
appendQuery :: Request -> ByteString -> Maybe Text -> Request
appendHeader :: Request -> HeaderName -> Maybe Text -> Request
setBody :: Request -> [Body] -> Request

-- | A materialised 'http-client' request and associated response parser.
data Client a
Client :: !(Maybe MediaType) -> !Method -> !(Status -> Bool) -> !ServiceConfig -> !Request -> !(Stream -> ResourceT IO (Either (String, ByteString) a)) -> Client a
[_cliAccept] :: Client a -> !(Maybe MediaType)
[_cliMethod] :: Client a -> !Method
[_cliCheck] :: Client a -> !(Status -> Bool)
[_cliService] :: Client a -> !ServiceConfig
[_cliRequest] :: Client a -> !Request
[_cliResponse] :: Client a -> !(Stream -> ResourceT IO (Either (String, ByteString) a))
clientService :: Lens' (Client a) ServiceConfig
mime :: FromStream c a => Proxy c -> Method -> [Int] -> Request -> ServiceConfig -> Client a
discard :: Method -> [Int] -> Request -> ServiceConfig -> Client ()
client :: (Stream -> ResourceT IO (Either (String, ByteString) a)) -> Maybe MediaType -> Method -> [Int] -> Request -> ServiceConfig -> Client a
class Accept c => ToBody c a
toBody :: ToBody c a => Proxy c -> a -> Body
class Accept c => FromStream c a
fromStream :: FromStream c a => Proxy c -> Stream -> ResourceT IO (Either (String, ByteString) a)
class GoogleRequest a where type Rs a :: * type Scopes a :: [Symbol] where {
    type family Rs a :: *;
    type family Scopes a :: [Symbol];
}
requestClient :: GoogleRequest a => a -> Client (Rs a)
class GoogleClient fn where type Fn fn :: * where {
    type family Fn fn :: *;
}
buildClient :: GoogleClient fn => Proxy fn -> Request -> Fn fn

-- | Multiple path captures, with <tt>[xs]</tt> forming
--   <tt><i><a>x1</a></i><a>x2</a><i><a>x2</a></i>...</tt>.
data Captures (s :: Symbol) a

-- | Form a Google style sub-resource, such as
--   <tt>/<a>capture</a>:<a>mode</a></tt>.
data CaptureMode (s :: Symbol) (m :: Symbol) a
data MultipartRelated (cs :: [*]) m
sinkLBS :: Stream -> ResourceT IO ByteString
buildText :: ToHttpApiData a => a -> Builder
buildSymbol :: forall n proxy. KnownSymbol n => proxy n -> Builder
byteSymbol :: forall n proxy. KnownSymbol n => proxy n -> ByteString

-- | An integral value representing seconds.
newtype Seconds
Seconds :: Int -> Seconds
seconds :: Seconds -> Int
microseconds :: Seconds -> Int
newtype FieldMask
FieldMask :: Text -> FieldMask
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.FieldMask
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.FieldMask
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.FieldMask
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.FieldMask
instance Data.Data.Data Network.Google.Types.FieldMask
instance GHC.Generics.Generic Network.Google.Types.FieldMask
instance Data.String.IsString Network.Google.Types.FieldMask
instance GHC.Read.Read Network.Google.Types.FieldMask
instance GHC.Show.Show Network.Google.Types.FieldMask
instance GHC.Classes.Ord Network.Google.Types.FieldMask
instance GHC.Classes.Eq Network.Google.Types.FieldMask
instance GHC.Generics.Generic Network.Google.Types.Seconds
instance Data.Data.Data Network.Google.Types.Seconds
instance GHC.Real.Real Network.Google.Types.Seconds
instance GHC.Real.Integral Network.Google.Types.Seconds
instance GHC.Enum.Bounded Network.Google.Types.Seconds
instance GHC.Num.Num Network.Google.Types.Seconds
instance GHC.Enum.Enum Network.Google.Types.Seconds
instance GHC.Show.Show Network.Google.Types.Seconds
instance GHC.Read.Read Network.Google.Types.Seconds
instance GHC.Classes.Ord Network.Google.Types.Seconds
instance GHC.Classes.Eq Network.Google.Types.Seconds
instance GHC.Show.Show Network.Google.Types.Error
instance GHC.Show.Show Network.Google.Types.ServiceError
instance GHC.Classes.Eq Network.Google.Types.ServiceError
instance GHC.Show.Show Network.Google.Types.SerializeError
instance GHC.Classes.Eq Network.Google.Types.SerializeError
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.Secret
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.Secret
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.Secret
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.Secret
instance GHC.Generics.Generic Network.Google.Types.Secret
instance Data.String.IsString Network.Google.Types.Secret
instance GHC.Read.Read Network.Google.Types.Secret
instance GHC.Classes.Ord Network.Google.Types.Secret
instance GHC.Classes.Eq Network.Google.Types.Secret
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.ServiceId
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.ServiceId
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.ServiceId
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.ServiceId
instance GHC.Generics.Generic Network.Google.Types.ServiceId
instance Data.String.IsString Network.Google.Types.ServiceId
instance GHC.Read.Read Network.Google.Types.ServiceId
instance GHC.Show.Show Network.Google.Types.ServiceId
instance GHC.Classes.Ord Network.Google.Types.ServiceId
instance GHC.Classes.Eq Network.Google.Types.ServiceId
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.ClientId
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.ClientId
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.ClientId
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.ClientId
instance GHC.Generics.Generic Network.Google.Types.ClientId
instance Data.String.IsString Network.Google.Types.ClientId
instance GHC.Read.Read Network.Google.Types.ClientId
instance GHC.Show.Show Network.Google.Types.ClientId
instance GHC.Classes.Ord Network.Google.Types.ClientId
instance GHC.Classes.Eq Network.Google.Types.ClientId
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.RefreshToken
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.RefreshToken
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.RefreshToken
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.RefreshToken
instance GHC.Generics.Generic Network.Google.Types.RefreshToken
instance Data.String.IsString Network.Google.Types.RefreshToken
instance GHC.Read.Read Network.Google.Types.RefreshToken
instance GHC.Show.Show Network.Google.Types.RefreshToken
instance GHC.Classes.Ord Network.Google.Types.RefreshToken
instance GHC.Classes.Eq Network.Google.Types.RefreshToken
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.AccessToken
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.AccessToken
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.AccessToken
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.AccessToken
instance GHC.Generics.Generic Network.Google.Types.AccessToken
instance Data.String.IsString Network.Google.Types.AccessToken
instance GHC.Read.Read Network.Google.Types.AccessToken
instance GHC.Show.Show Network.Google.Types.AccessToken
instance GHC.Classes.Ord Network.Google.Types.AccessToken
instance GHC.Classes.Eq Network.Google.Types.AccessToken
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Types.OAuthScope
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Types.OAuthScope
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.OAuthScope
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Types.OAuthScope
instance GHC.Generics.Generic Network.Google.Types.OAuthScope
instance Data.String.IsString Network.Google.Types.OAuthScope
instance GHC.Read.Read Network.Google.Types.OAuthScope
instance GHC.Show.Show Network.Google.Types.OAuthScope
instance GHC.Classes.Ord Network.Google.Types.OAuthScope
instance GHC.Classes.Eq Network.Google.Types.OAuthScope
instance GHC.Generics.Generic Network.Google.Types.Multipart
instance GHC.Read.Read Network.Google.Types.Multipart
instance GHC.Show.Show Network.Google.Types.Multipart
instance GHC.Classes.Ord Network.Google.Types.Multipart
instance GHC.Classes.Eq Network.Google.Types.Multipart
instance GHC.Generics.Generic Network.Google.Types.AltMedia
instance GHC.Read.Read Network.Google.Types.AltMedia
instance GHC.Show.Show Network.Google.Types.AltMedia
instance GHC.Classes.Ord Network.Google.Types.AltMedia
instance GHC.Classes.Eq Network.Google.Types.AltMedia
instance GHC.Generics.Generic Network.Google.Types.AltJSON
instance GHC.Read.Read Network.Google.Types.AltJSON
instance GHC.Show.Show Network.Google.Types.AltJSON
instance GHC.Classes.Ord Network.Google.Types.AltJSON
instance GHC.Classes.Eq Network.Google.Types.AltJSON
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.AltJSON
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.AltMedia
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Types.Multipart
instance GHC.Show.Show Network.Google.Types.Secret
instance GHC.Exception.Exception Network.Google.Types.Error
instance Network.Google.Types.AsError GHC.Exception.SomeException
instance Network.Google.Types.AsError Network.Google.Types.Error
instance Data.String.IsString Network.Google.Types.Body
instance GHC.Base.Monoid Network.Google.Types.Request
instance Network.Google.Types.ToBody Servant.API.ContentTypes.OctetStream Data.ByteString.Internal.ByteString
instance Network.Google.Types.ToBody Servant.API.ContentTypes.OctetStream Data.ByteString.Lazy.Internal.ByteString
instance Network.Google.Types.ToBody Servant.API.ContentTypes.PlainText Data.ByteString.Internal.ByteString
instance Network.Google.Types.ToBody Servant.API.ContentTypes.PlainText Data.ByteString.Lazy.Internal.ByteString
instance Data.Aeson.Types.ToJSON.ToJSON a => Network.Google.Types.ToBody Servant.API.ContentTypes.JSON a
instance Network.Google.Types.FromStream Servant.API.ContentTypes.OctetStream Network.Google.Types.Stream
instance Data.Aeson.Types.FromJSON.FromJSON a => Network.Google.Types.FromStream Servant.API.ContentTypes.JSON a
instance (Network.Google.Types.ToBody c m, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Network.Google.Types.MultipartRelated (c : cs) m Servant.API.Sub.:> fn)
instance Network.Google.Types.GoogleClient fn => Network.Google.Types.GoogleClient (Network.Google.Types.AltMedia Servant.API.Sub.:> fn)
instance (GHC.TypeLits.KnownSymbol s, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (s Servant.API.Sub.:> fn)
instance (Network.Google.Types.GoogleClient a, Network.Google.Types.GoogleClient b) => Network.Google.Types.GoogleClient (a Servant.API.Alternative.:<|> b)
instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.Capture.Capture s a Servant.API.Sub.:> fn)
instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Network.Google.Types.Captures s a Servant.API.Sub.:> fn)
instance (GHC.TypeLits.KnownSymbol s, GHC.TypeLits.KnownSymbol m, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Network.Google.Types.CaptureMode s m a Servant.API.Sub.:> fn)
instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.QueryParam.QueryParam s a Servant.API.Sub.:> fn)
instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.QueryParam.QueryParams s a Servant.API.Sub.:> fn)
instance (GHC.TypeLits.KnownSymbol s, Web.Internal.HttpApiData.ToHttpApiData a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.Header.Header s a Servant.API.Sub.:> fn)
instance (Network.Google.Types.ToBody c a, Network.Google.Types.GoogleClient fn) => Network.Google.Types.GoogleClient (Servant.API.ReqBody.ReqBody (c : cs) a Servant.API.Sub.:> fn)
instance Network.Google.Types.FromStream c a => Network.Google.Types.GoogleClient (Servant.API.Verbs.Get (c : cs) a)
instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Get (c : cs) ())
instance (Network.Google.Types.FromStream c a, cs' ~ (c : cs)) => Network.Google.Types.GoogleClient (Servant.API.Verbs.Post cs' a)
instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Post cs ())
instance Network.Google.Types.FromStream c a => Network.Google.Types.GoogleClient (Servant.API.Verbs.Put (c : cs) a)
instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Put (c : cs) ())
instance Network.Google.Types.FromStream c a => Network.Google.Types.GoogleClient (Servant.API.Verbs.Patch (c : cs) a)
instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Patch (c : cs) ())
instance Network.Google.Types.FromStream c a => Network.Google.Types.GoogleClient (Servant.API.Verbs.Delete (c : cs) a)
instance Network.Google.Types.GoogleClient (Servant.API.Verbs.Delete (c : cs) ())


module Network.Google.Data.Time

-- | This SHOULD be a time in the format of hh:mm:ss. It is recommended
--   that you use the "date-time" format instead of "time" unless you need
--   to transfer only the time part.
data Time'

-- | This SHOULD be a date in the format of YYYY-MM-DD. It is recommended
--   that you use the "date-time" format instead of "date" unless you need
--   to transfer only the date part.
data Date'

-- | This SHOULD be a date in ISO 8601 format of YYYY-MM- DDThh:mm:ssZ in
--   UTC time. This is the recommended form of date/timestamp.
data DateTime'

-- | A duration in seconds with up to nine fractional digits, terminated by
--   <tt>s</tt>.
--   
--   <i>Example</i>: <tt>"3.5s"</tt>.
data Duration
_Time :: Iso' Time' TimeOfDay
_Date :: Iso' Date' Day
_DateTime :: Iso' DateTime' UTCTime
_Duration :: Iso' Duration Scientific
instance Data.Data.Data Network.Google.Data.Time.Duration
instance GHC.Generics.Generic Network.Google.Data.Time.Duration
instance GHC.Read.Read Network.Google.Data.Time.Duration
instance GHC.Show.Show Network.Google.Data.Time.Duration
instance GHC.Classes.Ord Network.Google.Data.Time.Duration
instance GHC.Classes.Eq Network.Google.Data.Time.Duration
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Time.DateTime'
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Time.DateTime'
instance Data.Data.Data Network.Google.Data.Time.DateTime'
instance GHC.Generics.Generic Network.Google.Data.Time.DateTime'
instance GHC.Read.Read Network.Google.Data.Time.DateTime'
instance GHC.Show.Show Network.Google.Data.Time.DateTime'
instance GHC.Classes.Ord Network.Google.Data.Time.DateTime'
instance GHC.Classes.Eq Network.Google.Data.Time.DateTime'
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Time.Date'
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Time.Date'
instance Data.Data.Data Network.Google.Data.Time.Date'
instance GHC.Generics.Generic Network.Google.Data.Time.Date'
instance GHC.Read.Read Network.Google.Data.Time.Date'
instance GHC.Show.Show Network.Google.Data.Time.Date'
instance GHC.Classes.Ord Network.Google.Data.Time.Date'
instance GHC.Classes.Eq Network.Google.Data.Time.Date'
instance Data.Data.Data Network.Google.Data.Time.Time'
instance GHC.Generics.Generic Network.Google.Data.Time.Time'
instance GHC.Read.Read Network.Google.Data.Time.Time'
instance GHC.Show.Show Network.Google.Data.Time.Time'
instance GHC.Classes.Ord Network.Google.Data.Time.Time'
instance GHC.Classes.Eq Network.Google.Data.Time.Time'
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Time.Time'
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Time.Time'
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Time.Duration
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Time.Duration
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Time.Time'
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Time.Date'
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Time.DateTime'
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Time.Duration
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Time.Time'
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Time.Date'
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Time.DateTime'
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Time.Duration


module Network.Google.Data.Numeric
newtype Nat
Nat :: Natural -> Nat
[unNat] :: Nat -> Natural
instance Data.Data.Data Network.Google.Data.Numeric.Nat
instance GHC.Real.Integral Network.Google.Data.Numeric.Nat
instance GHC.Real.Real Network.Google.Data.Numeric.Nat
instance GHC.Num.Num Network.Google.Data.Numeric.Nat
instance GHC.Read.Read Network.Google.Data.Numeric.Nat
instance GHC.Show.Show Network.Google.Data.Numeric.Nat
instance GHC.Enum.Enum Network.Google.Data.Numeric.Nat
instance GHC.Classes.Ord Network.Google.Data.Numeric.Nat
instance GHC.Classes.Eq Network.Google.Data.Numeric.Nat
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Numeric.Nat
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Numeric.Nat
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Numeric.Nat
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Numeric.Nat


module Network.Google.Data.JSON
type JSONValue = Value
newtype Textual a
Textual :: a -> Textual a
parseJSONObject :: FromJSON a => HashMap Text Value -> Parser a
parseJSONText :: FromHttpApiData a => String -> Value -> Parser a
toJSONText :: ToHttpApiData a => a -> Value

-- | A type that can be converted from JSON, with the possibility of
--   failure.
--   
--   In many cases, you can get the compiler to generate parsing code for
--   you (see below). To begin, let's cover writing an instance by hand.
--   
--   There are various reasons a conversion could fail. For example, an
--   <a>Object</a> could be missing a required key, an <a>Array</a> could
--   be of the wrong size, or a value could be of an incompatible type.
--   
--   The basic ways to signal a failed conversion are as follows:
--   
--   <ul>
--   <li><tt>empty</tt> and <tt>mzero</tt> work, but are terse and
--   uninformative;</li>
--   <li><a>fail</a> yields a custom error message;</li>
--   <li><a>typeMismatch</a> produces an informative message for cases when
--   the value encountered is not of the expected type.</li>
--   </ul>
--   
--   An example type and instance using <a>typeMismatch</a>:
--   
--   <pre>
--   -- Allow ourselves to write <a>Text</a> literals.
--   {-# LANGUAGE OverloadedStrings #-}
--   
--   data Coord = Coord { x :: Double, y :: Double }
--   
--   instance <a>FromJSON</a> Coord where
--       <a>parseJSON</a> (<a>Object</a> v) = Coord
--           <a>&lt;$&gt;</a> v <a>.:</a> "x"
--           <a>&lt;*&gt;</a> v <a>.:</a> "y"
--   
--       -- We do not expect a non-<a>Object</a> value here.
--       -- We could use <tt>mzero</tt> to fail, but <a>typeMismatch</a>
--       -- gives a much more informative error message.
--       <a>parseJSON</a> invalid    = <a>typeMismatch</a> "Coord" invalid
--   </pre>
--   
--   For this common case of only being concerned with a single type of
--   JSON value, the functions <a>withObject</a>, <a>withNumber</a>, etc.
--   are provided. Their use is to be preferred when possible, since they
--   are more terse. Using <a>withObject</a>, we can rewrite the above
--   instance (assuming the same language extension and data type) as:
--   
--   <pre>
--   instance <a>FromJSON</a> Coord where
--       <a>parseJSON</a> = <a>withObject</a> "Coord" $ v -&gt; Coord
--           <a>&lt;$&gt;</a> v <a>.:</a> "x"
--           <a>&lt;*&gt;</a> v <a>.:</a> "y"
--   </pre>
--   
--   Instead of manually writing your <a>FromJSON</a> instance, there are
--   two options to do it automatically:
--   
--   <ul>
--   <li><a>Data.Aeson.TH</a> provides Template Haskell functions which
--   will derive an instance at compile time. The generated instance is
--   optimized for your type so it will probably be more efficient than the
--   following option.</li>
--   <li>The compiler can provide a default generic implementation for
--   <a>parseJSON</a>.</li>
--   </ul>
--   
--   To use the second, simply add a <tt>deriving <a>Generic</a></tt>
--   clause to your datatype and declare a <a>FromJSON</a> instance for
--   your datatype without giving a definition for <a>parseJSON</a>.
--   
--   For example, the previous example can be simplified to just:
--   
--   <pre>
--   {-# LANGUAGE DeriveGeneric #-}
--   
--   import <a>GHC.Generics</a>
--   
--   data Coord = Coord { x :: Double, y :: Double } deriving <a>Generic</a>
--   
--   instance <a>FromJSON</a> Coord
--   </pre>
--   
--   The default implementation will be equivalent to <tt>parseJSON =
--   <a>genericParseJSON</a> <a>defaultOptions</a></tt>; If you need
--   different options, you can customize the generic decoding by defining:
--   
--   <pre>
--   customOptions = <a>defaultOptions</a>
--                   { <a>fieldLabelModifier</a> = <a>map</a> <a>toUpper</a>
--                   }
--   
--   instance <a>FromJSON</a> Coord where
--       <a>parseJSON</a> = <a>genericParseJSON</a> customOptions
--   </pre>
class FromJSON a
parseJSON :: FromJSON a => Value -> Parser a
parseJSONList :: FromJSON a => Value -> Parser [a]

-- | A type that can be converted to JSON.
--   
--   Instances in general <i>must</i> specify <a>toJSON</a> and
--   <i>should</i> (but don't need to) specify <a>toEncoding</a>.
--   
--   An example type and instance:
--   
--   <pre>
--   -- Allow ourselves to write <a>Text</a> literals.
--   {-# LANGUAGE OverloadedStrings #-}
--   
--   data Coord = Coord { x :: Double, y :: Double }
--   
--   instance <a>ToJSON</a> Coord where
--     <a>toJSON</a> (Coord x y) = <a>object</a> ["x" <a>.=</a> x, "y" <a>.=</a> y]
--   
--     <a>toEncoding</a> (Coord x y) = <tt>pairs</tt> ("x" <a>.=</a> x <a>&lt;&gt;</a> "y" <a>.=</a> y)
--   </pre>
--   
--   Instead of manually writing your <a>ToJSON</a> instance, there are two
--   options to do it automatically:
--   
--   <ul>
--   <li><a>Data.Aeson.TH</a> provides Template Haskell functions which
--   will derive an instance at compile time. The generated instance is
--   optimized for your type so it will probably be more efficient than the
--   following option.</li>
--   <li>The compiler can provide a default generic implementation for
--   <a>toJSON</a>.</li>
--   </ul>
--   
--   To use the second, simply add a <tt>deriving <a>Generic</a></tt>
--   clause to your datatype and declare a <a>ToJSON</a> instance. If you
--   require nothing other than <a>defaultOptions</a>, it is sufficient to
--   write (and this is the only alternative where the default
--   <a>toJSON</a> implementation is sufficient):
--   
--   <pre>
--   {-# LANGUAGE DeriveGeneric #-}
--   
--   import <a>GHC.Generics</a>
--   
--   data Coord = Coord { x :: Double, y :: Double } deriving <a>Generic</a>
--   
--   instance <a>ToJSON</a> Coord where
--       <a>toEncoding</a> = <a>genericToEncoding</a> <a>defaultOptions</a>
--   </pre>
--   
--   If on the other hand you wish to customize the generic decoding, you
--   have to implement both methods:
--   
--   <pre>
--   customOptions = <a>defaultOptions</a>
--                   { <a>fieldLabelModifier</a> = <a>map</a> <a>toUpper</a>
--                   }
--   
--   instance <a>ToJSON</a> Coord where
--       <a>toJSON</a>     = <a>genericToJSON</a> customOptions
--       <a>toEncoding</a> = <a>genericToEncoding</a> customOptions
--   </pre>
--   
--   Previous versions of this library only had the <a>toJSON</a> method.
--   Adding <a>toEncoding</a> had to reasons:
--   
--   <ol>
--   <li>toEncoding is more efficient for the common case that the output
--   of <a>toJSON</a> is directly serialized to a <tt>ByteString</tt>.
--   Further, expressing either method in terms of the other would be
--   non-optimal.</li>
--   <li>The choice of defaults allows a smooth transition for existing
--   users: Existing instances that do not define <a>toEncoding</a> still
--   compile and have the correct semantics. This is ensured by making the
--   default implementation of <a>toEncoding</a> use <a>toJSON</a>. This
--   produces correct results, but since it performs an intermediate
--   conversion to a <a>Value</a>, it will be less efficient than directly
--   emitting an <a>Encoding</a>. (this also means that specifying nothing
--   more than <tt>instance ToJSON Coord</tt> would be sufficient as a
--   generically decoding instance, but there probably exists no good
--   reason to not specify <a>toEncoding</a> in new instances.)</li>
--   </ol>
class ToJSON a

-- | Convert a Haskell value to a JSON-friendly intermediate type.
toJSON :: ToJSON a => a -> Value

-- | Encode a Haskell value as JSON.
--   
--   The default implementation of this method creates an intermediate
--   <a>Value</a> using <a>toJSON</a>. This provides source-level
--   compatibility for people upgrading from older versions of this
--   library, but obviously offers no performance advantage.
--   
--   To benefit from direct encoding, you <i>must</i> provide an
--   implementation for this method. The easiest way to do so is by having
--   your types implement <a>Generic</a> using the <tt>DeriveGeneric</tt>
--   extension, and then have GHC generate a method body as follows.
--   
--   <pre>
--   instance <a>ToJSON</a> Coord where
--       <a>toEncoding</a> = <a>genericToEncoding</a> <a>defaultOptions</a>
--   </pre>
toEncoding :: ToJSON a => a -> Encoding
toJSONList :: ToJSON a => [a] -> Value
toEncodingList :: ToJSON a => [a] -> Encoding

-- | <tt><a>withObject</a> expected f value</tt> applies <tt>f</tt> to the
--   <a>Object</a> when <tt>value</tt> is an <a>Object</a> and fails using
--   <tt><a>typeMismatch</a> expected</tt> otherwise.
withObject :: String -> (Object -> Parser a) -> Value -> Parser a

-- | The empty object.
emptyObject :: Value

-- | Create a <a>Value</a> from a list of name/value <a>Pair</a>s. If
--   duplicate keys arise, earlier keys and their associated values win.
object :: [Pair] -> Value
(.=) :: KeyValue kv => forall v. ToJSON v => Text -> v -> kv

-- | Retrieve the value associated with the given key of an <a>Object</a>.
--   The result is <tt>empty</tt> if the key is not present or the value
--   cannot be converted to the desired type.
--   
--   This accessor is appropriate if the key and value <i>must</i> be
--   present in an object for it to be valid. If the key and value are
--   optional, use <a>.:?</a> instead.
(.:) :: FromJSON a => Object -> Text -> Parser a

-- | Retrieve the value associated with the given key of an <a>Object</a>.
--   The result is <a>Nothing</a> if the key is not present or if its value
--   is <a>Null</a>, or <tt>empty</tt> if the value cannot be converted to
--   the desired type.
--   
--   This accessor is most useful if the key and value can be absent from
--   an object without affecting its validity. If the key and value are
--   mandatory, use <a>.:</a> instead.
(.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a)

-- | Helper for use in combination with <a>.:?</a> to provide default
--   values for optional JSON object fields.
--   
--   This combinator is most useful if the key and value can be absent from
--   an object without affecting its validity and we know a default value
--   to assign in that case. If the key and value are mandatory, use
--   <a>.:</a> instead.
--   
--   Example usage:
--   
--   <pre>
--   v1 &lt;- o <a>.:?</a> "opt_field_with_dfl" .!= "default_val"
--   v2 &lt;- o <a>.:</a>  "mandatory_field"
--   v3 &lt;- o <a>.:?</a> "opt_field2"
--   </pre>
(.!=) :: Parser (Maybe a) -> a -> Parser a
instance Web.Internal.HttpApiData.FromHttpApiData a => Web.Internal.HttpApiData.FromHttpApiData (Network.Google.Data.JSON.Textual a)
instance Web.Internal.HttpApiData.ToHttpApiData a => Web.Internal.HttpApiData.ToHttpApiData (Network.Google.Data.JSON.Textual a)
instance Data.Data.Data a => Data.Data.Data (Network.Google.Data.JSON.Textual a)
instance GHC.Real.Fractional a => GHC.Real.Fractional (Network.Google.Data.JSON.Textual a)
instance GHC.Num.Num a => GHC.Num.Num (Network.Google.Data.JSON.Textual a)
instance GHC.Show.Show a => GHC.Show.Show (Network.Google.Data.JSON.Textual a)
instance GHC.Read.Read a => GHC.Read.Read (Network.Google.Data.JSON.Textual a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Network.Google.Data.JSON.Textual a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Network.Google.Data.JSON.Textual a)
instance (Data.Aeson.Types.FromJSON.FromJSON a, Web.Internal.HttpApiData.FromHttpApiData a) => Data.Aeson.Types.FromJSON.FromJSON (Network.Google.Data.JSON.Textual a)
instance Web.Internal.HttpApiData.ToHttpApiData a => Data.Aeson.Types.ToJSON.ToJSON (Network.Google.Data.JSON.Textual a)


module Network.Google.Data.Bytes

-- | Binary data.
--   
--   This data is passed to/from the serialisation routines as-is, and any
--   particular encoding or decoding (say, base64) is left up to the
--   caller.
newtype Bytes
Bytes :: ByteString -> Bytes
[unBytes] :: Bytes -> ByteString
_Bytes :: Iso' Bytes ByteString
instance GHC.Generics.Generic Network.Google.Data.Bytes.Bytes
instance Data.Data.Data Network.Google.Data.Bytes.Bytes
instance GHC.Classes.Ord Network.Google.Data.Bytes.Bytes
instance GHC.Read.Read Network.Google.Data.Bytes.Bytes
instance GHC.Show.Show Network.Google.Data.Bytes.Bytes
instance GHC.Classes.Eq Network.Google.Data.Bytes.Bytes
instance Data.Hashable.Class.Hashable Network.Google.Data.Bytes.Bytes
instance Web.Internal.HttpApiData.ToHttpApiData Network.Google.Data.Bytes.Bytes
instance Web.Internal.HttpApiData.FromHttpApiData Network.Google.Data.Bytes.Bytes
instance Data.Aeson.Types.FromJSON.FromJSON Network.Google.Data.Bytes.Bytes
instance Data.Aeson.Types.ToJSON.ToJSON Network.Google.Data.Bytes.Bytes


module Network.Google.Prelude
