{
  "slug": "network-config-parser",
  "name": "gizza-ai/network-config-parser",
  "version": "0.1.0",
  "title": "Network Config Parser — gizza.ai",
  "description": "Parse Cisco IOS, Arista EOS, or Juniper Junos configs into nested JSON, flat command paths, or a compact stats report in your browser.",
  "tags": [
    "network config parser",
    "cisco config parser",
    "juniper config parser",
    "ios config to json",
    "junos config to json",
    "config to tree",
    "arista eos config",
    "show run to json"
  ],
  "category": "network",
  "urls": {
    "page": "https://gizza.ai/tools/network-config-parser/",
    "markdown": "https://gizza.ai/tools/network-config-parser/index.md",
    "descriptor": "https://gizza.ai/tools/network-config-parser/tool.json",
    "deep_link_example": "https://gizza.ai/tools/network-config-parser/?config=interface%20GigabitEthernet0%2F1%0A%20description%20uplink%20to%20core%0A%20ip%20address%2010.0.0.1%20255.255.255.0%0A%20no%20shutdown%0A%21%0Arouter%20ospf%201%0A%20network%2010.0.0.0%200.0.0.255%20area%200&syntax=auto&output=tree&filter=ospf&comments=strip"
  },
  "cli": "gizza tool network-config-parser \"interface GigabitEthernet0/1\n description uplink to core\n ip address 10.0.0.1 255.255.255.0\n no shutdown\n!\nrouter ospf 1\n network 10.0.0.0 0.0.0.255 area 0\"",
  "tool": {
    "description": "Parse a hierarchical network device configuration into a foldable, searchable tree of sections. Handles indentation style (Cisco IOS / IOS-XE / NX-OS, Arista EOS — whitespace nesting, '!' separators) and brace style (Juniper Junos — '{ … }' blocks, ';' statements); syntax='auto' (default) detects which. output='tree' (default) is a nested JSON array of { line, children }, 'paths' is a flat list of full command paths, 'report' gives a section list plus stats. Set filter to a case-insensitive substring to keep only matching sections/lines with their context, and comments to strip (default) or keep comment lines.",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "comments": {
          "default": "strip",
          "description": "How to treat comment/separator lines ('!' or '#' in indent style; '#' and '/* … */' in brace style). 'strip' (default) drops them; 'keep' includes them as nodes. Bare '!' separators are always dropped.",
          "enum": [
            "strip",
            "keep"
          ],
          "type": "string"
        },
        "config": {
          "description": "The device configuration text to parse. Indentation style (Cisco IOS / IOS-XE / NX-OS, Arista EOS) uses leading whitespace for nesting and '!' as a section separator; brace style (Juniper Junos) uses '{ … }' blocks with statements ending in ';'.",
          "type": "string"
        },
        "filter": {
          "default": "",
          "description": "Optional case-insensitive substring. When set, only sections/lines containing it are kept: matching a section header keeps its whole block; matching a deep value keeps its ancestor chain for context. Empty (default) returns the full tree.",
          "type": "string"
        },
        "output": {
          "default": "tree",
          "description": "Output shape. 'tree' (default) is a nested JSON array of { line, children } nodes; 'paths' is a flat list of full command paths (one per leaf, joined by ' / '); 'report' summarises the config with a top-level section list and stats (sections, lines, depth, comments).",
          "enum": [
            "tree",
            "paths",
            "report"
          ],
          "type": "string"
        },
        "syntax": {
          "default": "auto",
          "description": "Config syntax. 'auto' (default) detects the style from the text; 'indent' forces Cisco/NX-OS/Arista indentation parsing; 'brace' forces Juniper Junos curly-brace parsing.",
          "enum": [
            "auto",
            "indent",
            "brace"
          ],
          "type": "string"
        }
      },
      "required": [
        "config"
      ],
      "type": "object"
    }
  }
}