Skip to content
Effect Days 2026 Get your ticket

JSONSchema

23 exports Added in v3.10.0 Source

Encoding

fromAST

Added in v3.11.5 Source

Returns a JSON Schema with additional options and definitions.

Warning

This function is experimental and subject to change.

Options

  • definitions: A record of definitions that are included in the schema.
  • definitionPath: The path to the definitions within the schema (defaults to "#/$defs/").
  • target: Which spec to target. Possible values are:
    • 'jsonSchema7': JSON Schema draft-07 (default behavior).
    • 'jsonSchema2019-09': JSON Schema draft-2019-09.
    • 'openApi3.1': OpenAPI 3.1.
  • topLevelReferenceStrategy: Controls the handling of the top-level reference. Possible values are:
    • "keep": Keep the top-level reference (default behavior).
    • "skip": Skip the top-level reference.
  • additionalPropertiesStrategy: Controls the handling of additional properties. Possible values are:
    • "strict": Disallow additional properties (default behavior).
    • "allow": Allow additional properties.

Signature

declare function fromAST(ast: AST, options: {
readonly additionalPropertiesStrategy?: AdditionalPropertiesStrategy;
readonly definitionPath?: string;
readonly definitions: Record<string, JsonSchema7>;
readonly target?: Target;
readonly topLevelReferenceStrategy?: TopLevelReferenceStrategy;
}): JsonSchema7

make

Added in v3.10.0 Source

Generates a JSON Schema from a schema.

Options

  • target: The target JSON Schema version. Possible values are:
    • "jsonSchema7": JSON Schema draft-07 (default behavior).
    • "jsonSchema2019-09": JSON Schema draft-2019-09.
    • "jsonSchema2020-12": JSON Schema draft-2020-12.
    • "openApi3.1": OpenAPI 3.1.

Signature

declare function make<A, I, R>(schema: Schema<A, I, R>, options?: {
readonly target?: Target;
}): JsonSchema7Root

Model

JsonSchema7 type

Added in v3.10.0 Source

Signature

type JsonSchema7 = JsonSchema7Never | JsonSchema7Any | JsonSchema7Unknown | JsonSchema7Void | JsonSchema7object | JsonSchema7empty | JsonSchema7Ref | JsonSchema7Null | JsonSchema7String | JsonSchema7Number | JsonSchema7Integer | JsonSchema7Boolean | JsonSchema7Array | JsonSchema7Enum | JsonSchema7Enums | JsonSchema7AnyOf | JsonSchema7Object

JsonSchema7Any interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Any extends JsonSchemaAnnotations {
$id: "/schemas/any";
}

JsonSchema7AnyOf interface

Added in v3.10.0 Source

Signature

interface JsonSchema7AnyOf extends JsonSchemaAnnotations {
anyOf: Array<JsonSchema7>;
}

JsonSchema7Array interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Array extends JsonSchemaAnnotations {
additionalItems?: boolean | JsonSchema7;
items?: false | JsonSchema7 | Array<JsonSchema7>;
maxItems?: number;
minItems?: number;
prefixItems?: Array<JsonSchema7>;
type: "array";
}

JsonSchema7Boolean interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Boolean extends JsonSchemaAnnotations {
type: "boolean";
}

JsonSchema7empty interface

Added in v3.10.0 Source

Signature

interface JsonSchema7empty extends JsonSchemaAnnotations {
$id: "/schemas/%7B%7D";
anyOf: [{
type: "object";
}, {
type: "array";
}];
}

JsonSchema7Enum interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Enum extends JsonSchemaAnnotations {
enum: Array<string | number | boolean>;
type?: "string" | "number" | "boolean";
}

JsonSchema7Enums interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Enums extends JsonSchemaAnnotations {
$comment: "/schemas/enums";
anyOf: Array<{
enum: [string | number];
title: string;
type: "string" | "number";
}>;
}

JsonSchema7Integer interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Integer extends JsonSchema7Numeric {
type: "integer";
}

JsonSchema7Never interface

Added in v3.11.5 Source

Signature

interface JsonSchema7Never extends JsonSchemaAnnotations {
$id: "/schemas/never";
not: {};
}

JsonSchema7Null interface

Added in v3.11.7 Source

Signature

interface JsonSchema7Null extends JsonSchemaAnnotations {
type: "null";
}

JsonSchema7Number interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Number extends JsonSchema7Numeric {
type: "number";
}

JsonSchema7Numeric interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Numeric extends JsonSchemaAnnotations {
allOf?: Array<{
exclusiveMaximum?: number;
exclusiveMinimum?: number;
maximum?: number;
minimum?: number;
multipleOf?: number;
}>;
exclusiveMaximum?: number;
exclusiveMinimum?: number;
maximum?: number;
minimum?: number;
multipleOf?: number;
}

JsonSchema7object interface

Added in v3.10.0 Source

Signature

interface JsonSchema7object extends JsonSchemaAnnotations {
$id: "/schemas/object";
anyOf: [{
type: "object";
}, {
type: "array";
}];
}

JsonSchema7Object interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Object extends JsonSchemaAnnotations {
additionalProperties?: boolean | JsonSchema7;
patternProperties?: Record<string, JsonSchema7>;
properties: Record<string, JsonSchema7>;
propertyNames?: JsonSchema7;
required: Array<string>;
type: "object";
}

JsonSchema7Ref interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Ref extends JsonSchemaAnnotations {
$ref: string;
}

JsonSchema7Root type

Added in v3.10.0 Source

Signature

type JsonSchema7Root = JsonSchema7 & {
$defs?: Record<string, JsonSchema7>;
$schema?: string;
}

JsonSchema7String interface

Added in v3.10.0 Source

Signature

interface JsonSchema7String extends JsonSchemaAnnotations {
allOf?: Array<{
maxLength?: number;
minLength?: number;
pattern?: string;
}>;
contentMediaType?: string;
format?: string;
maxLength?: number;
minLength?: number;
pattern?: string;
type: "string";
}

JsonSchema7Unknown interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Unknown extends JsonSchemaAnnotations {
$id: "/schemas/unknown";
}

JsonSchema7Void interface

Added in v3.10.0 Source

Signature

interface JsonSchema7Void extends JsonSchemaAnnotations {
$id: "/schemas/void";
}

JsonSchemaAnnotations interface

Added in v3.10.0 Source

Signature

interface JsonSchemaAnnotations {
default?: JsonValue;
description?: string;
examples?: Array<JsonValue>;
title?: string;
}