# json-schema-typed

> JSON Schema TypeScript definitions with complete inline documentation.

Latest version **8.0.2** (published 2025-11-17) · BSD-2-Clause license · 0 weekly downloads

## Install

```sh
npm install json-schema-typed
pnpm add json-schema-typed
yarn add json-schema-typed
bun add json-schema-typed
```

## Health

**Score 55/100 (C)** — status: stable.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 8.0.2 |
| Published | 2025-11-17 |
| First published | 2019-02-20 |
| Weekly downloads | 0 |
| License | BSD-2-Clause |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 192.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 116 |
| Author | Remy Rylan |
| Maintainers | jrylan, remyrylan |
| Keywords | jsonschema, typescript, types, definitions, json, schema |

## Links

- npm: https://www.npmjs.com/package/json-schema-typed
- Repository: https://github.com/RemyRylan/json-schema-typed
- Homepage: https://github.com/RemyRylan/json-schema-typed/tree/main/dist/node
- Issues: https://github.com/RemyRylan/json-schema-typed/issues
- npm.io page: https://npm.io/package/json-schema-typed

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 8.0.2 (latest) — 2025-11-17
- 8.0.1 — 2022-03-04
- 8.0.0 — 2022-03-04
- 7.0.3 — 2019-12-08
- 7.0.2 — 2019-10-27
- 7.0.1 — 2019-07-18
- 7.0.0 — 2019-02-20

## README

[![npm](https://img.shields.io/npm/v/json-schema-typed.svg?style=flat-square)](https://npmjs.org/package/json-schema-typed)
[![downloads-per-month](https://img.shields.io/npm/dm/json-schema-typed.svg?style=flat-square&label=npm%20downloads)](https://npmjs.org/package/json-schema-typed)
[![License](https://img.shields.io/badge/license-BSD--2--Clause-blue.svg?style=flat-square)][license]

# JSON Schema Typed

JSON Schema TypeScript definitions with complete inline documentation.

**NOTE:** This library only supports defining schemas. You will need a separate
library for data validation.

There are 3 JSON Schema drafts included in this package:

- `draft-07`
- `draft-2019-09`
- `draft-2020-12`

## Install

```sh
npm install json-schema-typed
```

## Usage

1. Chose which draft you'd like to import.

- The main package export points to the latest supported stable draft, currently
  `draft-2020-12`. Future releases that point the main package export to a new
  draft will always incur a bump to the major semantic version.

  ```ts
  import { type JSONSchema } from "json-schema-typed";
  ```

- Or you can specify the exact draft you need.
  ```ts
  import { type JSONSchema } from "json-schema-typed/draft-2020-12";
  ```

2. Define a schema

   ```ts
   import { Format, type JSONSchema } from "json-schema-typed";

   const schema: JSONSchema = {
     properties: {
       email: {
         format: Format.Email,
         type: "string",
       },
     },
     type: "object",
   };

   // The JSONSchema namespace also provides type-specific narrowed interfaces
   const stringSchema: JSONSchema.String = {
     // Only { type: "string" } and common keywords are allowed
     maxLength: 100,
     type: "string",
   };
   ```

## Upgrading

Version `8.0.0` has breaking changes from the previous release.

- Now a
  [pure ESM package](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c).
- Many exports were renamed. The table below reflects the new export names.
  These are considered final and unlikely to change in future releases.
- The `JSONSchema` type was changed from an `interface` to a `type` which is a
  mixed union that allows `boolean` values in order to properly align with the
  JSON Schema spec. If you were previously extending the `JSONSchema` interface,
  you can access the `interface` directly with `JSONSchema.Interface`.
- The previous main package export pointed to Draft 7. Import it directly if you
  need to continue using it:
  ```ts
  import { type JSONSchema } from "json-schema-typed/draft-07";
  ```

## Exports supported in each draft module

| Name              | Type            | Purpose                                                            |
| ----------------- | --------------- | ------------------------------------------------------------------ |
| `$schema`         | `string`        | Draft meta schema URL that can be used with the `$schema` keyword. |
| `ContentEncoding` | Enum object     | String content encoding strategies.                                |
| `draft`           | `string`        | Draft version.                                                     |
| `Format`          | Enum object     | String formats.                                                    |
| `JSONSchema`      | TypeScript Type | Used to define a JSON Schema.                                      |
| `keywords`        | `string[]`      | All the keywords for the imported draft.                           |
| `TypeName`        | Enum object     | Simple type names for the `type` keyword.                          |

## Versioning

This library follows [semantic versioning](https://semver.org).

---

## Maintainers

- [Remy Rylan](https://github.com/RemyRylan)

## License

[BSD-2-Clause][license]

[license]: https://github.com/RemyRylan/json-schema-typed/blob/main/dist/node/LICENSE.md

---
_Source: https://npm.io/package/json-schema-typed · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
