Skip to content

Interface: Root

Properties

PropertyTypeDescription
cacheCacheConfiguration-
overridesymbolA special value used with any.allow(), any.invalid(), and any.valid() as the first value to reset any previously set values.
ValidationError(message: string, details: ValidationErrorItem_2[], original: any) => ValidationError_2-
versionstringCurrent version of the joi package.

Methods

allow()

ts
allow(...values: any[]): Schema_2;

Whitelists a value

Parameters

ParameterType
...valuesany[]

Returns

Schema_2


alt()

Call Signature

ts
alt<A, B>(params: [SchemaLike_2<A>, SchemaLike_2<B>]): AlternativesSchema_2<A | B>;

Alias for alternatives

Type Parameters
Type Parameter
A
B
Parameters
ParameterType
params[SchemaLike_2<A>, SchemaLike_2<B>]
Returns

AlternativesSchema_2<A | B>

Call Signature

ts
alt<A, B, C>(params: [SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>]): AlternativesSchema_2<A | B | C>;
Type Parameters
Type Parameter
A
B
C
Parameters
ParameterType
params[SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>]
Returns

AlternativesSchema_2<A | B | C>

Call Signature

ts
alt<A, B, C, D>(params: [SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>, SchemaLike_2<D>]): AlternativesSchema_2<A | B | C | D>;
Type Parameters
Type Parameter
A
B
C
D
Parameters
ParameterType
params[SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>, SchemaLike_2<D>]
Returns

AlternativesSchema_2<A | B | C | D>

Call Signature

ts
alt<A, B, C, D, E>(params: [SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>, SchemaLike_2<D>, SchemaLike_2<E>]): AlternativesSchema_2<A | B | C | D | E>;
Type Parameters
Type Parameter
A
B
C
D
E
Parameters
ParameterType
params[SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>, SchemaLike_2<D>, SchemaLike_2<E>]
Returns

AlternativesSchema_2<A | B | C | D | E>

Call Signature

ts
alt<A, B>(a: SchemaLike_2<A>, b: SchemaLike_2<B>): AlternativesSchema_2<A | B>;
Type Parameters
Type Parameter
A
B
Parameters
ParameterType
aSchemaLike_2<A>
bSchemaLike_2<B>
Returns

AlternativesSchema_2<A | B>

Call Signature

ts
alt<A, B, C>(
   a: SchemaLike_2<A>,
   b: SchemaLike_2<B>,
c: SchemaLike_2<C>): AlternativesSchema_2<A | B | C>;
Type Parameters
Type Parameter
A
B
C
Parameters
ParameterType
aSchemaLike_2<A>
bSchemaLike_2<B>
cSchemaLike_2<C>
Returns

AlternativesSchema_2<A | B | C>

Call Signature

ts
alt<A, B, C, D>(
   a: SchemaLike_2<A>,
   b: SchemaLike_2<B>,
   c: SchemaLike_2<C>,
d: SchemaLike_2<D>): AlternativesSchema_2<A | B | C | D>;
Type Parameters
Type Parameter
A
B
C
D
Parameters
ParameterType
aSchemaLike_2<A>
bSchemaLike_2<B>
cSchemaLike_2<C>
dSchemaLike_2<D>
Returns

AlternativesSchema_2<A | B | C | D>

Call Signature

ts
alt<A, B, C, D, E>(
   a: SchemaLike_2<A>,
   b: SchemaLike_2<B>,
   c: SchemaLike_2<C>,
   d: SchemaLike_2<D>,
e: SchemaLike_2<E>): AlternativesSchema_2<A | B | C | D | E>;
Type Parameters
Type Parameter
A
B
C
D
E
Parameters
ParameterType
aSchemaLike_2<A>
bSchemaLike_2<B>
cSchemaLike_2<C>
dSchemaLike_2<D>
eSchemaLike_2<E>
Returns

AlternativesSchema_2<A | B | C | D | E>

Call Signature

ts
alt<TSchema>(types: SchemaLike_2<any>[]): AlternativesSchema_2<TSchema>;
Type Parameters
Type ParameterDefault type
TSchemaany
Parameters
ParameterType
typesSchemaLike_2<any>[]
Returns

AlternativesSchema_2<TSchema>

Call Signature

ts
alt<TSchema>(...types: SchemaLike_2<any>[]): AlternativesSchema_2<TSchema>;
Type Parameters
Type ParameterDefault type
TSchemaany
Parameters
ParameterType
...typesSchemaLike_2<any>[]
Returns

AlternativesSchema_2<TSchema>


alternatives()

Call Signature

ts
alternatives<A, B>(params: [SchemaLike_2<A>, SchemaLike_2<B>]): AlternativesSchema_2<A | B>;

Generates a type that will match one of the provided alternative schemas

Type Parameters
Type Parameter
A
B
Parameters
ParameterType
params[SchemaLike_2<A>, SchemaLike_2<B>]
Returns

AlternativesSchema_2<A | B>

Call Signature

ts
alternatives<A, B, C>(params: [SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>]): AlternativesSchema_2<A | B | C>;
Type Parameters
Type Parameter
A
B
C
Parameters
ParameterType
params[SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>]
Returns

AlternativesSchema_2<A | B | C>

Call Signature

ts
alternatives<A, B, C, D>(params: [SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>, SchemaLike_2<D>]): AlternativesSchema_2<A | B | C | D>;
Type Parameters
Type Parameter
A
B
C
D
Parameters
ParameterType
params[SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>, SchemaLike_2<D>]
Returns

AlternativesSchema_2<A | B | C | D>

Call Signature

ts
alternatives<A, B, C, D, E>(params: [SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>, SchemaLike_2<D>, SchemaLike_2<E>]): AlternativesSchema_2<A | B | C | D | E>;
Type Parameters
Type Parameter
A
B
C
D
E
Parameters
ParameterType
params[SchemaLike_2<A>, SchemaLike_2<B>, SchemaLike_2<C>, SchemaLike_2<D>, SchemaLike_2<E>]
Returns

AlternativesSchema_2<A | B | C | D | E>

Call Signature

ts
alternatives<A, B>(a: SchemaLike_2<A>, b: SchemaLike_2<B>): AlternativesSchema_2<A | B>;
Type Parameters
Type Parameter
A
B
Parameters
ParameterType
aSchemaLike_2<A>
bSchemaLike_2<B>
Returns

AlternativesSchema_2<A | B>

Call Signature

ts
alternatives<A, B, C>(
   a: SchemaLike_2<A>,
   b: SchemaLike_2<B>,
c: SchemaLike_2<C>): AlternativesSchema_2<A | B | C>;
Type Parameters
Type Parameter
A
B
C
Parameters
ParameterType
aSchemaLike_2<A>
bSchemaLike_2<B>
cSchemaLike_2<C>
Returns

AlternativesSchema_2<A | B | C>

Call Signature

ts
alternatives<A, B, C, D>(
   a: SchemaLike_2<A>,
   b: SchemaLike_2<B>,
   c: SchemaLike_2<C>,
d: SchemaLike_2<D>): AlternativesSchema_2<A | B | C | D>;
Type Parameters
Type Parameter
A
B
C
D
Parameters
ParameterType
aSchemaLike_2<A>
bSchemaLike_2<B>
cSchemaLike_2<C>
dSchemaLike_2<D>
Returns

AlternativesSchema_2<A | B | C | D>

Call Signature

ts
alternatives<A, B, C, D, E>(
   a: SchemaLike_2<A>,
   b: SchemaLike_2<B>,
   c: SchemaLike_2<C>,
   d: SchemaLike_2<D>,
e: SchemaLike_2<E>): AlternativesSchema_2<A | B | C | D | E>;
Type Parameters
Type Parameter
A
B
C
D
E
Parameters
ParameterType
aSchemaLike_2<A>
bSchemaLike_2<B>
cSchemaLike_2<C>
dSchemaLike_2<D>
eSchemaLike_2<E>
Returns

AlternativesSchema_2<A | B | C | D | E>

Call Signature

ts
alternatives<TSchema>(types: SchemaLike_2<TSchema>[]): AlternativesSchema_2<TSchema>;
Type Parameters
Type ParameterDefault type
TSchemaany
Parameters
ParameterType
typesSchemaLike_2<TSchema>[]
Returns

AlternativesSchema_2<TSchema>

Call Signature

ts
alternatives<TSchema>(...types: SchemaLike_2<TSchema>[]): AlternativesSchema_2<TSchema>;
Type Parameters
Type ParameterDefault type
TSchemaany
Parameters
ParameterType
...typesSchemaLike_2<TSchema>[]
Returns

AlternativesSchema_2<TSchema>


any()

ts
any<TSchema>(): AnySchema_2<TSchema>;

Generates a schema object that matches any data type.

Type Parameters

Type ParameterDefault type
TSchemaany

Returns

AnySchema_2<TSchema>


array()

ts
array<TSchema>(): ArraySchema_2<TSchema>;

Generates a schema object that matches an array data type.

Type Parameters

Type ParameterDefault type
TSchemaany[]

Returns

ArraySchema_2<TSchema>


assert()

Call Signature

ts
assert(
   value: any,
   schema: Schema_2,
   options?: ValidationOptions): void;

Validates a value against a schema and throws if validation fails.

Parameters
ParameterTypeDescription
valueanythe value to validate.
schemaSchema_2the schema object.
options?ValidationOptions-
Returns

void

Call Signature

ts
assert(
   value: any,
   schema: Schema_2,
   message: string | Error,
   options?: ValidationOptions): void;
Parameters
ParameterType
valueany
schemaSchema_2
messagestring | Error
options?ValidationOptions
Returns

void


attempt()

Call Signature

ts
attempt<TSchema>(
   value: any,
   schema: TSchema,
   options?: ValidationOptions): TSchema extends Schema_2<Value> ? Value : never;

Validates a value against a schema, returns valid object, and throws if validation fails.

Type Parameters
Type Parameter
TSchema extends Schema_2<any>
Parameters
ParameterTypeDescription
valueanythe value to validate.
schemaTSchemathe schema object.
options?ValidationOptions-
Returns

TSchema extends Schema_2<Value> ? Value : never

Call Signature

ts
attempt<TSchema>(
   value: any,
   schema: TSchema,
   message: string | Error,
   options?: ValidationOptions): TSchema extends Schema_2<Value> ? Value : never;
Type Parameters
Type Parameter
TSchema extends Schema_2<any>
Parameters
ParameterType
valueany
schemaTSchema
messagestring | Error
options?ValidationOptions
Returns

TSchema extends Schema_2<Value> ? Value : never


binary()

ts
binary<TSchema>(): BinarySchema_2<TSchema>;

Generates a schema object that matches a Buffer data type (as well as the strings which will be converted to Buffers).

Type Parameters

Type ParameterDefault type
TSchemaBuffer<ArrayBufferLike>

Returns

BinarySchema_2<TSchema>


bool()

ts
bool<TSchema>(): BooleanSchema_2<TSchema>;

Generates a schema object that matches a boolean data type (as well as the strings 'true' and 'false'). Can also be called via boolean().

Type Parameters

Type ParameterDefault type
TSchemaboolean

Returns

BooleanSchema_2<TSchema>


boolean()

ts
boolean<TSchema>(): BooleanSchema_2<TSchema>;

Generates a schema object that matches a boolean data type (as well as the strings 'true' and 'false'). Can also be called via bool().

Type Parameters

Type ParameterDefault type
TSchemaboolean

Returns

BooleanSchema_2<TSchema>


build()

ts
build(...args: any[]): any;

Unsure, maybe alias for compile?

Parameters

ParameterType
...argsany[]

Returns

any


checkPreferences()

ts
checkPreferences(prefs: ValidationOptions): void;

Checks if the provided preferences are valid.

Throws an exception if the prefs object is invalid.

The method is provided to perform inputs validation for the any.validate() and any.validateAsync() methods. Validation is not performed automatically for performance reasons. Instead, manually validate the preferences passed once and reuse.

Parameters

ParameterType
prefsValidationOptions

Returns

void


compile()

ts
compile(schema: SchemaLike_2, options?: CompileOptions): Schema_2;

Converts literal schema definition to joi schema object (or returns the same back if already a joi schema object).

Parameters

ParameterType
schemaSchemaLike_2
options?CompileOptions

Returns

Schema_2


custom()

ts
custom(fn: CustomValidator, description?: string): Schema_2;

Creates a custom validation schema.

Parameters

ParameterType
fnCustomValidator
description?string

Returns

Schema_2


date()

ts
date<TSchema>(): DateSchema_2<TSchema>;

Generates a schema object that matches a date type (as well as a JavaScript date string or number of milliseconds).

Type Parameters

Type ParameterDefault type
TSchemaDate

Returns

DateSchema_2<TSchema>


defaults()

ts
defaults(fn: SchemaFunction_2): Root;

Creates a new Joi instance that will apply defaults onto newly created schemas through the use of the fn function that takes exactly one argument, the schema being created.

Parameters

ParameterTypeDescription
fnSchemaFunction_2The function must always return a schema, even if untransformed.

Returns

Root


disallow()

ts
disallow(...values: any[]): Schema_2;

Parameters

ParameterType
...valuesany[]

Returns

Schema_2


equal()

ts
equal(...values: any[]): Schema_2;

Parameters

ParameterType
...valuesany[]

Returns

Schema_2


exist()

ts
exist(): Schema_2;

Alias of required.

Returns

Schema_2


expression()

ts
expression(template: string, options?: ReferenceOptions): any;

Generates a dynamic expression using a template string.

Parameters

ParameterType
templatestring
options?ReferenceOptions

Returns

any


extend()

ts
extend(...extensions: (
  | Extension
  | ExtensionFactory)[]): any;

Creates a new Joi instance customized with the extension(s) you provide included.

Parameters

ParameterType
...extensions( | Extension | ExtensionFactory)[]

Returns

any


forbidden()

ts
forbidden(): Schema_2;

Marks a key as forbidden which will not allow any value except undefined. Used to explicitly forbid keys.

Returns

Schema_2


func()

ts
func<TSchema>(): FunctionSchema_2<TSchema>;

Generates a schema object that matches a function type.

Type Parameters

Type ParameterDefault type
TSchemaFunction

Returns

FunctionSchema_2<TSchema>


function()

ts
function<TSchema>(): FunctionSchema_2<TSchema>;

Generates a schema object that matches a function type.

Type Parameters

Type ParameterDefault type
TSchemaFunction

Returns

FunctionSchema_2<TSchema>


in()

ts
in(ref: string, options?: ReferenceOptions): Reference;

Creates a reference that when resolved, is used as an array of values to match against the rule.

Parameters

ParameterType
refstring
options?ReferenceOptions

Returns

Reference


invalid()

ts
invalid(...values: any[]): Schema_2;

Blacklists a value

Parameters

ParameterType
...valuesany[]

Returns

Schema_2


isError()

ts
isError(error: any): error is ValidationError_2;

Checks whether or not the provided argument is an instance of ValidationError

Parameters

ParameterType
errorany

Returns

error is ValidationError_2


isExpression()

ts
isExpression(expression: any): boolean;

Checks whether or not the provided argument is an expression.

Parameters

ParameterType
expressionany

Returns

boolean


isRef()

ts
isRef(ref: any): ref is Reference;

Checks whether or not the provided argument is a reference. It's especially useful if you want to post-process error messages.

Parameters

ParameterType
refany

Returns

ref is Reference


isSchema()

ts
isSchema(schema: any, options?: CompileOptions): schema is AnySchema_2<any>;

Checks whether or not the provided argument is a joi schema.

Parameters

ParameterType
schemaany
options?CompileOptions

Returns

schema is AnySchema_2<any>


ts
link<TSchema>(ref?: string): LinkSchema_2<TSchema>;

Links to another schema node and reuses it for validation, typically for creative recursive schemas.

Type Parameters

Type ParameterDefault type
TSchemaany

Parameters

ParameterTypeDescription
ref?stringthe reference to the linked schema node. Cannot reference itself or its children as well as other links. Links can be expressed in relative terms like value references (Joi.link('...')), in absolute terms from the schema run-time root (Joi.link('/a')), or using schema ids implicitly using object keys or explicitly using any.id() (Joi.link('#a.b.c')).

Returns

LinkSchema_2<TSchema>


not()

ts
not(...values: any[]): Schema_2;

Parameters

ParameterType
...valuesany[]

Returns

Schema_2


number()

ts
number<TSchema>(): NumberSchema_2<TSchema>;

Generates a schema object that matches a number data type (as well as strings that can be converted to numbers).

Type Parameters

Type ParameterDefault type
TSchemanumber

Returns

NumberSchema_2<TSchema>


object()

ts
object<TSchema, IsStrict, T>(schema?: SchemaMap_2<T, IsStrict>): ObjectSchema_2<TSchema>;

Generates a schema object that matches an object data type (as well as JSON strings that have been parsed into objects).

Type Parameters

Type ParameterDefault type
TSchemaany
IsStrictfalse
TTSchema

Parameters

ParameterType
schema?SchemaMap_2<T, IsStrict>

Returns

ObjectSchema_2<TSchema>


optional()

ts
optional(): Schema_2;

Marks a key as optional which will allow undefined as values. Used to annotate the schema for readability as all keys are optional by default.

Returns

Schema_2


options()

ts
options(...args: any[]): any;

Unsure, maybe alias for preferences?

Parameters

ParameterType
...argsany[]

Returns

any


preferences()

ts
preferences(options: ValidationOptions): Schema_2;

Overrides the global validate() options for the current key and any sub-key.

Parameters

ParameterType
optionsValidationOptions

Returns

Schema_2


prefs()

ts
prefs(options: ValidationOptions): Schema_2;

Overrides the global validate() options for the current key and any sub-key.

Parameters

ParameterType
optionsValidationOptions

Returns

Schema_2


ref()

ts
ref(key: string, options?: ReferenceOptions): Reference;

Generates a reference to the value of the named key.

Parameters

ParameterType
keystring
options?ReferenceOptions

Returns

Reference


required()

ts
required(): Schema_2;

Marks a key as required which will not allow undefined as value. All keys are optional by default.

Returns

Schema_2


string()

ts
string<TSchema>(): StringSchema_2<TSchema>;

Generates a schema object that matches a string data type. Note that empty strings are not allowed by default and must be enabled with allow('').

Type Parameters

Type ParameterDefault type
TSchemastring

Returns

StringSchema_2<TSchema>


symbol()

ts
symbol<TSchema>(): SymbolSchema_2<TSchema>;

Generates a schema object that matches any symbol.

Type Parameters

Type ParameterDefault type
TSchemaSymbol

Returns

SymbolSchema_2<TSchema>


trace()

ts
trace(...args: any[]): any;

Unsure, maybe leaked from @hapi/lab/coverage/initialize

Parameters

ParameterType
...argsany[]

Returns

any


types()

ts
types(): {
  alternatives: AlternativesSchema_2;
  any: AnySchema_2;
  array: ArraySchema_2;
  binary: BinarySchema_2;
  boolean: BooleanSchema_2;
  date: DateSchema_2;
  function: FunctionSchema_2;
  link: LinkSchema_2;
  number: NumberSchema_2;
  object: ObjectSchema_2;
  string: StringSchema_2;
  symbol: SymbolSchema_2;
};

Returns an object where each key is a plain joi schema type. Useful for creating type shortcuts using deconstruction. Note that the types are already formed and do not need to be called as functions (e.g. string, not string()).

Returns

ts
{
  alternatives: AlternativesSchema_2;
  any: AnySchema_2;
  array: ArraySchema_2;
  binary: BinarySchema_2;
  boolean: BooleanSchema_2;
  date: DateSchema_2;
  function: FunctionSchema_2;
  link: LinkSchema_2;
  number: NumberSchema_2;
  object: ObjectSchema_2;
  string: StringSchema_2;
  symbol: SymbolSchema_2;
}
NameType
alternativesAlternativesSchema_2
anyAnySchema_2
arrayArraySchema_2
binaryBinarySchema_2
booleanBooleanSchema_2
dateDateSchema_2
functionFunctionSchema_2
linkLinkSchema_2
numberNumberSchema_2
objectObjectSchema_2
stringStringSchema_2
symbolSymbolSchema_2

untrace()

ts
untrace(...args: any[]): any;

Parameters

ParameterType
...argsany[]

Returns

any


valid()

ts
valid(...values: any[]): Schema_2;

Adds the provided values into the allowed whitelist and marks them as the only valid values allowed.

Parameters

ParameterType
...valuesany[]

Returns

Schema_2


when()

Call Signature

ts
when(ref: string | Reference, options:
  | WhenOptions<any, any>
  | WhenOptions<any, any>[]): AlternativesSchema_2;

Converts the type into an alternatives type where the conditions are merged into the type definition where:

Parameters
ParameterType
refstring | Reference
options| WhenOptions<any, any> | WhenOptions<any, any>[]
Returns

AlternativesSchema_2

Call Signature

ts
when(ref: Schema_2, options: WhenSchemaOptions): AlternativesSchema_2;
Parameters
ParameterType
refSchema_2
optionsWhenSchemaOptions
Returns

AlternativesSchema_2


x()

ts
x(template: string, options?: ReferenceOptions): any;

Generates a dynamic expression using a template string.

Parameters

ParameterType
templatestring
options?ReferenceOptions

Returns

any