{
  "slug": "json-to-typescript",
  "name": "gizza-ai/json-to-typescript",
  "version": "0.1.0",
  "title": "JSON to TypeScript Interfaces — gizza.ai",
  "description": "Paste JSON and get TypeScript interfaces — nested types, optional fields, and unions inferred automatically. Runs in your browser, nothing is uploaded, free.",
  "tags": [
    "json to typescript",
    "ts interfaces",
    "json to ts",
    "type generator",
    "infer types"
  ],
  "category": "data",
  "urls": {
    "page": "https://gizza.ai/tools/json-to-typescript/",
    "markdown": "https://gizza.ai/tools/json-to-typescript/index.md",
    "descriptor": "https://gizza.ai/tools/json-to-typescript/tool.json",
    "deep_link_example": "https://gizza.ai/tools/json-to-typescript/?json=%7B%20%22name%22%3A%20%22Ada%22%2C%20%22roles%22%3A%20%5B%22admin%22%5D%20%7D&root_name=Root&export=true"
  },
  "cli": "gizza tool json-to-typescript '{ \"name\": \"Ada\", \"roles\": [\"admin\"] }'",
  "tool": {
    "description": "Infer TypeScript interface/type definitions from a pasted JSON object or array. Nested objects become their own interfaces; arrays of objects are merged so keys missing in some elements become optional (?) and differing types become unions (e.g. number | string). root_name names the top-level type (default 'Root'); export=true (default) prefixes 'export'. Returns the TypeScript source.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "export": {
          "default": true,
          "description": "Prefix declarations with 'export'. Default true.",
          "type": "boolean"
        },
        "json": {
          "description": "A JSON object or array sample to infer TypeScript types from.",
          "type": "string"
        },
        "root_name": {
          "default": "Root",
          "description": "Name for the top-level interface/type (PascalCased). Default 'Root'.",
          "type": "string"
        }
      },
      "required": [
        "json"
      ],
      "type": "object"
    }
  }
}