123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751 |
- // Type definitions for json-schema 4.0, 6.0 and 7.0
- // Project: https://github.com/kriszyp/json-schema
- // Definitions by: Boris Cherny <https://github.com/bcherny>
- // Cyrille Tuzi <https://github.com/cyrilletuzi>
- // Lucian Buzzo <https://github.com/lucianbuzzo>
- // Roland Groza <https://github.com/rolandjitsu>
- // Jason Kwok <https://github.com/JasonHK>
- // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
- // TypeScript Version: 2.2
-
- //==================================================================================================
- // JSON Schema Draft 04
- //==================================================================================================
-
- /**
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
- */
- export type JSONSchema4TypeName =
- | 'string' //
- | 'number'
- | 'integer'
- | 'boolean'
- | 'object'
- | 'array'
- | 'null'
- | 'any';
-
- /**
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-04#section-3.5
- */
- export type JSONSchema4Type =
- | string //
- | number
- | boolean
- | JSONSchema4Object
- | JSONSchema4Array
- | null;
-
- // Workaround for infinite type recursion
- export interface JSONSchema4Object {
- [key: string]: JSONSchema4Type;
- }
-
- // Workaround for infinite type recursion
- // https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540
- export interface JSONSchema4Array extends Array<JSONSchema4Type> {}
-
- /**
- * Meta schema
- *
- * Recommended values:
- * - 'http://json-schema.org/schema#'
- * - 'http://json-schema.org/hyper-schema#'
- * - 'http://json-schema.org/draft-04/schema#'
- * - 'http://json-schema.org/draft-04/hyper-schema#'
- * - 'http://json-schema.org/draft-03/schema#'
- * - 'http://json-schema.org/draft-03/hyper-schema#'
- *
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-5
- */
- export type JSONSchema4Version = string;
-
- /**
- * JSON Schema V4
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-04
- */
- export interface JSONSchema4 {
- id?: string;
- $ref?: string;
- $schema?: JSONSchema4Version;
-
- /**
- * This attribute is a string that provides a short description of the
- * instance property.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.21
- */
- title?: string;
-
- /**
- * This attribute is a string that provides a full description of the of
- * purpose the instance property.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.22
- */
- description?: string;
-
- default?: JSONSchema4Type;
- multipleOf?: number;
- maximum?: number;
- exclusiveMaximum?: boolean;
- minimum?: number;
- exclusiveMinimum?: boolean;
- maxLength?: number;
- minLength?: number;
- pattern?: string;
-
- /**
- * May only be defined when "items" is defined, and is a tuple of JSONSchemas.
- *
- * This provides a definition for additional items in an array instance
- * when tuple definitions of the items is provided. This can be false
- * to indicate additional items in the array are not allowed, or it can
- * be a schema that defines the schema of the additional items.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.6
- */
- additionalItems?: boolean | JSONSchema4;
-
- /**
- * This attribute defines the allowed items in an instance array, and
- * MUST be a schema or an array of schemas. The default value is an
- * empty schema which allows any value for items in the instance array.
- *
- * When this attribute value is a schema and the instance value is an
- * array, then all the items in the array MUST be valid according to the
- * schema.
- *
- * When this attribute value is an array of schemas and the instance
- * value is an array, each position in the instance array MUST conform
- * to the schema in the corresponding position for this array. This
- * called tuple typing. When tuple typing is used, additional items are
- * allowed, disallowed, or constrained by the "additionalItems"
- * (Section 5.6) attribute using the same rules as
- * "additionalProperties" (Section 5.4) for objects.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.5
- */
- items?: JSONSchema4 | JSONSchema4[];
-
- maxItems?: number;
- minItems?: number;
- uniqueItems?: boolean;
- maxProperties?: number;
- minProperties?: number;
-
- /**
- * This attribute indicates if the instance must have a value, and not
- * be undefined. This is false by default, making the instance
- * optional.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.7
- */
- required?: false | string[];
-
- /**
- * This attribute defines a schema for all properties that are not
- * explicitly defined in an object type definition. If specified, the
- * value MUST be a schema or a boolean. If false is provided, no
- * additional properties are allowed beyond the properties defined in
- * the schema. The default value is an empty schema which allows any
- * value for additional properties.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.4
- */
- additionalProperties?: boolean | JSONSchema4;
-
- definitions?: {
- [k: string]: JSONSchema4;
- };
-
- /**
- * This attribute is an object with property definitions that define the
- * valid values of instance object property values. When the instance
- * value is an object, the property values of the instance object MUST
- * conform to the property definitions in this object. In this object,
- * each property definition's value MUST be a schema, and the property's
- * name MUST be the name of the instance property that it defines. The
- * instance property value MUST be valid according to the schema from
- * the property definition. Properties are considered unordered, the
- * order of the instance properties MAY be in any order.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.2
- */
- properties?: {
- [k: string]: JSONSchema4;
- };
-
- /**
- * This attribute is an object that defines the schema for a set of
- * property names of an object instance. The name of each property of
- * this attribute's object is a regular expression pattern in the ECMA
- * 262/Perl 5 format, while the value is a schema. If the pattern
- * matches the name of a property on the instance object, the value of
- * the instance's property MUST be valid against the pattern name's
- * schema value.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.3
- */
- patternProperties?: {
- [k: string]: JSONSchema4;
- };
- dependencies?: {
- [k: string]: JSONSchema4 | string[];
- };
-
- /**
- * This provides an enumeration of all possible values that are valid
- * for the instance property. This MUST be an array, and each item in
- * the array represents a possible value for the instance value. If
- * this attribute is defined, the instance value MUST be one of the
- * values in the array in order for the schema to be valid.
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.19
- */
- enum?: JSONSchema4Type[];
-
- /**
- * A single type, or a union of simple types
- */
- type?: JSONSchema4TypeName | JSONSchema4TypeName[];
-
- allOf?: JSONSchema4[];
- anyOf?: JSONSchema4[];
- oneOf?: JSONSchema4[];
- not?: JSONSchema4;
-
- /**
- * The value of this property MUST be another schema which will provide
- * a base schema which the current schema will inherit from. The
- * inheritance rules are such that any instance that is valid according
- * to the current schema MUST be valid according to the referenced
- * schema. This MAY also be an array, in which case, the instance MUST
- * be valid for all the schemas in the array. A schema that extends
- * another schema MAY define additional attributes, constrain existing
- * attributes, or add other constraints.
- *
- * Conceptually, the behavior of extends can be seen as validating an
- * instance against all constraints in the extending schema as well as
- * the extended schema(s).
- *
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.26
- */
- extends?: string | string[];
-
- /**
- * @see https://tools.ietf.org/html/draft-zyp-json-schema-04#section-5.6
- */
- [k: string]: any;
-
- format?: string;
- }
-
- //==================================================================================================
- // JSON Schema Draft 06
- //==================================================================================================
-
- export type JSONSchema6TypeName =
- | 'string' //
- | 'number'
- | 'integer'
- | 'boolean'
- | 'object'
- | 'array'
- | 'null'
- | 'any';
-
- export type JSONSchema6Type =
- | string //
- | number
- | boolean
- | JSONSchema6Object
- | JSONSchema6Array
- | null;
-
- // Workaround for infinite type recursion
- export interface JSONSchema6Object {
- [key: string]: JSONSchema6Type;
- }
-
- // Workaround for infinite type recursion
- // https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540
- export interface JSONSchema6Array extends Array<JSONSchema6Type> {}
-
- /**
- * Meta schema
- *
- * Recommended values:
- * - 'http://json-schema.org/schema#'
- * - 'http://json-schema.org/hyper-schema#'
- * - 'http://json-schema.org/draft-06/schema#'
- * - 'http://json-schema.org/draft-06/hyper-schema#'
- *
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-5
- */
- export type JSONSchema6Version = string;
-
- /**
- * JSON Schema V6
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01
- */
- export type JSONSchema6Definition = JSONSchema6 | boolean;
- export interface JSONSchema6 {
- $id?: string;
- $ref?: string;
- $schema?: JSONSchema6Version;
-
- /**
- * Must be strictly greater than 0.
- * A numeric instance is valid only if division by this keyword's value results in an integer.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.1
- */
- multipleOf?: number;
-
- /**
- * Representing an inclusive upper limit for a numeric instance.
- * This keyword validates only if the instance is less than or exactly equal to "maximum".
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.2
- */
- maximum?: number;
-
- /**
- * Representing an exclusive upper limit for a numeric instance.
- * This keyword validates only if the instance is strictly less than (not equal to) to "exclusiveMaximum".
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.3
- */
- exclusiveMaximum?: number;
-
- /**
- * Representing an inclusive lower limit for a numeric instance.
- * This keyword validates only if the instance is greater than or exactly equal to "minimum".
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.4
- */
- minimum?: number;
-
- /**
- * Representing an exclusive lower limit for a numeric instance.
- * This keyword validates only if the instance is strictly greater than (not equal to) to "exclusiveMinimum".
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.5
- */
- exclusiveMinimum?: number;
-
- /**
- * Must be a non-negative integer.
- * A string instance is valid against this keyword if its length is less than, or equal to, the value of this keyword.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.6
- */
- maxLength?: number;
-
- /**
- * Must be a non-negative integer.
- * A string instance is valid against this keyword if its length is greater than, or equal to, the value of this keyword.
- * Omitting this keyword has the same behavior as a value of 0.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.7
- */
- minLength?: number;
-
- /**
- * Should be a valid regular expression, according to the ECMA 262 regular expression dialect.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.8
- */
- pattern?: string;
-
- /**
- * This keyword determines how child instances validate for arrays, and does not directly validate the immediate instance itself.
- * Omitting this keyword has the same behavior as an empty schema.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.9
- */
- items?: JSONSchema6Definition | JSONSchema6Definition[];
-
- /**
- * This keyword determines how child instances validate for arrays, and does not directly validate the immediate instance itself.
- * If "items" is an array of schemas, validation succeeds if every instance element
- * at a position greater than the size of "items" validates against "additionalItems".
- * Otherwise, "additionalItems" MUST be ignored, as the "items" schema
- * (possibly the default value of an empty schema) is applied to all elements.
- * Omitting this keyword has the same behavior as an empty schema.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.10
- */
- additionalItems?: JSONSchema6Definition;
-
- /**
- * Must be a non-negative integer.
- * An array instance is valid against "maxItems" if its size is less than, or equal to, the value of this keyword.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.11
- */
- maxItems?: number;
-
- /**
- * Must be a non-negative integer.
- * An array instance is valid against "maxItems" if its size is greater than, or equal to, the value of this keyword.
- * Omitting this keyword has the same behavior as a value of 0.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.12
- */
- minItems?: number;
-
- /**
- * If this keyword has boolean value false, the instance validates successfully.
- * If it has boolean value true, the instance validates successfully if all of its elements are unique.
- * Omitting this keyword has the same behavior as a value of false.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.13
- */
- uniqueItems?: boolean;
-
- /**
- * An array instance is valid against "contains" if at least one of its elements is valid against the given schema.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.14
- */
- contains?: JSONSchema6Definition;
-
- /**
- * Must be a non-negative integer.
- * An object instance is valid against "maxProperties" if its number of properties is less than, or equal to, the value of this keyword.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.15
- */
- maxProperties?: number;
-
- /**
- * Must be a non-negative integer.
- * An object instance is valid against "maxProperties" if its number of properties is greater than,
- * or equal to, the value of this keyword.
- * Omitting this keyword has the same behavior as a value of 0.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.16
- */
- minProperties?: number;
-
- /**
- * Elements of this array must be unique.
- * An object instance is valid against this keyword if every item in the array is the name of a property in the instance.
- * Omitting this keyword has the same behavior as an empty array.
- *
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.17
- */
- required?: string[];
-
- /**
- * This keyword determines how child instances validate for objects, and does not directly validate the immediate instance itself.
- * Validation succeeds if, for each name that appears in both the instance and as a name within this keyword's value,
- * the child instance for that name successfully validates against the corresponding schema.
- * Omitting this keyword has the same behavior as an empty object.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.18
- */
- properties?: {
- [k: string]: JSONSchema6Definition;
- };
-
- /**
- * This attribute is an object that defines the schema for a set of property names of an object instance.
- * The name of each property of this attribute's object is a regular expression pattern in the ECMA 262, while the value is a schema.
- * If the pattern matches the name of a property on the instance object, the value of the instance's property
- * MUST be valid against the pattern name's schema value.
- * Omitting this keyword has the same behavior as an empty object.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.19
- */
- patternProperties?: {
- [k: string]: JSONSchema6Definition;
- };
-
- /**
- * This attribute defines a schema for all properties that are not explicitly defined in an object type definition.
- * If specified, the value MUST be a schema or a boolean.
- * If false is provided, no additional properties are allowed beyond the properties defined in the schema.
- * The default value is an empty schema which allows any value for additional properties.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.20
- */
- additionalProperties?: JSONSchema6Definition;
-
- /**
- * This keyword specifies rules that are evaluated if the instance is an object and contains a certain property.
- * Each property specifies a dependency.
- * If the dependency value is an array, each element in the array must be unique.
- * Omitting this keyword has the same behavior as an empty object.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.21
- */
- dependencies?: {
- [k: string]: JSONSchema6Definition | string[];
- };
-
- /**
- * Takes a schema which validates the names of all properties rather than their values.
- * Note the property name that the schema is testing will always be a string.
- * Omitting this keyword has the same behavior as an empty schema.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.22
- */
- propertyNames?: JSONSchema6Definition;
-
- /**
- * This provides an enumeration of all possible values that are valid
- * for the instance property. This MUST be an array, and each item in
- * the array represents a possible value for the instance value. If
- * this attribute is defined, the instance value MUST be one of the
- * values in the array in order for the schema to be valid.
- *
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.23
- */
- enum?: JSONSchema6Type[];
-
- /**
- * More readable form of a one-element "enum"
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.24
- */
- const?: JSONSchema6Type;
-
- /**
- * A single type, or a union of simple types
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.25
- */
- type?: JSONSchema6TypeName | JSONSchema6TypeName[];
-
- /**
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.26
- */
- allOf?: JSONSchema6Definition[];
-
- /**
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.27
- */
- anyOf?: JSONSchema6Definition[];
-
- /**
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.28
- */
- oneOf?: JSONSchema6Definition[];
-
- /**
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-6.29
- */
- not?: JSONSchema6Definition;
-
- /**
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.1
- */
- definitions?: {
- [k: string]: JSONSchema6Definition;
- };
-
- /**
- * This attribute is a string that provides a short description of the instance property.
- *
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.2
- */
- title?: string;
-
- /**
- * This attribute is a string that provides a full description of the of purpose the instance property.
- *
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.2
- */
- description?: string;
-
- /**
- * This keyword can be used to supply a default JSON value associated with a particular schema.
- * It is RECOMMENDED that a default value be valid against the associated schema.
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.3
- */
- default?: JSONSchema6Type;
-
- /**
- * Array of examples with no validation effect the value of "default" is usable as an example without repeating it under this keyword
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-7.4
- */
- examples?: JSONSchema6Type[];
-
- /**
- * @see https://tools.ietf.org/html/draft-wright-json-schema-validation-01#section-8
- */
- format?: string;
- }
-
- //==================================================================================================
- // JSON Schema Draft 07
- //==================================================================================================
- // https://tools.ietf.org/html/draft-handrews-json-schema-validation-01
- //--------------------------------------------------------------------------------------------------
-
- /**
- * Primitive type
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1.1
- */
- export type JSONSchema7TypeName =
- | 'string' //
- | 'number'
- | 'integer'
- | 'boolean'
- | 'object'
- | 'array'
- | 'null';
-
- /**
- * Primitive type
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1.1
- */
- export type JSONSchema7Type =
- | string //
- | number
- | boolean
- | JSONSchema7Object
- | JSONSchema7Array
- | null;
-
- // Workaround for infinite type recursion
- export interface JSONSchema7Object {
- [key: string]: JSONSchema7Type;
- }
-
- // Workaround for infinite type recursion
- // https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540
- export interface JSONSchema7Array extends Array<JSONSchema7Type> {}
-
- /**
- * Meta schema
- *
- * Recommended values:
- * - 'http://json-schema.org/schema#'
- * - 'http://json-schema.org/hyper-schema#'
- * - 'http://json-schema.org/draft-07/schema#'
- * - 'http://json-schema.org/draft-07/hyper-schema#'
- *
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-5
- */
- export type JSONSchema7Version = string;
-
- /**
- * JSON Schema v7
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01
- */
- export type JSONSchema7Definition = JSONSchema7 | boolean;
- export interface JSONSchema7 {
- $id?: string;
- $ref?: string;
- $schema?: JSONSchema7Version;
- $comment?: string;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1
- */
- type?: JSONSchema7TypeName | JSONSchema7TypeName[];
- enum?: JSONSchema7Type[];
- const?: JSONSchema7Type;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.2
- */
- multipleOf?: number;
- maximum?: number;
- exclusiveMaximum?: number;
- minimum?: number;
- exclusiveMinimum?: number;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.3
- */
- maxLength?: number;
- minLength?: number;
- pattern?: string;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.4
- */
- items?: JSONSchema7Definition | JSONSchema7Definition[];
- additionalItems?: JSONSchema7Definition;
- maxItems?: number;
- minItems?: number;
- uniqueItems?: boolean;
- contains?: JSONSchema7;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.5
- */
- maxProperties?: number;
- minProperties?: number;
- required?: string[];
- properties?: {
- [key: string]: JSONSchema7Definition;
- };
- patternProperties?: {
- [key: string]: JSONSchema7Definition;
- };
- additionalProperties?: JSONSchema7Definition;
- dependencies?: {
- [key: string]: JSONSchema7Definition | string[];
- };
- propertyNames?: JSONSchema7Definition;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.6
- */
- if?: JSONSchema7Definition;
- then?: JSONSchema7Definition;
- else?: JSONSchema7Definition;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.7
- */
- allOf?: JSONSchema7Definition[];
- anyOf?: JSONSchema7Definition[];
- oneOf?: JSONSchema7Definition[];
- not?: JSONSchema7Definition;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-7
- */
- format?: string;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-8
- */
- contentMediaType?: string;
- contentEncoding?: string;
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-9
- */
- definitions?: {
- [key: string]: JSONSchema7Definition;
- };
-
- /**
- * @see https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-10
- */
- title?: string;
- description?: string;
- default?: JSONSchema7Type;
- readOnly?: boolean;
- writeOnly?: boolean;
- examples?: JSONSchema7Type;
- }
-
- export interface ValidationResult {
- valid: boolean;
- errors: ValidationError[];
- }
-
- export interface ValidationError {
- property: string;
- message: string;
- }
-
- /**
- * To use the validator call JSONSchema.validate with an instance object and an optional schema object.
- * If a schema is provided, it will be used to validate. If the instance object refers to a schema (self-validating),
- * that schema will be used to validate and the schema parameter is not necessary (if both exist,
- * both validations will occur).
- */
- export function validate(instance: {}, schema: JSONSchema4 | JSONSchema6 | JSONSchema7): ValidationResult;
-
- /**
- * The checkPropertyChange method will check to see if an value can legally be in property with the given schema
- * This is slightly different than the validate method in that it will fail if the schema is readonly and it will
- * not check for self-validation, it is assumed that the passed in value is already internally valid.
- */
- export function checkPropertyChange(
- value: any,
- schema: JSONSchema4 | JSONSchema6 | JSONSchema7,
- property: string,
- ): ValidationResult;
-
- /**
- * This checks to ensure that the result is valid and will throw an appropriate error message if it is not.
- */
- export function mustBeValid(result: ValidationResult): void;
|