{ "$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": { "description": "Property input source. When connected, this node operates in SET mode and writes input data to the property. Otherwise, the node operates in GET mode and reads the property.", "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": "Property output. This can be connected regardless of whether the node is operating in GET mode or SET mode.", "type": "string", "maxLength": 255, "minLength": 1 }, "property": { "description": "The property name to get/set", "type": "string", "maxLength": 255, "minLength": 1 }, "type": { "type": "string", "enum": [ "property" ], "x-terraform-transform-const": true } }, "required": [ "property" ], "title": "property", "type": "object" }, { "description": "Produce reusable outputs from statically-configured values", "properties": { "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": "The entire `.values` map", "type": "string", "maxLength": 255, "minLength": 1 }, "outputs": { "description": "Individual items from `.values`, referenced by key", "type": "object", "additionalProperties": { "maxLength": 255, "minLength": 1, "type": "string" } }, "type": { "type": "string", "enum": [ "static" ], "x-terraform-transform-const": true }, "values": { "description": "An object with string keys and freeform values", "type": "object", "additionalProperties": true, "x-speakeasy-type-override": "any" } }, "required": [ "values" ], "title": "static", "type": "object" }, { "description": "convert XML to JSON", "properties": { "attributes_block_name": { "type": "string", "maxLength": 32, "minLength": 1 }, "attributes_name_prefix": { "type": "string", "maxLength": 32, "minLength": 1 }, "input": { "description": "XML document string", "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": "a map object converted from XML document. If connected to `request.body` or `response.body`, the output will be a JSON object.", "type": "string", "maxLength": 255, "minLength": 1 }, "recognize_type": { "type": "boolean", "default": true }, "text_as_property": { "type": "boolean", "default": false }, "text_block_name": { "type": "string", "default": "#text", "maxLength": 32, "minLength": 1 }, "type": { "type": "string", "enum": [ "xml_to_json" ], "x-terraform-transform-const": true }, "xpath": { "type": "string", "maxLength": 256, "minLength": 1 } }, "title": "xml_to_json", "type": "object" } ] }, "maxLength": 64, "minLength": 1 }, "resources": { "type": "object", "properties": { "cache": { "type": "object", "properties": { "memory": { "type": "object", "properties": { "dictionary_name": { "description": "The name of the shared dictionary in which to hold cache entities when the memory strategy is selected. Note that this dictionary currently must be defined manually in the Kong Nginx template.", "type": "string", "default": "kong_db_cache" } } }, "redis": { "type": "object", "properties": { "cloud_authentication": { "description": "Cloud auth related configs for connecting to a Cloud Provider's Redis instance.", "type": "object", "properties": { "auth_provider": { "description": "Auth providers to be used to authenticate to a Cloud Provider's Redis instance.", "type": "string", "enum": [ "aws", "azure", "gcp" ], "x-referenceable": true }, "aws_access_key_id": { "description": "AWS Access Key ID to be used for authentication when `auth_provider` is set to `aws`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "aws_assume_role_arn": { "description": "The ARN of the IAM role to assume for generating ElastiCache IAM authentication tokens.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "aws_cache_name": { "description": "The name of the AWS Elasticache cluster when `auth_provider` is set to `aws`.", "type": "string", "x-referenceable": true }, "aws_is_serverless": { "description": "This flag specifies whether the cluster is serverless when auth_provider is set to `aws`.", "type": "boolean", "default": true }, "aws_region": { "description": "The region of the AWS ElastiCache cluster when `auth_provider` is set to `aws`.", "type": "string", "x-referenceable": true }, "aws_role_session_name": { "description": "The session name for the temporary credentials when assuming the IAM role.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "aws_secret_access_key": { "description": "AWS Secret Access Key to be used for authentication when `auth_provider` is set to `aws`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "azure_client_id": { "description": "Azure Client ID to be used for authentication when `auth_provider` is set to `azure`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "azure_client_secret": { "description": "Azure Client Secret to be used for authentication when `auth_provider` is set to `azure`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "azure_tenant_id": { "description": "Azure Tenant ID to be used for authentication when `auth_provider` is set to `azure`.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "gcp_service_account_json": { "description": "GCP Service Account JSON to be used for authentication when `auth_provider` is set to `gcp`.", "type": "string", "x-encrypted": true, "x-referenceable": true } } }, "cluster_max_redirections": { "description": "Maximum retry attempts for redirection.", "type": "integer", "default": 5 }, "cluster_nodes": { "description": "Cluster addresses to use for Redis connections when the `redis` strategy is defined. Defining this field implies using a Redis Cluster. The minimum length of the array is 1 element.", "type": "array", "items": { "properties": { "ip": { "description": "A string representing a host name, such as example.com.", "type": "string", "default": "127.0.0.1" }, "port": { "description": "An integer representing a port number between 0 and 65535, inclusive.", "type": "integer", "default": 6379, "maximum": 65535, "minimum": 0 } }, "type": "object" }, "minLength": 1 }, "connect_timeout": { "description": "An integer representing a timeout in milliseconds. Must be between 0 and 2^31-2.", "type": "integer", "default": 2000, "maximum": 2147483646, "minimum": 0 }, "connection_is_proxied": { "description": "If the connection to Redis is proxied (e.g. Envoy), set it `true`. Set the `host` and `port` to point to the proxy address.", "type": "boolean", "default": false }, "database": { "description": "Database to use for the Redis connection when using the `redis` strategy", "type": "integer", "default": 0 }, "host": { "description": "A string representing a host name, such as example.com.", "type": "string", "default": "127.0.0.1", "x-referenceable": true }, "keepalive_backlog": { "description": "Limits the total number of opened connections for a pool. If the connection pool is full, connection queues above the limit go into the backlog queue. If the backlog queue is full, subsequent connect operations fail and return `nil`. Queued operations (subject to set timeouts) resume once the number of connections in the pool is less than `keepalive_pool_size`. If latency is high or throughput is low, try increasing this value. Empirically, this value is larger than `keepalive_pool_size`.", "type": "integer", "maximum": 2147483646, "minimum": 0 }, "keepalive_pool_size": { "description": "The size limit for every cosocket connection pool associated with every remote server, per worker process. If neither `keepalive_pool_size` nor `keepalive_backlog` is specified, no pool is created. If `keepalive_pool_size` isn't specified but `keepalive_backlog` is specified, then the pool uses the default value. Try to increase (e.g. 512) this value if latency is high or throughput is low.", "type": "integer", "default": 256, "maximum": 2147483646, "minimum": 1 }, "password": { "description": "Password to use for Redis connections. If undefined, no AUTH commands are sent to Redis.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "port": { "description": "An integer representing a port number between 0 and 65535, inclusive.", "type": "integer", "default": 6379, "maximum": 65535, "minimum": 0, "x-referenceable": true }, "read_timeout": { "description": "An integer representing a timeout in milliseconds. Must be between 0 and 2^31-2.", "type": "integer", "default": 2000, "maximum": 2147483646, "minimum": 0 }, "send_timeout": { "description": "An integer representing a timeout in milliseconds. Must be between 0 and 2^31-2.", "type": "integer", "default": 2000, "maximum": 2147483646, "minimum": 0 }, "sentinel_master": { "description": "Sentinel master to use for Redis connections. Defining this value implies using Redis Sentinel.", "type": "string" }, "sentinel_nodes": { "description": "Sentinel node addresses to use for Redis connections when the `redis` strategy is defined. Defining this field implies using a Redis Sentinel. The minimum length of the array is 1 element.", "type": "array", "items": { "properties": { "host": { "description": "A string representing a host name, such as example.com.", "type": "string", "default": "127.0.0.1" }, "port": { "description": "An integer representing a port number between 0 and 65535, inclusive.", "type": "integer", "default": 6379, "maximum": 65535, "minimum": 0 } }, "type": "object" }, "minLength": 1 }, "sentinel_password": { "description": "Sentinel password to authenticate with a Redis Sentinel instance. If undefined, no AUTH commands are sent to Redis Sentinels.", "type": "string", "x-encrypted": true, "x-referenceable": true }, "sentinel_role": { "description": "Sentinel role to use for Redis connections when the `redis` strategy is defined. Defining this value implies using Redis Sentinel.", "type": "string", "enum": [ "any", "master", "slave" ] }, "sentinel_username": { "description": "Sentinel username to authenticate with a Redis Sentinel instance. If undefined, ACL authentication won't be performed. This requires Redis v6.2.0+.", "type": "string", "x-referenceable": true }, "server_name": { "description": "A string representing an SNI (server name indication) value for TLS.", "type": "string", "x-referenceable": true }, "ssl": { "description": "If set to true, uses SSL to connect to Redis.", "type": "boolean", "default": false }, "ssl_verify": { "description": "If set to true, verifies the validity of the server SSL certificate. If setting this parameter, also configure `lua_ssl_trusted_certificate` in `kong.conf` to specify the CA (or server) certificate used by your Redis server. You may also need to configure `lua_ssl_verify_depth` accordingly.", "type": "boolean", "default": true }, "username": { "description": "Username to use for Redis connections. If undefined, ACL authentication won't be performed. This requires Redis v6.0.0+. To be compatible with Redis v5.x.y, you can set it to `default`.", "type": "string", "x-referenceable": true } } }, "strategy": { "description": "The backing data store in which to hold cache entities. Accepted values are: `memory` and `redis`.", "type": "string", "enum": [ "memory", "redis" ] } } }, "vault": { "type": "object", "additionalProperties": { "maxLength": 4095, "minLength": 1, "type": "string", "x-lua-required": true, "x-referenceable": true }, "maxLength": 64, "minLength": 1 } } } }, "required": [ "nodes" ] }, "consumer": { "description": "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 activate regardless of the authenticated Consumer.", "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string" } } }, "consumer_group": { "description": "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 for the plugin to activate regardless of the authenticated Consumer Groups", "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string" } } }, "name": { "const": "datakit" }, "protocols": { "description": "A set of strings representing HTTP protocols.", "type": "array", "items": { "enum": [ "grpc", "grpcs", "http", "https" ], "type": "string" }, "format": "set", "default": [ "grpc", "grpcs", "http", "https" ] }, "route": { "description": "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.", "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string" } } }, "service": { "description": "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.", "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string" } } } }, "required": [ "config" ] }