hjsonschema-0.9.0.0: JSON Schema library

Safe HaskellNone
LanguageHaskell2010

Data.JsonSchema.Draft4

Contents

Synopsis

Documentation

data Schema Source

Constructors

Schema 

Fields

_schemaVersion :: Maybe Text
 
_schemaId :: Maybe Text
 
_schemaRef :: Maybe Text
 
_schemaDefinitions :: Maybe (HashMap Text Schema)

A standardized location for embedding schemas to be referenced from elsewhere in the document.

_schemaOther :: HashMap Text Value

Since the JSON document this Schema was built from could contain schemas anywhere (not just in "definitions" or any of the other official keys) we save any leftover key/value pairs not covered by them here.

_schemaMultipleOf :: Maybe Scientific
 
_schemaMaximum :: Maybe Scientific
 
_schemaExclusiveMaximum :: Maybe Bool
 
_schemaMinimum :: Maybe Scientific
 
_schemaExclusiveMinimum :: Maybe Bool
 
_schemaMaxLength :: Maybe Int
 
_schemaMinLength :: Maybe Int
 
_schemaPattern :: Maybe Text
 
_schemaMaxItems :: Maybe Int
 
_schemaMinItems :: Maybe Int
 
_schemaUniqueItems :: Maybe Bool
 
_schemaItems :: Maybe (Items Schema)
 
_schemaAdditionalItems :: Maybe (AdditionalItems Schema)
 
_schemaMaxProperties :: Maybe Int
 
_schemaMinProperties :: Maybe Int
 
_schemaRequired :: Maybe Required
 
_schemaDependencies :: Maybe (HashMap Text (Dependency Schema))
 
_schemaProperties :: Maybe (HashMap Text Schema)
 
_schemaPatternProperties :: Maybe (HashMap Text Schema)
 
_schemaAdditionalProperties :: Maybe (AdditionalProperties Schema)
 
_schemaEnum :: Maybe EnumVal
 
_schemaType :: Maybe TypeVal
 
_schemaAllOf :: Maybe (NonEmpty Schema)
 
_schemaAnyOf :: Maybe (NonEmpty Schema)
 
_schemaOneOf :: Maybe (NonEmpty Schema)
 
_schemaNot :: Maybe Schema
 

checkSchema :: SchemaCache Schema -> SchemaContext Schema -> Either [Failure] (Value -> [Failure]) Source

Check the validity of a schema and return a function to validate data.

Fetching tools

data SchemaContext schema Source

Constructors

SchemaContext 

Fields

_scURI :: !(Maybe Text)

Must not include a URI fragment, e.g. use "http://example.com/foo" not "http://example.com/foo#bar".

This is the URI identifying the document containing the schema. It's different than the schema's "id" field, which controls scope when resolving references contained in the schema.

_scSchema :: !schema
 

Instances

Eq schema => Eq (SchemaContext schema) Source 
Show schema => Show (SchemaContext schema) Source 

data SchemaCache schema Source

Constructors

SchemaCache 

Fields

_startingSchema :: !schema

Used to resolve relative references.

_cachedSchemas :: !(URISchemaMap schema)
 

Instances

Eq schema => Eq (SchemaCache schema) Source 
Show schema => Show (SchemaCache schema) Source 

Failure

data Failure Source

A version of Failure specialized for JSON Schema Draft 4.

data ValidatorChain Source

Constructors

MultipleOf 
Maximum 
ExclusiveMaximum 
Minimum 
ExclusiveMinimum 
MaxLength 
MinLength 
PatternValidator 
MaxItems 
MinItems 
UniqueItems 
Items ValidatorChain 
AdditionalItemsBool 
AdditionalItemsObject ValidatorChain 
MaxProperties 
MinProperties 
Required 
SchemaDependency ValidatorChain 
PropertyDependency 
Properties ValidatorChain 
PatternProperties ValidatorChain 
AdditionalPropertiesBool 
AdditionalPropertiesObject ValidatorChain 
RefResolution

Indicates a reference that failed to resolve.

NOTE: The language agnostic test suite doesn't specify if this should cause a validation error or should allow data to pass. We choose to return a validation error.

Also note that ideally we would enforce in the type system that any failing references be dealt with before valididation. Then this could be removed entirely.

Ref ValidatorChain 
Enum 
TypeValidator 
AllOf ValidatorChain 
AnyOf 
OneOf 
NotValidator 

Other Draft 4 things exported just in case

schemaValidity :: Schema -> [Failure] Source

In normal situations just use checkSchema, which is a combination of schemaValidity and runValidate.

runValidate :: SchemaCache Schema -> SchemaContext Schema -> Value -> [Failure] Source

In normal situations just use checkSchema, which is a combination of schemaValidity and runValidate.