JSON to TypeScript recursively infers interfaces from one concrete sample. Strings, numbers, booleans, and null map to their basic types; objects become named interfaces; arrays use the first element to infer their item type. A root object is named Root and an object inside a root array is named Item.
The result is a starting point inferred from data, not an API contract. Fields that only appear in other records, optional properties, and unions cannot be established reliably from one sample, so the declaration must be reviewed against real documentation.