Tool info
JSON to TypeScript
A first draft from one sample. Types come from the JSON you pasted and nothing else. A key your sample does not show is not marked optional. Every number is number. A date, a UUID or an enum reads as string. An array whose elements do not agree becomes a union of what was actually seen. Read it, then tighten it: this is a starting point to edit, not a schema you can rely on unchecked.
JSON
0 of 200,000 characters. One sample only: a field missing from it is not marked optional, so widen the sample before you trust the output. Caps are refused with their real numbers — 64 nesting levels, 200,000 values, 400,000 characters of generated code.
TypeScript