Convert a type into Schema.
An example type and instance:
{-# LANGUAGE OverloadedStrings #-} -- allows to write Text literals
{-# LANGUAGE OverloadedLists #-} -- allows to write Map and HashMap as lists
import Control.Lens
import Data.Proxy
import Data.Swagger
data Coord = Coord { x :: Double, y :: Double }
instance ToSchema Coord where
declareNamedSchema _ = do
doubleSchema <- declareSchemaRef (Proxy :: Proxy Double)
return $ NamedSchema (Just "Coord") $ mempty
& type_ ?~ SwaggerObject
& properties .~
[ ("x", doubleSchema)
, ("y", doubleSchema)
]
& required .~ [ "x", "y" ]
Instead of manually writing your ToSchema instance you can
use a default generic implementation of declareNamedSchema.
To do that, simply add deriving Generic clause to your datatype
and declare a ToSchema instance for your datatype without
giving definition for declareNamedSchema.
For instance, the previous example can be simplified into this:
{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics (Generic)
data Coord = Coord { x :: Double, y :: Double } deriving Generic
instance ToSchema Coord
Methods
declareNamedSchema :: Proxy a -> Declare (Definitions Schema) NamedSchemaConvert a type into an optionally named schema together with all used definitions. Note that the schema itself is included in definitions only if it is recursive (and thus needs its definition in scope).
Instances61ToSchema, …
ToSchema ObjectDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema IntSetDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema IntegerDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema NaturalDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema StringDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema AllDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema AnyDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema VersionDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema Int16Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema Int32Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema Int64Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema Int8Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema Word16Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema Word32Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema Word64Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema Word8Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema BoolDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema CharDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema DoubleDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema FloatDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema IntDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema WordDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema ScientificDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema TextDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema TextDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema DayDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaFormat
"date"corresponds toyyyy-mm-ddformat.ToSchema NominalDiffTimeDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema UTCTimeDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaExample1 expression toSchema (Proxy :: Proxy UTCTime) ^. formatJust "yyyy-mm-ddThh:MM:ssZ"
ToSchema LocalTimeDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaExample1 expression toSchema (Proxy :: Proxy LocalTime) ^. formatJust "yyyy-mm-ddThh:MM:ss"
ToSchema TimeOfDayDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema ZonedTimeDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaFormat
"date"corresponds toyyyy-mm-ddThh:MM:ss(Z|+hh:MM)format.ToSchema UUIDDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaFor ToJSON instance, see uuid-aeson package.
ToSchema ()Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchemaByteStringError ByteString => ToSchema ByteStringDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchemaByteStringError ByteString => ToSchema ByteStringDefined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (First a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Last a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (IntMap a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaNOTE: This schema does not account for the uniqueness of keys.
ToSchema a => ToSchema (Set a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (NonEmpty a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Identity a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Dual a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Product a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Sum a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Maybe a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (HashSet a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Vector a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Vector a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Vector a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema (Vector a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaToSchema a => ToSchema [a]Defined in swagger2-2.8.9 · Data.Swagger.Internal.SchemaHasResolution a => ToSchema (Fixed a)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToJSONKey k, ToSchema k, ToSchema v) => ToSchema (Map k v)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToJSONKey k, ToSchema k, ToSchema v) => ToSchema (HashMap k v)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToSchema a, ToSchema b) => ToSchema (Either a b)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToSchema a, ToSchema b) => ToSchema (a, b)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToSchema a, ToSchema b, ToSchema c) => ToSchema (a, b, c)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToSchema a, ToSchema b, ToSchema c, ToSchema d) => ToSchema (a, b, c, d)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e) => ToSchema (a, b, c, d, e)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e, ToSchema f) => ToSchema (a, b, c, d, e, f)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema(ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e, ToSchema f, ToSchema g) => ToSchema (a, b, c, d, e, f, g)Defined in swagger2-2.8.9 · Data.Swagger.Internal.Schema