Kong · Schema
DatakitPluginConfig
API GatewayAI GatewayAI ConnectivityAgent GatewayEvent GatewayMCP RegistryService MeshLLMKafkaKonnectOpen Source
Properties
| Name | Type | Description |
|---|---|---|
| config | object | |
| consumer | object | If set, the plugin will activate only for requests where the specified has been authenticated. (Note that some plugins can not be restricted to consumers this way.). Leave unset for the plugin to acti |
| consumer_group | object | If set, the plugin will activate only for requests where the specified consumer group has been authenticated. (Note that some plugins can not be restricted to consumers groups this way.). Leave unset |
| name | object | |
| protocols | array | A set of strings representing HTTP protocols. |
| route | object | If set, the plugin will only activate when receiving requests via the specified route. Leave unset for the plugin to activate regardless of the route being used. |
| service | object | If set, the plugin will only activate when receiving requests via one of the routes belonging to the specified Service. Leave unset for the plugin to activate regardless of the Service being matched. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "#/components/schemas/DatakitPluginConfig",
"title": "DatakitPluginConfig",
"x-speakeasy-entity": "PluginDatakit",
"properties": {
"config": {
"type": "object",
"properties": {
"debug": {
"type": "boolean",
"default": false
},
"nodes": {
"type": "array",
"items": {
"oneOf": [
{
"description": "Execute different nodes based on some input condition",
"properties": {
"else": {
"description": "nodes to execute if the input condition is `false`",
"type": "array",
"items": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"maxLength": 255,
"minLength": 1,
"type": "string"
},
"maxLength": 64,
"minLength": 1
},
"input": {
"description": "branch node input",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"output": {
"description": "branch node output",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"outputs": {
"description": "branch node outputs",
"type": "object",
"properties": {
"else": {
"description": "node output",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"then": {
"description": "node output",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"then": {
"description": "nodes to execute if the input condition is `true`",
"type": "array",
"items": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"maxLength": 255,
"minLength": 1,
"type": "string"
},
"maxLength": 64,
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"branch"
],
"x-terraform-transform-const": true
}
},
"title": "branch",
"type": "object"
},
{
"description": "Fetch cached data",
"properties": {
"bypass_on_error": {
"type": "boolean"
},
"input": {
"description": "cache node input",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"inputs": {
"description": "cache node inputs",
"type": "object",
"properties": {
"data": {
"description": "The data to be cached.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"key": {
"description": "The cache key.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"ttl": {
"description": "The TTL in seconds.",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"output": {
"description": "cache node output",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"outputs": {
"description": "cache node outputs",
"type": "object",
"properties": {
"data": {
"description": "The data that was cached.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"hit": {
"description": "Signals a cache hit.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"miss": {
"description": "Signals a cache miss.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"stored": {
"description": "Signals whether data was stored in cache.",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"ttl": {
"type": "integer"
},
"type": {
"type": "string",
"enum": [
"cache"
],
"x-terraform-transform-const": true
}
},
"title": "cache",
"type": "object"
},
{
"description": "Make an external HTTP request",
"properties": {
"input": {
"description": "call node input",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"inputs": {
"description": "call node inputs",
"type": "object",
"properties": {
"body": {
"description": "HTTP request body",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"headers": {
"description": "HTTP request headers",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"http_proxy": {
"description": "The HTTP proxy URL. This proxy server will be used for HTTP requests.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"https_proxy": {
"description": "The HTTPS proxy URL. This proxy server will be used for HTTPS requests.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"proxy_auth_password": {
"description": "The password to authenticate with, if the forward proxy is protected by basic authentication.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"proxy_auth_username": {
"description": "The username to authenticate with, if the forward proxy is protected by basic authentication.",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"query": {
"description": "HTTP request query",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"url": {
"description": "HTTP request URL",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"method": {
"description": "A string representing an HTTP method, such as GET, POST, PUT, or DELETE. The string must contain only uppercase letters.",
"type": "string",
"default": "GET",
"maxLength": 32,
"minLength": 1
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"output": {
"description": "call node output",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"outputs": {
"description": "call node outputs",
"type": "object",
"properties": {
"body": {
"description": "HTTP response body",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"headers": {
"description": "HTTP response headers",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"raw_body": {
"description": "The raw, non-decoded HTTP response body",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"status": {
"description": "HTTP response status code",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"ssl_server_name": {
"description": "A string representing an SNI (server name indication) value for TLS.",
"type": "string"
},
"ssl_verify": {
"description": "Whether to verify the TLS certificate when making HTTPS requests.",
"type": "boolean",
"default": true
},
"timeout": {
"description": "An integer representing a timeout in milliseconds. Must be between 0 and 2^31-2.",
"type": "integer",
"maximum": 2147483646,
"minimum": 0
},
"type": {
"type": "string",
"enum": [
"call"
],
"x-terraform-transform-const": true
},
"url": {
"description": "A string representing a URL, such as https://example.com/path/to/resource?q=search.",
"type": "string"
}
},
"title": "call",
"type": "object"
},
{
"description": "Terminate the request and send a response to the client",
"properties": {
"input": {
"description": "exit node input",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"inputs": {
"description": "exit node inputs",
"type": "object",
"properties": {
"body": {
"description": "HTTP response body",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"headers": {
"description": "HTTP response headers",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"status": {
"description": "HTTP status code",
"type": "integer",
"default": 200,
"maximum": 599,
"minimum": 200
},
"type": {
"type": "string",
"enum": [
"exit"
],
"x-terraform-transform-const": true
},
"warn_headers_sent": {
"type": "boolean"
}
},
"title": "exit",
"type": "object"
},
{
"description": "Process data using `jq` syntax",
"properties": {
"input": {
"description": "filter input(s)",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"inputs": {
"description": "filter input(s)",
"type": "object",
"additionalProperties": {
"maxLength": 255,
"minLength": 1,
"type": "string"
}
},
"jq": {
"description": "The jq filter text. Refer to https://jqlang.org/manual/ for full documentation.",
"type": "string",
"maxLength": 10240,
"minLength": 1
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"output": {
"description": "filter output(s)",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"jq"
],
"x-terraform-transform-const": true
}
},
"required": [
"jq"
],
"title": "jq",
"type": "object"
},
{
"description": "transform JSON or lua table to XML",
"properties": {
"attributes_block_name": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"attributes_name_prefix": {
"type": "string",
"maxLength": 32,
"minLength": 1
},
"input": {
"description": "JSON string or table",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"inputs": {
"description": "JSON string or table",
"type": "object",
"additionalProperties": {
"maxLength": 255,
"minLength": 1,
"type": "string"
}
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"output": {
"description": "XML document converted from JSON",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"root_element_name": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"text_block_name": {
"description": "The name of the block to treat as XML text content.",
"type": "string",
"default": "#text",
"maxLength": 32,
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"json_to_xml"
],
"x-terraform-transform-const": true
}
},
"title": "json_to_xml",
"type": "object"
},
{
"description": "Decode JWT without signature verification",
"properties": {
"input": {
"description": "JWT token (with or without Bearer prefix)",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"output": {
"description": "jwt_decode node output",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"outputs": {
"description": "jwt_decode node outputs",
"type": "object",
"properties": {
"header": {
"description": "Decoded JWT header (alg, kid, typ)",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"payload": {
"description": "Decoded JWT payload (claims)",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"signature": {
"description": "Raw signature (base64url encoded)",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"type": {
"type": "string",
"enum": [
"jwt_decode"
],
"x-terraform-transform-const": true
}
},
"title": "jwt_decode",
"type": "object"
},
{
"description": "Create and sign a JWT",
"properties": {
"algorithm": {
"description": "Signing algorithm",
"type": "string",
"enum": [
"ES256",
"ES384",
"ES512",
"EdDSA",
"HS256",
"HS384",
"HS512",
"PS256",
"PS384",
"PS512",
"RS256",
"RS384",
"RS512"
]
},
"expires_in": {
"description": "Seconds until token expires (for exp claim)",
"type": "integer",
"default": 300
},
"input": {
"description": "jwt_sign node input",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"inputs": {
"description": "jwt_sign node inputs",
"type": "object",
"properties": {
"claims": {
"description": "Dynamic claims to include",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"key": {
"description": "Signing key (PEM, JWK JSON string, or HMAC secret)",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"kid": {
"description": "Key ID for header",
"type": "string"
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"not_before": {
"description": "Seconds until token becomes valid (for nbf claim)",
"type": "integer",
"default": 0
},
"output": {
"description": "jwt_sign node output",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"outputs": {
"description": "jwt_sign node outputs",
"type": "object",
"properties": {
"claims": {
"description": "Complete claims used",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"header": {
"description": "JWT header",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"token": {
"description": "Signed JWT",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"static_claims": {
"description": "Static claims always included",
"type": "object",
"default": {},
"additionalProperties": {
"type": "string"
}
},
"typ": {
"description": "Token type for header",
"type": "string",
"default": "JWT"
},
"type": {
"type": "string",
"enum": [
"jwt_sign"
],
"x-terraform-transform-const": true
}
},
"required": [
"algorithm"
],
"title": "jwt_sign",
"type": "object"
},
{
"description": "Verify JWT signature and validate claims",
"properties": {
"allowed_algorithms": {
"description": "Allowed signing algorithms (empty = any supported)",
"type": "array",
"items": {
"enum": [
"ES256",
"ES384",
"ES512",
"EdDSA",
"HS256",
"HS384",
"HS512",
"PS256",
"PS384",
"PS512",
"RS256",
"RS384",
"RS512"
],
"type": "string"
},
"default": []
},
"audiences": {
"description": "Allowed audiences (empty = any)",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"input": {
"description": "jwt_verify node input",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"inputs": {
"description": "jwt_verify node inputs",
"type": "object",
"properties": {
"key": {
"description": "Verification key: JWKS, JWK, PEM string, or HMAC secret",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"token": {
"description": "JWT token (with or without Bearer prefix)",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"issuers": {
"description": "Allowed issuers (empty = any)",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"leeway": {
"description": "Allowed clock skew in seconds for exp/nbf validation",
"type": "integer",
"default": 0
},
"name": {
"description": "A label that uniquely identifies the node within the plugin configuration so that it can be used for input/output connections. Must be valid `snake_case` or `kebab-case`.",
"type": "string",
"maxLength": 255,
"minLength": 1,
"x-lua-required": true
},
"output": {
"description": "jwt_verify node output",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"outputs": {
"description": "jwt_verify node outputs",
"type": "object",
"properties": {
"claims": {
"description": "JWT payload claims",
"type": "string",
"maxLength": 255,
"minLength": 1
},
"header": {
"description": "JWT header",
"type": "string",
"maxLength": 255,
"minLength": 1
}
}
},
"required_claims": {
"description": "Claims that must be present",
"type": "array",
"items": {
"type": "string"
},
"default": []
},
"type": {
"type": "string",
"enum": [
"jwt_verify"
],
"x-terraform-transform-const": true
},
"validate_exp": {
"description": "Validate expiration claim",
"type": "boolean",
"default": true
},
"validate_nbf": {
"description": "Validate not-before claim",
"type": "boolean",
"default": true
}
},
"title": "jwt_verify",
"type": "object"
},
{
"description": "Get or set a property",
"properties": {
"content_type": {
"description": "The expected mime type of the property value. When set to `application/json`, SET operations will JSON-encode input data before writing it, and GET operations will JSON-decode output data after reading it. Otherwise, this setting has no effect.",
"type": "string",
"enum": [
"application/json",
"application/octet-stream",
"text/plain"
]
},
"input": {
# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kong/refs/heads/main/json-schema/kong-datakitpluginconfig-schema.json