Schema file
A JSON array of field definitions — the same format the Mac app exports from the Generator panel. Each field has a name, a type, and per-field null/blank/distinct controls.
[
{
"name": "id",
"field_type": "Id",
"null_percent": 0,
"blank_percent": 0,
"custom_null_value": "",
"distinct_percent": 0
},
{
"name": "full_name",
"field_type": "FullName",
"null_percent": 0,
"blank_percent": 0,
"custom_null_value": "",
"distinct_percent": 0
},
{
"name": "age",
"field_type": {"Number": {"min": 18, "max": 65, "decimals": 0}},
"null_percent": 5,
"blank_percent": 0,
"custom_null_value": "",
"distinct_percent": 0
}
]
Field types with no extra data (like Id or FullName) serialize as a bare string, "field_type": "Id" — that's what import-schema and the Mac app's own export actually produce. Types that take parameters (like Number or Date) nest them under the type name instead: {"Number": {"min": 18, "max": 65, "decimals": 0}}. (The object form {"Id": null} still parses too, if you're hand-writing one — both are accepted — but bare-string is what round-trips from real tooling.)
There are 60+ field types across 9 categories — identity, person, contact & location, finance, internet, business, commerce, data, and custom/formula types. The fastest way to build a schema is in the Mac app's Generator panel or import-schema (discover one from an existing CSV/DB table), then export/write it as JSON.
Field order matters for cross-field consistency: put FullName/FirstName/LastName fields before any Email/Username field — the generator derives emails/usernames from names generated earlier in the same row.