{
"id": "redis",
"schema": {
"type": "object",
"required": ["commands"],
"properties": {
"commands": {
"type": "array",
"minItems": 1,
"title": "Commands",
"items": {
"type": "object",
"required": ["keyExpr", "command"],
"properties": {
"outField": {
"title": "Result field",
"description": "Name of the field in which to store the returned value. Leave blank to discard returned value.",
"type": "string"
},
"command": {
"title": "Command",
"description": "Redis command to perform. For a complete list visit: https://redis.io/commands",
"type": "string"
},
"keyExpr": {
"title": "Key",
"description": "A JavaScript expression to compute the value of the key to operate on. Can also be a constant such as 'username'.",
"type": "string",
"jsExpression": true
},
"argsExpr": {
"title": "Args",
"description": "A JavaScript expression to compute arguments to the operation. Can return an array.",
"type": "string",
"jsExpression": true
}
}
}
},
"deploymentType": {
"title": "Deployment type",
"type": "string",
"description": "How the Redis server is configured. Defaults to Standalone",
"enum": ["standalone", "cluster", "sentinel"],
"enumNames": ["Standalone", "Cluster", "Sentinel"],
"default": "standalone"
},
"authType": {
"type": "string",
"title": "Authentication method",
"default": "none",
"enum": ["none", "manual", "credentialsSecret", "textSecret"],
"enumNames": ["None", "Manual", "User Secret", "Admin Secret"]
},
"maxBlockSecs": {
"type": "number",
"title": "Blocking time limit",
"description": "Maximum amount of time (seconds) to wait before assuming that Redis is down and passing events through. Use 0 to disable.",
"default": 60
},
"enableClientSideCaching": {
"type": "boolean",
"title": "Client-side cache",
"description": "Enable client-side cache. Redundant when using Redis write operations. See more options at Settings > General > Limits > Redis Cache."
}
},
"dependencies": {
"deploymentType": {
"oneOf": [
{
"required": ["url"],
"properties": {
"deploymentType": {
"enum": ["standalone"]
},
"url": {
"title": "Redis URL",
"description": "Redis URL to connect to. Format: redis[s]://[[user][:password@]][host][:port][/db-number][?db=db-number[&password=bar[&option=value]]]. Must be a JavaScript expression (which can evaluate to a constant value), enclosed in quotes or backticks. Can be evaluated only at init time. Example referencing a Global Variable: `myBucket-${C.vars.myVar}`",
"type": "string",
"jsExpression": "warning",
"bindToVariable": true
},
"tlsOptions": {
"type": "object",
"properties": {
"rejectUnauthorized": {
"type": "boolean",
"title": "Validate server certs",
"description": "Reject certificates that are not authorized by a CA in the 'CA certificate path', or by another trusted CA (such as the system's CA)",
"default": true
},
"servername": {
"type": "string",
"title": "Server name (SNI)",
"description": "Server name for the SNI (Server Name Indication) TLS extension. Must be a host name, not an IP address."
},
"certificateName": {
"type": "string",
"title": "Certificate",
"description": "The name of the predefined certificate",
"certificateRef": true
},
"caPath": {
"type": "string",
"title": "CA certificate path",
"description": "Path on client in which to find CA certificates to verify the server's certificate. PEM format. Can reference $ENV_VARS."
},
"privKeyPath": {
"type": "string",
"title": "Private key path (mutual auth)",
"description": "Path on client in which to find the private key to use. PEM format. Can reference $ENV_VARS."
},
"certPath": {
"type": "string",
"title": "Certificate path (mutual auth)",
"description": "Path on client in which to find certificates to use. PEM format. Can reference $ENV_VARS."
},
"passphrase": {
"type": "string",
"title": "Passphrase",
"description": "Passphrase to use to decrypt private key",
"encrypt": true
},
"minVersion": {
"type": "string",
"title": "Minimum TLS version",
"description": "Minimum TLS version to use when connecting",
"enum": ["TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"]
},
"maxVersion": {
"type": "string",
"title": "Maximum TLS version",
"description": "Maximum TLS version to use when connecting",
"enum": ["TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"]
}
}
}
}
},
{
"properties": {
"deploymentType": {
"enum": ["cluster"]
},
"rootNodes": {
"title": "Root nodes",
"description": "Root nodes to which the cluster connection should be initiated",
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["host", "port"],
"properties": {
"host": {
"type": "string",
"title": "Hostname",
"description": "Hostname of cluster node. Must be a JavaScript expression (which can evaluate to a constant value), enclosed in quotes or backticks. Can be evaluated only at init time. Example referencing a Global Variable: `myBucket-${C.vars.myVar}`.",
"jsExpression": "warning",
"uiPatternWarn": "^(?!.*`?redi(?:s|ss)://).*$",
"uiPatternWarnMsg": "When using the cluster deployment type, Redis URL should not include 'redis://' or 'rediss://'"
},
"port": {
"type": "number",
"title": "Port",
"description": "Port of cluster node"
}
}
}
},
"tls": {
"title": "TLS",
"type": "boolean",
"description": "Use TLS for connections to this cluster"
},
"scaleReads": {
"title": "Scale reads",
"type": "string",
"description": "Which nodes read commands should be sent to",
"enum": ["master", "replica", "all"],
"enumNames": ["Masters", "Replicas", "Masters and Replicas"],
"default": "master"
}
},
"dependencies": {
"tls": {
"oneOf": [
{
"properties": {
"tls": {
"enum": [true]
},
"tlsOptions": {
"type": "object",
"properties": {
"rejectUnauthorized": {
"type": "boolean",
"title": "Validate server certs",
"description": "Reject certs that are not authorized by a CA in the CA certificate path, or by another trusted CA (such as the system's CA)",
"default": true
},
"servername": {
"type": "string",
"title": "Server name (SNI)",
"description": "Server name for the SNI (Server Name Indication) TLS extension. Must be a host name, not an IP address."
},
"certificateName": {
"type": "string",
"title": "Certificate",
"description": "The name of the predefined certificate",
"certificateRef": true
},
"caPath": {
"type": "string",
"title": "CA certificate path",
"description": "Path on client in which to find CA certificates to verify the server's certificate. PEM format. Can reference $ENV_VARS."
},
"privKeyPath": {
"type": "string",
"title": "Private key path (mutual auth)",
"description": "Path on client in which to find the private key to use. PEM format. Can reference $ENV_VARS."
},
"certPath": {
"type": "string",
"title": "Certificate path (mutual auth)",
"description": "Path on client in which to find certificates to use. PEM format. Can reference $ENV_VARS."
},
"passphrase": {
"type": "string",
"title": "Passphrase",
"description": "Passphrase to use to decrypt private key",
"encrypt": true
},
"minVersion": {
"type": "string",
"title": "Minimum TLS version",
"description": "Minimum TLS version to use when connecting",
"enum": ["TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"]
},
"maxVersion": {
"type": "string",
"title": "Maximum TLS version",
"description": "Maximum TLS version to use when connecting",
"enum": ["TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"]
}
}
}
}
},
{
"properties": {
"tls": {
"enum": [false]
}
}
}
]
}
}
},
{
"required": ["masterName"],
"properties": {
"deploymentType": {
"enum": ["sentinel"]
},
"masterName": {
"title": "Master group name",
"type": "string"
},
"rootNodes": {
"title": "Sentinels",
"description": "List of sentinels to be used",
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": ["host", "port"],
"properties": {
"host": {
"type": "string",
"title": "Hostname",
"description": "Hostname of sentinel node. Must be a JavaScript expression (which can evaluate to a constant value), enclosed in quotes or backticks. Can be evaluated only at init time. Example referencing a Global Variable: `myBucket-${C.vars.myVar}`.",
"jsExpression": "warning"
},
"port": {
"type": "number",
"title": "Port",
"description": "Port of sentinel node"
}
}
}
},
"tls": {
"title": "TLS",
"type": "boolean",
"description": "Use TLS for connections to this cluster"
}
},
"dependencies": {
"tls": {
"oneOf": [
{
"properties": {
"tls": {
"enum": [true]
},
"tlsOptions": {
"type": "object",
"properties": {
"rejectUnauthorized": {
"type": "boolean",
"title": "Validate server certs",
"description": "Reject certs that are not authorized by a CA in the CA certificate path, or by another trusted CA (such as the system's CA)",
"default": true
},
"servername": {
"type": "string",
"title": "Server name (SNI)",
"description": "Server name for the SNI (Server Name Indication) TLS extension. Must be a host name, not an IP address."
},
"certificateName": {
"type": "string",
"title": "Certificate",
"description": "The name of the predefined certificate",
"certificateRef": true
},
"caPath": {
"type": "string",
"title": "CA certificate path",
"description": "Path on client in which to find CA certificates to verify the server's certificate. PEM format. Can reference $ENV_VARS."
},
"privKeyPath": {
"type": "string",
"title": "Private key path (mutual auth)",
"description": "Path on client in which to find the private key to use. PEM format. Can reference $ENV_VARS."
},
"certPath": {
"type": "string",
"title": "Certificate path (mutual auth)",
"description": "Path on client in which to find certificates to use. PEM format. Can reference $ENV_VARS."
},
"passphrase": {
"type": "string",
"title": "Passphrase",
"description": "Passphrase to use to decrypt private key",
"encrypt": true
},
"minVersion": {
"type": "string",
"title": "Minimum TLS version",
"description": "Minimum TLS version to use when connecting",
"enum": ["TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"]
},
"maxVersion": {
"type": "string",
"title": "Maximum TLS version",
"description": "Maximum TLS version to use when connecting",
"enum": ["TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3"]
}
}
}
}
},
{
"properties": {
"tls": {
"enum": [false]
}
}
}
]
}
}
}
]
},
"authType": {
"oneOf": [
{
"properties": {
"authType": {
"enum": ["none"]
}
}
},
{
"required": ["password"],
"properties": {
"authType": {
"enum": ["manual"]
},
"username": {
"title": "Username",
"type": "string",
"bindToVariable": true
},
"password": {
"title": "Password",
"type": "string",
"encrypt": true,
"bindToVariable": true
}
}
},
{
"required": ["credentialsSecret"],
"properties": {
"authType": {
"enum": ["credentialsSecret"]
},
"credentialsSecret": {
"type": "string",
"title": "User secret",
"description": "Secret that references Redis username and password",
"secret": {
"type": "credentials",
"target": ["credentialsUsername", "credentialsPassword"]
},
"secretRef": true
}
}
},
{
"required": ["textSecret"],
"properties": {
"authType": {
"enum": ["textSecret"]
},
"textSecret": {
"type": "string",
"title": "Admin secret",
"description": "Secret that references Redis admin password",
"secret": {
"type": "text",
"target": ["textPassword"]
},
"secretRef": true
}
}
}
]
}
}
}
}