Safe Haskell | None |
---|---|
Language | Haskell2010 |
Autodocodec.Schema
Synopsis
- jsonSchemaViaCodec :: HasCodec a => JSONSchema
- jsonSchemaVia :: ValueCodec input output -> JSONSchema
- jsonObjectSchemaViaCodec :: HasObjectCodec a => ObjectSchema
- jsonObjectSchemaVia :: ObjectCodec input output -> ObjectSchema
- data JSONSchema
- = AnySchema
- | NullSchema
- | BoolSchema
- | StringSchema
- | IntegerSchema !(Bounds Integer)
- | NumberSchema !(Bounds Scientific)
- | ArraySchema !JSONSchema
- | MapSchema !JSONSchema
- | ObjectSchema !ObjectSchema
- | ValueSchema !Value
- | AnyOfSchema !(NonEmpty JSONSchema)
- | OneOfSchema !(NonEmpty JSONSchema)
- | CommentSchema !Text !JSONSchema
- | RefSchema !Text
- | WithDefSchema !(Map Text JSONSchema) !JSONSchema
- data ObjectSchema
- data KeyRequirement
- validateAccordingTo :: Value -> JSONSchema -> Bool
- validateObjectAccordingTo :: Value -> JSONSchema -> Bool
Documentation
jsonSchemaViaCodec :: HasCodec a => JSONSchema Source #
jsonSchemaVia :: ValueCodec input output -> JSONSchema Source #
jsonObjectSchemaVia :: ObjectCodec input output -> ObjectSchema Source #
data JSONSchema Source #
A JSON Schema
Contrary to a Codec
, values of this type should be finite.
NOTE: This schema roundtrips to JSON, but it cannot expres everything that a fully-featured json-schema may be able to express.
Constructors
AnySchema | |
NullSchema | |
BoolSchema | |
StringSchema | |
IntegerSchema !(Bounds Integer) | |
NumberSchema !(Bounds Scientific) | |
ArraySchema !JSONSchema | |
MapSchema !JSONSchema | |
ObjectSchema !ObjectSchema | This needs to be a list because keys should stay in their original ordering. |
ValueSchema !Value | |
AnyOfSchema !(NonEmpty JSONSchema) | |
OneOfSchema !(NonEmpty JSONSchema) | |
CommentSchema !Text !JSONSchema | |
RefSchema !Text | |
WithDefSchema !(Map Text JSONSchema) !JSONSchema |
Instances
data ObjectSchema Source #
Constructors
ObjectKeySchema !Text !KeyRequirement !JSONSchema !(Maybe Text) | |
ObjectAnySchema | |
ObjectAnyOfSchema !(NonEmpty ObjectSchema) | |
ObjectOneOfSchema !(NonEmpty ObjectSchema) | |
ObjectAllOfSchema !(NonEmpty ObjectSchema) |
Instances
FromJSON ObjectSchema Source # | |||||
Defined in Autodocodec.Schema | |||||
ToJSON ObjectSchema Source # | |||||
Defined in Autodocodec.Schema Methods toJSON :: ObjectSchema -> Value # toEncoding :: ObjectSchema -> Encoding # toJSONList :: [ObjectSchema] -> Value # toEncodingList :: [ObjectSchema] -> Encoding # omitField :: ObjectSchema -> Bool # | |||||
Generic ObjectSchema Source # | |||||
Defined in Autodocodec.Schema Associated Types
| |||||
Show ObjectSchema Source # | |||||
Defined in Autodocodec.Schema Methods showsPrec :: Int -> ObjectSchema -> ShowS # show :: ObjectSchema -> String # showList :: [ObjectSchema] -> ShowS # | |||||
Eq ObjectSchema Source # | |||||
Defined in Autodocodec.Schema | |||||
Ord ObjectSchema Source # | |||||
Defined in Autodocodec.Schema Methods compare :: ObjectSchema -> ObjectSchema -> Ordering # (<) :: ObjectSchema -> ObjectSchema -> Bool # (<=) :: ObjectSchema -> ObjectSchema -> Bool # (>) :: ObjectSchema -> ObjectSchema -> Bool # (>=) :: ObjectSchema -> ObjectSchema -> Bool # max :: ObjectSchema -> ObjectSchema -> ObjectSchema # min :: ObjectSchema -> ObjectSchema -> ObjectSchema # | |||||
Validity ObjectSchema Source # | |||||
Defined in Autodocodec.Schema Methods validate :: ObjectSchema -> Validation # | |||||
type Rep ObjectSchema Source # | |||||
Defined in Autodocodec.Schema type Rep ObjectSchema = D1 ('MetaData "ObjectSchema" "Autodocodec.Schema" "autodocodec-schema-0.2.0.1-91NkfSXSStU6H686hgoXv4" 'False) ((C1 ('MetaCons "ObjectKeySchema" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 KeyRequirement)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 JSONSchema) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Text)))) :+: C1 ('MetaCons "ObjectAnySchema" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "ObjectAnyOfSchema" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty ObjectSchema))) :+: (C1 ('MetaCons "ObjectOneOfSchema" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty ObjectSchema))) :+: C1 ('MetaCons "ObjectAllOfSchema" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (NonEmpty ObjectSchema)))))) |
data KeyRequirement Source #
Instances
Generic KeyRequirement Source # | |||||
Defined in Autodocodec.Schema Associated Types
Methods from :: KeyRequirement -> Rep KeyRequirement x # to :: Rep KeyRequirement x -> KeyRequirement # | |||||
Show KeyRequirement Source # | |||||
Defined in Autodocodec.Schema Methods showsPrec :: Int -> KeyRequirement -> ShowS # show :: KeyRequirement -> String # showList :: [KeyRequirement] -> ShowS # | |||||
Eq KeyRequirement Source # | |||||
Defined in Autodocodec.Schema Methods (==) :: KeyRequirement -> KeyRequirement -> Bool # (/=) :: KeyRequirement -> KeyRequirement -> Bool # | |||||
Ord KeyRequirement Source # | |||||
Defined in Autodocodec.Schema Methods compare :: KeyRequirement -> KeyRequirement -> Ordering # (<) :: KeyRequirement -> KeyRequirement -> Bool # (<=) :: KeyRequirement -> KeyRequirement -> Bool # (>) :: KeyRequirement -> KeyRequirement -> Bool # (>=) :: KeyRequirement -> KeyRequirement -> Bool # max :: KeyRequirement -> KeyRequirement -> KeyRequirement # min :: KeyRequirement -> KeyRequirement -> KeyRequirement # | |||||
Validity KeyRequirement Source # | |||||
Defined in Autodocodec.Schema Methods validate :: KeyRequirement -> Validation # | |||||
type Rep KeyRequirement Source # | |||||
Defined in Autodocodec.Schema type Rep KeyRequirement = D1 ('MetaData "KeyRequirement" "Autodocodec.Schema" "autodocodec-schema-0.2.0.1-91NkfSXSStU6H686hgoXv4" 'False) (C1 ('MetaCons "Required" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Optional" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Maybe Value)))) |
validateAccordingTo :: Value -> JSONSchema -> Bool Source #
validateObjectAccordingTo :: Value -> JSONSchema -> Bool Source #