1602/json-schema/3.0.0

NOTE: this package is not compatible with Elm 0.19.1

Json.Schema.Builder

Convenience API to build a valid JSON schema

Definition

= SchemaBuilder
{ errors : List String
, schema : Maybe SubSchema
, bool : Maybe Bool
}

Builder for JSON schema providing an API like this:

buildSchema
    |> withTitle "My object"
    |> withProperties
        [ ( "foo"
          , buildSchema
                |> withType "string" )
        , ( "bar"
          , buildSchema
                |> withType "integer"
                |> withMaximum 10
          )
        ]

Schema builder creation

buildSchema : SchemaBuilder

Create schema builder with blank schema

boolSchema : Bool -> SchemaBuilder

Create boolean schema

toSchema : SchemaBuilder -> Result String Schema

Extract JSON Schema from the builder

encode : Int -> Schema -> String

Encode schema into a builder code (elm)

Building up schema

Type

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

Meta

withTitle : String -> SchemaBuilder -> SchemaBuilder
withDescription : String -> SchemaBuilder -> SchemaBuilder
withDefault : Value -> SchemaBuilder -> SchemaBuilder
withExamples : List Value -> SchemaBuilder -> SchemaBuilder
withDefinitions : List ( String, SchemaBuilder ) -> SchemaBuilder -> SchemaBuilder

JSON-Schema

withId : String -> SchemaBuilder -> SchemaBuilder
withRef : String -> SchemaBuilder -> SchemaBuilder

Numeric validations

The following validations are only applicable to numeric values and will always succeed for any type other than number and integer

withMultipleOf : Float -> SchemaBuilder -> SchemaBuilder
withMaximum : Float -> SchemaBuilder -> SchemaBuilder
withMinimum : Float -> SchemaBuilder -> SchemaBuilder
withExclusiveMaximum : Float -> SchemaBuilder -> SchemaBuilder
withExclusiveMinimum : Float -> SchemaBuilder -> SchemaBuilder

String validations

withMaxLength : Int -> SchemaBuilder -> SchemaBuilder
withMinLength : Int -> SchemaBuilder -> SchemaBuilder
withPattern : String -> SchemaBuilder -> SchemaBuilder
withFormat : String -> SchemaBuilder -> SchemaBuilder

Array validations

withItems : List SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withItem : SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withAdditionalItems : SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withMaxItems : Int -> SchemaBuilder -> SchemaBuilder
withMinItems : Int -> SchemaBuilder -> SchemaBuilder
withUniqueItems : Bool -> SchemaBuilder -> SchemaBuilder
withContains : SchemaBuilder -> SchemaBuilder -> SchemaBuilder

Set the contains property of JSON schema to a sub-schema.

buildSchema
    |> withContains
        (buildSchema
            |> withType "string"
        )

Object validations

withMaxProperties : Int -> SchemaBuilder -> SchemaBuilder
withMinProperties : 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

Generic validations

withEnum : List Value -> SchemaBuilder -> SchemaBuilder
withConst : Value -> SchemaBuilder -> SchemaBuilder
withAllOf : List SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withAnyOf : List SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withOneOf : List SchemaBuilder -> SchemaBuilder -> SchemaBuilder
withNot : SchemaBuilder -> SchemaBuilder -> SchemaBuilder

Validation

validate : Value -> SchemaBuilder -> Result (List Error) Value

Validate value using schema controlled by builder.