{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "$ref": "#/definitions/values",
    "definitions": {
        "values": {
            "type": "object",
            "properties": {
                "agent": {
                    "$ref": "#/definitions/Agent"
                },
                "config": {
                    "$ref": "#/definitions/Config"
                },
                "lapi": {
                    "$ref": "#/definitions/Lapi"
                },
                "container_runtime": {
                    "$ref": "#/definitions/containerRuntime"
                },
                "image": {
                    "$ref": "#/definitions/image"
                }
            },
            "required": [
                "agent",
                "config",
                "lapi",
                "container_runtime",
                "image"
            ],
            "title": "values"
        },
        "nonEmptyString": {
            "type": "string",
            "minLength": 1
        },
        "image": {
            "type": "object",
            "properties": {
                "repository": {
                    "type": "string"
                },
                "tag": {
                    "type": "string"
                },
                "pullPolicy": {
                    "type": "string"
                },
                "kubectl": {
                    "type": "object",
                    "properties": {
                        "repository": {
                            "type": "string"
                        },
                        "tag": {
                            "type": "string"
                        },
                        "pullPolicy": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "repository",
                        "pullPolicy"
                    ]
                }
            },
            "required": [
                "repository",
                "pullPolicy"
            ]
        },
        "containerRuntime": {
            "type": "string",
            "enum": [
                "docker",
                "containerd"
            ]
        },
        "Lapi": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean"
                }
            }
        },
        "Agent": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "serviceAccountName": {
                    "type": "string",
                    "description": "Optional, the serviceAccountName used in the deployment."
                },
                "acquisition": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/Acquisition"
                    }
                },
                "additionalAcquisition": {
                    "type": "array",
                    "items": {
                        "anyOf": [
                            {
                                "$ref": "#/definitions/FileSource"
                            },
                            {
                                "$ref": "#/definitions/JournaldSource"
                            },
                            {
                                "$ref": "#/definitions/CloudwatchSource"
                            },
                            {
                                "$ref": "#/definitions/KinesisSource"
                            },
                            {
                                "$ref": "#/definitions/S3Source"
                            },
                            {
                                "$ref": "#/definitions/SyslogSource"
                            },
                            {
                                "$ref": "#/definitions/DockerSource"
                            },
                            {
                                "$ref": "#/definitions/KafkaSource"
                            },
                            {
                                "$ref": "#/definitions/WinEventLogSource"
                            },
                            {
                                "$ref": "#/definitions/LokiSource"
                            },
                            {
                                "$ref": "#/definitions/HttpSource"
                            },
                            {
                                "$ref": "#/definitions/KubernetesSource"
                            },
                            {
                                "$ref": "#/definitions/VictoriaLogsSource"
                            }
                        ]
                    }
                }
            },
            "title": "Agent",
            "required": [
                "acquisition"
            ]
        },
        "Acquisition": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "namespace": {
                    "type": "string"
                },
                "podName": {
                    "type": "string"
                },
                "program": {
                    "type": "string"
                },
                "poll_without_inotify": {
                    "type": "boolean",
                    "default": false
                }
            },
            "required": [
                "namespace",
                "podName",
                "program"
            ],
            "title": "Acquisition"
        },
        "Config": {
            "type": "object",
            "properties": {
                "parsers": {
                    "$ref": "#/definitions/Parsers"
                },
                "scenarios": {
                    "$ref": "#/definitions/Scenarios"
                },
                "postoverflows": {
                    "$ref": "#/definitions/Postoverflows"
                },
                "profiles.yaml": {
                    "type": "string"
                },
                "notifications": {
                    "$ref": "#/definitions/Notifications"
                },
                "simulation.yaml": {
                    "type": "string"
                },
                "console.yaml": {
                    "type": "string"
                },
                "capi_whitelists.yaml": {
                    "type": "string"
                },
                "config.yaml.local": {
                    "type": "string"
                },
                "agent_config.yaml.local": {
                    "type": "string"
                },
                "appsec_config.yaml.local": {
                    "type": "string"
                }
            },
            "title": "Config"
        },
        "Notifications": {
            "type": "object",
            "title": "Notifications"
        },
        "Parsers": {
            "type": "object",
            "title": "Parsers"
        },
        "Postoverflows": {
            "type": "object",
            "title": "Postoverflows"
        },
        "Scenarios": {
            "type": "object",
            "title": "Scenarios"
        },
        "Labels": {
            "type": "object",
            "description": "Object of labels to apply",
            "patternProperties": {
                "^.*$": {
                    "anyOf": [
                        {
                            "type": "string"
                        }
                    ]
                }
            },
            "additionalProperties": false
        },
        "FileSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/file/",
            "additionalProperties": false,
            "properties": {
                "source": {
                    "const": "file"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "force_inotify": {
                    "type": "boolean",
                    "default": false,
                    "description": "If set to true, force an inotify watch on the log files folder, even if there is no log in it."
                },
                "poll_without_inotify": {
                    "type": "boolean",
                    "default": false,
                    "description": "If set to true, will poll the files using os.Stat instead of using inotify"
                },
                "filenames": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "A list of path to files to tail. Globbing is supported. Required if filename is not provided."
                    }
                },
                "filename": {
                    "type": "string",
                    "description": "A single path to a file to tail. Globbing is supported. Required if filenames is not provided."
                },
                "exclude_regexps": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "List of regular expressions to exclude files from being tailed."
                },
                "max_buffer_size": {
                    "type": "integer",
                    "description": "Maximum buffer size for file reading."
                },
                "discovery_poll_enable": {
                    "type": "boolean",
                    "default": false,
                    "description": "Enable periodic discovery polling for new files."
                },
                "discovery_poll_interval": {
                    "type": "string",
                    "description": "Interval for discovery polling (e.g., '30s', '1m')."
                }
            },
            "oneOf": [
                {
                    "required": [
                        "filename"
                    ]
                },
                {
                    "required": [
                        "filenames"
                    ]
                }
            ],
            "required": [
                "source"
            ]
        },
        "JournaldSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/journald/",
            "additionalProperties": false,
            "properties": {
                "source": {
                    "const": "journalctl"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "journalctl_filter": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "A list of journalctl filters. This is mandatory."
                    }
                }
            },
            "required": [
                "source",
                "journalctl_filter"
            ]
        },
        "CloudwatchSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/cloudwatch/",
            "additionalProperties": false,
            "properties": {
                "source": {
                    "const": "cloudwatch"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "group_name": {
                    "type": "string",
                    "description": "Name of the group to monitor, exact match."
                },
                "stream_regexp": {
                    "type": "string",
                    "description": "A RE2 expression that will restrict streams within the group that will be monitored."
                },
                "stream_name": {
                    "type": "string",
                    "description": "Name of stream to monitor, exact match."
                },
                "prepend_cloudwatch_timestamp": {
                    "type": "boolean",
                    "default": false,
                    "description": "When set to true (default: false), prepend the cloudwatch event timestamp to the generated log string. This is intended for cases where you log itself wouldn't contain timestamp."
                },
                "aws_profile": {
                    "type": "string",
                    "description": "The aws profile to use to poll cloudwatch, relies on your ~/.aws/config/."
                },
                "aws_config_dir": {
                    "type": "string",
                    "default": "/root/.aws",
                    "description": "The path to your ~/.aws/, defaults to /root/.aws"
                }
            },
            "patternProperties": {
                "^.+_limit$": {
                    "type": "number",
                    "description": "https://docs.crowdsec.net/docs/next/data_sources/cloudwatch/#_limit"
                },
                "^.+_interval$": {
                    "type": "string",
                    "description": "https://docs.crowdsec.net/docs/next/data_sources/cloudwatch/#_interval"
                }
            },
            "anyOf": [
                {
                    "required": [
                        "source",
                        "group_name",
                        "stream_regexp"
                    ]
                },
                {
                    "required": [
                        "source",
                        "group_name",
                        "stream_name"
                    ]
                }
            ]
        },
        "DockerSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/docker/",
            "additionalProperties": false,
            "properties": {
                "source": {
                    "const": "docker"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "container_name": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "List of containers names to monitor."
                    }
                },
                "container_id": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "List of containers IDs to monitor."
                    }
                },
                "container_name_regexp": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "List of regexp matching containers names to monitor."
                    }
                },
                "container_id_regexp": {
                    "type": "array",
                    "items": {
                        "type": "string",
                        "description": "List of regexp matching containers ID to monitor."
                    }
                },
                "docker_host": {
                    "type": "string",
                    "default": "unix:///var/run/docker.sock",
                    "description": "Docker host."
                },
                "until": {
                    "type": "string",
                    "description": "Read logs until timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)."
                },
                "since": {
                    "type": "string",
                    "description": "Read logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)."
                },
                "check_interval": {
                    "type": "string",
                    "default": "1s",
                    "description": "Relative interval (e.g. 5s for 5 seconds) to check for new containers matching the configuration."
                },
                "follow_stdout": {
                    "type": "boolean",
                    "default": true,
                    "description": "Follow stdout containers logs."
                },
                "follow_stderr": {
                    "type": "boolean",
                    "default": true,
                    "description": "Follow stderr containers logs."
                }
            },
            "anyOf": [
                {
                    "required": [
                        "source",
                        "container_name"
                    ]
                },
                {
                    "required": [
                        "source",
                        "container_id"
                    ]
                },
                {
                    "required": [
                        "source",
                        "container_name_regexp"
                    ]
                },
                {
                    "required": [
                        "source",
                        "container_id_regexp"
                    ]
                }
            ]
        },
        "KinesisSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/kinesis/",
            "additionalProperties": false,
            "allOf": [
                {
                    "if": {
                        "properties": {
                            "use_enhanced_fanout": {
                                "const": false
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "stream_name"
                        ]
                    }
                },
                {
                    "if": {
                        "properties": {
                            "use_enhanced_fanout": {
                                "const": false
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "stream_name"
                        ]
                    }
                },
                {
                    "if": {
                        "properties": {
                            "use_enhanced_fanout": {
                                "const": true
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "consumer_name",
                            "stream_arn"
                        ]
                    }
                }
            ],
            "properties": {
                "source": {
                    "const": "kinesis"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "stream_name": {
                    "type": "string",
                    "description": "The name of the kinesis stream you want to read logs from."
                },
                "stream_arn": {
                    "type": "string",
                    "description": "The ARN of the kinesis stream you want to read logs from."
                },
                "use_enhanced_fanout": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether to use enhanced fan-out (dedicated throughput for a consumer) or not. This option will incur additional AWS costs."
                },
                "consumer_name": {
                    "type": "string",
                    "description": "Name of the consumer. Required when enhanced_fan_out is true."
                },
                "from_subscription": {
                    "type": "boolean",
                    "default": false,
                    "description": "Whether the logs are coming from a Cloudwatch subscription filter or not. When Cloudwatch writes logs to a kinesis stream, they are base64-encoded and gzipped, and the actual log message is part of a JSON object."
                },
                "aws_profile": {
                    "type": "string",
                    "description": "The aws profile to use to poll cloudwatch, relies on your ~/.aws/config/."
                },
                "aws_config_dir": {
                    "type": "string",
                    "default": "/root/.aws",
                    "description": "The path to your ~/.aws/, defaults to /root/.aws"
                },
                "aws_region": {
                    "type": "string",
                    "description": "Optional, the data source will automatically the standard AWS env vars if present."
                }
            },
            "required": [
                "source"
            ]
        },
        "S3Source": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/data_sources/s3",
            "additionalProperties": false,
            "allOf": [
                {
                    "if": {
                        "properties": {
                            "polling_method": {
                                "const": "sqs"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "sqs_name"
                        ]
                    }
                },
                {
                    "if": {
                        "properties": {
                            "polling_method": {
                                "const": "list"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "bucket_name"
                        ]
                    }
                },
                {
                    "if": {
                        "properties": {
                            "polling_method": {
                                "const": true
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "sqs",
                            "list"
                        ]
                    }
                },
                {
                    "if": {
                        "properties": {
                            "sqs_format": {
                                "const": true
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "eventbridge",
                            "s3notification"
                        ]
                    }
                }                
            ],
            "properties": {
                "source": {
                    "const": "s3"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "polling_method": {
                    "type": "string",
                    "description": "How to detect new files in a bucket."
                },
                "polling_interval": {
                    "type": "string",
                    "description": "How often in seconds the Security Engine will check for new objects in a bucket when using the `list` polling method."
                },
                "sqs_name": {
                    "type": "string",
                    "description": "Name of the SQS queue to poll."
                },
                "sqs_format": {
                    "type": "string",
                    "description": "Format of the body inside the SQS messages."
                },
                "bucket_name": {
                    "type": "string",
                    "description": "Name of the bucket to poll."
                },
                "prefix": {
                    "type": "string",
                    "description": "Only read objects matching this prefix when `polling_method` is `list`."
                },
                "aws_profile": {
                    "type": "string",
                    "description": "The aws profile to use to poll cloudwatch, relies on your ~/.aws/config/."
                },
                "aws_region": {
                    "type": "string",
                    "description": "Optional, the data source will automatically the standard AWS env vars if present."
                },
                "aws_endpoint": {
                    "type": "string",
                    "description": "Optional, Endpoint for AWS API."
                }
            },
            "required": [
                "source"
            ]
        },
        "SyslogSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/syslog/",
            "additionalProperties": false,
            "properties": {
                "source": {
                    "const": "syslog"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "listen_addr": {
                    "type": "string",
                    "default": "127.0.0.1",
                    "description": "Address on which the syslog will listen."
                },
                "listen_port": {
                    "type": "number",
                    "default": 514,
                    "description": "UDP port used by the syslog server."
                },
                "max_message_len": {
                    "type": "number",
                    "default": 2048,
                    "description": "Maximum length of a syslog message (including priority and facility)."
                }
            },
            "required": [
                "source"
            ]
        },
        "HttpSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/http/",
            "additionalProperties": false,
            "properties": {
                "source": {
                    "const": "http"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "listen_addr": {
                    "type": "string",
                    "description": "The address to listen on (e.g., 127.0.0.1:8088)."
                },
                "path": {
                    "type": "string",
                    "description": "The endpoint path to listen on. Default is /."
                },
                "auth_type": {
                    "type": "string",
                    "enum": [
                        "basic_auth",
                        "headers",
                        "mtls"
                    ],
                    "description": "The authentication type to use."
                },
                "basic_auth": {
                    "type": "object",
                    "properties": {
                        "username": {
                            "type": "string",
                            "description": "The username to use for basic authentication."
                        },
                        "password": {
                            "type": "string",
                            "description": "The password to use for basic authentication."
                        }
                    },
                    "required": [
                        "username",
                        "password"
                    ]
                },
                "headers": {
                    "type": "object",
                    "description": "A list of headers to check for authentication."
                },
                "tls": {
                    "type": "object",
                    "properties": {
                        "server_cert": {
                            "type": "string",
                            "description": "The server certificate path."
                        },
                        "server_key": {
                            "type": "string",
                            "description": "The server key path."
                        },
                        "ca_cert": {
                            "type": "string",
                            "description": "The CA certificate path."
                        }
                    },
                    "required": [
                        "server_cert",
                        "server_key"
                    ]
                },
                "custom_status_code": {
                    "type": "number",
                    "description": "The status code to return"
                },
                "custom_headers": {
                    "type": "object",
                    "description": "A list of headers to return."
                },
                "max_body_size": {
                    "type": "number",
                    "description": "The maximum size of the body to accept."
                },
                "timeout": {
                    "type": "string",
                    "description": "The timeout to wait for a request."
                }
            },
            "required": [
                "source",
                "listen_addr",
                "auth_type"
            ]
        },
        "KafkaSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/kafka",
            "additionalProperties": false,
            "properties": {
                "source": {
                    "const": "kafka"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "brokers": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    },
                    "description": "The name of the kafka brockers to connect to."
                },
                "topic": {
                    "type": "string",
                    "description": "The topic name you want to read logs from."
                },
                "group_id": {
                    "type": "string",
                    "description": "Group id to use with the kafka consumer group."
                },
                "timeout": {
                    "type": "number"
                },
                "tls": {
                    "type": "object",
                    "properties": {
                        "insecure_skip_verify": {
                            "type": "boolean",
                            "default": false,
                            "description": "To disable security checks on the certificate."
                        },
                        "client_cert": {
                            "type": "string",
                            "description": "Th eclient certificate path. Optional, when you want to enable TLS with client certificate."
                        },
                        "client_key": {
                            "type": "string",
                            "description": "The client key path. Optional, when you want to enable TLS with client certificate."
                        },
                        "ca_cert": {
                            "type": "string",
                            "description": "The CA certificate path. Optional, when you want to enable TLS with client certificate."
                        }
                    }
                }
            },
            "required": [
                "source",
                "brokers"
            ]
        },
        "WinEventLogSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/windows_evt_log/",
            "additionalProperties": false,
            "allOf": [
                {
                    "if": {
                        "not": {
                            "properties": {
                                "xpath_query": {
                                    "$ref": "#/definitions/nonEmptyString"
                                }
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "event_channel"
                        ]
                    }
                },
                {
                    "if": {
                        "properties": {
                            "event_channel": {
                                "$ref": "#/definitions/nonEmptyString"
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "event_level",
                            "event_ids"
                        ]
                    }
                },
                {
                    "if": {
                        "not": {
                            "properties": {
                                "event_channel": {
                                    "$ref": "#/definitions/nonEmptyString"
                                }
                            }
                        }
                    },
                    "then": {
                        "required": [
                            "xpath_query"
                        ]
                    }
                }
            ],
            "properties": {
                "source": {
                    "const": "wineventlog"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "event_channel": {
                    "type": "string",
                    "description": "The name of the channel to read events from."
                },
                "event_level": {
                    "enum": [
                        "VERBOSE",
                        "INFORMATION",
                        "WARNING",
                        "ERROR",
                        "CRITICAL"
                    ],
                    "description": "The log level of the events to read."
                },
                "event_ids": {
                    "type": "string",
                    "description": "List of event IDs you want to match."
                },
                "xpath_query": {
                    "type": "string",
                    "description": "A custom XPath query to read events. You can refer to the Windows documentation for more information: https://docs.microsoft.com/en-us/windows/win32/wes/consuming-events"
                },
                "pretty_name": {
                    "type": "string",
                    "description": "Pretty name to use for the datasource in the metrics (cscli metrics). This parameter is optional, but strongly recommanded, as by default the full xpath query will be displayed in the metrics, which can be hard to read."
                }
            },
            "required": [
                "source"
            ]
        },
        "LokiSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/loki/",
            "properties": {
                "source": {
                    "const": "loki"
                },
                "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "The URL of the Loki instance"
                },
                "limit": {
                    "type": "integer",
                    "description": "The maximum number of log entries to fetch in one query"
                },
                "prefix": {
                    "type": "string",
                    "description": "Prefix for the Loki API endpoints"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "HTTP headers to include in requests to Loki"
                },
                "wait_for_ready": {
                    "type": "string",
                    "description": "The retry interval at startup before giving on loki."
                },
                "query": {
                    "type": "string",
                    "description": "https://grafana.com/docs/loki/latest/query/log_queries/"
                },
                "auth": {
                    "type": "object",
                    "properties": {
                        "username": {
                            "type": "string",
                            "description": "Username for authentication with Loki"
                        },
                        "password": {
                            "type": "string",
                            "description": "Password for authentication with Loki"
                        }
                    },
                    "required": ["username", "password"],
                    "description": "Authentication credentials for Loki"
                },
                "max_failure_duration": {
                    "type": "string",
                    "description": "The maximum duration loki is allowed to be unavailable (once startup is successful) before giving up on the data source."
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                }
            },
            "required": ["source", "url", "query"]
        },
        "KubernetesSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/log_processor/data_sources/kubernetes_audit/",
            "additionalProperties": false,
            "properties": {
                "source": {
                    "const": "k8s-audit"
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                },
                "listen_addr": {
                    "type": "string",
                    "default": "127.0.0.1",
                    "description": "Address on which the syslog will listen."
                },
                "listen_port": {
                    "type": "number",
                    "default": 9876,
                    "description": "The port on which the datasource will listen."
                },
                "webhook_path": {
                    "type": "string",
                    "default": "/webhook",
                    "description": "The path on which the datasource will accept requests from kubernetes."
                }
            },
            "required": [
                "source",
                "listen_addr",
                "listen_port",
                "webhook_path"
            ]
        },
        "VictoriaLogsSource": {
            "type": "object",
            "description": "https://docs.crowdsec.net/docs/next/data_sources/victorialogs",
            "properties": {
                "source": {
                    "const": "victorialogs"
                },
                "url": {
                    "type": "string",
                    "format": "uri",
                    "description": "The URL of the VictoriaLogs instance"
                },
                "limit": {
                    "type": "integer",
                    "description": "The maximum number of log entries to fetch in one query"
                },
                "prefix": {
                    "type": "string",
                    "description": "Prefix for the VictoriaLogs API endpoints"
                },
                "headers": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "string"
                    },
                    "description": "HTTP headers to include in requests to VictoriaLogs"
                },
                "wait_for_ready": {
                    "type": "string",
                    "description": "The retry interval at startup before giving on VictoriaLogs."
                },
                "query": {
                    "type": "string",
                    "description": "https://docs.victoriametrics.com/victorialogs/logsql/"
                },
                "since": {
                    "type": "string",
                    "description": "Read logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)."
                },
                "auth": {
                    "type": "object",
                    "properties": {
                        "username": {
                            "type": "string",
                            "description": "Username for authentication with VictoriaLogs"
                        },
                        "password": {
                            "type": "string",
                            "description": "Password for authentication with VictoriaLogs"
                        }
                    },
                    "required": [
                        "username",
                        "password"
                    ],
                    "description": "Authentication credentials for VictoriaLogs"
                },
                "max_failure_duration": {
                    "type": "string",
                    "description": "The maximum duration VictoriaLogs is allowed to be unavailable (once startup is successful) before giving up on the data source."
                },
                "labels": {
                    "$ref": "#/definitions/Labels"
                }
            },
            "required": [
                "source",
                "url",
                "query"
            ]
        }
    }
}
