-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Types and type classes for defining JSON schemas.
--
-- Types and type classes for defining JSON schemas.
--
-- Documentation
--
-- See
-- https://github.com/silkapp/json-schema/blob/master/README.md
@package json-schema
@version 0.7.4.1
-- | Types for defining JSON schemas.
module Data.JSON.Schema.Types
-- | Class representing JSON schemas
class JSONSchema a
schema :: JSONSchema a => Proxy a -> Schema
-- | A schema for a JSON value.
data Schema
-- | A choice of multiple values, e.g. for sum types.
Choice :: [Schema] -> Schema
-- | A JSON object.
Object :: [Field] -> Schema
-- | A JSON object with arbitrary keys.
Map :: Schema -> Schema
-- | An array. The LengthBound represent the lower and upper bound of the
-- array size. The value unboundedLength indicates no bound. The
-- boolean denotes whether items have to be unique.
Array :: LengthBound -> Bool -> Schema -> Schema
-- | A fixed-length tuple of different values.
Tuple :: [Schema] -> Schema
-- | A string. The LengthBound denote the lower and upper bound of the
-- length of the string. The value unboundedLength indicates no
-- bound.
Value :: LengthBound -> Schema
-- | A Bool.
Boolean :: Schema
-- | A number. The Bound denote the lower and upper bound on the value. The
-- value unbounded indicates no bound.
Number :: Bound -> Schema
-- | A Value that never changes. Can be combined with Choice to create
-- enumerables.
Constant :: Value -> Schema
-- | Any value is allowed.
Any :: Schema
-- | A field in an object.
data Field
Field :: Text -> Bool -> Schema -> Field
[key] :: Field -> Text
[required] :: Field -> Bool
[content] :: Field -> Schema
-- | A type for bounds on number domains. Use Nothing when no lower or
-- upper bound makes sense
data Bound
Bound :: Maybe Int -> Maybe Int -> Bound
[lower] :: Bound -> Maybe Int
[upper] :: Bound -> Maybe Int
-- | A type for bounds on lengths for strings and arrays. Use Nothing when
-- no lower or upper bound makes sense
data LengthBound
LengthBound :: Maybe Int -> Maybe Int -> LengthBound
[lowerLength] :: LengthBound -> Maybe Int
[upperLength] :: LengthBound -> Maybe Int
unbounded :: Bound
unboundedLength :: LengthBound
instance GHC.Show.Show Data.JSON.Schema.Types.Schema
instance GHC.Classes.Eq Data.JSON.Schema.Types.Schema
instance GHC.Show.Show Data.JSON.Schema.Types.Field
instance GHC.Classes.Eq Data.JSON.Schema.Types.Field
instance GHC.Show.Show Data.JSON.Schema.Types.LengthBound
instance GHC.Classes.Eq Data.JSON.Schema.Types.LengthBound
instance GHC.Show.Show Data.JSON.Schema.Types.Bound
instance GHC.Classes.Eq Data.JSON.Schema.Types.Bound
instance Data.JSON.Schema.Types.JSONSchema ()
instance Data.JSON.Schema.Types.JSONSchema GHC.Types.Int
instance Data.JSON.Schema.Types.JSONSchema GHC.Integer.Type.Integer
instance Data.JSON.Schema.Types.JSONSchema GHC.Int.Int8
instance Data.JSON.Schema.Types.JSONSchema GHC.Int.Int16
instance Data.JSON.Schema.Types.JSONSchema GHC.Int.Int32
instance Data.JSON.Schema.Types.JSONSchema GHC.Int.Int64
instance Data.JSON.Schema.Types.JSONSchema GHC.Types.Word
instance Data.JSON.Schema.Types.JSONSchema GHC.Word.Word8
instance Data.JSON.Schema.Types.JSONSchema GHC.Word.Word16
instance Data.JSON.Schema.Types.JSONSchema GHC.Word.Word32
instance Data.JSON.Schema.Types.JSONSchema GHC.Word.Word64
instance Data.JSON.Schema.Types.JSONSchema GHC.Types.Float
instance Data.JSON.Schema.Types.JSONSchema GHC.Types.Double
instance Data.Fixed.HasResolution a => Data.JSON.Schema.Types.JSONSchema (Data.Fixed.Fixed a)
instance Data.JSON.Schema.Types.JSONSchema Data.Scientific.Scientific
instance Data.JSON.Schema.Types.JSONSchema GHC.Types.Bool
instance Data.JSON.Schema.Types.JSONSchema Data.Text.Internal.Text
instance Data.JSON.Schema.Types.JSONSchema Data.Text.Internal.Lazy.Text
instance Data.JSON.Schema.Types.JSONSchema a => Data.JSON.Schema.Types.JSONSchema (GHC.Base.Maybe a)
instance Data.JSON.Schema.Types.JSONSchema a => Data.JSON.Schema.Types.JSONSchema [a]
instance Data.JSON.Schema.Types.JSONSchema a => Data.JSON.Schema.Types.JSONSchema (Data.Vector.Vector a)
instance (Data.String.IsString k, Data.JSON.Schema.Types.JSONSchema v) => Data.JSON.Schema.Types.JSONSchema (Data.Map.Base.Map k v)
instance (Data.String.IsString k, Data.JSON.Schema.Types.JSONSchema v) => Data.JSON.Schema.Types.JSONSchema (Data.HashMap.Base.HashMap k v)
instance Data.JSON.Schema.Types.JSONSchema Data.Time.Clock.UTC.UTCTime
instance Data.JSON.Schema.Types.JSONSchema a => Data.JSON.Schema.Types.JSONSchema (Data.Set.Base.Set a)
instance Data.JSON.Schema.Types.JSONSchema Data.Aeson.Types.Internal.Value
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b) => Data.JSON.Schema.Types.JSONSchema (a, b)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c) => Data.JSON.Schema.Types.JSONSchema (a, b, c)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g, Data.JSON.Schema.Types.JSONSchema h) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g, h)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g, Data.JSON.Schema.Types.JSONSchema h, Data.JSON.Schema.Types.JSONSchema i) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g, h, i)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g, Data.JSON.Schema.Types.JSONSchema h, Data.JSON.Schema.Types.JSONSchema i, Data.JSON.Schema.Types.JSONSchema j) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g, h, i, j)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g, Data.JSON.Schema.Types.JSONSchema h, Data.JSON.Schema.Types.JSONSchema i, Data.JSON.Schema.Types.JSONSchema j, Data.JSON.Schema.Types.JSONSchema k) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g, h, i, j, k)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g, Data.JSON.Schema.Types.JSONSchema h, Data.JSON.Schema.Types.JSONSchema i, Data.JSON.Schema.Types.JSONSchema j, Data.JSON.Schema.Types.JSONSchema k, Data.JSON.Schema.Types.JSONSchema l) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g, h, i, j, k, l)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g, Data.JSON.Schema.Types.JSONSchema h, Data.JSON.Schema.Types.JSONSchema i, Data.JSON.Schema.Types.JSONSchema j, Data.JSON.Schema.Types.JSONSchema k, Data.JSON.Schema.Types.JSONSchema l, Data.JSON.Schema.Types.JSONSchema m) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g, h, i, j, k, l, m)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g, Data.JSON.Schema.Types.JSONSchema h, Data.JSON.Schema.Types.JSONSchema i, Data.JSON.Schema.Types.JSONSchema j, Data.JSON.Schema.Types.JSONSchema k, Data.JSON.Schema.Types.JSONSchema l, Data.JSON.Schema.Types.JSONSchema m, Data.JSON.Schema.Types.JSONSchema n) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
instance (Data.JSON.Schema.Types.JSONSchema a, Data.JSON.Schema.Types.JSONSchema b, Data.JSON.Schema.Types.JSONSchema c, Data.JSON.Schema.Types.JSONSchema d, Data.JSON.Schema.Types.JSONSchema e, Data.JSON.Schema.Types.JSONSchema f, Data.JSON.Schema.Types.JSONSchema g, Data.JSON.Schema.Types.JSONSchema h, Data.JSON.Schema.Types.JSONSchema i, Data.JSON.Schema.Types.JSONSchema j, Data.JSON.Schema.Types.JSONSchema k, Data.JSON.Schema.Types.JSONSchema l, Data.JSON.Schema.Types.JSONSchema m, Data.JSON.Schema.Types.JSONSchema n, Data.JSON.Schema.Types.JSONSchema o) => Data.JSON.Schema.Types.JSONSchema (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
-- | Combinators for creating JSON schemas.
module Data.JSON.Schema.Combinators
-- | A schema combinator.
type SchemaC = Schema -> Schema
-- | Optionality operator for schemas.
(<|>) :: Schema -> Schema -> Schema
-- | Tupling.
(<+>) :: Schema -> Schema -> Schema
-- | If passed two objects, merges the fields. Otherwise creates a tuple.
merge :: Schema -> Schema -> Schema
-- | Create an object with a single field.
field :: Text -> Bool -> Schema -> Schema
-- | An unbounded string.
value :: Schema
-- | An unbounded number.
number :: Schema
-- | An unbounded array with non-unique values.
array :: Schema -> Schema
-- | Add a field to an object, or tuple if passed a non-object.
addField :: Text -> Bool -> Schema -> SchemaC
-- | Add multiple fields to an object, or tuple if passed a non-object.
addFields :: [(Text, Bool, Schema)] -> SchemaC
-- | An empty object.
empty :: Schema
-- | A choice between constant values.
enum :: [Value] -> Schema
unbounded :: Bound
unboundedLength :: LengthBound
-- | The provided schema or null.
nullable :: Schema -> Schema
-- | Generic derivation of schemas. The schemas generated match the JSON
-- generated by type 'generic-aeson' package. See that package for
-- documentation on the format and examples of it.
module Data.JSON.Schema.Generic
class GJSONSchema f
-- | Derive a JSON schema for types with an instance of Generic.
gSchema :: (Generic a, GJSONSchema (Rep a), ConNames (Rep a), GIsEnum (Rep a)) => Proxy a -> Schema
gSchemaWithSettings :: (Generic a, GJSONSchema (Rep a), ConNames (Rep a), GIsEnum (Rep a)) => Settings -> Proxy a -> Schema
instance Data.JSON.Schema.Types.JSONSchema c => Data.JSON.Schema.Generic.GJSONSchema (GHC.Generics.K1 i c)
instance Data.JSON.Schema.Generic.GJSONSchema (GHC.Generics.K1 i GHC.Base.String)
instance Data.JSON.Schema.Generic.GJSONSchema GHC.Generics.U1
instance (Data.JSON.Schema.Generic.GJSONSchema f, Data.JSON.Schema.Generic.GJSONSchema g) => Data.JSON.Schema.Generic.GJSONSchema (f GHC.Generics.:+: g)
instance (Data.JSON.Schema.Generic.GJSONSchema f, Data.JSON.Schema.Generic.GJSONSchema g) => Data.JSON.Schema.Generic.GJSONSchema (f GHC.Generics.:*: g)
instance (GHC.Generics.Constructor c, Data.JSON.Schema.Generic.GJSONSchema f) => Data.JSON.Schema.Generic.GJSONSchema (GHC.Generics.M1 GHC.Generics.C c f)
instance Data.JSON.Schema.Generic.GJSONSchema f => Data.JSON.Schema.Generic.GJSONSchema (GHC.Generics.M1 GHC.Generics.D c f)
instance (GHC.Generics.Selector c, Data.JSON.Schema.Types.JSONSchema a) => Data.JSON.Schema.Generic.GJSONSchema (GHC.Generics.M1 GHC.Generics.S c (GHC.Generics.K1 i (GHC.Base.Maybe a)))
instance GHC.Generics.Selector c => Data.JSON.Schema.Generic.GJSONSchema (GHC.Generics.M1 GHC.Generics.S c (GHC.Generics.K1 i (GHC.Base.Maybe GHC.Base.String)))
instance (GHC.Generics.Selector c, Data.JSON.Schema.Generic.GJSONSchema f) => Data.JSON.Schema.Generic.GJSONSchema (GHC.Generics.M1 GHC.Generics.S c f)
module Data.JSON.Schema
-- | A concrete, poly-kinded proxy type
data Proxy (t :: k) :: k -> *
Proxy :: Proxy
module Data.JSON.Schema.Validate
-- | Predicate version of validate.
isValid :: Schema -> Value -> Bool
-- | Validates a value against a schema returning errors.
validate :: Schema -> Value -> Vector ValidationError
data ValidationError
ValidationError :: Vector Text -> ErrorType -> ValidationError
-- | The Path to the property where the error occured, empty if the error
-- is on the top level.
[path] :: ValidationError -> Vector Text
[errorType] :: ValidationError -> ErrorType
data ErrorType
-- | General type error.
Mismatch :: Schema -> Value -> ErrorType
-- | Number out of bounds.
BoundError :: Bound -> Scientific -> ErrorType
-- | String or Array out of bounds.
LengthBoundError :: LengthBound -> Int -> ErrorType
-- | Expected and actual tuple length.
TupleLength :: Int -> Int -> ErrorType
-- | A required field is missing.
MissingRequiredField :: Text -> ErrorType
-- | All choices failed, contains the error of each branch.
ChoiceError :: (Vector (Vector ValidationError)) -> Value -> ErrorType
-- | The elements in the array that are duplicated with the number of
-- occurences (at least 2).
NonUniqueArray :: (HashMap Value Int) -> ErrorType
instance Control.Monad.Reader.Class.MonadReader (Data.Vector.Vector Data.Text.Internal.Text) Data.JSON.Schema.Validate.M
instance Control.Monad.Writer.Class.MonadWriter (Data.Vector.Vector Data.JSON.Schema.Validate.ValidationError) Data.JSON.Schema.Validate.M
instance GHC.Base.Monad Data.JSON.Schema.Validate.M
instance GHC.Base.Applicative Data.JSON.Schema.Validate.M
instance GHC.Base.Functor Data.JSON.Schema.Validate.M
instance GHC.Show.Show Data.JSON.Schema.Validate.ValidationError
instance GHC.Classes.Eq Data.JSON.Schema.Validate.ValidationError
instance GHC.Show.Show Data.JSON.Schema.Validate.ErrorType
instance GHC.Classes.Eq Data.JSON.Schema.Validate.ErrorType