{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://traefik.io/schemas/traefik/middleware.json",
  "title": "Traefik HTTP Middleware",
  "description": "An HTTP middleware as exposed by the Traefik /api/http/middlewares endpoint. Each entry shows the middleware's normalized name (name@provider), the middleware type, current status, originating provider, and the routers currently chaining it.",
  "type": "object",
  "required": ["name", "type"],
  "properties": {
    "name": {
      "type": "string",
      "description": "Normalized middleware identifier in the form name@provider.",
      "minLength": 1
    },
    "type": {
      "type": "string",
      "description": "Middleware type identifier.",
      "enum": [
        "addprefix",
        "basicauth",
        "buffering",
        "chain",
        "circuitbreaker",
        "compress",
        "contenttype",
        "digestauth",
        "encodedcharacters",
        "errors",
        "forwardauth",
        "grpcweb",
        "headers",
        "inflightreq",
        "ipallowlist",
        "passtlsclientcert",
        "plugin",
        "ratelimit",
        "redirectregex",
        "redirectscheme",
        "replacepath",
        "replacepathregex",
        "retry",
        "stripprefix",
        "stripprefixregex"
      ]
    },
    "status": {
      "type": "string",
      "description": "Operational status of the middleware.",
      "enum": ["enabled", "disabled", "warning"]
    },
    "provider": {
      "type": "string",
      "description": "Configuration provider that created the middleware (docker, kubernetescrd, kubernetesingress, file, consul, nomad, ecs, etc.)."
    },
    "usedBy": {
      "type": "array",
      "description": "List of router names that currently chain this middleware.",
      "items": { "type": "string" }
    }
  }
}
