JSON Schema¶
The TDN format includes a JSON Schema that can be used for validation and IDE auto-completion.
Schema File¶
The schema is available at tdn.schema.json in the repository.
You can reference it in your .tdn files for editor support:
{
"$schema": "https://raw.githubusercontent.com/dylanroscover/Embody/main/docs/tdn.schema.json",
"format": "tdn",
"version": "1.0",
...
}
What the Schema Validates¶
- Document structure: Required fields (
format,version,generator,td_build,exported_at,network_path,options,operators) - Operator objects: Name, type, position, size, color, parameters, flags, connections, children
- Custom parameters: Page-grouped format, template references (
$t), all 32 parameter styles - Type defaults: Per-type shared properties (parameters, flags, size, color, tags)
- Parameter templates: Reusable custom parameter page definitions
- Annotations: Mode, title, text, position, size, color, opacity
- Value types: Proper typing for constants, expressions (
=prefix), and binds (~prefix) - DAT content: Both text and table formats
Using with VS Code¶
Add this to your VS Code settings.json to get auto-completion and validation for .tdn files:
Schema Overview¶
The schema defines these key structures:
Top-Level Document¶
tdn
├── format: "tdn" (const)
├── version: string
├── build: integer | null
├── generator: string
├── td_build: string
├── exported_at: date-time
├── network_path: string
├── options
│ └── include_dat_content: boolean
├── type_defaults: { type → properties }
├── par_templates: { name → [definitions] }
├── operators: [operator]
└── annotations: [annotation]
Operator Object¶
operator
├── name: string (required)
├── type: string (required)
├── position: [x, y]
├── size: [width, height]
├── color: [r, g, b]
├── comment: string
├── tags: [string]
├── parameters: { name → value }
├── custom_pars: { page → [definition] | {$t, ...values} }
├── flags: [string]
├── inputs: [string | null]
├── comp_inputs: [string | null]
├── dat_content: string | [[string]]
├── dat_content_format: "text" | "table"
├── children: [operator]
├── annotations: [annotation]
└── palette_clone: boolean
Annotation Object¶
annotation
├── name: string (required)
├── mode: "annotate" | "comment" | "networkbox" (required)
├── title: string
├── text: string
├── position: [x, y]
├── size: [width, height] (required)
├── color: [r, g, b]
└── opacity: number
For the complete field reference with inclusion conditions and default values, see the Specification.