-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | WAI based library for web api -- -- WAI based library for web api @package webapi @version 0.3 module WebApi.Util class ToHListRecTuple (xs :: [*]) toRecTuple :: ToHListRecTuple xs => Proxy xs -> HListToTuple xs -> HListToRecTuple xs fromRecTuple :: ToHListRecTuple xs => Proxy xs -> HListToRecTuple xs -> HListToTuple xs instance WebApi.Util.ToHListRecTuple '[] instance (WebApi.Util.HListToRecTuple '[p1] ~ (p1, ())) => WebApi.Util.ToHListRecTuple '[p1] instance WebApi.Util.ToHListRecTuple '[p1, p2] instance WebApi.Util.ToHListRecTuple '[p1, p2, p3] instance WebApi.Util.ToHListRecTuple '[p1, p2, p3, p4] instance WebApi.Util.ToHListRecTuple '[p1, p2, p3, p4, p5] instance WebApi.Util.ToHListRecTuple '[p1, p2, p3, p4, p5, p6] instance WebApi.Util.ToHListRecTuple '[p1, p2, p3, p4, p5, p6, p7] instance WebApi.Util.ToHListRecTuple '[p1, p2, p3, p4, p5, p6, p7, p8] instance WebApi.Util.ToHListRecTuple '[p1, p2, p3, p4, p5, p6, p7, p8, p9] -- | Defines various types to represent the HTTP methods. module WebApi.Method -- | Type representing a GET method. data GET -- | Type representing a POST method. data POST -- | Type representing a PUT method. data PUT -- | Type representing a DELETE method. data DELETE -- | Type representing a HEAD method. data HEAD -- | Type representing a PATCH method. data PATCH -- | Type representing a TRACE method. data TRACE -- | Type representing a OPTIONS method. data OPTIONS -- | Type representing a CONNECT method. data CONNECT -- | Type representing a Custom method. data CUSTOM (m :: Symbol) -- | Singleton class for method types. class SingMethod (meth :: *) singMethod :: SingMethod meth => Proxy meth -> Method instance WebApi.Method.SingMethod WebApi.Method.GET instance WebApi.Method.SingMethod WebApi.Method.POST instance WebApi.Method.SingMethod WebApi.Method.PUT instance WebApi.Method.SingMethod WebApi.Method.DELETE instance WebApi.Method.SingMethod WebApi.Method.OPTIONS instance WebApi.Method.SingMethod WebApi.Method.HEAD instance WebApi.Method.SingMethod WebApi.Method.TRACE instance WebApi.Method.SingMethod WebApi.Method.PATCH instance WebApi.Method.SingMethod WebApi.Method.CONNECT instance GHC.TypeLits.KnownSymbol m => WebApi.Method.SingMethod (WebApi.Method.CUSTOM m) -- | Param serialization and deserialization. ToParam and -- EncodeParam are responsible for serialization part. -- EncodeParam converts the value into a wire format. -- ToParam is responsible for creating (nested) key value pairs, -- which can be then used to deserialize to original type. For example -- --
-- encodeParam 5 == "5"
--
-- data Foo = Foo { foo :: Int }
-- deriving (Show, Eq, Generic)
--
-- data Bar = Bar { bar :: Foo }
-- deriving (Show, Eq, Generic)
--
-- instance ToParam Foo 'FormParam
-- instance ToParam Bar 'FormParam
--
-- toParam (Proxy :: Proxy 'FormParam) "" (Bar (Foo 5)) == [("bar.foo","5")]
--
--
-- Deserialization works analogously, FromParam and
-- DecodeParam are counterparts to ToParam and
-- EncodeParam respectively. Generic instances are provided for
-- all of them. This means that the user only need to derive Generic in
-- their type, and provide instance with an empty body. Note that for
-- headers FromHeader and ToHeader is being used in place
-- of FromParam and ToParam. Nesting is not supported for
-- headers.
module WebApi.Param
-- | Serialize a type to a given type of kind ParamK.
class ToParam (parK :: ParamK) a where toParam pt pfx = gtoParam pt pfx (ParamAcc 0 False) defaultParamSettings . from
toParam :: ToParam parK a => Proxy (parK :: ParamK) -> ByteString -> a -> [SerializedData parK]
-- | Serialize a type to ByteString.
class EncodeParam (t :: *) where encodeParam = gEncodeParam . from
encodeParam :: EncodeParam t => t -> ByteString
-- | Serialize a type to the header params
class ToHeader a where toHeader = gtoHeader "" (ParamAcc 0 False) defaultParamSettings . from
toHeader :: ToHeader a => a -> [Header]
-- | Define result of serialization of a type of kind ParamK.
-- | Serialize a type into query params.
toQueryParam :: (ToParam QueryParam a) => a -> Query
-- | Serialize a type into form params.
toFormParam :: (ToParam FormParam a) => a -> [(ByteString, ByteString)]
-- | Serialize a type into file params.
toFileParam :: (ToParam FileParam a) => a -> [(ByteString, FileInfo FilePath)]
-- | Serialize a type into path params.
toPathParam :: (ToParam PathParam a) => a -> [ByteString]
-- | Serialize a type into cookie.
toCookie :: (ToParam Cookie a) => a -> [(ByteString, CookieInfo ByteString)]
-- | Serialize a type without nesting.
toNonNestedParam :: (ToParam parK (NonNested a)) => Proxy (parK :: ParamK) -> ByteString -> a -> [SerializedData parK]
-- | (Try to) Deserialize a type from a given type of kind ParamK.
class FromParam (parK :: ParamK) a where fromParam pt pfx = (fmap to) . gfromParam pt pfx (ParamAcc 0 False) defaultParamSettings
fromParam :: FromParam parK a => Proxy (parK :: ParamK) -> ByteString -> Trie (DeSerializedData parK) -> Validation [ParamErr] a
-- | (Try to) Deserialize a type from ByteString.
class DecodeParam (t :: *) where decodeParam = (fmap to) . gDecodeParam
decodeParam :: DecodeParam t => ByteString -> Maybe t
-- | (Try to) Deserialize a type from the header params
class FromHeader a where fromHeader = (fmap to) . gfromHeader "" (ParamAcc 0 False) defaultParamSettings
fromHeader :: FromHeader a => [Header] -> Validation [ParamErr] a
-- | Datatype representing the parsed result of params.
newtype Validation e a
Validation :: Either e a -> Validation e a
[getValidation] :: Validation e a -> Either e a
-- | Errors that occured during deserialization.
data ParamErr
-- | The key was not found.
NotFound :: ByteString -> ParamErr
-- | A parse error occured while deserializing the type.
ParseErr :: ByteString -> Text -> ParamErr
-- | Convert the ParamErr that occured during deserialization into
-- ApiErr type which can then be put in Response.
class ParamErrToApiErr apiErr
toApiErr :: ParamErrToApiErr apiErr => [ParamErr] -> apiErr
-- | Define result of deserialization of a type of kind ParamK.
-- | (Try to) Deserialize a type from query params.
fromQueryParam :: (FromParam QueryParam a) => Query -> Validation [ParamErr] a
-- | (Try to) Deserialize a type from form params.
fromFormParam :: (FromParam FormParam a) => [(ByteString, ByteString)] -> Validation [ParamErr] a
-- | (Try to) Deserialize a type from file params.
fromFileParam :: (FromParam FileParam a) => [(ByteString, FileInfo FilePath)] -> Validation [ParamErr] a
-- | (Try to) Deserialize a type from cookie.
fromCookie :: (FromParam Cookie a) => [(ByteString, ByteString)] -> Validation [ParamErr] a
-- | Lookup a value from the Trie using the given key.
lookupParam :: Proxy (parK :: ParamK) -> ByteString -> Trie (DeSerializedData parK) -> Maybe (DeSerializedData parK)
-- | (Try to) Deserialize a type without nesting.
fromNonNestedParam :: (FromParam parK (NonNested a)) => Proxy (parK :: ParamK) -> ByteString -> Trie (DeSerializedData parK) -> Validation [ParamErr] a
data CookieInfo a
CookieInfo :: a -> Maybe ByteString -> Maybe UTCTime -> Maybe DiffTime -> Maybe ByteString -> Maybe Bool -> Maybe Bool -> CookieInfo a
[cookieValue] :: CookieInfo a -> a
[cookiePath] :: CookieInfo a -> Maybe ByteString
[cookieExpires] :: CookieInfo a -> Maybe UTCTime
[cookieMaxAge] :: CookieInfo a -> Maybe DiffTime
[cookieDomain] :: CookieInfo a -> Maybe ByteString
[cookieHttpOnly] :: CookieInfo a -> Maybe Bool
[cookieSecure] :: CookieInfo a -> Maybe Bool
-- | Serializing JsonOf will produce a JSON representation of the
-- value contained within. This is useful if params has to be sent as
-- JSON.
newtype JsonOf a
JsonOf :: a -> JsonOf a
[getValue] :: JsonOf a -> a
-- | Use this type if a key is required but the value is optional.
newtype OptValue a
OptValue :: Maybe a -> OptValue a
[toMaybe] :: OptValue a -> Maybe a
-- | A type for holding a file.
newtype FileInfo
FileInfo :: FileInfo FilePath -> FileInfo
[fileInfo] :: FileInfo -> FileInfo FilePath
-- | Use this type if for serialization / deserialization nesting is not
-- required. The type contained within most likely requires
-- EncodeParam / DecodeParam.
newtype NonNested a
NonNested :: a -> NonNested a
[getNonNestedParam] :: NonNested a -> a
-- | (Kind) Describes the various types of Param.
data ParamK
QueryParam :: ParamK
FormParam :: ParamK
FileParam :: ParamK
PathParam :: ParamK
Cookie :: ParamK
data ParamSettings
fieldModifier :: ParamSettings -> (ByteString -> ByteString)
-- | Obtain the file path from FileInfo.
filePath :: FileInfo -> FilePath
-- | Nest the key with a prefix.
--
-- -- nest "pfx" "key" == "pfx.key" -- nest "" "key" == "key" --nest :: ByteString -> ByteString -> ByteString defaultParamSettings :: ParamSettings genericToQueryParam :: (Generic a, GToParam (Rep a) QueryParam) => ParamSettings -> ByteString -> a -> [QueryItem] genericFromQueryParam :: (Generic a, GFromParam (Rep a) QueryParam) => ParamSettings -> ByteString -> Trie (Maybe ByteString) -> Validation [ParamErr] a genericToFormParam :: (Generic a, GToParam (Rep a) FormParam) => ParamSettings -> ByteString -> a -> [(ByteString, ByteString)] genericFromFormParam :: (Generic a, GFromParam (Rep a) FormParam) => ParamSettings -> ByteString -> Trie ByteString -> Validation [ParamErr] a genericToFileParam :: (Generic a, GToParam (Rep a) FileParam) => ParamSettings -> ByteString -> a -> [(ByteString, FileInfo FilePath)] genericFromFileParam :: (Generic a, GFromParam (Rep a) FileParam) => ParamSettings -> ByteString -> Trie (FileInfo FilePath) -> Validation [ParamErr] a genericToPathParam :: (Generic a, GToParam (Rep a) PathParam) => ParamSettings -> ByteString -> a -> [ByteString] genericFromPathParam :: (Generic a, GFromParam (Rep a) PathParam) => ParamSettings -> ByteString -> Trie ByteString -> Validation [ParamErr] a genericToCookie :: (Generic a, GToParam (Rep a) Cookie) => ParamSettings -> ByteString -> a -> [(ByteString, CookieInfo ByteString)] genericFromCookie :: (Generic a, GFromParam (Rep a) Cookie) => ParamSettings -> ByteString -> Trie ByteString -> Validation [ParamErr] a instance GHC.Classes.Eq WebApi.Param.ParamAcc instance GHC.Show.Show WebApi.Param.ParamAcc instance GHC.Classes.Eq WebApi.Param.ParamErr instance GHC.Show.Show WebApi.Param.ParamErr instance GHC.Read.Read a => GHC.Read.Read (WebApi.Param.NonNested a) instance GHC.Classes.Eq a => GHC.Classes.Eq (WebApi.Param.NonNested a) instance GHC.Show.Show a => GHC.Show.Show (WebApi.Param.NonNested a) instance (GHC.Show.Show e, GHC.Show.Show a) => GHC.Show.Show (WebApi.Param.Validation e a) instance GHC.Base.Functor (WebApi.Param.Validation e) instance (GHC.Classes.Eq e, GHC.Classes.Eq a) => GHC.Classes.Eq (WebApi.Param.Validation e a) instance GHC.Classes.Eq WebApi.Param.Unit instance GHC.Show.Show WebApi.Param.Unit instance GHC.Classes.Ord a => GHC.Classes.Ord (WebApi.Param.JsonOf a) instance GHC.Classes.Eq a => GHC.Classes.Eq (WebApi.Param.JsonOf a) instance GHC.Read.Read a => GHC.Read.Read (WebApi.Param.JsonOf a) instance GHC.Show.Show a => GHC.Show.Show (WebApi.Param.JsonOf a) instance GHC.Classes.Ord a => GHC.Classes.Ord (WebApi.Param.OptValue a) instance GHC.Classes.Eq a => GHC.Classes.Eq (WebApi.Param.OptValue a) instance GHC.Read.Read a => GHC.Read.Read (WebApi.Param.OptValue a) instance GHC.Show.Show a => GHC.Show.Show (WebApi.Param.OptValue a) instance GHC.Show.Show WebApi.Param.FileInfo instance GHC.Classes.Eq WebApi.Param.FileInfo instance Data.Aeson.Types.Class.ToJSON a => Data.Aeson.Types.Class.ToJSON (WebApi.Param.JsonOf a) instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (WebApi.Param.JsonOf a) instance GHC.Base.Monoid e => GHC.Base.Applicative (WebApi.Param.Validation e) instance WebApi.Param.EncodeParam Data.ByteString.Internal.ByteString instance WebApi.Param.DecodeParam Data.ByteString.Internal.ByteString instance WebApi.Param.EncodeParam GHC.Types.Int instance WebApi.Param.DecodeParam GHC.Types.Int instance WebApi.Param.EncodeParam GHC.Int.Int8 instance WebApi.Param.DecodeParam GHC.Int.Int8 instance WebApi.Param.EncodeParam GHC.Int.Int16 instance WebApi.Param.DecodeParam GHC.Int.Int16 instance WebApi.Param.EncodeParam GHC.Int.Int32 instance WebApi.Param.DecodeParam GHC.Int.Int32 instance WebApi.Param.EncodeParam GHC.Int.Int64 instance WebApi.Param.DecodeParam GHC.Int.Int64 instance WebApi.Param.EncodeParam GHC.Types.Word instance WebApi.Param.DecodeParam GHC.Types.Word instance WebApi.Param.EncodeParam GHC.Word.Word8 instance WebApi.Param.DecodeParam GHC.Word.Word8 instance WebApi.Param.EncodeParam GHC.Word.Word16 instance WebApi.Param.DecodeParam GHC.Word.Word16 instance WebApi.Param.EncodeParam GHC.Word.Word32 instance WebApi.Param.DecodeParam GHC.Word.Word32 instance WebApi.Param.EncodeParam GHC.Word.Word64 instance WebApi.Param.DecodeParam GHC.Word.Word64 instance WebApi.Param.EncodeParam GHC.Types.Float instance WebApi.Param.DecodeParam GHC.Types.Float instance WebApi.Param.EncodeParam GHC.Types.Double instance WebApi.Param.DecodeParam GHC.Types.Double instance WebApi.Param.EncodeParam GHC.Types.Char instance WebApi.Param.DecodeParam GHC.Types.Char instance WebApi.Param.EncodeParam Data.Text.Internal.Text instance WebApi.Param.DecodeParam Data.Text.Internal.Text instance WebApi.Param.EncodeParam Data.Time.Calendar.Days.Day instance WebApi.Param.DecodeParam Data.Time.Calendar.Days.Day instance WebApi.Param.EncodeParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.DecodeParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.EncodeParam Data.Time.LocalTime.LocalTime.LocalTime instance WebApi.Param.DecodeParam Data.Time.LocalTime.LocalTime.LocalTime instance WebApi.Param.EncodeParam Data.Time.LocalTime.TimeOfDay.TimeOfDay instance WebApi.Param.DecodeParam Data.Time.LocalTime.TimeOfDay.TimeOfDay instance WebApi.Param.EncodeParam WebApi.Param.Unit instance WebApi.Param.DecodeParam WebApi.Param.Unit instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b) => WebApi.Param.EncodeParam (a, b) instance (WebApi.Param.DecodeParam a, WebApi.Param.DecodeParam b) => WebApi.Param.DecodeParam (a, b) instance WebApi.Param.EncodeParam GHC.Types.Bool instance WebApi.Param.DecodeParam GHC.Types.Bool instance WebApi.Param.EncodeParam GHC.Integer.Type.Integer instance WebApi.Param.DecodeParam GHC.Integer.Type.Integer instance Data.Aeson.Types.Class.ToJSON a => WebApi.Param.EncodeParam (WebApi.Param.JsonOf a) instance Data.Aeson.Types.Class.FromJSON a => WebApi.Param.DecodeParam (WebApi.Param.JsonOf a) instance WebApi.Param.GHttpParam f => WebApi.Param.GHttpParam (GHC.Generics.D1 c f) instance (WebApi.Param.GHttpParam f, WebApi.Param.GHttpParam g) => WebApi.Param.GHttpParam (f GHC.Generics.:+: g) instance (WebApi.Param.GHttpParam f, GHC.Generics.Constructor c) => WebApi.Param.GHttpParam (GHC.Generics.C1 c f) instance WebApi.Param.GHttpParam GHC.Generics.U1 instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam 'WebApi.Param.QueryParam (WebApi.Param.NonNested a) instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam 'WebApi.Param.FormParam (WebApi.Param.NonNested a) instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam 'WebApi.Param.Cookie (WebApi.Param.NonNested a) instance (WebApi.Param.DecodeParam a, Data.Typeable.Internal.Typeable a) => WebApi.Param.FromParam 'WebApi.Param.QueryParam (WebApi.Param.NonNested a) instance (WebApi.Param.DecodeParam a, Data.Typeable.Internal.Typeable a) => WebApi.Param.FromParam 'WebApi.Param.FormParam (WebApi.Param.NonNested a) instance (WebApi.Param.DecodeParam a, Data.Typeable.Internal.Typeable a) => WebApi.Param.FromParam 'WebApi.Param.Cookie (WebApi.Param.NonNested a) instance WebApi.Param.ToParam parK () instance WebApi.Param.ToHeader () instance WebApi.Param.ToParam 'WebApi.Param.QueryParam WebApi.Param.Unit instance WebApi.Param.ToParam 'WebApi.Param.FormParam WebApi.Param.Unit instance WebApi.Param.ToParam 'WebApi.Param.Cookie WebApi.Param.Unit instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Types.Int instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Types.Int instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Types.Int instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Int.Int8 instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Int.Int8 instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Int.Int8 instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Int.Int16 instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Int.Int16 instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Int.Int16 instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Int.Int32 instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Int.Int32 instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Int.Int32 instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Int.Int64 instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Int.Int64 instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Int.Int64 instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Types.Word instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Types.Word instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Types.Word instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Word.Word8 instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Word.Word8 instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Word.Word8 instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Word.Word16 instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Word.Word16 instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Word.Word16 instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Word.Word32 instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Word.Word32 instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Word.Word32 instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Word.Word64 instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Word.Word64 instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Word.Word64 instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Integer.Type.Integer instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Integer.Type.Integer instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Integer.Type.Integer instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Types.Bool instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Types.Bool instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Types.Bool instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Types.Double instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Types.Double instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Types.Double instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Types.Float instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Types.Float instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Types.Float instance WebApi.Param.ToParam 'WebApi.Param.QueryParam GHC.Types.Char instance WebApi.Param.ToParam 'WebApi.Param.FormParam GHC.Types.Char instance WebApi.Param.ToParam 'WebApi.Param.Cookie GHC.Types.Char instance WebApi.Param.ToParam 'WebApi.Param.QueryParam Data.Text.Internal.Text instance WebApi.Param.ToParam 'WebApi.Param.FormParam Data.Text.Internal.Text instance WebApi.Param.ToParam 'WebApi.Param.Cookie Data.Text.Internal.Text instance WebApi.Param.ToParam 'WebApi.Param.QueryParam Data.ByteString.Internal.ByteString instance WebApi.Param.ToParam 'WebApi.Param.FormParam Data.ByteString.Internal.ByteString instance WebApi.Param.ToParam 'WebApi.Param.Cookie Data.ByteString.Internal.ByteString instance WebApi.Param.ToParam 'WebApi.Param.QueryParam Data.Time.Calendar.Days.Day instance WebApi.Param.ToParam 'WebApi.Param.FormParam Data.Time.Calendar.Days.Day instance WebApi.Param.ToParam 'WebApi.Param.Cookie Data.Time.Calendar.Days.Day instance WebApi.Param.ToParam 'WebApi.Param.QueryParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.ToParam 'WebApi.Param.FormParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.ToParam 'WebApi.Param.Cookie Data.Time.Clock.UTC.UTCTime instance WebApi.Param.ToParam 'WebApi.Param.QueryParam Data.Time.LocalTime.LocalTime.LocalTime instance WebApi.Param.ToParam 'WebApi.Param.FormParam Data.Time.LocalTime.LocalTime.LocalTime instance WebApi.Param.ToParam 'WebApi.Param.Cookie Data.Time.LocalTime.LocalTime.LocalTime instance WebApi.Param.ToParam 'WebApi.Param.QueryParam Data.Time.LocalTime.TimeOfDay.TimeOfDay instance WebApi.Param.ToParam 'WebApi.Param.FormParam Data.Time.LocalTime.TimeOfDay.TimeOfDay instance WebApi.Param.ToParam 'WebApi.Param.Cookie Data.Time.LocalTime.TimeOfDay.TimeOfDay instance WebApi.Param.ToParam 'WebApi.Param.Cookie a => WebApi.Param.ToParam 'WebApi.Param.Cookie (WebApi.Param.CookieInfo a) instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam 'WebApi.Param.QueryParam (WebApi.Param.OptValue a) instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam 'WebApi.Param.FormParam (WebApi.Param.OptValue a) instance WebApi.Param.EncodeParam a => WebApi.Param.ToParam 'WebApi.Param.Cookie (WebApi.Param.OptValue a) instance Data.Aeson.Types.Class.ToJSON a => WebApi.Param.ToParam 'WebApi.Param.QueryParam (WebApi.Param.JsonOf a) instance Data.Aeson.Types.Class.ToJSON a => WebApi.Param.ToParam 'WebApi.Param.FormParam (WebApi.Param.JsonOf a) instance Data.Aeson.Types.Class.ToJSON a => WebApi.Param.ToParam 'WebApi.Param.Cookie (WebApi.Param.JsonOf a) instance WebApi.Param.ToParam par a => WebApi.Param.ToParam par (GHC.Base.Maybe a) instance (WebApi.Param.ToParam par a, WebApi.Param.ToParam par b) => WebApi.Param.ToParam par (Data.Either.Either a b) instance WebApi.Param.ToParam par a => WebApi.Param.ToParam par [a] instance WebApi.Param.ToParam par a => WebApi.Param.ToParam par (Data.Vector.Vector a) instance WebApi.Param.FromParam parK () instance WebApi.Param.FromHeader () instance WebApi.Param.FromParam 'WebApi.Param.QueryParam WebApi.Param.Unit instance WebApi.Param.FromParam 'WebApi.Param.FormParam WebApi.Param.Unit instance WebApi.Param.FromParam 'WebApi.Param.Cookie WebApi.Param.Unit instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Types.Bool instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Types.Bool instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Types.Bool instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Types.Char instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Types.Char instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Types.Char instance WebApi.Param.FromParam 'WebApi.Param.QueryParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.FromParam 'WebApi.Param.FormParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.FromParam 'WebApi.Param.Cookie Data.Time.Clock.UTC.UTCTime instance WebApi.Param.FromParam 'WebApi.Param.QueryParam Data.Time.LocalTime.LocalTime.LocalTime instance WebApi.Param.FromParam 'WebApi.Param.FormParam Data.Time.LocalTime.LocalTime.LocalTime instance WebApi.Param.FromParam 'WebApi.Param.Cookie Data.Time.LocalTime.LocalTime.LocalTime instance WebApi.Param.FromParam 'WebApi.Param.QueryParam Data.Time.LocalTime.TimeOfDay.TimeOfDay instance WebApi.Param.FromParam 'WebApi.Param.FormParam Data.Time.LocalTime.TimeOfDay.TimeOfDay instance WebApi.Param.FromParam 'WebApi.Param.Cookie Data.Time.LocalTime.TimeOfDay.TimeOfDay instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Types.Int instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Types.Int instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Types.Int instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Int.Int8 instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Int.Int8 instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Int.Int8 instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Int.Int16 instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Int.Int16 instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Int.Int16 instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Int.Int32 instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Int.Int32 instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Int.Int32 instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Int.Int64 instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Int.Int64 instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Int.Int64 instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Integer.Type.Integer instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Integer.Type.Integer instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Integer.Type.Integer instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Types.Word instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Types.Word instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Types.Word instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Word.Word8 instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Word.Word8 instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Word.Word8 instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Word.Word16 instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Word.Word16 instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Word.Word16 instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Word.Word32 instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Word.Word32 instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Word.Word32 instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Word.Word64 instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Word.Word64 instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Word.Word64 instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Types.Double instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Types.Double instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Types.Double instance WebApi.Param.FromParam 'WebApi.Param.QueryParam GHC.Types.Float instance WebApi.Param.FromParam 'WebApi.Param.FormParam GHC.Types.Float instance WebApi.Param.FromParam 'WebApi.Param.Cookie GHC.Types.Float instance WebApi.Param.FromParam 'WebApi.Param.QueryParam Data.ByteString.Internal.ByteString instance WebApi.Param.FromParam 'WebApi.Param.FormParam Data.ByteString.Internal.ByteString instance WebApi.Param.FromParam 'WebApi.Param.Cookie Data.ByteString.Internal.ByteString instance WebApi.Param.FromParam par a => WebApi.Param.FromParam par (GHC.Base.Maybe a) instance (WebApi.Param.FromParam par a, WebApi.Param.FromParam par b) => WebApi.Param.FromParam par (Data.Either.Either a b) instance WebApi.Param.FromParam 'WebApi.Param.QueryParam Data.Text.Internal.Text instance WebApi.Param.FromParam 'WebApi.Param.FormParam Data.Text.Internal.Text instance WebApi.Param.FromParam 'WebApi.Param.Cookie Data.Text.Internal.Text instance WebApi.Param.FromParam 'WebApi.Param.QueryParam Data.Time.Calendar.Days.Day instance WebApi.Param.FromParam 'WebApi.Param.FormParam Data.Time.Calendar.Days.Day instance WebApi.Param.FromParam 'WebApi.Param.Cookie Data.Time.Calendar.Days.Day instance WebApi.Param.FromParam par a => WebApi.Param.FromParam par [a] instance WebApi.Param.FromParam par a => WebApi.Param.FromParam par (Data.Vector.Vector a) instance WebApi.Param.DecodeParam a => WebApi.Param.FromParam 'WebApi.Param.QueryParam (WebApi.Param.OptValue a) instance WebApi.Param.DecodeParam a => WebApi.Param.FromParam 'WebApi.Param.FormParam (WebApi.Param.OptValue a) instance WebApi.Param.DecodeParam a => WebApi.Param.FromParam 'WebApi.Param.Cookie (WebApi.Param.OptValue a) instance WebApi.Param.FromParam 'WebApi.Param.Cookie a => WebApi.Param.FromParam 'WebApi.Param.Cookie (WebApi.Param.CookieInfo a) instance WebApi.Param.ToParam 'WebApi.Param.FileParam WebApi.Param.FileInfo instance WebApi.Param.FromParam 'WebApi.Param.FileParam WebApi.Param.FileInfo instance WebApi.Param.ToParam 'WebApi.Param.PathParam Data.ByteString.Internal.ByteString instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Types.Int instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Int.Int8 instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Int.Int16 instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Int.Int32 instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Int.Int64 instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Types.Word instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Word.Word8 instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Word.Word16 instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Word.Word32 instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Word.Word64 instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Types.Float instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Types.Double instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Types.Char instance WebApi.Param.ToParam 'WebApi.Param.PathParam Data.Text.Internal.Text instance WebApi.Param.ToParam 'WebApi.Param.PathParam Data.Time.Calendar.Days.Day instance WebApi.Param.ToParam 'WebApi.Param.PathParam Data.Time.Clock.UTC.UTCTime instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Types.Bool instance WebApi.Param.ToParam 'WebApi.Param.PathParam GHC.Integer.Type.Integer instance Data.Aeson.Types.Class.ToJSON a => WebApi.Param.ToParam 'WebApi.Param.PathParam (WebApi.Param.JsonOf a) instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b) => WebApi.Param.ToParam 'WebApi.Param.PathParam (a, b) instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c) => WebApi.Param.ToParam 'WebApi.Param.PathParam (a, b, c) instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d) => WebApi.Param.ToParam 'WebApi.Param.PathParam (a, b, c, d) instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e) => WebApi.Param.ToParam 'WebApi.Param.PathParam (a, b, c, d, e) instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e, WebApi.Param.EncodeParam f) => WebApi.Param.ToParam 'WebApi.Param.PathParam (a, b, c, d, e, f) instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e, WebApi.Param.EncodeParam f, WebApi.Param.EncodeParam g, WebApi.Param.EncodeParam h) => WebApi.Param.ToParam 'WebApi.Param.PathParam (a, b, c, d, e, f, g, h) instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e, WebApi.Param.EncodeParam f, WebApi.Param.EncodeParam g, WebApi.Param.EncodeParam h, WebApi.Param.EncodeParam i) => WebApi.Param.ToParam 'WebApi.Param.PathParam (a, b, c, d, e, f, g, h, i) instance (WebApi.Param.EncodeParam a, WebApi.Param.EncodeParam b, WebApi.Param.EncodeParam c, WebApi.Param.EncodeParam d, WebApi.Param.EncodeParam e, WebApi.Param.EncodeParam f, WebApi.Param.EncodeParam g, WebApi.Param.EncodeParam h, WebApi.Param.EncodeParam i, WebApi.Param.EncodeParam j) => WebApi.Param.ToParam 'WebApi.Param.PathParam (a, b, c, d, e, f, g, h, i, j) instance Data.Aeson.Types.Class.ToJSON WebApi.Param.ParamErr instance Data.Aeson.Types.Class.FromJSON WebApi.Param.ParamErr instance WebApi.Param.ParamErrToApiErr () instance WebApi.Param.ParamErrToApiErr Data.Text.Internal.Text instance WebApi.Param.ParamErrToApiErr Data.Aeson.Types.Internal.Value instance (WebApi.Param.GToHeader f, WebApi.Param.GToHeader g) => WebApi.Param.GToHeader (f GHC.Generics.:+: g) instance (WebApi.Param.GToHeader f, WebApi.Param.GToHeader g) => WebApi.Param.GToHeader (f GHC.Generics.:*: g) instance WebApi.Param.EncodeParam c => WebApi.Param.GToHeader (GHC.Generics.K1 i c) instance (WebApi.Param.GToHeader f, GHC.Generics.Constructor t) => WebApi.Param.GToHeader (GHC.Generics.M1 GHC.Generics.C t f) instance WebApi.Param.GToHeader f => WebApi.Param.GToHeader (GHC.Generics.M1 GHC.Generics.D t f) instance (WebApi.Param.GToHeader f, GHC.Generics.Selector t) => WebApi.Param.GToHeader (GHC.Generics.M1 GHC.Generics.S t f) instance WebApi.Param.GToHeader GHC.Generics.U1 instance (WebApi.Param.GFromHeader f, WebApi.Param.GFromHeader g) => WebApi.Param.GFromHeader (f GHC.Generics.:*: g) instance (WebApi.Param.GFromHeader f, WebApi.Param.GFromHeader g) => WebApi.Param.GFromHeader (f GHC.Generics.:+: g) instance (WebApi.Param.GFromHeader f, GHC.Generics.Constructor t) => WebApi.Param.GFromHeader (GHC.Generics.M1 GHC.Generics.C t f) instance (WebApi.Param.GFromHeader f, GHC.Generics.Datatype t) => WebApi.Param.GFromHeader (GHC.Generics.M1 GHC.Generics.D t f) instance (WebApi.Param.GFromHeader f, GHC.Generics.Selector t) => WebApi.Param.GFromHeader (GHC.Generics.M1 GHC.Generics.S t f) instance WebApi.Param.DecodeParam c => WebApi.Param.GFromHeader (GHC.Generics.K1 i c) instance WebApi.Param.GFromHeader GHC.Generics.U1 instance (WebApi.Param.GFromParam f parK, WebApi.Param.GFromParam g parK) => WebApi.Param.GFromParam (f GHC.Generics.:*: g) parK instance (WebApi.Param.GFromParam f parK, WebApi.Param.GFromParam g parK) => WebApi.Param.GFromParam (f GHC.Generics.:+: g) parK instance (WebApi.Param.GFromParam f parK, GHC.Generics.Constructor t) => WebApi.Param.GFromParam (GHC.Generics.M1 GHC.Generics.C t f) parK instance (WebApi.Param.GFromParam f parK, GHC.Generics.Datatype t) => WebApi.Param.GFromParam (GHC.Generics.M1 GHC.Generics.D t f) parK instance (WebApi.Param.GFromParam f parK, GHC.Generics.Selector t, f ~ GHC.Generics.K1 i c) => WebApi.Param.GFromParam (GHC.Generics.M1 GHC.Generics.S t f) parK instance WebApi.Param.FromParam parK c => WebApi.Param.GFromParam (GHC.Generics.K1 i c) parK instance WebApi.Param.FromParam parK WebApi.Param.Unit => WebApi.Param.GFromParam GHC.Generics.U1 parK instance (WebApi.Param.GToParam f parK, WebApi.Param.GToParam g parK) => WebApi.Param.GToParam (f GHC.Generics.:*: g) parK instance (WebApi.Param.GToParam f parK, WebApi.Param.GToParam g parK) => WebApi.Param.GToParam (f GHC.Generics.:+: g) parK instance WebApi.Param.ToParam parK c => WebApi.Param.GToParam (GHC.Generics.K1 i c) parK instance (WebApi.Param.GToParam f parK, GHC.Generics.Constructor t) => WebApi.Param.GToParam (GHC.Generics.M1 GHC.Generics.C t f) parK instance WebApi.Param.GToParam f parK => WebApi.Param.GToParam (GHC.Generics.M1 GHC.Generics.D t f) parK instance (WebApi.Param.GToParam f parK, GHC.Generics.Selector t, f ~ GHC.Generics.K1 i c) => WebApi.Param.GToParam (GHC.Generics.M1 GHC.Generics.S t f) parK instance WebApi.Param.ToParam parK WebApi.Param.Unit => WebApi.Param.GToParam GHC.Generics.U1 parK module WebApi.Versioning -- | A Style of versioning which has a Major version and a Minor version. data MajorMinor (ver :: (Nat, Nat)) MajorMinor :: MajorMinor -- | A Style of versioning which has only has a Major version. data Major (maj :: Nat) Major :: Major -- | Comparison between versions. class OrdVersion (ver :: *) where cmpVersion _ _ = (Proxy :: Proxy ord) cmpVersion :: (OrdVersion ver, ver ~ ((proxy :: k -> *) (v1 :: k)), ord ~ (VersionOrd (proxy v1) (proxy v2)), SingOrd ord) => proxy v1 -> proxy (v2 :: k) -> Proxy ord -- | Defines ordering of versions. -- | Comparison between two versions. Returns an Ord. -- --
-- >>> compareVersion (MajorMinor :: MajorMinor (0, 0)) (MajorMinor :: MajorMinor (0, 1)) == LT -- True --compareVersion :: (OrdVersion (proxy v1), SingOrd (VersionOrd (proxy v1) (proxy v2))) => proxy (v1 :: k) -> proxy (v2 :: k) -> Ordering instance WebApi.Versioning.SingOrd 'GHC.Types.EQ instance WebApi.Versioning.SingOrd 'GHC.Types.LT instance WebApi.Versioning.SingOrd 'GHC.Types.GT instance WebApi.Versioning.OrdVersion (WebApi.Versioning.Major maj) instance WebApi.Versioning.OrdVersion (WebApi.Versioning.MajorMinor '(maj, min)) module WebApi.ContentTypes -- | Type representing content type of application/json. data JSON -- | Type representing content type of text/plain. data PlainText -- | Type representing content type of text/html. data HTML -- | Type representing content type of application/octetstream. data OctetStream -- | Type representing content type of multipart/form-data. data MultipartFormData -- | Type representing content type of -- application/x-www-form-urlencoded. data UrlEncoded data Content (ctypes :: [*]) (a :: *) -- | Singleton class for content type. class Accept ctype contentType :: Accept ctype => Proxy ctype -> MediaType -- | Encode a type into a specific content type. class (Accept a) => Encode a c encode :: Encode a c => Proxy a -> c -> Builder -- | (Try to) Decode a type from a specific content type. class (Accept c) => Decode c a decode :: Decode c a => Proxy c -> ByteString -> Either String a class FromText a fromText :: FromText a => Text -> Maybe a class ToText a toText :: ToText a => a -> Text -- | Encodings of type for all content types ctypes. class Encodings (ctypes :: [*]) a encodings :: Encodings ctypes a => Proxy ctypes -> a -> [(MediaType, Builder)] -- | Decodings of type for all content types ctypes. class Decodings (ctypes :: [*]) a decodings :: Decodings ctypes a => Proxy ctypes -> ByteString -> [(MediaType, Either String a)] class PartEncodings (xs :: [*]) partEncodings :: PartEncodings xs => Proxy xs -> HListToRecTuple (StripContents xs) -> [[(MediaType, Builder)]] class PartDecodings (xs :: [*]) partDecodings :: PartDecodings xs => Proxy xs -> [(ByteString, ByteString)] -> Either String (HListToRecTuple (StripContents xs)) instance (WebApi.ContentTypes.Accept ctype, WebApi.ContentTypes.Encode ctype a, WebApi.ContentTypes.Encodings ctypes a) => WebApi.ContentTypes.Encodings (ctype : ctypes) a instance WebApi.ContentTypes.Encodings '[] a instance (WebApi.ContentTypes.Accept ctype, WebApi.ContentTypes.Decode ctype a, WebApi.ContentTypes.Decodings ctypes a) => WebApi.ContentTypes.Decodings (ctype : ctypes) a instance WebApi.ContentTypes.Decodings '[] a instance WebApi.ContentTypes.Accept WebApi.ContentTypes.JSON instance WebApi.ContentTypes.Accept WebApi.ContentTypes.PlainText instance WebApi.ContentTypes.Accept WebApi.ContentTypes.HTML instance WebApi.ContentTypes.Accept WebApi.ContentTypes.OctetStream instance WebApi.ContentTypes.Accept WebApi.ContentTypes.MultipartFormData instance WebApi.ContentTypes.Accept WebApi.ContentTypes.UrlEncoded instance Data.Aeson.Types.Class.ToJSON c => WebApi.ContentTypes.Encode WebApi.ContentTypes.JSON c instance WebApi.ContentTypes.ToText a => WebApi.ContentTypes.Encode WebApi.ContentTypes.PlainText a instance Data.Aeson.Types.Class.FromJSON a => WebApi.ContentTypes.Decode WebApi.ContentTypes.JSON a instance WebApi.ContentTypes.FromText a => WebApi.ContentTypes.Decode WebApi.ContentTypes.PlainText a instance WebApi.ContentTypes.ToText Data.Text.Internal.Text instance WebApi.ContentTypes.FromText Data.Text.Internal.Text instance (WebApi.ContentTypes.PartEncodings ts, WebApi.ContentTypes.Encodings ctypes (WebApi.ContentTypes.StripContent t), WebApi.ContentTypes.MkContent t ~ WebApi.ContentTypes.Content ctypes a) => WebApi.ContentTypes.PartEncodings (t : ts) instance WebApi.ContentTypes.PartEncodings '[] instance (WebApi.ContentTypes.PartDecodings ts, WebApi.ContentTypes.Decodings ctypes (WebApi.ContentTypes.StripContent t), WebApi.ContentTypes.MkContent t ~ WebApi.ContentTypes.Content ctypes a) => WebApi.ContentTypes.PartDecodings (t : ts) instance WebApi.ContentTypes.PartDecodings '[] -- | Provides the contract for the web api. The contract consists of -- WebApi and ApiContract classes. WebApi contains -- information related to the entire group of endpoints whereas -- ApiContract is concerned with information related to each end -- point. Once the contract is written, it can be then used to -- --