Convenience API to build a valid JSON schema
Builder for JSON schema providing an API like this:
buildSchema
|> withTitle "My object"
|> withProperties
[ ( "foo"
, buildSchema
|> withType "string"
)
, ( "bar"
, buildSchema
|> withType "integer"
|> withMaximum 10
)
]
buildSchema : SchemaBuilder
Create schema builder with blank schema
boolSchema : Basics.Bool -> SchemaBuilder
Create boolean schema
toSchema : SchemaBuilder -> Result String Json.Schema.Definitions.Schema
Extract JSON Schema from the builder
encode : Basics.Int -> Json.Schema.Definitions.Schema -> String
Encode schema into a builder code (elm)
JSON Schema spec allows type to be string or array of strings. There are three
groups of types produced: single types (e.g. "string"
), nullable types (e.g. ["string", "null"]
)
and union types (e.g. ["string", "object"]
)
withType : String -> SchemaBuilder -> SchemaBuilder
Set the type
property of JSON schema to a specific type, accepts strings
buildSchema
|> withType "boolean"
withNullableType : String -> SchemaBuilder -> SchemaBuilder
Set the type
property of JSON schema to a nullable type.
buildSchema
|> withNullableType "string"
withUnionType : List String -> SchemaBuilder -> SchemaBuilder
Set the type
property of JSON schema to an union type.
buildSchema
|> withUnionType [ "string", "object" ]
withTitle : String -> SchemaBuilder -> SchemaBuilder
withDescription : String -> SchemaBuilder -> SchemaBuilder
withDefault : Json.Decode.Value -> SchemaBuilder -> SchemaBuilder
withExamples : List Json.Decode.Value -> SchemaBuilder -> SchemaBuilder
withDefinitions : List ( String, SchemaBuilder ) -> SchemaBuilder -> SchemaBuilder
withId : String -> SchemaBuilder -> SchemaBuilder
withRef : String -> SchemaBuilder -> SchemaBuilder
withCustomKeyword : String -> Json.Decode.Value -> SchemaBuilder -> SchemaBuilder
The following validations are only applicable to numeric values and
will always succeed for any type other than number
and integer
withMultipleOf : Basics.Float -> SchemaBuilder -> SchemaBuilder
withMaximum : Basics.Float -> SchemaBuilder -> SchemaBuilder
withMinimum : Basics.Float -> SchemaBuilder -> SchemaBuilder
withExclusiveMaximum : Basics.Float -> SchemaBuilder -> SchemaBuilder
withExclusiveMinimum : Basics.Float -> SchemaBuilder -> SchemaBuilder
withMaxLength : Basics.Int -> SchemaBuilder -> SchemaBuilder
withMinLength : Basics.Int -> SchemaBuilder -> SchemaBuilder
withPattern : String -> SchemaBuilder -> SchemaBuilder
withFormat : String -> SchemaBuilder -> SchemaBuilder
withItems : List SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withItem : SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withAdditionalItems : SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withMaxItems : Basics.Int -> SchemaBuilder -> SchemaBuilder
withMinItems : Basics.Int -> SchemaBuilder -> SchemaBuilder
withUniqueItems : Basics.Bool -> SchemaBuilder -> SchemaBuilder
withContains : SchemaBuilder -> SchemaBuilder -> SchemaBuilder
Set the contains
property of JSON schema to a sub-schema.
buildSchema
|> withContains
(buildSchema
|> withType "string"
)
withMaxProperties : Basics.Int -> SchemaBuilder -> SchemaBuilder
withMinProperties : Basics.Int -> SchemaBuilder -> SchemaBuilder
withRequired : List String -> SchemaBuilder -> SchemaBuilder
withProperties : List ( String, SchemaBuilder ) -> SchemaBuilder -> SchemaBuilder
withPatternProperties : List ( String, SchemaBuilder ) -> SchemaBuilder -> SchemaBuilder
withAdditionalProperties : SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withSchemaDependency : String -> SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withPropNamesDependency : String -> List String -> SchemaBuilder -> SchemaBuilder
withPropertyNames : SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withEnum : List Json.Decode.Value -> SchemaBuilder -> SchemaBuilder
withConst : Json.Decode.Value -> SchemaBuilder -> SchemaBuilder
withAllOf : List SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withAnyOf : List SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withOneOf : List SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withNot : SchemaBuilder -> SchemaBuilder -> SchemaBuilder
validate : Json.Schema.Validation.ValidationOptions -> Json.Decode.Value -> SchemaBuilder -> Result (List Json.Schema.Validation.Error) Json.Decode.Value
Validate value using schema controlled by builder.