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.OpenApi
data Coord = Coord { x :: Double, y :: Double }
instance ToSchema Coord where
declareNamedSchema _ = do
doubleSchema <- declareSchemaRef (Proxy :: Proxy Double)
return $ NamedSchema (Just "Coord") $ mempty
& type_ ?~ OpenApiObject
& 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 openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema IntSetDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema IntegerDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema NaturalDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema StringDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema AllDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema AnyDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema VersionDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema Int16Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema Int32Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema Int64Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema Int8Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema Word16Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema Word32Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema Word64Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema Word8Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema BoolDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema CharDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema DoubleDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema FloatDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema IntDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema WordDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema ScientificDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema TextDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema TextDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema DayDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaFormat
"date"corresponds toyyyy-mm-ddformat.ToSchema NominalDiffTimeDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema UTCTimeDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaExample1 expression toSchema (Proxy :: Proxy UTCTime) ^. formatJust "yyyy-mm-ddThh:MM:ssZ"
ToSchema LocalTimeDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaExample1 expression toSchema (Proxy :: Proxy LocalTime) ^. formatJust "yyyy-mm-ddThh:MM:ss"
ToSchema TimeOfDayDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema ZonedTimeDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaFormat
"date-time"corresponds toyyyy-mm-ddThh:MM:ss(Z|+hh:MM)format.ToSchema UUIDDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaFor ToJSON instance, see uuid-aeson package.
ToSchema ()Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchemaByteStringError ByteString => ToSchema ByteStringDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchemaByteStringError ByteString => ToSchema ByteStringDefined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (First a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Last a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (IntMap a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaNOTE: This schema does not account for the uniqueness of keys.
ToSchema a => ToSchema (Set a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (NonEmpty a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Identity a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Dual a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Product a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Sum a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Maybe a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (HashSet a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Vector a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Vector a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Vector a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema (Vector a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.SchemaToSchema a => ToSchema [a]Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(ToJSONKey k, ToSchema k, ToSchema v) => ToSchema (Map k v)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(ToJSONKey k, ToSchema k, ToSchema v) => ToSchema (HashMap k v)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(Typeable (Fixed a), HasResolution a) => ToSchema (Fixed a)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(ToSchema a, ToSchema b) => ToSchema (Either a b)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(ToSchema a, ToSchema b) => ToSchema (a, b)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(ToSchema a, ToSchema b, ToSchema c) => ToSchema (a, b, c)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(ToSchema a, ToSchema b, ToSchema c, ToSchema d) => ToSchema (a, b, c, d)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e) => ToSchema (a, b, c, d, e)Defined in openapi3-3.2.4 · Data.OpenApi.Internal.Schema(ToSchema a, ToSchema b, ToSchema c, ToSchema d, ToSchema e, ToSchema f) => ToSchema (a, b, c, d, e, f)Defined in openapi3-3.2.4 · Data.OpenApi.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 openapi3-3.2.4 · Data.OpenApi.Internal.Schema