JSON Schema Export
Convert YounndAI Domain records to JSON Schema draft-07.
Why?
Export domains to JSON Schema for universal interop with AJV, Zod, OpenAPI, form generators, and code generators in any language.
Usage
Single Record
import { recordToJSONSchema } from "@younndai/domains/json-schema";
import { getBundledDomain } from "@younndai/domains";
const domain = getBundledDomain("yon.fintech")!;
const schema = recordToJSONSchema(domain.records.TXN, "TXN", "yon.fintech");
Entire Domain
import { domainToJSONSchemas } from "@younndai/domains/json-schema";
const schemas = domainToJSONSchemas(domain);
// → { TXN: {...}, POSITION: {...}, PORTFOLIO: {...} }
Async (Resolve + Export)
import { exportJSONSchemas } from "@younndai/domains/json-schema";
const schemas = await exportJSONSchemas("yon.health");
Type Mapping
| YounndAI | JSON Schema | Additional |
|---|---|---|
string | "string" | +pattern, +enum |
int | "integer" | +minimum, +maximum |
float | "number" | +minimum, +maximum |
bool | "boolean" | |
ts | "string" | +format: "date-time" |
Output Shape
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://domains.younndai.com/schemas/yon.fintech/TXN",
"title": "yon.fintech/TXN",
"type": "object",
"required": ["id", "amount"],
"properties": {
"id": { "type": "string" },
"amount": { "type": "number", "minimum": 0, "maximum": 999999999 }
},
"x-generator": "@younndai/[email protected]",
"x-domain": "yon.fintech",
"x-tag": "TXN"
}