TypeScript SDK — Types & Zod Schemas#
The FAIR Data JSON Schema project provides auto-generated TypeScript interfaces and Zod schemas for client-side web applications, Node.js API servers, and AI / MCP tool-calling integrations.
Overview#
The generated TypeScript code is located in schemas/<version>/typescript/index.ts (and mirrored in the web distribution at dist/<version>/typescript/index.ts).
It provides:
Compile-time TypeScript interfaces:
SchemaNode,DatasetSchema,TemporalCoverage,DatasetRelationRuntime validation Zod schemas:
SchemaNodeSchema,DatasetSchemaSchema,TemporalCoverageSchema,DatasetRelationSchemaType Aliases:
I18nString,I18nText,JsonType
Installation#
To validate data at runtime using Zod, install zod in your JavaScript/TypeScript project:
npm install zod
Basic Usage#
Parsing & Validating Schemas (Zod)#
You can validate incoming JSON dataset schemas at runtime using DatasetSchemaSchema:
import { DatasetSchemaSchema, DatasetSchema } from "./schemas/dev/typescript/index.ts";
const rawJson = {
$schema: "https://highvaluedata.net/fair-data-schema/dev",
title: "Environmental Sensor Station Observations 2024",
"fair:license": "CC-BY-4.0",
"fair:unitType": "SensorStation",
type: "object",
properties: {
air_temperature: {
title: "Ambient Surface Air Temperature",
type: "number",
"fair:measurementUnit": "Degree Celsius",
"fair:measurementUnitRef": "http://qudt.org/vocab/unit/DEG_C"
}
}
};
// Validate raw JSON schema at runtime
const schema: DatasetSchema = DatasetSchemaSchema.parse(rawJson);
console.log(schema.title); // "Environmental Sensor Station Observations 2024"
console.log(schema["fair:license"]); // "CC-BY-4.0"
TypeScript Compile-Time Autocomplete#
When authoring schemas programmatically in TypeScript, use the DatasetSchema and SchemaNode interfaces for full IDE autocomplete:
import { DatasetSchema, SchemaNode } from "./schemas/dev/typescript/index.ts";
const ageVariable: SchemaNode = {
type: "integer",
title: "Age",
minimum: 0,
"fair:measurementUnit": "years",
"fair:quantity": "Time duration"
};
const myDataset: DatasetSchema = {
$schema: "https://highvaluedata.net/fair-data-schema/dev",
title: "Census 2024",
"fair:license": "CC-BY-4.0",
"fair:population": "Total Resident Population",
properties: {
age: ageVariable
}
};
Auto-Generation#
The TypeScript definition file schemas/<version>/typescript/index.ts is auto-generated from the FAIR annotation meta-schemas using Jinja2 templates.
To regenerate TypeScript models for the development track:
uv run python scripts/generate_typescript.py --version dev