-- 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