{
  "version": 1,
  "generatedAt": "2026-10-13T13:31:15Z",
  "extensions": [
    {
      "id": "kubb-labs/adapter-oas",
      "kind": "adapter",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/adapter-oas",
        "version": "5.8.4"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/kubb/tree/main/packages/adapter-oas"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "adapter",
        "name": "oas",
        "export": "adapterOas",
        "displayName": "OpenAPI",
        "description": "Reads an OpenAPI 2.0, 3.0, or 3.1 spec and converts every schema and operation into the AST that Kubb plugins generate from.",
        "category": "openapi",
        "icon": {
          "light": "https://kubb.dev/feature/openapi.svg"
        },
        "tags": [
          "openapi",
          "swagger",
          "api-spec",
          "parser",
          "converter"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/adapter-oas",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "options": [
          {
            "key": "validate",
            "path": [
              "validate"
            ],
            "label": "Validate",
            "description": "Validate the spec before parsing. Each problem is reported as a warning and generation continues. Turn it off to speed up a large spec.",
            "type": "boolean",
            "default": true
          },
          {
            "key": "dateType",
            "path": [
              "dateType"
            ],
            "label": "Date Type",
            "description": "How date-time, date, and time schemas are represented.",
            "type": "select",
            "default": "string",
            "choices": [
              {
                "label": "string (ISO 8601)",
                "value": "string"
              },
              {
                "label": "stringOffset (with timezone offset)",
                "value": "stringOffset"
              },
              {
                "label": "stringLocal (without timezone)",
                "value": "stringLocal"
              },
              {
                "label": "date (JavaScript Date)",
                "value": "date"
              },
              {
                "label": "false (plain string, no validation)",
                "value": false
              }
            ]
          },
          {
            "key": "integerType",
            "path": [
              "integerType"
            ],
            "label": "Integer Type",
            "description": "How integer and int64 schemas map to TypeScript.",
            "type": "select",
            "default": "bigint",
            "choices": [
              {
                "label": "bigint (exact for 64-bit IDs)",
                "value": "bigint"
              },
              {
                "label": "number (fits most JSON APIs)",
                "value": "number"
              }
            ]
          },
          {
            "key": "unknownType",
            "path": [
              "unknownType"
            ],
            "label": "Unknown Type",
            "description": "Type used when a schema's type cannot be inferred from the spec.",
            "type": "select",
            "default": "unknown",
            "choices": [
              {
                "label": "unknown",
                "value": "unknown"
              },
              {
                "label": "any",
                "value": "any"
              },
              {
                "label": "void",
                "value": "void"
              }
            ]
          },
          {
            "key": "emptySchemaType",
            "path": [
              "emptySchemaType"
            ],
            "label": "Empty Schema Type",
            "description": "Type used for empty schemas ({}). Follows Unknown Type when unset.",
            "type": "select",
            "choices": [
              {
                "label": "same as Unknown Type",
                "value": null
              },
              {
                "label": "unknown",
                "value": "unknown"
              },
              {
                "label": "any",
                "value": "any"
              },
              {
                "label": "void",
                "value": "void"
              }
            ]
          },
          {
            "key": "enumSuffix",
            "path": [
              "enumSuffix"
            ],
            "label": "Enum Suffix",
            "description": "Suffix for enum names Kubb derives, such as PetStatusEnum.",
            "type": "text",
            "default": "enum"
          },
          {
            "key": "contentType",
            "path": [
              "contentType"
            ],
            "label": "Content Type",
            "description": "Preferred media type when an operation defines several. Defaults to the first JSON media type in the spec.",
            "type": "text"
          },
          {
            "key": "serverIndex",
            "path": [
              "server",
              "index"
            ],
            "label": "Server Index",
            "description": "Index in the spec's servers array that resolves the base URL. Leave empty for no base URL.",
            "type": "number"
          },
          {
            "key": "discriminator",
            "path": [
              "discriminator"
            ],
            "label": "Discriminator",
            "description": "How discriminator fields on oneOf and anyOf schemas are interpreted.",
            "type": "select",
            "default": "preserve",
            "choices": [
              {
                "label": "preserve (keep child schemas as written)",
                "value": "preserve"
              },
              {
                "label": "propagate (add the literal value to each child)",
                "value": "propagate"
              }
            ]
          },
          {
            "key": "enums",
            "path": [
              "enums"
            ],
            "label": "Enums",
            "description": "Where inline enums live.",
            "type": "select",
            "default": "inline",
            "choices": [
              {
                "label": "inline (on the property)",
                "value": "inline"
              },
              {
                "label": "root (reusable top-level schema)",
                "value": "root"
              }
            ]
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T13:10:48Z",
      "stats": {
        "downloads": 284136,
        "weekly": 92096,
        "stars": 1820
      }
    },
    {
      "id": "kubb-labs/parser-md",
      "kind": "parser",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/parser-md",
        "version": "5.8.4"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/kubb/tree/main/packages/parser-md"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "parser",
        "name": "markdown",
        "export": "parserMd",
        "displayName": "Markdown",
        "description": "Writes .md and .markdown files from the Kubb AST, with YAML frontmatter from a file's meta.",
        "category": "docs",
        "icon": {
          "light": "https://kubb.dev/feature/markdown.svg"
        },
        "tags": [
          "markdown",
          "frontmatter",
          "parser",
          "docs",
          "yaml"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/parser-md",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        }
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T13:10:48Z",
      "stats": {
        "downloads": 172163,
        "weekly": 56836,
        "stars": 1820
      }
    },
    {
      "id": "kubb-labs/parser-ts",
      "kind": "parser",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/parser-ts",
        "version": "5.8.4"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/kubb/tree/main/packages/parser-ts"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "parser",
        "name": "typescript",
        "export": "parserTs",
        "displayName": "TypeScript",
        "description": "Prints the Kubb AST to TypeScript source with the official TypeScript compiler.",
        "category": "typescript",
        "icon": {
          "light": "https://kubb.dev/feature/typescript.svg"
        },
        "tags": [
          "typescript",
          "tsx",
          "parser",
          "printer",
          "ast"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/parser-ts",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        }
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T13:10:48Z",
      "stats": {
        "downloads": 383666,
        "weekly": 107021,
        "stars": 1820
      }
    },
    {
      "id": "kubb-labs/plugin-axios",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-axios",
        "version": "5.5.11"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-axios"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-axios",
        "export": "pluginAxios",
        "displayName": "Axios",
        "description": "Generates a type-safe axios client from your OpenAPI spec, one async function per operation, so each call stays in sync with the API.",
        "category": "client",
        "icon": {
          "light": "https://kubb.dev/feature/axios.svg"
        },
        "tags": [
          "api-client",
          "axios",
          "http-client",
          "codegen",
          "openapi",
          "validator"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-axios",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "role": "client",
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "clients"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "validator",
            "path": [
              "validator"
            ],
            "label": "Validator",
            "description": "Validate request and response bodies with schemas from @kubb/plugin-zod",
            "type": "select",
            "default": false,
            "choices": [
              {
                "label": "false (disabled)",
                "value": false
              },
              {
                "label": "zod",
                "value": "zod"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "baseURL",
            "path": [
              "baseURL"
            ],
            "label": "Base URL",
            "description": "Custom API base URL",
            "type": "text"
          },
          {
            "key": "sdkMode",
            "path": [
              "sdk",
              "mode"
            ],
            "label": "SDK Mode",
            "description": "Group generated operations into an SDK client by tag or flat",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "off (standalone functions)",
                "value": null
              },
              {
                "label": "tag",
                "value": "tag"
              },
              {
                "label": "flat",
                "value": "flat"
              }
            ]
          },
          {
            "key": "sdkName",
            "path": [
              "sdk",
              "name"
            ],
            "label": "SDK Name",
            "description": "Root client name for the generated SDK",
            "type": "text"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 26800,
        "weekly": 8192,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-barrel",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-barrel",
        "version": "5.8.4"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/kubb/tree/main/packages/plugin-barrel"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-barrel",
        "export": "pluginBarrel",
        "displayName": "Barrel",
        "description": "Generates index.ts barrel files for every plugin output and one root barrel.",
        "category": "output",
        "icon": {
          "light": "https://kubb.dev/feature/plugins-light.svg"
        },
        "tags": [
          "barrel",
          "index",
          "exports",
          "output"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-barrel",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        }
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T13:10:48Z",
      "stats": {
        "downloads": 173469,
        "weekly": 57352,
        "stars": 1820
      }
    },
    {
      "id": "kubb-labs/plugin-client",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-client",
        "version": "5.5.8"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-client"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-client",
        "export": "pluginClient",
        "displayName": "Client",
        "description": "Generates typed operation functions from your OpenAPI spec that call a client module you own, so you decide the transport, auth, and error handling.",
        "category": "client",
        "icon": {
          "light": "https://kubb.dev/feature/javascript.svg"
        },
        "tags": [
          "api-client",
          "http-client",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-client",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "clients"
          },
          {
            "key": "importPath",
            "path": [
              "importPath"
            ],
            "label": "Import Path",
            "description": "Import specifier of your client module, as the generated files import it",
            "type": "text"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "validator",
            "path": [
              "validator"
            ],
            "label": "Validator",
            "description": "Pass request and response schemas from @kubb/plugin-zod to your client",
            "type": "select",
            "default": false,
            "choices": [
              {
                "label": "false (disabled)",
                "value": false
              },
              {
                "label": "zod",
                "value": "zod"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 469264,
        "weekly": 108067,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-cypress",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-cypress",
        "version": "5.0.9"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-cypress"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-cypress",
        "export": "pluginCypress",
        "displayName": "Cypress",
        "description": "Generates a typed cy.request() wrapper per OpenAPI operation so your Cypress tests call the API through generated helpers and catch broken calls at compile time.",
        "category": "testing",
        "icon": {
          "light": "https://kubb.dev/feature/cypress.svg"
        },
        "tags": [
          "cypress",
          "e2e-testing",
          "api-testing",
          "test-generation",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-cypress",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "cypress"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "baseURL",
            "path": [
              "baseURL"
            ],
            "label": "Base URL",
            "description": "Custom base URL for generated tests",
            "type": "text"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 32179,
        "weekly": 7518,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-faker",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-faker",
        "version": "5.1.4"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-faker"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-faker",
        "export": "pluginFaker",
        "displayName": "Faker",
        "description": "Generates a Faker.js mock-data factory for every schema in your OpenAPI spec.",
        "category": "mocks",
        "icon": {
          "light": "https://kubb.dev/feature/faker.svg"
        },
        "tags": [
          "faker",
          "mock-data",
          "mocks",
          "fixtures",
          "testing",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-faker",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "mocks"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "dateParser",
            "path": [
              "dateParser"
            ],
            "label": "Date Parser",
            "type": "select",
            "default": "faker",
            "choices": [
              {
                "label": "faker",
                "value": "faker"
              },
              {
                "label": "dayjs",
                "value": "dayjs"
              },
              {
                "label": "moment",
                "value": "moment"
              }
            ]
          },
          {
            "key": "regexGenerator",
            "path": [
              "regexGenerator"
            ],
            "label": "Regex Generator",
            "type": "select",
            "default": "faker",
            "choices": [
              {
                "label": "faker",
                "value": "faker"
              },
              {
                "label": "randexp",
                "value": "randexp"
              }
            ]
          },
          {
            "key": "locale",
            "path": [
              "locale"
            ],
            "label": "Locale",
            "description": "Faker locale used for generated values",
            "type": "text",
            "default": "en"
          },
          {
            "key": "seed",
            "path": [
              "seed"
            ],
            "label": "Seed",
            "description": "Fixed seed for consistent output",
            "type": "number"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 309218,
        "weekly": 83588,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-fetch",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-fetch",
        "version": "5.5.10"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-fetch"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-fetch",
        "export": "pluginFetch",
        "displayName": "Fetch",
        "description": "Generates a type-safe Fetch API client from your OpenAPI spec, one async function per operation, so each call stays in sync with the API.",
        "category": "client",
        "icon": {
          "light": "https://kubb.dev/feature/javascript.svg"
        },
        "tags": [
          "api-client",
          "fetch",
          "http-client",
          "codegen",
          "openapi",
          "validator"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-fetch",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "role": "client",
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "clients"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "validator",
            "path": [
              "validator"
            ],
            "label": "Validator",
            "description": "Validate request and response bodies with schemas from @kubb/plugin-zod",
            "type": "select",
            "default": false,
            "choices": [
              {
                "label": "false (disabled)",
                "value": false
              },
              {
                "label": "zod",
                "value": "zod"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "baseURL",
            "path": [
              "baseURL"
            ],
            "label": "Base URL",
            "description": "Custom API base URL",
            "type": "text"
          },
          {
            "key": "sdkMode",
            "path": [
              "sdk",
              "mode"
            ],
            "label": "SDK Mode",
            "description": "Group generated operations into an SDK client by tag or flat",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "off (standalone functions)",
                "value": null
              },
              {
                "label": "tag",
                "value": "tag"
              },
              {
                "label": "flat",
                "value": "flat"
              }
            ]
          },
          {
            "key": "sdkName",
            "path": [
              "sdk",
              "name"
            ],
            "label": "SDK Name",
            "description": "Root client name for the generated SDK",
            "type": "text"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 83577,
        "weekly": 29567,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-mcp",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-mcp",
        "version": "5.1.1"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-mcp"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-mcp",
        "export": "pluginMcp",
        "displayName": "MCP",
        "description": "Generates a Model Context Protocol server from your OpenAPI spec, so AI assistants can call each operation as a typed tool.",
        "category": "ai",
        "icon": {
          "light": "https://kubb.dev/feature/mcp-light.svg",
          "dark": "https://kubb.dev/feature/mcp-dark.svg"
        },
        "tags": [
          "mcp",
          "model-context-protocol",
          "ai",
          "claude",
          "llm",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-mcp",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts",
          "plugin-zod"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "role": "consumer",
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "mcp"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "client",
            "path": [
              "client"
            ],
            "label": "Client",
            "description": "HTTP client the generated hooks call. Only needed to disambiguate when both plugin-fetch and plugin-axios are enabled",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "auto-detect",
                "value": null
              },
              {
                "label": "fetch",
                "value": "fetch"
              },
              {
                "label": "axios",
                "value": "axios"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 40072,
        "weekly": 9641,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-msw",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-msw",
        "version": "5.0.11"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-msw"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-msw",
        "export": "pluginMsw",
        "displayName": "MSW",
        "description": "Generates MSW request handlers from your OpenAPI spec so you can mock the API in tests and during local development.",
        "category": "mocks",
        "icon": {
          "light": "https://kubb.dev/feature/msw.svg"
        },
        "tags": [
          "msw",
          "mock-service-worker",
          "api-mocking",
          "mocks",
          "testing",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-msw",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts",
          "plugin-faker"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "handlers"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "handlers",
            "path": [
              "handlers"
            ],
            "label": "Handlers File",
            "description": "Generate handlers.ts barrel file",
            "type": "boolean",
            "default": false
          },
          {
            "key": "parser",
            "path": [
              "parser"
            ],
            "label": "Parser",
            "type": "select",
            "default": "data",
            "choices": [
              {
                "label": "data",
                "value": "data"
              },
              {
                "label": "faker",
                "value": "faker"
              }
            ]
          },
          {
            "key": "baseURL",
            "path": [
              "baseURL"
            ],
            "label": "Base URL",
            "description": "Custom base URL for handlers",
            "type": "text"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 286763,
        "weekly": 78999,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-react-query",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-react-query",
        "version": "5.3.2"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-react-query"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-react-query",
        "export": "pluginReactQuery",
        "displayName": "React Query",
        "description": "Generates typed TanStack Query hooks for React from your OpenAPI spec, so reads and writes call your API through useQuery, useMutation, and useInfiniteQuery without hand-written boilerplate.",
        "category": "framework",
        "icon": {
          "light": "https://kubb.dev/feature/tanstack.svg"
        },
        "tags": [
          "react-query",
          "tanstack-query",
          "react",
          "hooks",
          "data-fetching",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-react-query",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "role": "consumer",
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "hooks"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "client",
            "path": [
              "client"
            ],
            "label": "Client",
            "description": "HTTP client the generated hooks call. Only needed to disambiguate when both plugin-fetch and plugin-axios are enabled",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "auto-detect",
                "value": null
              },
              {
                "label": "fetch",
                "value": "fetch"
              },
              {
                "label": "axios",
                "value": "axios"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "hooks",
            "path": [
              "hooks"
            ],
            "label": "Hooks",
            "description": "Generate use* functions instead of only queryOptions and mutation helpers",
            "type": "boolean",
            "default": false
          },
          {
            "key": "suspense",
            "path": [
              "suspense"
            ],
            "label": "Suspense",
            "description": "Add useSuspenseQuery hooks alongside useQuery (TanStack Query v5+)",
            "type": "boolean",
            "default": false,
            "trueValue": {},
            "falseValue": false
          },
          {
            "key": "infiniteQueryParam",
            "path": [
              "infinite",
              "queryParam"
            ],
            "label": "Infinite Query Param",
            "description": "Enable infinite queries, set the pageParam key (e.g. \"id\"). Leave empty to disable.",
            "type": "text"
          },
          {
            "key": "queryMethods",
            "path": [
              "query",
              "methods"
            ],
            "label": "Query Methods",
            "description": "Comma-separated HTTP methods treated as queries (default: GET)",
            "type": "list",
            "default": [
              "GET"
            ],
            "itemCase": "upper"
          },
          {
            "key": "queryImportPath",
            "path": [
              "query",
              "importPath"
            ],
            "label": "Query Import Path",
            "description": "Module specifier the generated query hook imports from",
            "type": "text",
            "default": "@tanstack/react-query"
          },
          {
            "key": "mutationMethods",
            "path": [
              "mutation",
              "methods"
            ],
            "label": "Mutation Methods",
            "description": "Comma-separated HTTP methods treated as mutations (default: POST, PUT, PATCH, DELETE)",
            "type": "list",
            "default": [
              "POST",
              "PUT",
              "PATCH",
              "DELETE"
            ],
            "itemCase": "upper"
          },
          {
            "key": "mutationImportPath",
            "path": [
              "mutation",
              "importPath"
            ],
            "label": "Mutation Import Path",
            "description": "Module specifier the generated mutation hook imports from",
            "type": "text",
            "default": "@tanstack/react-query"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 400407,
        "weekly": 104847,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-redoc",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-redoc",
        "version": "5.0.7"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-redoc"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-redoc",
        "export": "pluginRedoc",
        "displayName": "Redoc",
        "description": "Generates a single-file HTML page from your OpenAPI spec with Redoc, rebuilt on every Kubb run so the docs match the spec your code comes from.",
        "category": "documentation",
        "icon": {
          "light": "https://kubb.dev/feature/openapi.svg"
        },
        "tags": [
          "redoc",
          "api-docs",
          "documentation",
          "interactive-docs",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-redoc",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Path of the generated HTML file. End it in .html.",
            "type": "text",
            "default": "docs.html"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 41670,
        "weekly": 9476,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-swr",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-swr",
        "version": "5.2.4"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-swr"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-swr",
        "export": "pluginSwr",
        "displayName": "SWR",
        "description": "Generates typed SWR hooks from your OpenAPI spec, so data fetching stays in sync with the API.",
        "category": "framework",
        "icon": {
          "light": "https://kubb.dev/feature/swr.svg"
        },
        "tags": [
          "swr",
          "react",
          "hooks",
          "data-fetching",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-swr",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "role": "consumer",
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "hooks"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "client",
            "path": [
              "client"
            ],
            "label": "Client",
            "description": "HTTP client the generated hooks call. Only needed to disambiguate when both plugin-fetch and plugin-axios are enabled",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "auto-detect",
                "value": null
              },
              {
                "label": "fetch",
                "value": "fetch"
              },
              {
                "label": "axios",
                "value": "axios"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "queryMethods",
            "path": [
              "query",
              "methods"
            ],
            "label": "Query Methods",
            "description": "Comma-separated HTTP methods treated as queries (default: GET)",
            "type": "list",
            "default": [
              "GET"
            ],
            "itemCase": "upper"
          },
          {
            "key": "queryImportPath",
            "path": [
              "query",
              "importPath"
            ],
            "label": "Query Import Path",
            "description": "Module specifier the generated query hook imports from",
            "type": "text",
            "default": "swr"
          },
          {
            "key": "mutationMethods",
            "path": [
              "mutation",
              "methods"
            ],
            "label": "Mutation Methods",
            "description": "Comma-separated HTTP methods treated as mutations (default: POST, PUT, PATCH, DELETE)",
            "type": "list",
            "default": [
              "POST",
              "PUT",
              "PATCH",
              "DELETE"
            ],
            "itemCase": "upper"
          },
          {
            "key": "mutationImportPath",
            "path": [
              "mutation",
              "importPath"
            ],
            "label": "Mutation Import Path",
            "description": "Module specifier the generated mutation hook imports from",
            "type": "text",
            "default": "swr/mutation"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 45926,
        "weekly": 10108,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-ts",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-ts",
        "version": "5.0.9"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-ts"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-ts",
        "export": "pluginTs",
        "displayName": "TypeScript",
        "description": "Generates TypeScript types and interfaces from your OpenAPI spec, the typed foundation the other Kubb plugins build on.",
        "category": "types",
        "icon": {
          "light": "https://kubb.dev/feature/typescript.svg"
        },
        "tags": [
          "typescript",
          "types",
          "interfaces",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-ts",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "types"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "enumType",
            "path": [
              "enum",
              "type"
            ],
            "label": "Enum Type",
            "description": "How OpenAPI enums are represented in the generated TypeScript",
            "type": "select",
            "default": "asConst",
            "choices": [
              {
                "label": "asConst",
                "value": "asConst"
              },
              {
                "label": "enum",
                "value": "enum"
              },
              {
                "label": "constEnum",
                "value": "constEnum"
              },
              {
                "label": "literal",
                "value": "literal"
              },
              {
                "label": "inlineLiteral",
                "value": "inlineLiteral"
              }
            ]
          },
          {
            "key": "enumConstCasing",
            "path": [
              "enum",
              "constCasing"
            ],
            "label": "Enum Const Casing",
            "description": "Casing of the generated const variable (asConst only)",
            "type": "select",
            "default": "camelCase",
            "choices": [
              {
                "label": "camelCase",
                "value": "camelCase"
              },
              {
                "label": "pascalCase",
                "value": "pascalCase"
              }
            ]
          },
          {
            "key": "enumTypeSuffix",
            "path": [
              "enum",
              "typeSuffix"
            ],
            "label": "Enum Type Suffix",
            "description": "Suffix appended to the generated enum type alias (asConst only)",
            "type": "text",
            "default": "Key"
          },
          {
            "key": "enumKeyCasing",
            "path": [
              "enum",
              "keyCasing"
            ],
            "label": "Enum Key Casing",
            "description": "Casing for enum key names",
            "type": "select",
            "default": "none",
            "choices": [
              {
                "label": "none",
                "value": "none"
              },
              {
                "label": "pascalCase",
                "value": "pascalCase"
              },
              {
                "label": "camelCase",
                "value": "camelCase"
              },
              {
                "label": "snakeCase",
                "value": "snakeCase"
              },
              {
                "label": "SCREAMING_SNAKE_CASE",
                "value": "screamingSnakeCase"
              }
            ]
          },
          {
            "key": "syntaxType",
            "path": [
              "syntaxType"
            ],
            "label": "Syntax Type",
            "type": "select",
            "default": "type",
            "choices": [
              {
                "label": "type",
                "value": "type"
              },
              {
                "label": "interface",
                "value": "interface"
              }
            ]
          },
          {
            "key": "optionalType",
            "path": [
              "optionalType"
            ],
            "label": "Optional Type",
            "type": "select",
            "default": "questionToken",
            "choices": [
              {
                "label": "questionToken",
                "value": "questionToken"
              },
              {
                "label": "undefined",
                "value": "undefined"
              },
              {
                "label": "questionTokenAndUndefined",
                "value": "questionTokenAndUndefined"
              }
            ]
          },
          {
            "key": "arrayType",
            "path": [
              "arrayType"
            ],
            "label": "Array Type",
            "type": "select",
            "default": "array",
            "choices": [
              {
                "label": "array (T[])",
                "value": "array"
              },
              {
                "label": "generic (Array<T>)",
                "value": "generic"
              }
            ]
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 1250222,
        "weekly": 319879,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-vue-query",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-vue-query",
        "version": "5.3.2"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-vue-query"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-vue-query",
        "export": "pluginVueQuery",
        "displayName": "Vue Query",
        "description": "Generates TanStack Query composables for Vue from your OpenAPI spec, so every read and write is a typed useQuery, useInfiniteQuery, or useMutation.",
        "category": "framework",
        "icon": {
          "light": "https://kubb.dev/feature/tanstack.svg"
        },
        "tags": [
          "vue-query",
          "tanstack-query",
          "vue",
          "composables",
          "data-fetching",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-vue-query",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "dependencies": [
          "plugin-ts"
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "role": "consumer",
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "hooks"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "client",
            "path": [
              "client"
            ],
            "label": "Client",
            "description": "HTTP client the generated hooks call. Only needed to disambiguate when both plugin-fetch and plugin-axios are enabled",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "auto-detect",
                "value": null
              },
              {
                "label": "fetch",
                "value": "fetch"
              },
              {
                "label": "axios",
                "value": "axios"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "hooks",
            "path": [
              "hooks"
            ],
            "label": "Hooks",
            "description": "Generate use* functions instead of only queryOptions and mutation helpers",
            "type": "boolean",
            "default": false
          },
          {
            "key": "infiniteQueryParam",
            "path": [
              "infinite",
              "queryParam"
            ],
            "label": "Infinite Query Param",
            "description": "Enable infinite queries, set the pageParam key (e.g. \"id\"). Leave empty to disable.",
            "type": "text"
          },
          {
            "key": "queryMethods",
            "path": [
              "query",
              "methods"
            ],
            "label": "Query Methods",
            "description": "Comma-separated HTTP methods treated as queries (default: GET)",
            "type": "list",
            "default": [
              "GET"
            ],
            "itemCase": "upper"
          },
          {
            "key": "queryImportPath",
            "path": [
              "query",
              "importPath"
            ],
            "label": "Query Import Path",
            "description": "Module specifier the generated query hook imports from",
            "type": "text",
            "default": "@tanstack/vue-query"
          },
          {
            "key": "mutationMethods",
            "path": [
              "mutation",
              "methods"
            ],
            "label": "Mutation Methods",
            "description": "Comma-separated HTTP methods treated as mutations (default: POST, PUT, PATCH, DELETE)",
            "type": "list",
            "default": [
              "POST",
              "PUT",
              "PATCH",
              "DELETE"
            ],
            "itemCase": "upper"
          },
          {
            "key": "mutationImportPath",
            "path": [
              "mutation",
              "importPath"
            ],
            "label": "Mutation Import Path",
            "description": "Module specifier the generated mutation hook imports from",
            "type": "text",
            "default": "@tanstack/vue-query"
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 36338,
        "weekly": 8517,
        "stars": 8
      }
    },
    {
      "id": "kubb-labs/plugin-zod",
      "kind": "plugin",
      "type": "official",
      "artifact": {
        "kind": "npm",
        "package": "@kubb/plugin-zod",
        "version": "5.4.7"
      },
      "repository": {
        "url": "https://github.com/kubb-labs/plugins/tree/main/packages/plugin-zod"
      },
      "manifest": {
        "$schema": "https://kubb.dev/schemas/kubb-extension.json",
        "kind": "plugin",
        "name": "plugin-zod",
        "export": "pluginZod",
        "displayName": "Zod",
        "description": "Generates Zod v4 schemas from your OpenAPI spec so you validate API responses, form input, and query params at runtime.",
        "category": "validation",
        "icon": {
          "light": "https://kubb.dev/feature/zod.svg"
        },
        "tags": [
          "zod",
          "validation",
          "schema",
          "runtime-validation",
          "codegen",
          "openapi"
        ],
        "docs": "https://kubb.dev/extensions/kubb-labs/plugin-zod",
        "maintainers": [
          {
            "name": "Stijn Van Hulle",
            "github": "stijnvanhulle"
          }
        ],
        "compatibility": {
          "kubb": ">=5.8.3",
          "node": ">=22"
        },
        "options": [
          {
            "key": "outputPath",
            "path": [
              "output",
              "path"
            ],
            "label": "Output Path",
            "description": "Output folder for generated files",
            "type": "text",
            "default": "zod"
          },
          {
            "key": "barrel",
            "path": [
              "output",
              "barrel"
            ],
            "label": "Barrel",
            "description": "How index.ts barrel files are generated",
            "type": "select",
            "default": {
              "type": "named"
            },
            "choices": [
              {
                "label": "named",
                "value": {
                  "type": "named"
                }
              },
              {
                "label": "named (nested)",
                "value": {
                  "type": "named",
                  "nested": true
                }
              },
              {
                "label": "all",
                "value": {
                  "type": "all"
                }
              },
              {
                "label": "all (nested)",
                "value": {
                  "type": "all",
                  "nested": true
                }
              },
              {
                "label": "false (disabled)",
                "value": false
              }
            ]
          },
          {
            "key": "outputMode",
            "path": [
              "output",
              "mode"
            ],
            "label": "Output Mode",
            "description": "How the plugin consolidates its code into files. File mode writes everything into a single file, so the output path must include a file extension and cannot be grouped.",
            "type": "select",
            "default": "directory",
            "choices": [
              {
                "label": "directory (one file per schema)",
                "value": "directory"
              },
              {
                "label": "file (single file)",
                "value": "file"
              }
            ]
          },
          {
            "key": "group",
            "path": [
              "group"
            ],
            "label": "Group",
            "description": "Group generated operations by OpenAPI tag or path",
            "type": "select",
            "default": null,
            "choices": [
              {
                "label": "none",
                "value": null
              },
              {
                "label": "by tag",
                "value": {
                  "type": "tag"
                }
              },
              {
                "label": "by path",
                "value": {
                  "type": "path"
                }
              }
            ]
          },
          {
            "key": "excludeTags",
            "path": [
              "exclude"
            ],
            "label": "Exclude Tags",
            "description": "Comma-separated OpenAPI tags to exclude from generation",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "includeTags",
            "path": [
              "include"
            ],
            "label": "Include Tags",
            "description": "Comma-separated OpenAPI tags to include. Only operations with these tags are generated",
            "type": "list",
            "item": {
              "type": "tag",
              "pattern": "$item"
            }
          },
          {
            "key": "mini",
            "path": [
              "mini"
            ],
            "label": "Zod Mini",
            "description": "Use Zod Mini functional API for better tree-shaking",
            "type": "boolean",
            "default": false
          },
          {
            "key": "importPath",
            "path": [
              "importPath"
            ],
            "label": "Import Path",
            "description": "Module specifier used in the import statement",
            "type": "text",
            "default": "zod"
          },
          {
            "key": "guidType",
            "path": [
              "guidType"
            ],
            "label": "GUID Type",
            "description": "Validator used for OpenAPI format: uuid",
            "type": "select",
            "default": "uuid",
            "choices": [
              {
                "label": "uuid",
                "value": "uuid"
              },
              {
                "label": "guid",
                "value": "guid"
              }
            ]
          },
          {
            "key": "regexType",
            "path": [
              "regexType"
            ],
            "label": "Regex Type",
            "description": "Output form for an OpenAPI pattern inside .regex(...)",
            "type": "select",
            "default": "literal",
            "choices": [
              {
                "label": "literal",
                "value": "literal"
              },
              {
                "label": "constructor",
                "value": "constructor"
              }
            ]
          },
          {
            "key": "inferred",
            "path": [
              "inferred"
            ],
            "label": "Inferred",
            "description": "Export a z.infer type alias next to every generated schema",
            "type": "boolean",
            "default": false
          },
          {
            "key": "coercion",
            "path": [
              "coercion"
            ],
            "label": "Coercion",
            "description": "Wrap schemas in z.coerce so input is coerced before validation",
            "type": "boolean",
            "default": false
          }
        ]
      },
      "submittedAt": "2026-10-12T20:11:53Z",
      "publishedAt": "2026-10-12T20:11:53Z",
      "reviewedAt": "2026-10-13T12:44:26Z",
      "stats": {
        "downloads": 923750,
        "weekly": 232315,
        "stars": 8
      }
    }
  ]
}
