Istio · Schema

Istio WasmPlugin

A WasmPlugin provides a mechanism to extend the functionality provided by the Istio proxy through WebAssembly filters. It enables custom authentication, authorization, metrics, logging, and traffic transformation at the proxy level.

CNCFKubernetesMicroservicesOpen-SourceService Mesh

Properties

Name Type Description
selector object Workload selector to apply the plugin to specific workloads.
targetRefs array Target references to apply the plugin to specific resources.
url string URL of a Wasm module or OCI container image. Supports oci://, http://, https://, and file:// schemes.
sha256 string SHA256 checksum that will be used to verify the Wasm module or OCI container.
imagePullPolicy string The pull behavior to be applied when fetching Wasm module images.
imagePullSecret string Credentials to use for OCI image pulling. Name of a Kubernetes Secret.
pluginConfig object The configuration that will be passed on to the plugin. Encoded as JSON and passed to the Wasm module.
pluginName string The plugin name to be used in the Envoy configuration. Allows distinguishing between multiple uses of the same Wasm module.
phase string Determines where in the filter chain this WasmPlugin is to be injected.
priority integer Determines ordering of WasmPlugins in the same phase. Higher priority is evaluated first.
failStrategy string Specifies the failure behavior for the plugin. FAIL_CLOSE rejects traffic, FAIL_OPEN skips the plugin.
vmConfig object Configuration for the Wasm VM.
match array Specifies the criteria to determine which traffic is passed to WasmPlugin.
type string Specifies the type of Wasm Extension to be used.
View JSON Schema on GitHub

JSON Schema

wasm-plugin.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/istio/blob/main/json-schema/wasm-plugin.json",
  "title": "Istio WasmPlugin",
  "description": "A WasmPlugin provides a mechanism to extend the functionality provided by the Istio proxy through WebAssembly filters. It enables custom authentication, authorization, metrics, logging, and traffic transformation at the proxy level.",
  "type": "object",
  "properties": {
    "selector": {
      "type": "object",
      "properties": {
        "matchLabels": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "One or more labels that indicate a specific set of pods/VMs on which the plugin should be applied."
        }
      },
      "description": "Workload selector to apply the plugin to specific workloads."
    },
    "targetRefs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "group": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "description": "Target references to apply the plugin to specific resources."
    },
    "url": {
      "type": "string",
      "description": "URL of a Wasm module or OCI container image. Supports oci://, http://, https://, and file:// schemes."
    },
    "sha256": {
      "type": "string",
      "description": "SHA256 checksum that will be used to verify the Wasm module or OCI container."
    },
    "imagePullPolicy": {
      "type": "string",
      "enum": ["UNSPECIFIED_POLICY", "IfNotPresent", "Always"],
      "description": "The pull behavior to be applied when fetching Wasm module images."
    },
    "imagePullSecret": {
      "type": "string",
      "description": "Credentials to use for OCI image pulling. Name of a Kubernetes Secret."
    },
    "pluginConfig": {
      "type": "object",
      "description": "The configuration that will be passed on to the plugin. Encoded as JSON and passed to the Wasm module."
    },
    "pluginName": {
      "type": "string",
      "description": "The plugin name to be used in the Envoy configuration. Allows distinguishing between multiple uses of the same Wasm module."
    },
    "phase": {
      "type": "string",
      "enum": ["UNSPECIFIED_PHASE", "AUTHN", "AUTHZ", "STATS"],
      "description": "Determines where in the filter chain this WasmPlugin is to be injected."
    },
    "priority": {
      "type": "integer",
      "description": "Determines ordering of WasmPlugins in the same phase. Higher priority is evaluated first."
    },
    "failStrategy": {
      "type": "string",
      "enum": ["FAIL_CLOSE", "FAIL_OPEN"],
      "description": "Specifies the failure behavior for the plugin. FAIL_CLOSE rejects traffic, FAIL_OPEN skips the plugin."
    },
    "vmConfig": {
      "type": "object",
      "description": "Configuration for the Wasm VM.",
      "properties": {
        "env": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Name of the environment variable."
              },
              "valueFrom": {
                "type": "string",
                "enum": ["INLINE", "HOST"],
                "description": "Source for the environment variable's value."
              },
              "value": {
                "type": "string",
                "description": "Value for the environment variable when valueFrom is INLINE."
              }
            },
            "required": ["name"]
          },
          "description": "Environment variables to pass to the VM."
        }
      }
    },
    "match": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": ["UNDEFINED", "CLIENT", "SERVER", "CLIENT_AND_SERVER"],
            "description": "Criteria for selecting traffic by their direction."
          },
          "ports": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "number": {
                  "type": "integer"
                }
              }
            },
            "description": "Criteria for selecting traffic by port."
          }
        }
      },
      "description": "Specifies the criteria to determine which traffic is passed to WasmPlugin."
    },
    "type": {
      "type": "string",
      "enum": ["UNSPECIFIED_PLUGIN_TYPE", "HTTP", "NETWORK"],
      "description": "Specifies the type of Wasm Extension to be used."
    }
  },
  "required": ["url"]
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/wasm-plugin"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.